Skip to content

Instantly share code, notes, and snippets.

@akloya
Created June 27, 2019 23:10
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save akloya/313d10e65463f04355992b82556cd25c to your computer and use it in GitHub Desktop.
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