From a394e4ef09a3c0c631acea0e2195966fa56198af Mon Sep 17 00:00:00 2001 From: Anatoliy Atanasov Date: Thu, 13 May 2010 15:10:57 +0300 Subject: [PATCH 2/2] s4-rodc: Set am_rodc flag during provision --- source4/scripting/python/samba/__init__.py | 2 ++ source4/scripting/python/samba/provision.py | 8 ++++++-- source4/scripting/python/samba/samdb.py | 3 +++ source4/scripting/python/samba/schema.py | 4 +++- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/source4/scripting/python/samba/__init__.py b/source4/scripting/python/samba/__init__.py index dcb80a7..39ff3d0 100644 --- a/source4/scripting/python/samba/__init__.py +++ b/source4/scripting/python/samba/__init__.py @@ -308,6 +308,8 @@ class Ldb(_Ldb): "Get the server site name" return dsdb.samdb_server_site_name(self) + def set_am_rodc(self, am_rodc): + dsdb.dsdb_set_am_rodc(self, am_rodc) def substitute_var(text, values): """substitute strings of the form ${NAME} in str, replacing diff --git a/source4/scripting/python/samba/provision.py b/source4/scripting/python/samba/provision.py index fa2dabe..b0c04a0 100644 --- a/source4/scripting/python/samba/provision.py +++ b/source4/scripting/python/samba/provision.py @@ -842,7 +842,7 @@ def setup_samdb(path, setup_path, session_info, provision_backend, lp, fill, adminpass, krbtgtpass, machinepass, invocationid, dnspass, ntdsguid, serverrole, dom_for_fun_level=None, - schema=None): + schema=None, am_rodc=0): """Setup a complete SAM Database. :note: This will wipe the main SAM database file! @@ -877,6 +877,8 @@ def setup_samdb(path, setup_path, session_info, provision_backend, lp, credentials=provision_backend.credentials, lp=lp, global_schema=False) message("Pre-loading the Samba 4 and AD schema") + # Set RODC flag + samdb.set_am_rodc(am_rodc) # Load the schema from the one we computed earlier samdb.set_schema_from_ldb(schema.ldb) @@ -965,6 +967,8 @@ def setup_samdb(path, setup_path, session_info, provision_backend, lp, samdb.transaction_start() try: samdb.invocation_id = invocationid + # Set RODC flag + samdb.set_am_rodc(am_rodc) message("Setting up sam.ldb configuration data") setup_add_ldif(samdb, setup_path("provision_configuration.ldif"), { @@ -1237,7 +1241,7 @@ def provision(setup_dir, message, session_info, schema = Schema(setup_path, domainsid, invocationid=invocationid, schemadn=names.schemadn, serverdn=names.serverdn) - + if backend_type == "ldb": provision_backend = LDBBackend(backend_type, paths=paths, setup_path=setup_path, diff --git a/source4/scripting/python/samba/samdb.py b/source4/scripting/python/samba/samdb.py index 991c678..1d4b329 100644 --- a/source4/scripting/python/samba/samdb.py +++ b/source4/scripting/python/samba/samdb.py @@ -268,3 +268,6 @@ accountExpires: %u def load_partition_usn(self, base_dn): return dsdb.dsdb_load_partition_usn(self, base_dn) + + def set_am_rodc(self, am_rodc): + dsdb.dsdb_set_am_rodc(self, am_rodc) diff --git a/source4/scripting/python/samba/schema.py b/source4/scripting/python/samba/schema.py index 1777c65..c795799 100644 --- a/source4/scripting/python/samba/schema.py +++ b/source4/scripting/python/samba/schema.py @@ -54,7 +54,7 @@ def get_schema_descriptor(domain_sid): class Schema(object): def __init__(self, setup_path, domain_sid, invocationid=None, schemadn=None, - serverdn=None, files=None, prefixmap=None): + serverdn=None, files=None, prefixmap=None, am_rodc=0): """Load schema for the SamDB from the AD schema files and samba4_schema.ldif :param samdb: Load a schema into a SamDB. @@ -72,6 +72,8 @@ class Schema(object): if invocationid is not None: self.ldb.set_invocation_id(invocationid) + self.ldb.set_am_rodc(am_rodc) + self.schema_data = read_ms_schema( setup_path('ad-schema/MS-AD_Schema_2K8_R2_Attributes.txt'), setup_path('ad-schema/MS-AD_Schema_2K8_R2_Classes.txt')) -- 1.6.3.3