TA-vorlage: nsset_from_ext: Ändern der Nameserver eines Sets von extern (REF-FQDN-basiert) nach regulär (A/AAAA-RR-basiert)
Schrittfolge nach Stmt-Index:
- "defineData": Zusammenstellung der Import-Daten der beteiligten Nameserver (A/AAAA). Dieses Dict muss mit dem aktuellen Nameserver-Bestand des NS-Sets aus Stmt. "nsset" übereinstimmen (nicht innerhalb d. TA automatisierbar).
- "nsset": Definition des NS-Satzes. Alle NS dieses Satzes werden auf die zu importierenden RRT umgestellt. Der Nameserver-Bestand des NS-Sets muss mit den zu importierenden Nameservern in Stmt. "defineData" übereinstimmen.
- "nsset_mbrs": alle Nameserver des NS-Satzes
- "imp": Alle NS des NS-Satzes auf die in Stmt. "defineData" definierten RRT importieren. Konstant sind dabei "fqdn_type", "strict_mode"; variabel via "new_ref_params" sind "fqdn" und "import_data". Über den Inner Join wird sichergestellt, dass die Tupel aus "nsset_mbrs" und "defineData" jeweils durch den FQDN wertgleich verbunden werden (Festlegung in den referenzierten Stmts. unter "ref_params_join_on_val_attrs_tuple"). Den Constraint 'api_chk_fkey_dns_record_dbrt' auf deferred setzen, weil sonst eine DBRT-Kollision im NS-RR-Set entstehen würde. Die Kollision entsteht, wenn das NS-RR-Set mind. 2 RRs hat und einer davon den Target-FQDN-Typ nameserver und ein anderer den Target-FQDN-Typ nameserver_extref hat.
[
{
"idx":"defineData",
"name": "tmp.generic_object.list",
"ref_params_join_on_val_attrs_tuple": ["fqdn"],
"old": { "_dict_list": [
{"fqdn": "dns1.imk-ifu.kit.edu.", "import_data": {"dns.record_imp":[{ "type": "A", "data_list": ["195.37.187.139"] }]} },
{"fqdn": "dns2.imk-ifu.kit.edu.", "import_data": {"dns.record_imp":[{ "type": "A", "data_list": ["195.37.187.137"] }]} }
]
}
},
{"idx": "nsset", "name": "dnscfg.ns_set.list", "old": {"name": "kit-imk-pub"} },
{"idx": "nsset_mbrs", "name": "dnscfg.ns_set_member.list", "inner_join_ref": {"nsset": "default"}, "ref_params_join_on_val_attrs_tuple": ["ns_fqdn"] },
{"idx": "imp", "name": "dns.record.imp", "constraints_deferred": ["api_chk_fkey_dns_record_dbrt"], "new":
{
"fqdn_type": "nameserver",
"strict_mode": true
},
"new_ref_params": [
{"idx": "nsset_mbrs", "params": {"fqdn": "ns_fqdn"}},
{"idx": "defineData", "join_type": "inner", "join_on": "val", "params": {"import_data": "import_data"}}
]
}
]