From ca938821a14a07819fb863563eb7a05cc6dd5f7a Mon Sep 17 00:00:00 2001 From: badra001 Date: Tue, 25 Apr 2023 21:10:47 -0400 Subject: [PATCH] fix --- code/ddns-lambda.py | 23 ++++++++++++++++++----- code/ddns-lambda.zip | Bin 21663 -> 21801 bytes 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/code/ddns-lambda.py b/code/ddns-lambda.py index be7ca7a..d212ec7 100755 --- a/code/ddns-lambda.py +++ b/code/ddns-lambda.py @@ -73,7 +73,7 @@ LOGGER = logging.getLogger() account_id = None region = None -VERSION = '1.2.0b53' +VERSION = '1.2.0b54' # Read Env variables DEBUG_LOG_LEVEL = os.environ.get('DebugLogLevel', 'INFO') @@ -397,10 +397,12 @@ def lambda_handler( instance = get_item_from_dynamodb_table(dynamodb_client, DDBNAME, instance_id) LOGGER.info("instance attributes: %s", str(instance) + lineno()) -# LOGGER.info(f"Fetching instance DNS information from dynamodb {lineno()}") -# instance_dns_data = get_item_from_dynamodb_table(dynamodb_client, DDBNAME, f'{instance_id}/dns') -# instance_dns_data_dict = json.loads(instance_dns_data, default=json_serial) -# LOGGER.info(f"instance dns data: {str(instance_dns_data)} length {len(instance_dns_data_dict)} {lineno()}") + LOGGER.info(f"Fetching instance DNS information from dynamodb {lineno()}") + instance_dns_data = get_item_from_dynamodb_table( + dynamodb_client, DDBNAME, f'{instance_id}/dns') + instance_dns_data_dict = json.loads(instance_dns_data, default=json_serial) + LOGGER.info( + f"instance dns data: {str(instance_dns_data)} length {len(instance_dns_data_dict)} {lineno()}") # Get the instance tags and reorder them because we want a zone created before CNAME try: @@ -1030,6 +1032,7 @@ def lambda_handler( caller_response.insert(0, 'Successfully created recordsets') LOGGER.info(f"dns_data records written:\n{pformat(dns_data)}") + put_instance_dns_data_item(dynamodb_client, DDBNAME, instance_id, dns_data): count['end'] = datetime.datetime.now() count['elapsed_ms'] = (count['end'] - count['start']).total_seconds() * 1000.0 @@ -1038,6 +1041,16 @@ def lambda_handler( return caller_response +def put_instance_dns_data_item(dynamodb_client, DDBNAME, instance_id, dns): + dns_list = [dict(d) for d in dns] + dns_info = json.dumps(dns_list, default=json_serial) + + LOGGER.debug(f"put dns data into {instance_id}/dns: {str(dns_info)}: {lineno()}") + put_item_in_dynamodb_table(dynamodb_client, DDBNAME, f'{instance_id}/dns', dns_info) + LOGGER.debug(f"done putting dns item in dynamo table {lineno()}") + return + + def get_cname_from_tags(tags): """ Get the cname prefix from tags diff --git a/code/ddns-lambda.zip b/code/ddns-lambda.zip index 15c4d69fc09e93854eb605cf409f494dbff4497c..a9237c3f83c8ad0d6618ccc499f6de351e51db0a 100644 GIT binary patch delta 19869 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