s4-s3-upgrade rename samba-tool domain samba3upgrade --libdir to --dbdir for clarity
[samba.git] / source4 / scripting / python / samba / upgrade.py
index b41ab77eb23b9ee5c89aaf1a4c34e3fffafd36bf..67dd333b9e1d075b0f0775b79106b3843f51ee68 100644 (file)
@@ -243,6 +243,7 @@ def import_wins(samba4_winsdb, samba3_winsdb):
     :param samba4_winsdb: WINS database to import to
     :param samba3_winsdb: WINS database to import from
     """
+
     version_id = 0
 
     for (name, (ttl, ips, nb_flags)) in samba3_winsdb.items():
@@ -469,7 +470,10 @@ def upgrade_from_samba3(samba3, logger, targetdir, session_info=None, useeadb=Fa
     netbiosname = samba3.lp.get("netbios name")
 
     # secrets db
-    secrets_db = samba3.get_secrets_db()
+    try:
+        secrets_db = samba3.get_secrets_db()
+    except IOError, e:
+        raise ProvisioningError("Could not open '%s', the Samba3 secrets database: %s.  Perhaps you specified the incorrect smb.conf, --testparm or --dbdir option?" % (samba3.privatedir_path("secrets.tdb"), str(e)))
 
     if not domainname:
         domainname = secrets_db.domains()[0]
@@ -621,18 +625,32 @@ 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 == "domain controller":
+        dns_backend = "BIND9_FLATFILE"
+    else:
+        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, machinepass=machinepass,
                        serverrole=serverrole, samdb_fill=FILL_FULL,
-                       useeadb=useeadb)
+                       useeadb=useeadb, dns_backend=dns_backend)
 
     # Import WINS database
     logger.info("Importing WINS database")
-    import_wins(Ldb(result.paths.winsdb), samba3.get_wins_db())
+
+    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")