mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
samba_tool/fsmo: Allocate RID Set when seizing RID manager
Seizing the role without allocating a RID set for itself is likely prone to cause issues. Pair-programmed-with: Clive Ferreira <cliveferreira@catalyst.net.nz> Signed-off-by: Clive Ferreira <cliveferreira@catalyst.net.nz> Signed-off-by: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> BUG: https://bugzilla.samba.org/show_bug.cgi?id=9954 Autobuild-User(master): Garming Sam <garming@samba.org> Autobuild-Date(master): Fri Nov 4 08:37:05 CET 2016 on sn-devel-144
This commit is contained in:
parent
2a49c74519
commit
815658d2db
@ -295,12 +295,37 @@ You must provide an Admin user and password."""),
|
|||||||
m["fSMORoleOwner"]= ldb.MessageElement(
|
m["fSMORoleOwner"]= ldb.MessageElement(
|
||||||
serviceName, ldb.FLAG_MOD_REPLACE,
|
serviceName, ldb.FLAG_MOD_REPLACE,
|
||||||
"fSMORoleOwner")
|
"fSMORoleOwner")
|
||||||
|
|
||||||
|
samdb.transaction_start()
|
||||||
try:
|
try:
|
||||||
samdb.modify(m)
|
samdb.modify(m)
|
||||||
|
if role == "rid":
|
||||||
|
# We may need to allocate the initial RID Set
|
||||||
|
samdb.create_own_rid_set()
|
||||||
|
|
||||||
except LdbError, (num, msg):
|
except LdbError, (num, msg):
|
||||||
raise CommandError("Failed to seize '%s' role: %s" %
|
if role == "rid" and num == ldb.ERR_ENTRY_ALREADY_EXISTS:
|
||||||
(role, msg))
|
|
||||||
|
# Try again without the RID Set allocation
|
||||||
|
# (normal). We have to manage the transaction as
|
||||||
|
# we do not have nested transactions and creating
|
||||||
|
# a RID set touches multiple objects. :-(
|
||||||
|
samdb.transaction_cancel()
|
||||||
|
samdb.transaction_start()
|
||||||
|
try:
|
||||||
|
samdb.modify(m)
|
||||||
|
except LdbError, (num, msg):
|
||||||
|
samdb.transaction_cancel()
|
||||||
|
raise CommandError("Failed to seize '%s' role: %s" %
|
||||||
|
(role, msg))
|
||||||
|
|
||||||
|
else:
|
||||||
|
samdb.transaction_cancel()
|
||||||
|
raise CommandError("Failed to seize '%s' role: %s" %
|
||||||
|
(role, msg))
|
||||||
|
samdb.transaction_commit()
|
||||||
self.outf.write("FSMO seize of '%s' role successful\n" % role)
|
self.outf.write("FSMO seize of '%s' role successful\n" % role)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def seize_dns_role(self, role, samdb, credopts, sambaopts,
|
def seize_dns_role(self, role, samdb, credopts, sambaopts,
|
||||||
|
@ -307,7 +307,6 @@
|
|||||||
^samba4.rpc.echo.*on.*with.object.echo.addone.*nt4_dc
|
^samba4.rpc.echo.*on.*with.object.echo.addone.*nt4_dc
|
||||||
^samba4.rpc.echo.*on.*ncacn_ip_tcp.*with.object.*nt4_dc
|
^samba4.rpc.echo.*on.*ncacn_ip_tcp.*with.object.*nt4_dc
|
||||||
^samba4.drs.ridalloc_exop.python.*ridalloc_exop.DrsReplicaSyncTestCase.test_offline_ridalloc
|
^samba4.drs.ridalloc_exop.python.*ridalloc_exop.DrsReplicaSyncTestCase.test_offline_ridalloc
|
||||||
^samba4.drs.ridalloc_exop.python.*ridalloc_exop.DrsReplicaSyncTestCase.test_offline_samba_tool_seized_ridalloc
|
|
||||||
^samba4.drs.ridalloc_exop.python.*ridalloc_exop.DrsReplicaSyncTestCase.test_join_time_ridalloc
|
^samba4.drs.ridalloc_exop.python.*ridalloc_exop.DrsReplicaSyncTestCase.test_join_time_ridalloc
|
||||||
^samba4.drs.ridalloc_exop.python.*ridalloc_exop.DrsReplicaSyncTestCase.test_rid_set_dbcheck_after_seize
|
^samba4.drs.ridalloc_exop.python.*ridalloc_exop.DrsReplicaSyncTestCase.test_rid_set_dbcheck_after_seize
|
||||||
^samba4.drs.ridalloc_exop.python.*ridalloc_exop.DrsReplicaSyncTestCase.test_rid_set_dbcheck
|
^samba4.drs.ridalloc_exop.python.*ridalloc_exop.DrsReplicaSyncTestCase.test_rid_set_dbcheck
|
Loading…
Reference in New Issue
Block a user