From 3b7faa84b1db80be1e9bea2f04d472e4821aa090 Mon Sep 17 00:00:00 2001 From: badra001 Date: Wed, 26 Apr 2023 22:19:21 -0400 Subject: [PATCH] fix --- code/ddns-lambda.py | 45 ++++++++++++++++++++++--------------------- code/ddns-lambda.zip | Bin 23698 -> 23695 bytes 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/code/ddns-lambda.py b/code/ddns-lambda.py index b4f17f4..5aa8283 100755 --- a/code/ddns-lambda.py +++ b/code/ddns-lambda.py @@ -1673,34 +1673,37 @@ def new_change_resource_recordset(oclient, instance_id, zone_id, host_name, host # f"exception: {instance_id} err {err} sys.exc_info {sys.exc_info()[0]} {sys.exc_info()[1]} {lineno()}") except Route53.Client.exceptions.NoSuchHostedZone as err: - -# if 'NoSuchHostedZone' in str(err) and 'No hosted zone found with ID' in str(err): -3 LOGGER.error("Hosted zone not found error: %s", str(err) + lineno()) - LOGGER.info( - f"exception: NoSuchHostedZone {err} sys.exc_info {sys.exc_info()[0]} {sys.exc_info()[1]} {lineno()}") - update_response = "NoSuchHostedZone" - break + # if 'NoSuchHostedZone' in str(err) and 'No hosted zone found with ID' in str(err): + # LOGGER.error("Hosted zone not found error: %s", str(err) + lineno()) + LOGGER.info( + f"exception: NoSuchHostedZone {err} sys.exc_info {sys.exc_info()[0]} {sys.exc_info()[1]} {lineno()}") + update_response = "NoSuchHostedZone" + break except Route53.Client.exceptions.InvalidChangeBatch as err: -# elif 'InvalidChangeBatch' in str(err) and 'is not permitted in zone' in str(err): -# LOGGER.error( -# "Cannot create record - most likely wrong zone name specified: %s", str(err) + lineno()) -# update_response = "InvalidChangeBatch-WrongZoneName" - LOGGER.info(f"exception: InvalidChangeBatch {err} sys.exc_info {sys.exc_info()[0]} {sys.exc_info()[1]} {lineno()}") - update_response = "InvalidChangeBatch" - break + # elif 'InvalidChangeBatch' in str(err) and 'is not permitted in zone' in str(err): + # LOGGER.error( + # "Cannot create record - most likely wrong zone name specified: %s", str(err) + lineno()) + # update_response = "InvalidChangeBatch-WrongZoneName" + LOGGER.info( + f"exception: InvalidChangeBatch {err} sys.exc_info {sys.exc_info()[0]} {sys.exc_info()[1]} {lineno()}") + update_response = "InvalidChangeBatch" + break except Route53.Client.exceptions.InvalidInput as err: - LOGGER.info(f"exception: InvalidInput {err} sys.exc_info {sys.exc_info()[0]} {sys.exc_info()[1]} {lineno()}") - update_response = "InvalidInput" - break + LOGGER.info( + f"exception: InvalidInput {err} sys.exc_info {sys.exc_info()[0]} {sys.exc_info()[1]} {lineno()}") + update_response = "InvalidInput" + break except Route53.Client.exceptions.PriorRequestNotComplete as err: -# elif "(Throttling)" in str(err): - LOGGER.info(f"exception: PriorRequestNotComplete {err} sys.exc_info {sys.exc_info()[0]} {sys.exc_info()[1]} {lineno()}") + # elif "(Throttling)" in str(err): + LOGGER.info( + f"exception: PriorRequestNotComplete {err} sys.exc_info {sys.exc_info()[0]} {sys.exc_info()[1]} {lineno()}") # LOGGER.debug("change_resource_record_sets UPSERT throttled due to API limit, retrying: %s", str(err) + lineno()) # else: # LOGGER.info( # f"instance: {instance_id} unexpected error: {err} sys.exc_info {sys.exc_info()[0]} {sys.exc_info()[1]} {lineno()}") except Exception as err: - LOGGER.info(f"exception: Exception {err} sys.exc_info {sys.exc_info()[0]} {sys.exc_info()[1]} {lineno()}") + LOGGER.info( + f"exception: Exception {err} sys.exc_info {sys.exc_info()[0]} {sys.exc_info()[1]} {lineno()}") i += 1 LOGGER.info("instance: %s, change_resource_record_sets UPSERT returned error, waiting before retry. %s", @@ -1710,8 +1713,6 @@ def new_change_resource_recordset(oclient, instance_id, zone_id, host_name, host count['sleep.time'] += i count['retry'] += 1 - - if i >= MAX_API_RETRY: LOGGER.error("instance: %s, change_resource_record_sets exceeded max retry of %s", instance_id, str(MAX_API_RETRY) + lineno()) diff --git a/code/ddns-lambda.zip b/code/ddns-lambda.zip index c9458ee03187ee7e33fcc5993c794a9701f12ea7..b1cf110b05b34838509219d666baf1acc305f990 100644 GIT binary patch delta 10299 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 NSzI#)JzM|)0021=9NPc@ delta 10299 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�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 NR$Ma%KwJO-007qDQ=$L>