[SCM] Samba Shared Repository - branch v4-0-test updated -
release-4-0-0alpha2-1198-g272eb76
Andrew Bartlett
abartlet at samba.org
Mon Mar 3 02:06:32 GMT 2008
The branch, v4-0-test has been updated
via 272eb765b81e3eab216a07249334f9b7d20e530b (commit)
from de1784ec4d50f6eec24b1e9e488b5c07833dc1fd (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test
- Log -----------------------------------------------------------------
commit 272eb765b81e3eab216a07249334f9b7d20e530b
Author: Andrew Bartlett <abartlet at samba.org>
Date: Mon Mar 3 13:03:19 2008 +1100
Fix failure to re-provision.
Somewhere in the conversion from ejs we lost calling the 'delete
partitions' code. However, we have to be careful not to wipe
partitions when we are the second client connecting to an LDAP server.
Andrew Bartlett
-----------------------------------------------------------------------
Summary of changes:
source/samba4-knownfail | 1 -
source/scripting/python/samba/__init__.py | 11 +++++++++--
source/scripting/python/samba/provision.py | 19 ++++++++++++-------
3 files changed, 21 insertions(+), 10 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/samba4-knownfail b/source/samba4-knownfail
index e6a4ea1..66565ca 100644
--- a/source/samba4-knownfail
+++ b/source/samba4-knownfail
@@ -33,5 +33,4 @@ rpc.netlogon.*.GetTrustPasswords
base.charset.*.Testing partial surrogate
.*net.api.delshare.* # DelShare isn't implemented yet
rap.*netservergetinfo
-samba4.blackbox.provision.py.reprovision # Fails with entry already exists
local.torture.provision
diff --git a/source/scripting/python/samba/__init__.py b/source/scripting/python/samba/__init__.py
index b041165..8d5f425 100644
--- a/source/scripting/python/samba/__init__.py
+++ b/source/scripting/python/samba/__init__.py
@@ -127,7 +127,7 @@ class Ldb(ldb.Ldb):
try:
self.delete(msg.dn)
except ldb.LdbError, (LDB_ERR_NO_SUCH_OBJECT, _):
- # Ignor eno such object errors
+ # Ignore no such object errors
pass
res = self.search(basedn, ldb.SCOPE_SUBTREE, "(&(|(objectclass=*)(distinguishedName=*))(!(distinguishedName=@BASEINFO)))", ["distinguishedName"])
@@ -151,7 +151,14 @@ class Ldb(ldb.Ldb):
previous_remaining = current_remaining
current_remaining = len(res2)
for msg in res2:
- self.delete(msg.dn)
+ try:
+ self.delete(msg.dn)
+ # Ignore no such object errors
+ except ldb.LdbError, (LDB_ERR_NO_SUCH_OBJECT, _):
+ pass
+ # Ignore not allowed on non leaf errors
+ except ldb.LdbError, (LDB_ERR_NOT_ALLOWED_ON_NON_LEAF, _):
+ pass
def load_ldif_file_add(self, ldif_path):
"""Load a LDIF file.
diff --git a/source/scripting/python/samba/provision.py b/source/scripting/python/samba/provision.py
index e9aded2..ea2feb9 100644
--- a/source/scripting/python/samba/provision.py
+++ b/source/scripting/python/samba/provision.py
@@ -279,8 +279,6 @@ def setup_samdb_partitions(samdb_path, setup_path, message, lp, session_info,
Alternatively, provision() may call this, and then populate the database.
- :param erase: Remove the existing data present in the database.
-
:note: This will wipe the Sam Database!
:note: This function always removes the local SAM LDB file. The erase
@@ -289,10 +287,15 @@ def setup_samdb_partitions(samdb_path, setup_path, message, lp, session_info,
"""
assert session_info is not None
- if os.path.exists(samdb_path):
+ samdb = SamDB(samdb_path, session_info=session_info,
+ credentials=credentials, lp=lp)
+
+ # Wipes the database
+ try:
+ samdb.erase()
+ except:
os.unlink(samdb_path)
- # Also wipes the database
samdb = SamDB(samdb_path, session_info=session_info,
credentials=credentials, lp=lp)
@@ -547,7 +550,7 @@ def setup_self_join(samdb, configdn, schemadn, domaindn,
def setup_samdb(path, setup_path, session_info, credentials, lp,
schemadn, configdn, domaindn, dnsdomain, realm,
- netbiosname, message, hostname, rootdn, erase,
+ netbiosname, message, hostname, rootdn,
domainsid, aci, domainguid, policyguid,
domainname, fill, adminpass, krbtgtpass,
machinepass, hostguid, invocationid, dnspass,
@@ -560,6 +563,8 @@ def setup_samdb(path, setup_path, session_info, credentials, lp,
assert serverrole in ("domain controller", "member server")
+ erase = (fill != FILL_DRS)
+
# Also wipes the database
setup_samdb_partitions(path, setup_path, schemadn=schemadn, configdn=configdn,
domaindn=domaindn, message=message, lp=lp,
@@ -726,7 +731,7 @@ def provision(lp, setup_dir, message, paths, session_info,
hostguid=None, adminpass=None, krbtgtpass=None, domainguid=None,
policyguid=None, invocationid=None, machinepass=None,
dnspass=None, root=None, nobody=None, nogroup=None, users=None,
- wheel=None, backup=None, aci=None, serverrole=None, erase=False,
+ wheel=None, backup=None, aci=None, serverrole=None,
ldap_backend=None, ldap_backend_type=None, sitename=DEFAULTSITE):
"""Provision samba4
@@ -873,7 +878,7 @@ def provision(lp, setup_dir, message, paths, session_info,
configdn=configdn, domaindn=domaindn,
dnsdomain=dnsdomain, netbiosname=netbiosname,
realm=realm, message=message, hostname=hostname,
- rootdn=rootdn, erase=erase, domainsid=domainsid,
+ rootdn=rootdn, domainsid=domainsid,
aci=aci, domainguid=domainguid, policyguid=policyguid,
domainname=domain, fill=samdb_fill,
adminpass=adminpass, krbtgtpass=krbtgtpass,
--
Samba Shared Repository
More information about the samba-cvs
mailing list