diff options
Diffstat (limited to 'source4/scripting/python')
| -rw-r--r-- | source4/scripting/python/samba/provision.py | 46 | ||||
| -rw-r--r-- | source4/scripting/python/samba/provisionbackend.py | 7 | 
2 files changed, 12 insertions, 41 deletions
| diff --git a/source4/scripting/python/samba/provision.py b/source4/scripting/python/samba/provision.py index f3af30ce39..d797dc9d21 100644 --- a/source4/scripting/python/samba/provision.py +++ b/source4/scripting/python/samba/provision.py @@ -39,7 +39,6 @@ import samba  import subprocess  import ldb -import shutil  from auth import system_session, admin_session  from samba import version, Ldb, substitute_var, valid_netbios_name, setup_file @@ -518,33 +517,12 @@ def setup_samdb_partitions(samdb_path, setup_path, message, lp, session_info,      # just want to wipe and re-initialise the database, not start it up      try: -        samdb = Ldb(url=samdb_path, session_info=session_info,  -                      lp=lp, options=["modules:"]) -        res = samdb.search(base="@PARTITION", scope=SCOPE_BASE, attrs=["partition"], expression="partition=*") -        if len(res) == 1: -            try: -                old_partitions = res[0]["partition"] -            except KeyError: -                pass - -        if old_partitions is not None: -            new_partitions = []; -            for old_partition in old_partitions: -                new_partition = old_partition -                if old_partition.endswith(".ldb"): -                    p = old_partition.split(":")[0] -                    dn = ldb.Dn(schema.ldb, p) -                    new_partition = dn.get_casefold() -                new_partitions.append(new_partition) - -        # Wipes the database -        samdb.erase_except_schema_controlled() -    except LdbError:          os.unlink(samdb_path) -        samdb = Ldb(url=samdb_path, session_info=session_info,  -                      lp=lp, options=["modules:"]) -         # Wipes the database -        samdb.erase_except_schema_controlled() +    except OSError: +        pass + +    samdb = Ldb(url=samdb_path, session_info=session_info,  +                lp=lp, options=["modules:"])      #Add modules to the list to activate them by default      #beware often order is important @@ -628,13 +606,6 @@ def setup_samdb_partitions(samdb_path, setup_path, message, lp, session_info,          }) -        if new_partitions is not None: -            m = ldb.Message() -            m.dn = ldb.Dn(samdb, "@PARTITION") -             -            m["partition"] = ldb.MessageElement(new_partitions, ldb.FLAG_MOD_ADD, "partition") -            samdb.modify(m) -          samdb.load_ldif_file_add(setup_path("provision_init.ldif"))          message("Setting up sam.ldb rootDSE") @@ -949,13 +920,6 @@ def setup_samdb(path, setup_path, session_info, provision_backend, lp,      samdb.transaction_start()      try: -        message("Erasing data from partitions") -        # Load the schema (again).  This time it will force a reindex, -        # and will therefore make the erase_partitions() below -        # computationally sane -        samdb.set_schema_from_ldb(schema.ldb) -        samdb.erase_partitions() -              # Set the domain functionality levels onto the database.          # Various module (the password_hash module in particular) need          # to know what level of AD we are emulating. diff --git a/source4/scripting/python/samba/provisionbackend.py b/source4/scripting/python/samba/provisionbackend.py index fc1bac673d..8f1b94f1bd 100644 --- a/source4/scripting/python/samba/provisionbackend.py +++ b/source4/scripting/python/samba/provisionbackend.py @@ -30,6 +30,7 @@ import os  import sys  import uuid  import time +import shutil  from samba import read_and_sub_file  from samba import Ldb @@ -80,6 +81,9 @@ class ProvisionBackend(object):          if self.type is "ldb":              self.credentials = None              self.secrets_credentials = None +     +            # Wipe the old sam.ldb databases away +            shutil.rmtree(paths.samdb + ".d", True)              return          self.ldapi_uri = "ldapi://" + urllib.quote(os.path.join(paths.ldapdir, "ldapi"), safe="") @@ -230,6 +234,9 @@ def provision_openldap_backend(result, setup_path=None, names=None,                                 slapd_path=None, nosync=False,                                 ldap_dryrun_mode=False): +    # Wipe the directories so we can start +    shutil.rmtree(os.path.join(result.paths.ldapdir, "db"), True) +      #Allow the test scripts to turn off fsync() for OpenLDAP as for TDB and LDB      nosync_config = ""      if nosync: | 
