From fbd19cd478bf3c5345d389953a1f7a44d844da44 Mon Sep 17 00:00:00 2001 From: badra001 Date: Fri, 28 Apr 2023 11:20:37 -0400 Subject: [PATCH] fix --- CHANGELOG.md | 13 +++++ code/ddns-lambda.py | 125 +++++++++++-------------------------------- code/ddns-lambda.zip | Bin 25800 -> 25409 bytes version.tf | 2 +- 4 files changed, 44 insertions(+), 96 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0aa4dcc..797f957 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -118,3 +118,16 @@ * 1.0.2 -- 2023-04-22 - add alllow assume role in (a) org and (b) to remote role r-inf-dynamic-reoute53-actions + +## Release 2.x + +* 2.0.0 -- 2023-04-28 + - code 2.0.0 + - use sessions + - make assume role call to remote account where PHZ is defined + - add dns entries to the DDB item, so that on stop/terminate we delete only what was added + - add flags: noforward, noptr, noheritage, nocname + - add data: boc:dns:ptrname + - add detection of a runnign EMR cluster with aws:elasticmapreduce: job-flow-id (cluster) and instance-group-role and use this to + set an alias defined in boc:dns:cname ({friendlyname}.master), but if it is a cluser node, only use the cname if it is master. If + it is not a cluster, set the cname diff --git a/code/ddns-lambda.py b/code/ddns-lambda.py index 18bef86..0d6654d 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.0b90' +VERSION = '2.0.0rc2' # Read Env variables DEBUG_LOG_LEVEL = os.environ.get('DebugLogLevel', 'INFO') @@ -996,44 +996,7 @@ def lambda_handler( nodelete_dns_data.append(entry) dns_data = nodelete_dns_data -# # Process and delete A record and associated TXT record -# process_response = process_delete_records( -# route53, -# instance_id, -# zone_data_forward.zone_id, -# final_private_hostname, -# zone_data_forward.name, -# 'A', -# private_ip, -# heritage_value -# ) -# -# # only true if existing delete_records and the delete_success from the subroutine is true -# 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 -# process_response = process_delete_records( -# route53, -# instance_id, -# zone_data_reverse.zone_id, -# tag_data['ptr_entry'].hostname, -# tag_data['ptr_entry'].zonename, -# 'PTR', -# final_private_dns_name, -# heritage_value -# ) -# # only true if existing delete_records and the delete_success from the subroutine is true -# 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: if cf_hostname: LOGGER.debug( f"cname record is valid - creating CNAME record host {cf_hostname} zone {cf_zonename}: {lineno()}") @@ -1048,8 +1011,8 @@ def lambda_handler( # create CNAME record in private zone if state == 'running': - try: - if not flags['nocname'] and (all([emr_status.is_cluster, emr_status.is_master]) or not emr_status.is_cluster): + if not flags['nocname'] and (all([emr_status.is_cluster, emr_status.is_master]) or not emr_status.is_cluster): + try: LOGGER.debug(f"cname_host_name: {cf_hostname} {lineno()}") LOGGER.debug(f"cname_domain_suffix: {cf_zonename} {lineno()}") LOGGER.debug(f"cname_domain_suffix_id: {cf_zonename_id} {lineno()}") @@ -1084,12 +1047,11 @@ def lambda_handler( caller_response.append('Failed to create ' + append_msg) LOGGER.error('Failed to create CNAME record: %s', create_response) - except BaseException as err: - LOGGER.error("instance: %s, unexpected error. %s\n", - instance_id, str(err) + lineno()) + except BaseException as err: + LOGGER.error("instance: %s, unexpected error. %s\n", + instance_id, str(err) + lineno()) - try: - if not flags['noheritage'] and not flags['nocname'] and (all([emr_status.is_cluster, emr_status.is_master]) or not emr_status.is_cluster): + try: if len(heritage) > 0: cf_hostname_txt = TXT_RR_PREFIX + '.' + cf_hostname LOGGER.debug( @@ -1121,28 +1083,14 @@ def lambda_handler( LOGGER.error( f"Failed to create TXT for CNAME record: {create_response}") - except BaseException as err: - LOGGER.error( - f"instance: {instance_id}, unexpected error: {err} {lineno()}") + except BaseException as err: + LOGGER.error( + f"instance: {instance_id}, unexpected error: {err} {lineno()}") + else: + if emr_status.is_cluster: + LOGGER.info( + f"instance {instance_id}: is_cluster && not is_master cluster_id {emr_status.cluster_id} NOT setting CNAME {cf_hostname} in zone {cf_zonename} {lineno()}") -# # not running, so process delete CNAME and associated TXT record -# else: -# # Process and delete CNAME record and associated TXT record -# process_response = process_delete_records( -# route53, -# instance_id, -# cname_domain_suffix_id, -# cname_host_name, -# cname_domain_suffix, -# 'CNAME', -# final_private_dns_name, -# heritage_value -# ) -# -# # only true if existing delete_records and the delete_success from the subroutine is true -# delete_records = delete_records and process_response['delete_success'] -# # append to the lsit -# caller_response = caller_response + process_response['msg'] # # update ddb entry to include dns entries written to be able to delete them properly if state == 'running': @@ -1180,7 +1128,6 @@ 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 @@ -1188,16 +1135,7 @@ def lambda_handler( ' '.join([f"{c}={count[c]}" for c in sorted(count.keys())])) return caller_response - -# def put_instance_dns_data_item(dynamodb_client, DDBNAME, instance_id, dns): -# dns_list = [dict(d._asdict()) for d in dns] -# dns_info = json.dumps(dns_list, default=json_serial) -# dns_info = json.dumps(dns_list) -## -# 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 +# end lambda_handler def get_cname_from_tags(tags): @@ -1252,17 +1190,6 @@ def get_instances(client, instance_id): return instance_data -# def list_hosted_zones(client): -# """ -# Get route53 hosted zones -# :param client: -# :return: -# """ -# try: -# return client.list_hosted_zones() -# except ClientError as err: -# LOGGER.info("unexpected error. %s\n", str(err) + lineno()) - def new_list_hosted_zones(client, instance_id): """ @@ -3117,7 +3044,9 @@ def tags_to_dict(tags): :return dict(string): flag settings in defaultdict for controlling which names are registered and when """ - tag_dict = {tag['Key'].lstrip().rstrip(): tag['Value'] for tag in tags} + tag_dict = {} + if len(tags) > 0: + tag_dict = {tag.get('Key', '').lstrip().rstrip(): tag.get('Value', '') for tag in tags} return tag_dict @@ -3134,7 +3063,8 @@ def process_tags_flags(tags): :return dict(string): flag settings in defaultdict for controlling which names are registered and when """ - tag_dict = {tag['Key'].lstrip().lower(): tag['Value'].lower() for tag in tags} +# tag_dict = {tag['Key'].lstrip().lower(): tag['Value'].lower() for tag in tags} + tag_dict = {k.lower(): v.lower() for k, v in tags_to_dict(tags)} flags_dict = defaultdict(lambda: False) flags = tag_dict.get(TAGKEY_FLAGS.lower(), '').split(',') for flag in flags: @@ -3171,7 +3101,8 @@ def process_tags_option_cname(tags): : return tuple(bool, str, str): true | false if vaid, hostname, domainname """ - tag_dict = {tag['Key'].lstrip().lower(): tag['Value'] for tag in tags} +# tag_dict = {tag['Key'].lstrip().lower(): tag['Value'] for tag in tags} + tag_dict = {k.lower(): v for k, v in tags_to_dict(tags)} # value = tag_dict.get(TAGKEY_CNAME.lower(), '').split(',') # need additional work to handle a comma-separated list value = tag_dict.get(TAGKEY_CNAME.lower(), '') @@ -3186,7 +3117,8 @@ def process_tags_option_zone(tags): : return tuple(bool, str, str): true | false if vaid, hostname, domainname """ - tag_dict = {tag['Key'].lstrip().lower(): tag['Value'] for tag in tags} +# tag_dict = {tag['Key'].lstrip().lower(): tag['Value'] for tag in tags} + tag_dict = {k.lower(): v for k, v in tags_to_dict(tags)} value = tag_dict.get(TAGKEY_ZONE.lower(), '') return process_tags_value(value) @@ -3199,7 +3131,8 @@ def process_tags_option_name(tags): : return: """ - tag_dict = {tag['Key'].lstrip().lower(): tag['Value'] for tag in tags} +# tag_dict = {tag['Key'].lstrip().lower(): tag['Value'] for tag in tags} + tag_dict = {k.lower(): v for k, v in tags_to_dict(tags)} value = tag_dict.get(TAGKEY_HOSTNAME.lower(), '') return process_tags_value(value) @@ -3218,7 +3151,8 @@ def process_tags_option_ptrname(tags): : return: """ - tag_dict = {tag['Key'].lstrip().lower(): tag['Value'] for tag in tags} +# tag_dict = {tag['Key'].lstrip().lower(): tag['Value'] for tag in tags} + tag_dict = {k.lower(): v for k, v in tags_to_dict(tags)} value = tag_dict.get(TAGKEY_PTRNAME.lower(), '') return process_tags_value(value) @@ -3231,7 +3165,8 @@ def process_tags_name(tags): : return: """ - tag_dict = {tag['Key'].lstrip().lower(): tag['Value'] for tag in tags} +# tag_dict = {tag['Key'].lstrip().lower(): tag['Value'] for tag in tags} + tag_dict = {k.lower(): v for k, v in tags_to_dict(tags)} value = tag_dict.get('name', '') return process_tags_value(value) diff --git a/code/ddns-lambda.zip b/code/ddns-lambda.zip index 8e840525adb846509f94e886568dedfb06276f8a..63919efb38e443ad59f3459f37fccc98aabd15f1 100644 GIT binary patch delta 24562 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 delta 24994 zcmV)iK%&3F#sSF50gy3&wz4qzUr$j-o_v&cWc4MNeLl^neU@XpyM5Aedu*qZ9d9o! zT7)FV6v+^f-EJSh%RI|G*(?+;1VE6YeCb?vGi#+S5-1c3g{nfKQ0R8MoxQ!o6L=dg zFQO2RZrCDAzk-u#5$6ng1-XhTiTa(+>4E?iZ?EGdfr79iCRYT1*n&Wu&az?|vN%g& zR%A2t%+DqwSxFnsw!O7|(CF~&T z{0-jc(}Sqf`6=dqz}&7092R7H36xxsB1|AJ$aX<~qodA?A?&@`J%VYL&f@v15LL*B zm@*1kioo6G297g4qh;}p_xNuYO}tr&rCzJjASzw|}9m_kTtHjP6@qOzCo zk9LQhmqXwqx5y~N`XuG#jEuHAUx^}gmFHQ(d?mgf!ZGiE3MKG1%PvdFR>D=`j>!niUbS3@(V|hX{I-Q~I3GB9ah%Nf#@|;&cvCcAZKVo@GgrUGtaB zZcTADT_p^E;DTOSA^a=|CS78!Ioo!ujq$<3TFFM;egx0rT z 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 diff --git a/version.tf b/version.tf index 02c6357..6b49608 100644 --- a/version.tf +++ b/version.tf @@ -1,3 +1,3 @@ locals { - _module_version = "1.0.2" + _module_version = "2.0.0" }