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
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))
def get_zone_records(self, zone_name): self.start_session() zone = Zone(zone_name) records = zone.get_all_records() self.close_session() return records