s4-classicupgrade: Do all the queries of data before the provision()
authorAndrew Bartlett <abartlet@samba.org>
Mon, 27 Aug 2012 07:20:51 +0000 (17:20 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 27 Aug 2012 21:57:29 +0000 (07:57 +1000)
This allows provision to change the s3 smb.conf settings if required.

Andrew Bartlett

source4/scripting/python/samba/upgrade.py

index 32d8326cf95d37ff92cd8531b7e03167761bf749..4d4b08a76c9a2662ca6084c572088836398711ca 100644 (file)
@@ -769,41 +769,6 @@ Please fix this account before attempting to upgrade again
             logger.error("   %s" % str(sid))
         raise ProvisioningError("Please remove duplicate sid entries before upgrade.")
 
-    if not (serverrole == "ROLE_DOMAIN_BDC" or serverrole == "ROLE_DOMAIN_PDC"):
-        dns_backend = "NONE"
-
-    # Do full provision
-    result = provision(logger, session_info, None,
-                       targetdir=targetdir, realm=realm, domain=domainname,
-                       domainsid=str(domainsid), next_rid=next_rid,
-                       dc_rid=machinerid,
-                       dom_for_fun_level=dsdb.DS_DOMAIN_FUNCTION_2003,
-                       hostname=netbiosname.lower(), machinepass=machinepass,
-                       serverrole=serverrole, samdb_fill=FILL_FULL,
-                       useeadb=useeadb, dns_backend=dns_backend, use_rfc2307=True,
-                       use_ntvfs=use_ntvfs)
-    result.report_logger(logger)
-
-    # Import WINS database
-    logger.info("Importing WINS database")
-
-    samba3_winsdb = None
-    try:
-        samba3_winsdb = samba3.get_wins_db()
-    except IOError, e:
-        logger.warn('Cannot open wins database, Ignoring: %s', str(e))
-
-    if samba3_winsdb:
-        import_wins(Ldb(result.paths.winsdb), samba3_winsdb)
-
-    # Set Account policy
-    logger.info("Importing Account policy")
-    import_sam_policy(result.samdb, policy, logger)
-
-    # Migrate IDMAP database
-    logger.info("Importing idmap database")
-    import_idmap(result.idmap, samba3, logger)
-
     # Get posix attributes from ldap or the os
     homes = {}
     shells = {}
@@ -844,6 +809,41 @@ Please fix this account before attempting to upgrade again
                 except KeyError:
                     pass
 
+    if not (serverrole == "ROLE_DOMAIN_BDC" or serverrole == "ROLE_DOMAIN_PDC"):
+        dns_backend = "NONE"
+
+    # Do full provision
+    result = provision(logger, session_info, None,
+                       targetdir=targetdir, realm=realm, domain=domainname,
+                       domainsid=str(domainsid), next_rid=next_rid,
+                       dc_rid=machinerid,
+                       dom_for_fun_level=dsdb.DS_DOMAIN_FUNCTION_2003,
+                       hostname=netbiosname.lower(), machinepass=machinepass,
+                       serverrole=serverrole, samdb_fill=FILL_FULL,
+                       useeadb=useeadb, dns_backend=dns_backend, use_rfc2307=True,
+                       use_ntvfs=use_ntvfs)
+    result.report_logger(logger)
+
+    # Import WINS database
+    logger.info("Importing WINS database")
+
+    samba3_winsdb = None
+    try:
+        samba3_winsdb = samba3.get_wins_db()
+    except IOError, e:
+        logger.warn('Cannot open wins database, Ignoring: %s', str(e))
+
+    if samba3_winsdb:
+        import_wins(Ldb(result.paths.winsdb), samba3_winsdb)
+
+    # Set Account policy
+    logger.info("Importing Account policy")
+    import_sam_policy(result.samdb, policy, logger)
+
+    # Migrate IDMAP database
+    logger.info("Importing idmap database")
+    import_idmap(result.idmap, samba3, logger)
+
     # Set the s3 context for samba4 configuration
     new_lp_ctx = s3param.get_context()
     new_lp_ctx.load(result.lp.configfile)