s4-pydrs: added rodc option to python drs replication
authorAndrew Tridgell <tridge@samba.org>
Fri, 5 Nov 2010 03:08:49 +0000 (14:08 +1100)
committerAndrew Tridgell <tridge@samba.org>
Fri, 5 Nov 2010 12:42:08 +0000 (23:42 +1100)
source4/scripting/python/samba/drs_utils.py
source4/scripting/python/samba/netcmd/rodc.py

index 4686259df6741f26f353a0bd98d3003f2fbf9cac..a600c2310b703e4b7e9c6ad33ed0156b01c5d129 100644 (file)
@@ -111,7 +111,7 @@ class drs_Replicate:
 
 
     def replicate(self, dn, source_dsa_invocation_id, destination_dsa_guid,
-                  schema=False, exop=drsuapi.DRSUAPI_EXOP_NONE):
+                  schema=False, exop=drsuapi.DRSUAPI_EXOP_NONE, rodc=False):
         '''replicate a single DN'''
 
         # setup for a GetNCChanges call
@@ -132,8 +132,9 @@ class drs_Replicate:
             req8.replica_flags             =  (drsuapi.DRSUAPI_DRS_INIT_SYNC |
                                                 drsuapi.DRSUAPI_DRS_PER_SYNC |
                                                 drsuapi.DRSUAPI_DRS_GET_ANC |
-                                                drsuapi.DRSUAPI_DRS_NEVER_SYNCED |
-                                                drsuapi.DRSUAPI_DRS_SPECIAL_SECRET_PROCESSING)
+                                                drsuapi.DRSUAPI_DRS_NEVER_SYNCED)
+            if rodc:
+                req8.replica_flags |= drsuapi.DRSUAPI_DRS_SPECIAL_SECRET_PROCESSING
         req8.max_object_count               = 402
         req8.max_ndr_size                   = 402116
         req8.extended_op                    = exop
@@ -143,7 +144,7 @@ class drs_Replicate:
         req8.mapping_ctr.num_mappings       = 0
         req8.mapping_ctr.mappings           = None
 
-        if not schema:
+        if not schema and rodc:
             req8.partial_attribute_set = self.drs_get_rodc_partial_attribute_set()
 
         while True:
index 0fdb252b60a7339a9259ed7c42c7f8b1d3d27d98..5f97c32b282cb01e339f657a01d61f1b7985e4ef 100644 (file)
@@ -105,7 +105,7 @@ class cmd_rodc_preload(Command):
         repl = drs_Replicate("ncacn_ip_tcp:%s[seal,print]" % server, lp, creds, local_samdb)
         try:
             repl.replicate(dn, source_dsa_invocation_id, destination_dsa_guid,
-                           exop=drsuapi.DRSUAPI_EXOP_REPL_SECRET)
+                           exop=drsuapi.DRSUAPI_EXOP_REPL_SECRET, rodc=True)
         except RuntimeError, (ecode, estring):
             if estring == 'WERR_DS_DRA_ACCESS_DENIED':
                 local_samdb.transaction_cancel()