Created
June 27, 2019 23:10
Star
You must be signed in to star a gist
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import boto3 | |
| import sys | |
| ec2 = boto3.client('ec2') | |
| instances_list = [] | |
| instancetype_with_count = () | |
| current_instances = ec2.describe_instances() | |
| count = 0 | |
| # Fetching all reserved instances that are active | |
| rinstances_list = ec2.describe_reserved_instances( | |
| Filters=[ | |
| { | |
| 'Name': 'state', | |
| 'Values': [ | |
| 'active', | |
| ] | |
| }, | |
| ] | |
| ) | |
| # Fetch Purchases by Instance Type and Platform | |
| for instances in rinstances_list['ReservedInstances']: | |
| instancetype_with_count = ( | |
| instances['ProductDescription'] + "-" + instances['InstanceType'], instances['InstanceCount']) | |
| instances_list.append(instancetype_with_count) | |
| # Add Just to ensure multiple purchases of same instance type and platform exists in our case so getting unique count. | |
| instances_dict = {} | |
| for instance in instances_list: | |
| # print(instance) | |
| if instance[0] in instances_dict: | |
| instances_dict[instance[0]] += instance[1] | |
| else: | |
| instances_dict[instance[0]] = instance[1] | |
| # print(instances_dict) | |
| print("Current Active Reserved Instances:" + str(instances_list)) | |
| for rinst_dict in instances_dict: | |
| rinstance_platform = rinst_dict.split('-', 1)[0] | |
| rinstance_itype = rinst_dict.split('-', 1)[1] | |
| for reservation in current_instances['Reservations']: | |
| for instance in reservation['Instances']: | |
| if rinstance_platform == "Linux/UNIX": | |
| if instance['InstanceType'] == rinstance_itype and instance['State']['Name'] == "running": | |
| count = count + 1 | |
| else: | |
| if 'Platform' in instance.keys(): | |
| if instance['InstanceType'] == rinstance_itype and instance['State']['Name'] == "running" and \ | |
| instance['Platform'] == "windows": | |
| count = count + 1 | |
| if count < instances_dict[rinst_dict]: | |
| print("For " + rinstance_itype + "(" + rinstance_platform + ") Expected Count: " + str( | |
| instances_dict[rinst_dict]) + " Current Count: " + str(count)) | |
| count = 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment