Beispiel #1
0
def convert_dyn_to_route53_changes(zone_name: str,
                                   dyn_zone: Zone) -> List[Dict]:
    dyn_records = dyn_zone.get_all_records()
    route53_records = []
    for name, value in dyn_records.items():
        print(f"Zone {dyn_zone} has {name} with {value}")
        record_type = value[0].rec_name.upper()
        record_name = value[0].fqdn
        if record_type in ("SOA", "NS"):
            if record_name == zone_name:
                continue
            else:
                raise MigrationNotSupported(
                    f"{record_type} records not supported")
        resource_records = []
        for sub_record in value:
            try:
                val = sub_record.address
            except AttributeError:
                val = sub_record.cname
            resource_records.append({"Value": val})
        record = {
            "Action": "INSERT",
            "ResourceRecordSet": {
                "Name": record_name,
                "Type": value[0].rec_name.upper(),
                "ResourceRecords": resource_records
            }
        }
        route53_records.append(record)
    return route53_records
Beispiel #2
0
def list_record(zone_name, record_type_arg):
    """
    Print information about records in a zone
    """
    record_type_map = {
        "a": "a_records",
        "cname": "cname_records",
        "mx": "mx_records",
    }
    record_type = record_type_map[record_type_arg]

    try:
        zone = Zone(zone_name)
        records = zone.get_all_records()
    except Exception as e:
        errordie("failed to get records for zone '{}': {}".format(
            zone_name, e))

    # bail out if there weren't any records of the requested type
    if record_type not in records:
        return

    # build list of records
    record_list = []
    for record in records[record_type]:
        if record_type_arg == "a":
            value = record.address
        elif record_type_arg == "cname":
            value = record.cname
        elif record_type_arg == "mx":
            value = record.exchange
        record_list.append({record.fqdn: value})

    # build and output yaml document
    recordset_dict = [{
        "recordset": {
            "type": record_type_arg,
            "zone": zone_name,
            "records": record_list,
        },
    }]
    print(yaml.safe_dump(recordset_dict, default_flow_style=False))
Beispiel #3
0
 def get_zone_records(self, zone_name):
     self.start_session()
     zone = Zone(zone_name)
     records = zone.get_all_records()
     self.close_session()
     return records