python: Bulk conversion callers of ldb.Dn second param
authorNoel Power <noel.power@suse.com>
Wed, 25 Apr 2018 19:01:49 +0000 (20:01 +0100)
committerNoel Power <npower@samba.org>
Mon, 30 Apr 2018 13:43:19 +0000 (15:43 +0200)
Convert second param passed to ldb.Dn to be unicode so py2 & py3 code
will work

Signed-off-by: Noel Power <noel.power@suse.com>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
12 files changed:
python/samba/dbchecker.py
python/samba/descriptor.py
python/samba/join.py
python/samba/kcc/__init__.py
python/samba/netcmd/fsmo.py
python/samba/provision/__init__.py
python/samba/remove_dc.py
python/samba/tests/kcc/ldif_import_export.py
source4/dsdb/tests/python/rodc_rwdc.py
source4/dsdb/tests/python/token_group.py
source4/torture/drs/python/getnc_exop.py
source4/torture/drs/python/ridalloc_exop.py

index bdcbc34e011585d8588f4528f1bf4393d78b9975..9d72fc6ca94f11e2935ba06acf721d13614227bb 100644 (file)
@@ -144,11 +144,11 @@ class dbcheck(object):
 
         for nc in self.ncs:
             try:
-                dn = self.samdb.get_wellknown_dn(ldb.Dn(self.samdb, nc),
+                dn = self.samdb.get_wellknown_dn(ldb.Dn(self.samdb, nc.decode('utf8')),
                                                  dsdb.DS_GUID_DELETED_OBJECTS_CONTAINER)
                 self.deleted_objects_containers.append(dn)
             except KeyError:
-                self.ncs_lacking_deleted_containers.append(ldb.Dn(self.samdb, nc))
+                self.ncs_lacking_deleted_containers.append(ldb.Dn(self.samdb, nc.decode('utf8')))
 
         domaindns_zone = 'DC=DomainDnsZones,%s' % self.samdb.get_default_basedn()
         forestdns_zone = 'DC=ForestDnsZones,%s' % self.samdb.get_root_basedn()
@@ -178,13 +178,13 @@ class dbcheck(object):
         res = self.samdb.search(base=ldb.Dn(self.samdb, self.samdb.get_serverName()),
                                 scope=ldb.SCOPE_BASE, attrs=["serverReference"])
         # 2. Get server reference
-        self.server_ref_dn = ldb.Dn(self.samdb, res[0]['serverReference'][0])
+        self.server_ref_dn = ldb.Dn(self.samdb, res[0]['serverReference'][0].decode('utf8'))
 
         # 3. Get RID Set
         res = self.samdb.search(base=self.server_ref_dn,
                                 scope=ldb.SCOPE_BASE, attrs=['rIDSetReferences'])
         if "rIDSetReferences" in res[0]:
-            self.rid_set_dn = ldb.Dn(self.samdb, res[0]['rIDSetReferences'][0])
+            self.rid_set_dn = ldb.Dn(self.samdb, res[0]['rIDSetReferences'][0].decode('utf8'))
         else:
             self.rid_set_dn = None
 
@@ -2483,7 +2483,7 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
             error_count += 1
             if not self.confirm('Change dsServiceName to GUID form?'):
                 return error_count
-            res = self.samdb.search(base=ldb.Dn(self.samdb, obj['dsServiceName'][0]),
+            res = self.samdb.search(base=ldb.Dn(self.samdb, obj['dsServiceName'][0].decode('utf8')),
                                     scope=ldb.SCOPE_BASE, attrs=['objectGUID'])
             guid_str = str(ndr_unpack(misc.GUID, res[0]['objectGUID'][0]))
             m = ldb.Message()
index a9c5e1580f0f0eefb96bdcb01ed1c9700c3e4636..1e56e5398f87dad5ab103ff5a8a1a68a98fd3a7d 100644 (file)
@@ -415,7 +415,7 @@ def get_wellknown_sds(samdb):
     for nc in current[0]["namingContexts"]:
 
         dnsforestdn = ldb.Dn(samdb, "DC=ForestDnsZones,%s" % (str(samdb.get_root_basedn())))
-        if ldb.Dn(samdb, nc) == dnsforestdn:
+        if ldb.Dn(samdb, nc.decode('utf8')) == dnsforestdn:
             c = (ldb.Dn(samdb, "%s" % str(dnsforestdn)), get_dns_partition_descriptor)
             subcontainers.append(c)
             c = (ldb.Dn(samdb, "CN=Infrastructure,%s" % str(dnsforestdn)),
@@ -430,7 +430,7 @@ def get_wellknown_sds(samdb):
             continue
 
         dnsdomaindn = ldb.Dn(samdb, "DC=DomainDnsZones,%s" % (str(samdb.domain_dn())))
-        if ldb.Dn(samdb, nc) == dnsdomaindn:
+        if ldb.Dn(samdb, nc.decode('utf8')) == dnsdomaindn:
             c = (ldb.Dn(samdb, "%s" % str(dnsdomaindn)), get_dns_partition_descriptor)
             subcontainers.append(c)
             c = (ldb.Dn(samdb, "CN=Infrastructure,%s" % str(dnsdomaindn)),
index b5cab7e7cb3a506c91233d5d00a4e84b7ace0db6..b35eb78e1c6ea67201d09fa769d36e9d38863981 100644 (file)
@@ -388,7 +388,7 @@ class dc_join(object):
         if not 'fSMORoleOwner' in res[0]:
             raise DCJoinException("Can't find naming master on partition DN %s in %s" % (ctx.partition_dn, ctx.samdb.url))
         try:
-            master_guid = str(misc.GUID(ldb.Dn(ctx.samdb, res[0]['fSMORoleOwner'][0]).get_extended_component('GUID')))
+            master_guid = str(misc.GUID(ldb.Dn(ctx.samdb, res[0]['fSMORoleOwner'][0].decode('utf8')).get_extended_component('GUID')))
         except KeyError:
             raise DCJoinException("Can't find GUID in naming master on partition DN %s" % res[0]['fSMORoleOwner'][0])
 
@@ -880,7 +880,7 @@ class dc_join(object):
             raise DCJoinException("Can't find naming context on partition DN %s in %s" % (ctx.partition_dn, ctx.samdb.url))
 
         try:
-            ctx.names.domainguid = str(misc.GUID(ldb.Dn(ctx.samdb, res[0]['ncName'][0]).get_extended_component('GUID')))
+            ctx.names.domainguid = str(misc.GUID(ldb.Dn(ctx.samdb, res[0]['ncName'][0].decode('utf8')).get_extended_component('GUID')))
         except KeyError:
             raise DCJoinException("Can't find GUID in naming master on partition DN %s" % res[0]['ncName'][0])
 
index 1a962bb03c1be75ea7349b832848ac95c1af0e64..be1c4d829682a6387ce9d9aa6232357026542a00 100644 (file)
@@ -274,7 +274,7 @@ class KCC(object):
                                                      scope=ldb.SCOPE_BASE,
                                                      attrs=["dsServiceName"])
                 dn = ldb.Dn(self.samdb,
-                            service_name_res[0]["dsServiceName"][0])
+                            service_name_res[0]["dsServiceName"][0].decode('utf8'))
 
                 res = self.samdb.search(base=dn, scope=ldb.SCOPE_BASE,
                                         attrs=["objectGUID"])
index 41e45592b46611fc42fee5ea24b97f7adfa3d960..91de5dad563a0323d638dd8db950286551945389 100644 (file)
@@ -47,7 +47,7 @@ def get_fsmo_roleowner(samdb, roledn, role):
         raise
 
     if 'fSMORoleOwner' in res[0]:
-        master_owner = (ldb.Dn(samdb, res[0]["fSMORoleOwner"][0]))
+        master_owner = (ldb.Dn(samdb, res[0]["fSMORoleOwner"][0].decode('utf8')))
     else:
         master_owner = None
 
@@ -72,9 +72,9 @@ def transfer_dns_role(outf, sambaopts, credopts, role, samdb):
     if 'fSMORoleOwner' in res[0]:
         try:
             master_guid = str(misc.GUID(ldb.Dn(samdb,
-                              res[0]['fSMORoleOwner'][0])
+                              res[0]['fSMORoleOwner'][0].decode('utf8'))
                               .get_extended_component('GUID')))
-            master_owner = str(ldb.Dn(samdb, res[0]['fSMORoleOwner'][0]))
+            master_owner = str(ldb.Dn(samdb, res[0]['fSMORoleOwner'][0].decode('utf8')))
         except LdbError as e3:
             (num, msg) = e3.args
             raise CommandError("No GUID found in naming master DN %s : %s \n" %
index 1709e75184e74f3e1064f249dddb5ae2138b8aa3..43ccb0f87660b57b75da5ecebcf3d5554e180d5b 100644 (file)
@@ -220,10 +220,10 @@ def find_provision_key_parameters(samdb, secretsdb, idmapdb, paths, smbconf,
     names.configdn = current[0]["configurationNamingContext"][0]
     names.schemadn = current[0]["schemaNamingContext"][0]
     if not (ldb.Dn(samdb, basedn) == (ldb.Dn(samdb,
-                                       current[0]["defaultNamingContext"][0]))):
+                                       current[0]["defaultNamingContext"][0].decode('utf8')))):
         raise ProvisioningError(("basedn in %s (%s) and from %s (%s)"
                                  "is not the same ..." % (paths.samdb,
-                                    str(current[0]["defaultNamingContext"][0]),
+                                    str(current[0]["defaultNamingContext"][0].decode('utf8')),
                                     paths.smbconf, basedn)))
 
     names.domaindn=current[0]["defaultNamingContext"][0]
@@ -1920,7 +1920,7 @@ def provision_fill(samdb, secrets_ldb, logger, names, paths,
             msg = ldb.Message(ldb.Dn(samdb,
                                      samdb.searchone("distinguishedName",
                                                      expression="samAccountName=%s$" % names.netbiosname,
-                                                     scope=ldb.SCOPE_SUBTREE)))
+                                                     scope=ldb.SCOPE_SUBTREE).decode('utf8')))
             msg["msDS-SupportedEncryptionTypes"] = ldb.MessageElement(
                 elements=kerberos_enctypes, flags=ldb.FLAG_MOD_REPLACE,
                 name="msDS-SupportedEncryptionTypes")
index 6b86a554efad4ba74e79db8830fa2e7400bc470b..b9726f5b84fca60371a48880de2c1ce6014448b8 100644 (file)
@@ -230,7 +230,7 @@ def offline_remove_server(samdb, logger,
     dc_name = str(msgs[0]["cn"][0])
 
     try:
-        computer_dn = ldb.Dn(samdb, msgs[0]["serverReference"][0])
+        computer_dn = ldb.Dn(samdb, msgs[0]["serverReference"][0].decode('utf8'))
     except KeyError:
         computer_dn = None
 
@@ -295,7 +295,7 @@ def offline_remove_ntds_dc(samdb,
     res = samdb.search("",
                        scope=ldb.SCOPE_BASE, attrs=["dsServiceName"])
     assert len(res) == 1
-    my_serviceName = ldb.Dn(samdb, res[0]["dsServiceName"][0])
+    my_serviceName = ldb.Dn(samdb, res[0]["dsServiceName"][0].decode('utf8'))
     server_dn = ntds_dn.parent()
 
     if my_serviceName == ntds_dn:
index 6fb3ecd0c37209cf5179fa49658fb7819d502129..5ea748ff3f05d310fb5a3eb3c8954fe28e5606d4 100644 (file)
@@ -104,7 +104,7 @@ class LdifImportExportTests(samba.tests.TestCaseInTempDir):
                                         scope=ldb.SCOPE_BASE,
                                         attrs=["dsServiceName"])
         dn = ldb.Dn(samdb,
-                    service_name_res[0]["dsServiceName"][0])
+                    service_name_res[0]["dsServiceName"][0].decode('utf8'))
         self.assertEqual(dn, ldb.Dn(samdb, "CN=NTDS Settings," + dsa))
         self.remove_files(dburl)
 
@@ -128,7 +128,7 @@ class LdifImportExportTests(samba.tests.TestCaseInTempDir):
                                             scope=ldb.SCOPE_BASE,
                                             attrs=["dsServiceName"])
             dn = ldb.Dn(samdb,
-                        service_name_res[0]["dsServiceName"][0])
+                        service_name_res[0]["dsServiceName"][0].decode('utf8'))
             self.assertEqual(dn, ldb.Dn(samdb, "CN=NTDS Settings," + dsa))
             self.remove_files(dburl)
 
index 1e84369f34f015cdfccf021f741bef6556ad8a90..2f4400e3e16fa62f47866a9fb84c7ded4793c2c5 100644 (file)
@@ -270,7 +270,7 @@ class RodcRwdcCachedTests(password_lockout_base.BasePasswordTestCase):
                                   scope=ldb.SCOPE_BASE,
                                   attrs=['msDS-RevealOnDemandGroup'])
 
-        group = res[0]['msDS-RevealOnDemandGroup'][0]
+        group = res[0]['msDS-RevealOnDemandGroup'][0].decode('utf8')
 
         m = ldb.Message()
         m.dn = ldb.Dn(self.rwdc_db, group)
@@ -314,7 +314,7 @@ class RodcRwdcCachedTests(password_lockout_base.BasePasswordTestCase):
                                   scope=ldb.SCOPE_BASE,
                                   attrs=['msDS-RevealOnDemandGroup'])
 
-        group = res[0]['msDS-RevealOnDemandGroup'][0]
+        group = res[0]['msDS-RevealOnDemandGroup'][0].decode('utf8')
 
         m = ldb.Message()
         m.dn = ldb.Dn(self.rwdc_db, group)
@@ -1121,7 +1121,7 @@ class RodcRwdcTests(password_lockout_base.BasePasswordTestCase):
                                   scope=ldb.SCOPE_BASE,
                                   attrs=['msDS-RevealOnDemandGroup'])
 
-        group = res[0]['msDS-RevealOnDemandGroup'][0]
+        group = res[0]['msDS-RevealOnDemandGroup'][0].decode('utf8')
 
         user_dn, username, password = self._new_user()
         creds1 = make_creds(username, password)
index 8c3441e8af9bcc2dff793f3d907279a3bf6f9f75..ccc58b62fbb97a9edea3aa0d87656f7bfd9733a3 100755 (executable)
@@ -418,7 +418,7 @@ class DynamicTokenTest(samba.tests.TestCase):
             if "memberOf" in obj:
                 for dn in obj["memberOf"]:
                     first = obj.dn.get_casefold()
-                    second = ldb.Dn(self.admin_ldb, dn).get_casefold()
+                    second = ldb.Dn(self.admin_ldb, dn.decode('utf8')).get_casefold()
                     aSet.add((first, second))
                     aSetR.add((second, first))
                     vSet.add(first)
@@ -476,7 +476,7 @@ class DynamicTokenTest(samba.tests.TestCase):
             if "memberOf" in obj:
                 for dn in obj["memberOf"]:
                     first = obj.dn.get_casefold()
-                    second = ldb.Dn(self.admin_ldb, dn).get_casefold()
+                    second = ldb.Dn(self.admin_ldb, dn.decode('utf8')).get_casefold()
                     aSet.add((first, second))
                     aSetR.add((second, first))
                     vSet.add(first)
index d92a535932b715ca947ae7e89a3283fe756528cd..e29e346b3eb56ae1bdaf4080695dd89c2ff1adeb 100644 (file)
@@ -110,11 +110,11 @@ class DrsReplicaSyncTestCase(drs_base.DrsBaseTestCase):
                        "server_dn": self.ldb_dc2.get_serverName()}
 
         msgs = self.ldb_dc1.search(scope=ldb.SCOPE_BASE, base=fsmo_info_1["server_dn"], attrs=["serverReference"])
-        fsmo_info_1["server_acct_dn"] = ldb.Dn(self.ldb_dc1, msgs[0]["serverReference"][0])
+        fsmo_info_1["server_acct_dn"] = ldb.Dn(self.ldb_dc1, msgs[0]["serverReference"][0].decode('utf8'))
         fsmo_info_1["rid_set_dn"] = ldb.Dn(self.ldb_dc1, "CN=RID Set") + fsmo_info_1["server_acct_dn"]
 
         msgs = self.ldb_dc2.search(scope=ldb.SCOPE_BASE, base=fsmo_info_2["server_dn"], attrs=["serverReference"])
-        fsmo_info_2["server_acct_dn"] = ldb.Dn(self.ldb_dc2, msgs[0]["serverReference"][0])
+        fsmo_info_2["server_acct_dn"] = ldb.Dn(self.ldb_dc2, msgs[0]["serverReference"][0].decode('utf8'))
         fsmo_info_2["rid_set_dn"] = ldb.Dn(self.ldb_dc2, "CN=RID Set") + fsmo_info_2["server_acct_dn"]
 
         # determine the owner dc
index 7604e1e2cabd3a8cf4d965804746d7b888fdea70..f4c404111ce8b47c4ffc267cbba3630186ca7a43 100644 (file)
@@ -73,11 +73,11 @@ class DrsReplicaSyncTestCase(drs_base.DrsBaseTestCase):
                        "server_dn": self.ldb_dc2.get_serverName()}
 
         msgs = self.ldb_dc1.search(scope=ldb.SCOPE_BASE, base=fsmo_info_1["server_dn"], attrs=["serverReference"])
-        fsmo_info_1["server_acct_dn"] = ldb.Dn(self.ldb_dc1, msgs[0]["serverReference"][0])
+        fsmo_info_1["server_acct_dn"] = ldb.Dn(self.ldb_dc1, msgs[0]["serverReference"][0].decode('utf8'))
         fsmo_info_1["rid_set_dn"] = ldb.Dn(self.ldb_dc1, "CN=RID Set") + fsmo_info_1["server_acct_dn"]
 
         msgs = self.ldb_dc2.search(scope=ldb.SCOPE_BASE, base=fsmo_info_2["server_dn"], attrs=["serverReference"])
-        fsmo_info_2["server_acct_dn"] = ldb.Dn(self.ldb_dc2, msgs[0]["serverReference"][0])
+        fsmo_info_2["server_acct_dn"] = ldb.Dn(self.ldb_dc2, msgs[0]["serverReference"][0].decode('utf8'))
         fsmo_info_2["rid_set_dn"] = ldb.Dn(self.ldb_dc2, "CN=RID Set") + fsmo_info_2["server_acct_dn"]
 
         # determine the owner dc
@@ -282,7 +282,7 @@ class DrsReplicaSyncTestCase(drs_base.DrsBaseTestCase):
             res = new_ldb.search(base=ldb.Dn(new_ldb, new_ldb.get_serverName()),
                                  scope=ldb.SCOPE_BASE, attrs=["serverReference"])
             # 2. Get server reference
-            server_ref_dn = ldb.Dn(new_ldb, res[0]['serverReference'][0])
+            server_ref_dn = ldb.Dn(new_ldb, res[0]['serverReference'][0].decode('utf8'))
 
             # Assert that no RID Set has been set
             res = new_ldb.search(base=server_ref_dn,
@@ -356,7 +356,7 @@ class DrsReplicaSyncTestCase(drs_base.DrsBaseTestCase):
             res = new_ldb.search(base=ldb.Dn(new_ldb, new_ldb.get_serverName()),
                                  scope=ldb.SCOPE_BASE, attrs=["serverReference"])
             # 2. Get server reference
-            server_ref_dn = ldb.Dn(new_ldb, res[0]['serverReference'][0])
+            server_ref_dn = ldb.Dn(new_ldb, res[0]['serverReference'][0].decode('utf8'))
 
             # Assert that no RID Set has been set
             res = new_ldb.search(base=server_ref_dn,
@@ -407,7 +407,7 @@ class DrsReplicaSyncTestCase(drs_base.DrsBaseTestCase):
             res = new_ldb.search(base=ldb.Dn(new_ldb, new_ldb.get_serverName()),
                                  scope=ldb.SCOPE_BASE, attrs=["serverReference"])
             # 2. Get server reference
-            server_ref_dn = ldb.Dn(new_ldb, res[0]['serverReference'][0])
+            server_ref_dn = ldb.Dn(new_ldb, res[0]['serverReference'][0].decode('utf8'))
 
             # Assert that no RID Set has been set
             res = new_ldb.search(base=server_ref_dn,
@@ -457,7 +457,7 @@ class DrsReplicaSyncTestCase(drs_base.DrsBaseTestCase):
             res = new_ldb.search(base=ldb.Dn(new_ldb, new_ldb.get_serverName()),
                                  scope=ldb.SCOPE_BASE, attrs=["serverReference"])
             # 2. Get server reference
-            server_ref_dn = ldb.Dn(new_ldb, res[0]['serverReference'][0])
+            server_ref_dn = ldb.Dn(new_ldb, res[0]['serverReference'][0].decode('utf8'))
 
             # Assert that no RID Set has been set
             res = new_ldb.search(base=server_ref_dn,
@@ -500,7 +500,7 @@ class DrsReplicaSyncTestCase(drs_base.DrsBaseTestCase):
             res = new_ldb.search(base=ldb.Dn(new_ldb, new_ldb.get_serverName()),
                                  scope=ldb.SCOPE_BASE, attrs=["serverReference"])
             # 2. Get server reference
-            server_ref_dn = ldb.Dn(new_ldb, res[0]['serverReference'][0])
+            server_ref_dn = ldb.Dn(new_ldb, res[0]['serverReference'][0].decode('utf8'))
 
             # 3. Assert we get the RID Set
             res = new_ldb.search(base=server_ref_dn,
@@ -532,14 +532,14 @@ class DrsReplicaSyncTestCase(drs_base.DrsBaseTestCase):
             res = new_ldb.search(base=ldb.Dn(new_ldb, new_ldb.get_serverName()),
                                  scope=ldb.SCOPE_BASE, attrs=["serverReference"])
             # 2. Get server reference
-            server_ref_dn = ldb.Dn(new_ldb, res[0]['serverReference'][0])
+            server_ref_dn = ldb.Dn(new_ldb, res[0]['serverReference'][0].decode('utf8'))
 
             # 3. Assert we get the RID Set
             res = new_ldb.search(base=server_ref_dn,
                                  scope=ldb.SCOPE_BASE, attrs=['rIDSetReferences'])
 
             self.assertTrue("rIDSetReferences" in res[0])
-            rid_set_dn = ldb.Dn(new_ldb, res[0]["rIDSetReferences"][0])
+            rid_set_dn = ldb.Dn(new_ldb, res[0]["rIDSetReferences"][0].decode('utf8'))
 
             # 4. Add a new user (triggers RID set work)
             new_ldb.newuser("ridalloctestuser", "P@ssword!")
@@ -610,15 +610,14 @@ class DrsReplicaSyncTestCase(drs_base.DrsBaseTestCase):
             res = new_ldb.search(base=ldb.Dn(new_ldb, new_ldb.get_serverName()),
                                  scope=ldb.SCOPE_BASE, attrs=["serverReference"])
             # 2. Get server reference
-            server_ref_dn = ldb.Dn(new_ldb, res[0]['serverReference'][0])
+            server_ref_dn = ldb.Dn(new_ldb, res[0]['serverReference'][0].decode('utf8'))
 
             # 3. Assert we get the RID Set
             res = new_ldb.search(base=server_ref_dn,
                                  scope=ldb.SCOPE_BASE, attrs=['rIDSetReferences'])
 
             self.assertTrue("rIDSetReferences" in res[0])
-            rid_set_dn = ldb.Dn(new_ldb, res[0]["rIDSetReferences"][0])
-
+            rid_set_dn = ldb.Dn(new_ldb, res[0]["rIDSetReferences"][0].decode('utf8'))
             # 4. Seize the RID Manager role
             (result, out, err) = self.runsubcmd("fsmo", "seize", "--role", "rid", "-H", ldb_url, "-s", smbconf, "--force")
             self.assertCmdSuccess(result, out, err)