1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-03 12:58:35 +03:00

s4-subdomain: fixed invocationID and hostIPs in subdomain join

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
Andrew Tridgell 2011-09-02 15:12:11 +10:00 committed by Andrew Bartlett
parent 8c33036a37
commit eb0060766f
2 changed files with 18 additions and 14 deletions

View File

@ -83,6 +83,7 @@ class dc_join(object):
ctx.config_dn = str(ctx.samdb.get_config_basedn())
ctx.domsid = ctx.samdb.get_domain_sid()
ctx.domain_name = ctx.get_domain_name()
ctx.invocation_id = misc.GUID(str(uuid.uuid4()))
ctx.dc_ntds_dn = ctx.get_dsServiceName()
ctx.dc_dnsHostName = ctx.get_dnsHostName()
@ -375,7 +376,7 @@ class dc_join(object):
if ctx.behavior_version >= samba.dsdb.DS_DOMAIN_FUNCTION_2003:
rec["msDS-HasMasterNCs"] = nc_list
rec["options"] = "1"
rec["invocationId"] = ndr_pack(misc.GUID(str(uuid.uuid4())))
rec["invocationId"] = ndr_pack(ctx.invocation_id)
if ctx.subdomain:
ctx.samdb.add(rec, ['relax:0'])
else:
@ -512,6 +513,8 @@ class dc_join(object):
"dnsRoot": ctx.dnsdomain,
"trustParent" : ctx.parent_partition_dn,
"systemFlags" : str(samba.dsdb.SYSTEM_FLAG_CR_NTDS_NC|samba.dsdb.SYSTEM_FLAG_CR_NTDS_DOMAIN)}
if ctx.behavior_version >= samba.dsdb.DS_DOMAIN_FUNCTION_2003:
rec["msDS-Behavior-Version"] = str(ctx.behavior_version)
ctx.DsAddEntry(rec)
@ -543,8 +546,15 @@ class dc_join(object):
def join_provision_own_domain(ctx):
'''provision the local SAM'''
# we now operate exclusively on the local database
ctx.samdb = ctx.local_samdb
# we now operate exclusively on the local database, which
# we need to reopen in order to get the newly created schema
print("Reconnecting to local samdb")
ctx.samdb = SamDB(url=ctx.local_samdb.url,
session_info=system_session(),
lp=ctx.local_samdb.lp,
global_schema=False)
ctx.samdb.set_invocation_id(str(ctx.invocation_id))
ctx.local_samdb = ctx.samdb
ctx.join_add_ntdsdsa()
@ -560,7 +570,7 @@ class dc_join(object):
domainguid=ctx.domguid,
targetdir=ctx.targetdir, samdb_fill=FILL_SUBDOMAIN,
machinepass=ctx.acct_pass, serverrole="domain controller",
lp=ctx.lp)
lp=ctx.lp, hostip=ctx.names.hostip, hostip6=ctx.names.hostip6)
print("Provision OK for domain %s" % ctx.names.dnsdomain)
@ -770,8 +780,8 @@ class dc_join(object):
try:
ctx.join_add_objects()
ctx.join_provision()
ctx.join_replicate()
ctx.join_add_objects2()
ctx.join_replicate()
if ctx.subdomain:
ctx.join_provision_own_domain()
ctx.join_setup_trusts()

View File

@ -1345,15 +1345,6 @@ def fill_samdb(samdb, lp, names,
else:
samdb.transaction_commit()
samdb = SamDB(session_info=admin_session_info, auto_connect=False,
credentials=provision_backend.credentials, lp=lp,
global_schema=False, am_rodc=am_rodc)
# Set the NTDS settings DN manually - in order to have it already around
# before the provisioned tree exists and we connect
samdb.set_ntds_settings_dn("CN=NTDS Settings,%s" % names.serverdn)
samdb.connect(path)
samdb.transaction_start()
try:
samdb.invocation_id = invocationid
@ -1802,6 +1793,9 @@ def provision(logger, session_info, credentials, smbconf=None,
if hostip6 is None:
logger.warning("No IPv6 address will be assigned")
names.hostip = hostip
names.hostip6 = hostip6
if serverrole is None:
serverrole = lp.get("server role")