def parse_record_set()

in cartography/intel/aws/route53.py [0:0]


def parse_record_set(record_set, zone_id):
    # process CNAME, ALIAS and A records
    if record_set['Type'] == 'CNAME':
        if 'AliasTarget' in record_set:
            # this is a weighted CNAME record
            value = record_set['AliasTarget']['DNSName']
            if value.endswith('.'):
                value = value[:-1]
            return {
                "name": record_set['Name'][:-1],
                "type": 'CNAME',
                "zoneid": zone_id,
                "value": value,
                "id": record_set['Name'][:-1] + '+WEIGHTED_CNAME'
            }
        else:
            # This is a normal CNAME record
            value = record_set['ResourceRecords'][0]['Value']
            if value.endswith('.'):
                value = value[:-1]
            return {
                "name": record_set['Name'][:-1],
                "type": 'CNAME',
                "zoneid": zone_id,
                "value": value,
                "id": record_set['Name'][:-1] + '+CNAME'
            }

    elif record_set['Type'] == 'A':
        if 'AliasTarget' in record_set:
            # this is an ALIAS record
            # ALIAS records are a special AWS-only type of A record
            return {
                "name": record_set['Name'][:-1],
                "type": 'ALIAS',
                "zoneid": zone_id,
                "value": record_set['AliasTarget']['DNSName'][:-1],
                "id": record_set['Name'][:-1] + '+ALIAS'
            }
        else:
            # this is a real A record
            # loop and add each value (IP address) to a comma separated string
            # don't forget to trim that trailing comma!
            # TODO can this be replaced with a string join?
            value = ''
            for a_value in record_set['ResourceRecords']:
                value = value + a_value['Value'] + ','

            return {
                "name": record_set['Name'][:-1],
                "type": 'A',
                "zoneid": zone_id,
                "value": value[:-1],
                "id": record_set['Name'][:-1] + '+A'
            }