Funktionalität des DNS-RR-Imports

Verfahrensbeschreibung

Durch das Import-Verfahren besteht die Möglichkeit, den Sollzustand eines ganzheitlichen Datenbestandes abzubilden. Dieser ganzheitliche Datenbestand umfasst alle (regulär modifizierbaren, dh. dnscfg.record_type.force_auto_dml = false) RR-Sätze eines FQDNs.

Als Import-Medium dient ein JSON-Dokument. Das Import-Verfahren besteht darin, dass der aktuell vorhandene Datenbestand eines FQDNs (RR-Sätze) mit dem des zu importierenden Datenbestandes (RR-Sätze des Import-JSON-Dokuments) nach einem Differenzverfahren abgeglichen wird. Nach erfolgreichem Abschluss des Imports gibt es je nach strict_mode

  • true (Standard): keinen Unterschied zwischen beiden Datenbeständen, dh. der Stand der Daten im Import-Medium stellt den Sollzustand dar.
  • false: einen Unterschied; dieser besteht nur aus den Import-Daten selbst, dh. nicht importierte, aber vorher vorhandene Daten bleiben erhalten.

Pro Import-Vorgang wird genau ein FQDN behandelt. Für FQDNs selbst können Änderungen des Typs, aber keine Einträge oder Löschungen vorgenommen werden. Eine Typänderung wird, soweit sie durch den Import erforderlich wäre und eindeutig ist, automatisch vorgenommen. Eine explizite Typänderung ist nur erforderlich, wenn die RR-Sätze des FQDNs (im Ergebnis des Imports) mehrere Möglichkeiten offenlassen und daraus ein bestimmter Typ bevorzugt werden soll.

Die folgende Tabelle zeigt die Zuordnung zwischen regulärem Objekttyp (FQDN-bezogen) und Import-Objekttyp des JSON-Dokuments:

FQDN-bezogener Objekttyp korrespondierender Import-Objekttyp (JSON)
dns.record dns.record_imp

Obwohl diese Zuordnung nur aus einem Objekttyp-Paar besteht, ist sie erforderlich, weil die imp- Funktion für die aktuell unterstützten Objekttypen generisch ist.

Datenstruktur des Import-JSON-Dokuments

Die Daten im JSON-Dokument für den RR-Import haben immer überschreibende Wirkung, dh. der Stand der Daten im importierten JSON-Dokument stellt den Sollzustand dar. Schema:

{
  "dns.record_imp": [
    {
      "data_list": [""],
      "target_is_reverse_unique": false,
      "target_is_singleton": false,
      "ttl": 0,
      "ttl_reset_days": 0,
      "type": "TXT"
    }
  ]
}

Die Import-Objekttypen (JSON-Keys des importierten JSON-Dokuments) und deren Attribute sowie Datenintegritätsbedingungen (Constraints) sind im Objekttyp- bzw. Funktionsindex unter der Funktion document sichtbar. Die inneren JSON-Objekte stellen die zu importierenden Datensätze dar. Deren Keys entsprechen den Attributnamen des zugehörigen Import-Objekttyps. Wird data_list als leeres JSON-Array übergeben, bewirkt dies die Löschung des RR-Satzes. Attribute in Import-Datensätzen, die namentlich keine Übereinstimmung mit den dokumentierten Attributen haben, werden automatisch ignoriert. Nicht vorkommende (weggelassene) Attribute in Import-Datensätzen bekommen automatisch den Wert NULL, sofern kein Standardwert existiert.

Beispiel