def handler()

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...')