testprogs/blackbox: PY3 bulk change for python scripts use correct python
[amitay/samba.git] / python / samba / sites.py
index 9bce99840a03ef00325f60c7f500a3c1017ae2d3..6f7aea09ccffdec83adf6ae91f3e55206df8ef78 100644 (file)
@@ -18,7 +18,7 @@
 """Manipulating sites."""
 
 import ldb
-from ldb import FLAG_MOD_ADD
+from ldb import FLAG_MOD_ADD, LdbError
 
 
 class SiteException(Exception):
@@ -55,7 +55,7 @@ def create_site(samdb, configDn, siteName):
     """
 
     ret = samdb.search(base=configDn, scope=ldb.SCOPE_SUBTREE,
-                    expression='(&(objectclass=Site)(cn=%s))' % siteName)
+                       expression='(&(objectclass=Site)(cn=%s))' % siteName)
     if len(ret) != 0:
         raise SiteAlreadyExistsException('A site with the name %s already exists' % siteName)
 
@@ -92,17 +92,28 @@ def delete_site(samdb, configDn, siteName):
     :raise SiteServerNotEmpty: if the site has still servers in it.
     """
 
-    dnsites = ldb.Dn(samdb, "CN=Sites,%s" % (str(configDn)))
-    dnsite = ldb.Dn(samdb, "Cn=%s,CN=Sites,%s" % (siteName, str(configDn)))
-    dnserver = ldb.Dn(samdb, "Cn=Servers,%s" % str(dnsite))
-
-    ret = samdb.search(base=dnsites, scope=ldb.SCOPE_ONELEVEL,
-                    expression='(dn=%s)' % str(dnsite))
-    if len(ret) != 1:
-        raise SiteNotFoundException('Site %s does not exist' % siteName)
-
-    ret = samdb.search(base=dnserver, scope=ldb.SCOPE_ONELEVEL,
-                    expression='(objectclass=server)')
+    dnsite = ldb.Dn(samdb, "CN=Sites")
+    if dnsite.add_base(configDn) == False:
+        raise SiteException("dnsites.add_base() failed")
+    if dnsite.add_child("CN=X") == False:
+        raise SiteException("dnsites.add_child() failed")
+    dnsite.set_component(0, "CN", siteName)
+
+    dnservers = ldb.Dn(samdb, "CN=Servers")
+    dnservers.add_base(dnsite)
+
+    try:
+        ret = samdb.search(base=dnsite, scope=ldb.SCOPE_BASE,
+                           expression="objectClass=site")
+        if len(ret) != 1:
+            raise SiteNotFoundException('Site %s does not exist' % siteName)
+    except LdbError as e:
+        (enum, estr) = e.args
+        if enum == ldb.ERR_NO_SUCH_OBJECT:
+            raise SiteNotFoundException('Site %s does not exist' % siteName)
+
+    ret = samdb.search(base=dnservers, scope=ldb.SCOPE_ONELEVEL,
+                       expression='(objectclass=server)')
     if len(ret) != 0:
         raise SiteServerNotEmptyException('Site %s still has servers in it, move them before removal' % siteName)