From c82d72b367331d3f02395125b4d8b6c65cb8d571 Mon Sep 17 00:00:00 2001 From: badra001 Date: Mon, 24 Apr 2023 20:12:58 -0400 Subject: [PATCH] fix --- code/ddns-lambda.py | 127 +++++++++++++++++++++---------------------- code/ddns-lambda.zip | Bin 21171 -> 21058 bytes 2 files changed, 63 insertions(+), 64 deletions(-) diff --git a/code/ddns-lambda.py b/code/ddns-lambda.py index 9fcb4c8..b431876 100755 --- a/code/ddns-lambda.py +++ b/code/ddns-lambda.py @@ -64,7 +64,7 @@ import os import ipaddress from botocore.exceptions import ClientError -from collections import OrderedDict, defaultdict, namedtuple +from collections import OrderedDict, defaultdict, namedtuple, Counter from pprint import pformat from dateutil.parser import parse as date_parse @@ -73,7 +73,7 @@ LOGGER = logging.getLogger() account_id = None region = None -VERSION = '1.2.0b38' +VERSION = '1.2.0b40' # Read Env variables DEBUG_LOG_LEVEL = os.environ.get('DebugLogLevel', 'INFO') @@ -128,6 +128,7 @@ sts_client = None partition = None phz_collection_by_vpc = {} +count = Counter() def lineno(): # pragma: no cover @@ -230,7 +231,7 @@ def initialize_clients(): global sts_client global account_id - LOGGER.debug("initializing boto3 session and clients: %s", lineno()) + LOGGER.info("initializing boto3 session and clients: %s", lineno()) if session is None: session = boto3.session.Session() if sessions is None: @@ -294,6 +295,7 @@ def lambda_handler( global region global partition global phz_collection_by_vpc + global count LOGGER.info("event: %s", str(event) + lineno()) LOGGER.info("context: %s", str(context) + lineno()) @@ -344,6 +346,8 @@ def lambda_handler( while i < SLEEPTIME: LOGGER.debug("waiting count: %s", str(i) + lineno()) time.sleep(1) + count['sleep.count'] += 1 + count['sleep.time'] += 1 i += 1 try: @@ -553,6 +557,8 @@ def lambda_handler( LOGGER.debug("waiting random seconds, %s", str(wait_time) + lineno()) time.sleep(wait_time) + count['sleep.count'] += 1 + count['sleep.time'] += wait_time # Is there a DHCP option set? # Get DHCP option set configuration @@ -666,69 +672,33 @@ def lambda_handler( 'No DHCP Associated for VPC and no custom tags. Exiting Script') return caller_response -# if has_valid_hostname_tag and has_valid_zone_tag: -# LOGGER.info( -# "instance: %s, custom hostname tag and custom zone tag valid.", instance_id) -# final_private_hostname = custom_host_name -# final_hosted_zone_name = zone_tag_hosted_zone_name -# elif has_valid_hostname_tag and not (has_valid_zone_tag) and has_dhcp_dns_zone_associated_vpc: # 3 -# LOGGER.info("instance: %s, custom hostname tag valid only.", instance_id) -# final_private_hostname = custom_host_name -# final_hosted_zone_name = private_hosted_zone_name -# elif has_valid_Name_tag_hostname and has_valid_Name_tag_zonename: -# LOGGER.info( -# "instance: %s, Name tag hostname valid and Name tag zonename valid.", instance_id) -# final_private_hostname = name_host -# final_hosted_zone_name = name_domain_suffix -# elif has_valid_Name_tag_hostname and has_valid_zone_tag: -# LOGGER.info( -# "instance: %s, Name tag hostname valid and custom zone tag valid.", instance_id) -# final_private_hostname = name_host -# final_hosted_zone_name = zone_tag_hosted_zone_name -# elif has_valid_Name_tag_hostname and has_dhcp_dns_zone_associated_vpc: -# LOGGER.info( -# "instance: %s, Name tag hostname valid and DHCP zone is valid.", instance_id) -# final_private_hostname = name_host -# final_hosted_zone_name = private_hosted_zone_name -# elif has_valid_zone_tag and not (has_valid_hostname_tag) and not(has_valid_Name_tag_hostname): -# LOGGER.info( -# "instance: %s, custom zone tag valid but no custom hostname, using IP address.", instance_id) -# final_private_hostname = private_host_name -# final_hosted_zone_name = zone_tag_hosted_zone_name -# elif has_dhcp_dns_zone_associated_vpc: -# LOGGER.info("instance: %s, no custom tags - use default.", instance_id) -# final_private_hostname = private_host_name -# final_hosted_zone_name = private_hosted_zone_name -# else: -# LOGGER.error( -# "instance: %s, No DHCP Associated for VPC and no custom tags. Exiting Script", instance_id) -# # nothing to do, exit out script -# caller_response.append( -# 'No DHCP Associated for VPC and no custom tags. Exiting Script') -# return caller_response - - # put together the FQDN of the dns name... -# final_private_dns_name = final_private_hostname + '.' + final_hosted_zone_name final_private_hostname = f_hostname final_hosted_zone_name = f_zonename final_private_dns_name = '.'.join([f_hostname, f_zonename]) + zone_data_fields = ['name', 'zone_id', 'owner_account', 'is_amazon', 'enabled'] + zone_data_tuple = namedtuple('ZoneData', zone_data_fields) + LOGGER.info("instance: %s, final names for A and PTR record host %s zone %s fqdn %s: %s", instance_id, f_hostname, f_zonename, str(final_private_dns_name), lineno()) # Get the PHZ ID for the Zone -# final_hosted_zone_id = get_zone_id(final_hosted_zone_name, hosted_zones) final_hosted_zone_item = phz_collection_by_vpc[final_hosted_zone_name] final_hosted_zone_id = final_hosted_zone_item['zone_id'] + zone_data_forward = zone_data_tuple( + *phz_collection_by_vpc[final_hosted_zone_name].values()) + zone_data_reverse = zone_data_tuple( + *phz_collection_by_vpc[tag_data['ptr_entry'].zonename].values()) + + LOGGER.info(f"zone_data_forward: {pformat(zone_data_forward)}') + LOGGER.info(f"zone_data_reverse: {pformat(zone_data_reverse)}') + LOGGER.debug("private_hosted_zone_id:" " %s", str(final_hosted_zone_id) + lineno()) final_hosted_zone_owner = final_hosted_zone_item['owner_account'] LOGGER.debug("private_hosted_zone_owner: is_mine %s" " %s", final_hosted_zone_owner == account_id, str(final_hosted_zone_owner) + lineno()) -# LOGGER.debug("valid_dns_zones:" -# " %s", str(valid_dns_zones) + lineno()) - # create the TXT heritage record heritage = initialize_heritage(HERITAGE_TAG, VERSION, { @@ -763,6 +733,7 @@ def lambda_handler( ) append_msg = f"A record in zone id: {final_hosted_zone_id} for hostname {final_private_hostname} " + \ f"zone {final_hosted_zone_name} to value {private_ip}" + count[create_response] += 1 if create_response == 'success': LOGGER.info("instance: %s, Created %s", instance_id, append_msg + lineno()) @@ -792,6 +763,7 @@ def lambda_handler( append_msg = f"TXT record in zone id: {reverse_lookup_zone_id} for hostname {final_private_hostname} " + \ f"zone {final_hosted_zone_name} to value {heritage_value}" + count[create_response] += 1 if create_response == 'success': LOGGER.info("instance: %s, Created %s", instance_id, append_msg + lineno()) @@ -820,6 +792,7 @@ def lambda_handler( ) append_msg = f"PTR record in zone id: {reverse_lookup_zone_id} for hostname {tag_data['ptr_entry'].hostname} " + \ f"zone {tag_data['ptr_entry'].zonename} to value {final_private_dns_name}" + count[create_response] += 1 if create_response == 'success': LOGGER.info("instance: %s, Created %s", instance_id, append_msg + lineno()) @@ -850,6 +823,7 @@ def lambda_handler( append_msg = f"TXT record in zone id: {reverse_lookup_zone_id} for hostname {tag_data['ptr_entry'].hostname} " + \ f"zone {tag_data['ptr_entry'].zonename} to value {heritage_value}" + count[create_response] += 1 if create_response == 'success': LOGGER.info("instance: %s, Created %s", instance_id, append_msg + lineno()) @@ -882,6 +856,7 @@ def lambda_handler( delete_records = delete_records and process_response['delete_success'] # append to the lsit caller_response = caller_response + process_response['msg'] + count[f"delete_success.{process_response.get('delete_success')}"] += 1 if not flags['noreverse']: # Process and delete PTR record and associated TXT record @@ -903,6 +878,7 @@ def lambda_handler( delete_records = delete_records and process_response['delete_success'] # append to the lsit caller_response = caller_response + process_response['msg'] + count[f"delete_success.{process_response.get('delete_success')}"] += 1 # Process the CNAME record only if it has passed the check if tag_data['option_cname'].valid: @@ -1019,19 +995,20 @@ def lambda_handler( LOGGER.info("instance: %s, deleted the item from DynamoDB: %s", instance_id, DDBNAME + lineno()) caller_response.insert(0, 'Successfully removed recordsets') - return caller_response else: LOGGER.info("instance: %s, not all records deleted, leaving item in DynamoDB: %s", instance_id, DDBNAME + lineno()) caller_response.insert( 0, 'Failed to remove recordsets, leaving DynamoDB item for instance: ' + instance_id) - return caller_response else: LOGGER.info("instance: %s, Successfully created recordsets. %s", instance_id, lineno()) caller_response.insert(0, 'Successfully created recordsets') - return caller_response + + LOGGER.info(f'{APPNAME} stats: ' + + ' '.join([f"{c}={count[c]}" for c in sorted(count.keys())])) + return caller_response def get_cname_from_tags(tags): @@ -1080,6 +1057,8 @@ def get_instances(client, instance_id): LOGGER.info("instance: %s, describe_instances returned RequestLimitExceeded, waiting before retry. %s", instance_id, str(i) + lineno()) time.sleep(i) + count['sleep.count'] += 1 + count['sleep.time'] += i return instance_data @@ -1123,6 +1102,8 @@ def new_list_hosted_zones(client, instance_id): LOGGER.info("instance: %s, list_hosted_zones returned error, waiting before retry. %s", instance_id, str(i) + lineno()) time.sleep(i) + count['sleep.count'] += 1 + count['sleep.time'] += i if hosted_zones == {}: LOGGER.error("instance: %s, list_hosted_zones returned error. Timed out. %s", @@ -1177,6 +1158,8 @@ def new_list_hosted_zones_by_vpc(client, instance_id, vpc_id, region): LOGGER.info("instance: %s, list_hosted_zones_by_vpc %v returned error, waiting before retry. %s", vpc_id, instance_id, str(i) + lineno()) time.sleep(i) + count['sleep.count'] += 1 + count['sleep.time'] += i if hosted_zones == {}: LOGGER.error("vpc_id: %s, instance: %s, list_hosted_zones_by_vpc returned error. Timed out. %s", @@ -1422,6 +1405,8 @@ def get_dhcp_option_set_id_for_vpc(client, instance_id, vpc_id): LOGGER.info("instance: %s, describe_vpcs returned RequestLimitExceeded, waiting before retry. %s", instance_id, str(i) + lineno()) time.sleep(i) + count['sleep.count'] += 1 + count['sleep.time'] += i return option_set_for_vpc @@ -1586,6 +1571,8 @@ def new_change_resource_recordset(oclient, instance_id, zone_id, host_name, host LOGGER.info("instance: %s, change_resource_record_sets UPSERT returned error, waiting before retry. %s", instance_id, str(i) + lineno()) time.sleep(i) + count['sleep.count'] += 1 + count['sleep.time'] += i if i >= MAX_API_RETRY: LOGGER.error("instance: %s, change_resource_record_sets exceeded max retry of %s", @@ -1628,9 +1615,6 @@ def create_resource_record(client, instance_id, zone_id, host_name, hosted_zone_ " %s hosted_zone_name: %s record_type: %s value: %s %s", zone_id, host_name, hosted_zone_name, record_type, value, lineno()) try: - # if host_name[-1] != '.': - # host_name = host_name + '.' - LOGGER.debug( "Updating %s in zone %s%s to %s %s", record_type, host_name, hosted_zone_name, value, lineno()) @@ -1801,6 +1785,8 @@ def new_get_resource_record(oclient, instance_id, zone_id, host_name, hosted_zon LOGGER.info("instance: %s, list_resource_record_sets returned error, waiting before retry. %s", instance_id, str(i) + lineno()) time.sleep(i) + count['sleep.count'] += 1 + count['sleep.time'] += i if i >= MAX_API_RETRY: LOGGER.error("instance: %s, list_resource_record_sets exceeded max retry of %s", @@ -1980,6 +1966,8 @@ def new_delete_resource_record(oclient, instance_id, zone_id, host_name, hosted_ LOGGER.info("instance: %s, change_resource_record_sets DELETE returned error, waiting before retry. %s", instance_id, str(i) + lineno()) time.sleep(i) + count['sleep.count'] += 1 + count['sleep.time'] += i if i >= MAX_API_RETRY: LOGGER.error("instance: %s, change_resource_record_sets exceeded max retry of %s", @@ -2162,6 +2150,8 @@ def get_dhcp_configurations(client, instance_id, dhcp_options_id): LOGGER.info("instance: %s, describe_dhcp_options returned RequestLimitExceeded, waiting before retry. %s", instance_id, str(i) + lineno()) time.sleep(i) + count['sleep.count'] += 1 + count['sleep.time'] += i return zone_name @@ -2338,6 +2328,8 @@ def is_dns_hostnames_enabled(client, instance_id, vpc_id): LOGGER.info("instance: %s, describe_vpc_attribute returned RequestLimitExceeded, waiting before retry. %s", instance_id, str(i) + lineno()) time.sleep(i) + count['sleep.count'] += 1 + count['sleep.time'] += i return dns_hostname_enabled @@ -2375,6 +2367,8 @@ def is_dns_support_enabled(client, instance_id, vpc_id): LOGGER.info("instance: %s, describe_vpc_attribute returned RequestLimitExceeded, waiting before retry. %s", instance_id, str(i) + lineno()) time.sleep(i) + count['sleep.count'] += 1 + count['sleep.time'] += i return dns_suppport_enabled @@ -2436,6 +2430,8 @@ def new_get_hosted_zone_properties(client, instance_id, zone_id): LOGGER.info("instance: %s, get_hosted_zone returned error, waiting before retry. %s", instance_id, str(i) + lineno()) time.sleep(i) + count['sleep.count'] += 1 + count['sleep.time'] += i if hosted_zone_properties == {}: LOGGER.error("instance: %s, get_hosted_zone exceeded max retry of %s", @@ -2489,6 +2485,8 @@ def get_subnet_cidr_block(client, instance_id, subnet_id): LOGGER.info("instance: %s, describe_subnets returned RequestLimitExceeded, waiting before retry. %s", instance_id, str(i) + lineno()) time.sleep(i) + count['sleep.count'] += 1 + count['sleep.time'] += i return cidr_block @@ -3038,8 +3036,7 @@ def get_session_assume_role(account): """ this_session = sessions.get(account, None) -# try: - if True: + try: if this_session is None: LOGGER.debug("Existing session not found for account %s: %s", account, lineno()) @@ -3049,8 +3046,9 @@ def get_session_assume_role(account): LOGGER.debug("Called sts:assumerole for arn %s: %s", str(role_arn), lineno()) credentials = response['Credentials'] - LOGGER.debug("Got credentials, expiration %s: %s", - str(credentials['Expiration']), lineno()) + LOGGER.info( + f"Called assume_role for {account} ARN {role_arn}, got credentials with expiration {credentials['Expiration']}: {lineno()}") + count['assumed_role.new'] += 1 this_session = boto3.Session( aws_access_key_id=credentials["AccessKeyId"], aws_secret_access_key=credentials["SecretAccessKey"], @@ -3060,11 +3058,12 @@ def get_session_assume_role(account): LOGGER.debug("Crated new session for account %s: %s", str(account), lineno()) else: - LOGGER.debug("Found existing session for account %s: %s", account, lineno()) + LOGGER.debug(f"Found existing session for account {account}: {lineno()}") + count['assumed_role.cached_'] += 1 return this_session -# except Exception as err: -# LOGGER.error("Unable assume_role session in account %s: %s", -# str(zone_account), str(err) + lineno()) + except Exception as err: + LOGGER.error( + f"Unable assume_role session in account {account} error {err}: {lineno()}") return None diff --git a/code/ddns-lambda.zip b/code/ddns-lambda.zip index 5cd5c1dce78086e6f777db9a6234b21a37dcb269..3b98b49ef5c58b08695f61cb2ef465c513818706 100644 GIT binary patch literal 21058 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 NJOBUy@KFE&003su`xF2G literal 21171 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 W1^@s60096206YKy0AW%90000iHX?2S