res = samdb.search("",
scope=ldb.SCOPE_BASE, attrs=["dsServiceName"])
assert len(res) == 1
- my_serviceName = res[0]["dsServiceName"][0]
+ my_serviceName = ldb.Dn(samdb, res[0]["dsServiceName"][0])
server_dn = ntds_dn.parent()
+ if my_serviceName == ntds_dn:
+ raise DemoteException("Refusing to demote our own DSA: %s " % my_serviceName)
+
try:
msgs = samdb.search(base=ntds_dn, expression="objectClass=ntdsDSA",
attrs=["objectGUID"], scope=ldb.SCOPE_BASE)
def remove_dc(samdb, dc_name):
- # TODO: Check if this is the last server
+ # TODO: Check if this is the last server (covered mostly by
+ # refusing to remove our own name)
samdb.transaction_start()
self.assertEqual(ds_name, server_ds_name)
self.assertEqual(ldap_service_name, server_ldap_service_name)
+ def demote_self():
+ # While we have this cloned, try demoting the other server on the clone
+ out = self.check_output("samba-tool domain demote --remove-other-dead-server=%s -H %s/private/sam.ldb"
+ % (self.dc1,
+ self.tempdir))
+ self.assertRaises(samba.tests.BlackboxProcessError, demote_self)
+
# While we have this cloned, try demoting the other server on the clone
out = self.check_output("samba-tool domain demote --remove-other-dead-server=%s -H %s/private/sam.ldb"
% (self.dc2,