.. note::
Pre 4.2.0 the default was always no.
+.. _setting-default-catalog-zone:
+
+``default-catalog-zone``
+------------------------
+
+- String:
+- Default: empty
+
+.. versionadded:: 4.8.3
+
+When a primary zone is created via the API, and the request does not specify a catalog zone, the name given here will be used.
+
.. _setting-default-ksk-algorithms:
.. _setting-default-ksk-algorithm:
::arg().setSwitch("consistent-backends", "Assume individual zones are not divided over backends. Send only ANY lookup operations to the backend to reduce the number of lookups") = "yes";
::arg().set("rng", "Specify the random number generator to use. Valid values are auto,sodium,openssl,getrandom,arc4random,urandom.") = "auto";
+
+ ::arg().set("default-catalog-zone", "Catalog zone to assign newly created primary zones (via the API) to") = "";
#ifdef ENABLE_GSS_TSIG
::arg().setSwitch("enable-gss-tsig", "Enable GSS TSIG processing") = "no";
#endif
g_log << Logger::Error << "Exiting because: " << PE.reason << endl;
exit(1);
}
+
+ try {
+ auto defaultCatalog = ::arg()["default-catalog-zone"];
+ if (!defaultCatalog.empty()) {
+ auto defCatalog = DNSName(defaultCatalog);
+ }
+ }
+ catch (const std::exception& e) {
+ g_log << Logger::Error << "Invalid value '" << ::arg()["default-catalog-zone"] << "' for default-catalog-zone: " << e.what() << endl;
+ exit(1);
+ }
S.blacklist("special-memory-usage");
DLOG(g_log << Logger::Warning << "Verbose logging in effect" << endl);
updateDomainSettingsFromDocument(B, di, zonename, document, !new_records.empty());
+ if (!catalog && kind == DomainInfo::Master) {
+ auto defaultCatalog = ::arg()["default-catalog-zone"];
+ if (!defaultCatalog.empty()) {
+ di.backend->setCatalog(zonename, DNSName(defaultCatalog));
+ }
+ }
+
di.backend->commitTransaction();
g_zoneCache.add(zonename, static_cast<int>(di.id)); // make new zone visible
launch+=bind
bind-config=bindbackend.conf
loglevel=5
+default-catalog-zone=default-catalog.example.com
"""
BINDBACKEND_CONF_TPL = """
def test_create_zone_with_account(self):
# soa_edit_api wins over serial
- name, payload, data = self.create_zone(account='anaccount', serial=10)
+ name, payload, data = self.create_zone(account='anaccount', serial=10, kind='Master')
print(data)
for k in ('account', ):
self.assertIn(k, data)
if k in payload:
self.assertEqual(data[k], payload[k])
+ # as we did not set a catalog in our request, check that the default catalog was applied
+ self.assertEqual(data['catalog'], "default-catalog.example.com.")
+
def test_create_zone_default_soa_edit_api(self):
name, payload, data = self.create_zone()
print(data)