TA-vorlage: nsset_to_ext: Ändern der Nameserver eines Sets von regulär (A/AAAA-RR-basiert) nach extern (REF-FQDN-basiert)
Das folgende Beispiel (NSSet-Name: "kit-imk-pub") ist absichtlich gewählt und soll demonstrieren, was passiert, wenn man Nameserver mit Glue-A/AAAA-Records behandelt. In diesem Fall würden die Glue-A/AAAA-Records nach der Transaktion verschwunden sein, was natürlich nicht gewollt sein kann (da der NS-FQDN in einer der delegierten Zonen liegt). Es gibt hierfür keinen Check, dh. der Anwender muss darauf achten, dass die Nameserver keine Glue-A/AAAA-Records haben.
Eine weitere Voraussetzung ist, dass das NS-Set exklusiv bzw. exklusiv-fähig ist, dh. dass alle beteiligten Nameserver (NSSet-Members) entweder ausschliesslich in diesem Set vorkommen oder zusätzlich auch in anderen Sets, die dann aber auch nur exakt dieselben Nameserver beinhalten. Ansonsten würde es auch eine DBRT-Kollision geben (s.u. bei Stmt. "upd1").
Schrittfolge nach Stmt-Index:
- "nsset": Definition des NS-Satzes. Alle NS dieses Satzes werden auf den RRT
REF-FQDN
umgestellt - "nsset_mbrs": alle Nameserver des NS-Satzes
- "imp": Alle NS des NS-Satzes auf RRT
REF-FQDN
importieren. 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-Typnameserver
und ein anderer den Target-FQDN-Typnameserver_extref
hat.
[
{"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"} },
{"idx": "imp", "name": "dns.record.imp", "constraints_deferred": ["api_chk_fkey_dns_record_dbrt"], "new":
{
"fqdn_type": "nameserver_extref",
"strict_mode": true,
"import_data":{
"dns.record_imp":[
{ "type": "REF-FQDN", "data_list": [null] }
]
}
},
"new_ref_params": [ {"idx": "nsset_mbrs", "params": {"fqdn": "ns_fqdn"}} ]
}
]