line = " ".join(parts)
subprocess.check_call(line, shell=True)
-
def connect_samdb(samdb_url, lp=None, session_info=None,
credentials=None, flags=0, ldb_options=None, ldap_only=False):
"""Creates SamDB instance and connects to samdb_url database.
credentials=credentials,
flags=flags,
options=ldb_options)
+
+from ldb import (
+ SCOPE_BASE, SCOPE_SUBTREE, LdbError, ERR_NO_SUCH_OBJECT)
+from ldb import Message, MessageElement, Dn
+from ldb import FLAG_MOD_REPLACE, FLAG_MOD_DELETE
+from samba.ndr import ndr_unpack
+from samba.dcerpc import security
+
+class DsdbTestCase(TestCase):
+ """Base test case for dsdb tests."""
+
+ def delete_force(self, ldb, dn):
+ try:
+ ldb.delete(dn)
+ except LdbError, (num, _):
+ self.assertEquals(num, ERR_NO_SUCH_OBJECT)
+
+ def find_domain_sid(self, ldb):
+ res = ldb.search(base=ldb.domain_dn(), expression="(objectClass=*)", scope=SCOPE_BASE)
+ return ndr_unpack(security.dom_sid,res[0]["objectSid"][0])
+
+ def set_dsheuristics(self, ldb, dsheuristics):
+ configuration_dn = ldb.get_config_basedn().get_linearized()
+ m = Message()
+ m.dn = Dn(ldb, "CN=Directory Service, CN=Windows NT, CN=Services, "
+ + configuration_dn)
+ if dsheuristics is not None:
+ m["dSHeuristics"] = MessageElement(dsheuristics, FLAG_MOD_REPLACE,
+ "dSHeuristics")
+ else:
+ m["dSHeuristics"] = MessageElement([], FLAG_MOD_DELETE, "dsHeuristics")
+ ldb.modify(m)
+
+ def set_minPwdAge(self, ldb, value):
+ m = Message()
+ m.dn = Dn(ldb, ldb.domain_dn())
+ m["minPwdAge"] = MessageElement(value, FLAG_MOD_REPLACE, "minPwdAge")
+ ldb.modify(m)