s4-classicupgrade: Allow DNS backend to be specified
authorAndrew Bartlett <abartlet@samba.org>
Sun, 24 Jun 2012 06:31:37 +0000 (16:31 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Sun, 24 Jun 2012 13:46:09 +0000 (23:46 +1000)
source4/scripting/python/samba/netcmd/domain.py
source4/scripting/python/samba/upgrade.py

index e4b1241229a5cede1120d9dc40651afe3b1c9a85..8199c41aba7f2d063ed5beb62283ddbd00fffbe3 100644 (file)
@@ -839,12 +839,20 @@ class cmd_domain_classicupgrade(Command):
         Option("--verbose", help="Be verbose", action="store_true"),
         Option("--use-xattrs", type="choice", choices=["yes","no","auto"], metavar="[yes|no|auto]",
                    help="Define if we should use the native fs capabilities or a tdb file for storing attributes likes ntacl, auto tries to make an inteligent guess based on the user rights and system capabilities", default="auto"),
+        Option("--dns-backend", type="choice", metavar="NAMESERVER-BACKEND",
+               choices=["SAMBA_INTERNAL", "BIND9_FLATFILE", "BIND9_DLZ", "NONE"],
+               help="The DNS server backend. SAMBA_INTERNAL is the builtin name server, " \
+                   "BIND9_FLATFILE uses bind9 text database to store zone information, " \
+                   "BIND9_DLZ uses samba4 AD to store zone information (default), " \
+                   "NONE skips the DNS setup entirely (this DC will not be a DNS server)",
+               default="BIND9_DLZ")
     ]
 
     takes_args = ["smbconf"]
 
     def run(self, smbconf=None, targetdir=None, dbdir=None, testparm=None, 
-            quiet=False, verbose=False, use_xattrs=None, sambaopts=None, versionopts=None):
+            quiet=False, verbose=False, use_xattrs=None, sambaopts=None, versionopts=None,
+            dns_backend=None):
 
         if not os.path.exists(smbconf):
             raise CommandError("File %s does not exist" % smbconf)
@@ -928,7 +936,7 @@ class cmd_domain_classicupgrade(Command):
     
         logger.info("Provisioning")
         upgrade_from_samba3(samba3, logger, targetdir, session_info=system_session(), 
-                            useeadb=eadb)
+                            useeadb=eadb, dns_backend=dns_backend)
 
 class cmd_domain(SuperCommand):
     """Domain management"""
index 3ef79ed6468d8790fe2399d4e381758bb807d992..8ecc6026a641a718cff6cabaf43185845632244a 100644 (file)
@@ -485,7 +485,7 @@ def import_registry(samba4_registry, samba3_regdb):
             key_handle.set_value(value_name, value_type, value_data)
 
 
-def upgrade_from_samba3(samba3, logger, targetdir, session_info=None, useeadb=False):
+def upgrade_from_samba3(samba3, logger, targetdir, session_info=None, useeadb=False, dns_backend=None):
     """Upgrade from samba3 database to samba4 AD database
 
     :param samba3: samba3 object
@@ -689,9 +689,7 @@ Please fix this account before attempting to upgrade again
             logger.error("   %s" % str(sid))
         raise ProvisioningError("Please remove duplicate sid entries before upgrade.")
 
-    if serverrole == "ROLE_DOMAIN_BDC" or serverrole == "ROLE_DOMAIN_PDC":
-        dns_backend = "BIND9_DLZ"
-    else:
+    if not (serverrole == "ROLE_DOMAIN_BDC" or serverrole == "ROLE_DOMAIN_PDC"):
         dns_backend = "NONE"
 
     # Do full provision