summaryrefslogtreecommitdiffstats
path: root/source4/scripting/python/samba/provision
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2011-07-13 13:05:19 +1000
committerAndrew Tridgell <tridge@samba.org>2011-07-13 12:51:05 +0200
commit2087eb1602d647a7b14523820834231f50dea79d (patch)
tree660826d9d52195800cf44f93f2429c21e5778a2b /source4/scripting/python/samba/provision
parentc60a48948a75a6d300e31c2a2629daa4a48cbeb1 (diff)
downloadsamba-2087eb1602d647a7b14523820834231f50dea79d.tar.gz
samba-2087eb1602d647a7b14523820834231f50dea79d.tar.xz
samba-2087eb1602d647a7b14523820834231f50dea79d.zip
ldb: use base searches for @ special DNs
subtree searches on these DNs don't work any more Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source4/scripting/python/samba/provision')
-rw-r--r--source4/scripting/python/samba/provision/__init__.py25
1 files changed, 14 insertions, 11 deletions
diff --git a/source4/scripting/python/samba/provision/__init__.py b/source4/scripting/python/samba/provision/__init__.py
index 97cf7bff17..4fa2823214 100644
--- a/source4/scripting/python/samba/provision/__init__.py
+++ b/source4/scripting/python/samba/provision/__init__.py
@@ -331,10 +331,9 @@ def update_provision_usn(samdb, low, high, id, replace=False):
tab = []
if not replace:
- entry = samdb.search(expression="(&(dn=@PROVISION)(%s=*))" %
- LAST_PROVISION_USN_ATTRIBUTE, base="",
- scope=ldb.SCOPE_SUBTREE,
- attrs=[LAST_PROVISION_USN_ATTRIBUTE, "dn"])
+ entry = samdb.search(base="@PROVISION",
+ scope=ldb.SCOPE_BASE,
+ attrs=[LAST_PROVISION_USN_ATTRIBUTE, "dn"])
for e in entry[0][LAST_PROVISION_USN_ATTRIBUTE]:
if not re.search(';', e):
e = "%s;%s" % (e, id)
@@ -345,9 +344,9 @@ def update_provision_usn(samdb, low, high, id, replace=False):
delta.dn = ldb.Dn(samdb, "@PROVISION")
delta[LAST_PROVISION_USN_ATTRIBUTE] = ldb.MessageElement(tab,
ldb.FLAG_MOD_REPLACE, LAST_PROVISION_USN_ATTRIBUTE)
- entry = samdb.search(expression="(&(dn=@PROVISION)(provisionnerID=*))",
- base="", scope=ldb.SCOPE_SUBTREE,
- attrs=["provisionnerID"])
+ entry = samdb.search(expression='provisionnerID=*',
+ base="@PROVISION", scope=ldb.SCOPE_BASE,
+ attrs=["provisionnerID"])
if len(entry) == 0 or len(entry[0]) == 0:
delta["provisionnerID"] = ldb.MessageElement(id, ldb.FLAG_MOD_ADD, "provisionnerID")
samdb.modify(delta)
@@ -398,10 +397,14 @@ def get_last_provision_usn(sam):
:return: a dictionnary which keys are invocation id and values are an array
of integer representing the different ranges
"""
- entry = sam.search(expression="(&(dn=@PROVISION)(%s=*))" %
- LAST_PROVISION_USN_ATTRIBUTE,
- base="", scope=ldb.SCOPE_SUBTREE,
- attrs=[LAST_PROVISION_USN_ATTRIBUTE, "provisionnerID"])
+ try:
+ entry = sam.search(expression="%s=*" % LAST_PROVISION_USN_ATTRIBUTE,
+ base="@PROVISION", scope=ldb.SCOPE_BASE,
+ attrs=[LAST_PROVISION_USN_ATTRIBUTE, "provisionnerID"])
+ except ldb.LdbError, (ecode, emsg):
+ if ecode == ldb.ERR_NO_SUCH_OBJECT:
+ return None
+ raise
if len(entry):
myids = []
range = {}