in src/actions.py [0:0]
def determine_platform(imageid):
try:
ec2_client = boto3_client('ec2')
# does instance have appropriate alarm tag?
image_info = ec2_client.describe_images(
ImageIds=[
imageid
]
)
# can only be one instance when called by CloudWatch Events
if 'Images' in image_info and len(image_info['Images']) > 0:
platform_details = image_info['Images'][0]['PlatformDetails']
logger.debug('Platform details of image: {}'.format(platform_details))
if 'Windows' in platform_details or 'SQL Server' in platform_details:
return 'Windows'
elif 'Red Hat' in platform_details:
return 'Red Hat'
elif 'SUSE' in platform_details:
return 'SUSE'
elif 'Linux/UNIX' in platform_details:
if 'ubuntu' in image_info['Images'][0]['Description'].lower() or 'ubuntu' in image_info['Images'][0][
'Name'].lower():
return 'Ubuntu'
else:
return 'Amazon Linux'
else:
return None
else:
return None
except Exception as e:
# If any other exceptions which we didn't expect are raised
# then fail and log the exception message.
logger.error('Failure describing image {}: {}'.format(imageid, e))
raise