samba_upgradeprovision: detect dns_backend for the reference provision
authorStefan Metzmacher <metze@samba.org>
Fri, 25 Jan 2013 08:36:47 +0000 (09:36 +0100)
committerAndrew Bartlett <abartlet@samba.org>
Sun, 27 Jan 2013 09:14:22 +0000 (20:14 +1100)
If we have a DomainDnsZone partition, we use BIND9_DLZ as backend
and fix errors in the ForestDnsZone and DomainDnsZone partitions.
Note: this should work fine also for SAMBA_INTERNAL.

If the current setup doesn't use dns specific partitions (e.g. alpha13 setups)
we pass dns_backend=BIND9_FLATFILE.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/scripting/bin/samba_upgradeprovision
source4/scripting/python/samba/upgradehelpers.py

index 883fc9a8c68fabf646747e9b848ad4e93b22e001..e2c57f29982fa399cfc6ac7c8266fbbf8e9ca374 100755 (executable)
@@ -228,7 +228,7 @@ creds.set_kerberos_state(DONT_USE_KERBEROS)
 
 
 
-def check_for_DNS(refprivate, private):
+def check_for_DNS(refprivate, private, dns_backend):
     """Check if the provision has already the requirement for dynamic dns
 
     :param refprivate: The path to the private directory of the reference
@@ -238,10 +238,6 @@ def check_for_DNS(refprivate, private):
 
     spnfile = "%s/spn_update_list" % private
     dnsfile = "%s/dns_update_list" % private
-    namedfile = lp.get("dnsupdate:path")
-
-    if not namedfile:
-       namedfile = "%s/named.conf.update" % private
 
     if not os.path.exists(spnfile):
         shutil.copy("%s/spn_update_list" % refprivate, "%s" % spnfile)
@@ -249,10 +245,16 @@ def check_for_DNS(refprivate, private):
     if not os.path.exists(dnsfile):
         shutil.copy("%s/dns_update_list" % refprivate, "%s" % dnsfile)
 
-    destdir = "%s/new_dns" % private
-    dnsdir = "%s/dns" % private
+    if dns_backend not in ['BIND9_DLZ', 'BIND9_FLATFILE']:
+       return
 
+    namedfile = lp.get("dnsupdate:path")
+    if not namedfile:
+       namedfile = "%s/named.conf.update" % private
     if not os.path.exists(namedfile):
+        destdir = "%s/new_dns" % private
+        dnsdir = "%s/dns" % private
+
         if not os.path.exists(destdir):
             os.mkdir(destdir)
         if not os.path.exists(dnsdir):
@@ -1964,7 +1966,7 @@ if __name__ == '__main__':
             # 20)
             updateOEMInfo(ldbs.sam, str(names.rootdn))
             # 21)
-            check_for_DNS(newpaths.private_dir, paths.private_dir)
+            check_for_DNS(newpaths.private_dir, paths.private_dir, names.dns_backend)
             # 22)
             if lastProvisionUSNs is not None:
                 update_provision_usn(ldbs.sam, minUSN, maxUSN, names.invocation)
index 81fb8dc0f42b6adf7363be9f35e0b3a7dfd8bbe8..8427f6ae3767dd42d937efc5daac2f2068931195 100644 (file)
@@ -242,7 +242,6 @@ def newprovision(names, creds, session, smbconf, provdir, logger):
         shutil.rmtree(provdir)
     os.mkdir(provdir)
     logger.info("Provision stored in %s", provdir)
-    dns_backend="BIND9_DLZ"
     return provision(logger, session, creds, smbconf=smbconf,
             targetdir=provdir, samdb_fill=FILL_FULL, realm=names.realm,
             domain=names.domain, domainguid=names.domainguid,
@@ -255,7 +254,7 @@ def newprovision(names, creds, session, smbconf, provdir, logger):
             serverrole="domain controller",
             backend_type=None, ldapadminpass=None, ol_mmr_urls=None,
             slapd_path=None,
-            dom_for_fun_level=names.domainlevel, dns_backend=dns_backend,
+            dom_for_fun_level=names.domainlevel, dns_backend=names.dns_backend,
             useeadb=True, use_ntvfs=True)