in images/dataplane/status/app/nodegroup_status.py [0:0]
def handler(event, context):
try:
eks = boto3.client('eks')
eks.list_updates(name=config_dict[ConfigKey.cluster_name_key],
nodegroupName=config_dict[ConfigKey.node_group_key])
update_id = config_dict[ConfigKey.update_id]
update_desc = eks.describe_update(name=config_dict[ConfigKey.cluster_name_key],
updateId=config_dict[ConfigKey.update_id],
nodegroupName=config_dict[ConfigKey.node_group_key])
update_type = update_desc['update']['type']
if update_type == 'VersionUpdate':
update_status = update_desc['update']['status']
update_template_name = get_update(update_desc, "LaunchTemplateName")
update_template_version = get_update(update_desc, "LaunchTemplateVersion")
if update_template_name == config_dict[ConfigKey.launch_template_name] and update_template_version == \
config_dict[ConfigKey.launch_template_version]:
if update_status == 'Successful':
payload = '{"Status" : "SUCCESS","Reason" : "Configuration Complete","UniqueId" : "ID1234","Data" : "Application has completed configuration."}'
requests.put(config_dict[ConfigKey.signal_url], data=payload)
logger.info(f'Nodegroup upgrade Completed. update id is: {update_id}')
elif update_status == 'Failed':
payload = '{"Status" : "FAILURE","Reason" : "Update Failed","UniqueId" : "ID1235","Data" : "Application has completed configuration."}'
requests.put(config_dict[ConfigKey.signal_url], data=payload)
logger.info(f'Nodegroup upgrade Failed. update id is: {update_id}')
else:
logger.info(f'Nodegroup upgrade In Progress. update id is: {update_id}')
else:
logger.info(f'Nodegroup EKS version found :{update_template_version}')
try:
if event['RequestType'] is not None:
if event['RequestType'] == 'Create' or event['RequestType'] == 'Update' or \
event['RequestType'] == 'Delete':
status = cfnresponse.SUCCESS
cfnresponse.send(event, context, status, None)
except Exception:
pass
except Exception as ex:
logger.error(ex)
payload = '{"Status" : "FAILURE","Reason" : "Configuration Complete","UniqueId" : "ID1234","Data" : "Application has completed configuration."}'
requests.put(config_dict[ConfigKey.signal_url], data=payload)
status = cfnresponse.FAILED
cfnresponse.send(event, context, status, None)
logger.info('ending run...')