s4:python/samba/join: set msDS-Behavior-Version to '4' 2008_R2 on the nTDSA object
[ab/samba-autobuild/.git] / source4 / scripting / python / samba / join.py
index bd91e6269e60ebc2fe2d26f690d488bca7439296..3e3d2178c3594c55da89eed8ccf8a07d53a16fc5 100644 (file)
@@ -87,7 +87,7 @@ class dc_join(object):
         ctx.forest_domain_name = ctx.get_forest_domain_name()
         ctx.invocation_id = misc.GUID(str(uuid.uuid4()))
 
-        ctx.dc_ntds_dn = ctx.get_dsServiceName()
+        ctx.dc_ntds_dn = ctx.samdb.get_dsServiceName()
         ctx.dc_dnsHostName = ctx.get_dnsHostName()
         ctx.behavior_version = ctx.get_behavior_version()
 
@@ -207,10 +207,6 @@ class dc_join(object):
         return ctx.cldap_ret.pdc_dns_name
 
 
-    def get_dsServiceName(ctx):
-        res = ctx.samdb.search(base="", scope=ldb.SCOPE_BASE, attrs=["dsServiceName"])
-        return res[0]["dsServiceName"][0]
-
     def get_behavior_version(ctx):
         res = ctx.samdb.search(base=ctx.base_dn, scope=ldb.SCOPE_BASE, attrs=["msDS-Behavior-Version"])
         if "msDS-Behavior-Version" in res[0]:
@@ -400,7 +396,7 @@ class dc_join(object):
         nc_list = [ ctx.base_dn, ctx.config_dn, ctx.schema_dn ]
 
         if ctx.behavior_version >= samba.dsdb.DS_DOMAIN_FUNCTION_2003:
-            rec["msDS-Behavior-Version"] = str(ctx.behavior_version)
+            rec["msDS-Behavior-Version"] = str(samba.dsdb.DS_DOMAIN_FUNCTION_2008_R2)
 
         if ctx.behavior_version >= samba.dsdb.DS_DOMAIN_FUNCTION_2003:
             rec["msDS-HasDomainNCs"] = ctx.base_dn
@@ -860,10 +856,12 @@ class dc_join(object):
 
 
 def join_RODC(server=None, creds=None, lp=None, site=None, netbios_name=None,
-              targetdir=None, domain=None, domain_critical_only=False):
+              targetdir=None, domain=None, domain_critical_only=False,
+              machinepass=None):
     """join as a RODC"""
 
-    ctx = dc_join(server, creds, lp, site, netbios_name, targetdir, domain)
+    ctx = dc_join(server, creds, lp, site, netbios_name, targetdir, domain,
+                  machinepass)
 
     lp.set("workgroup", ctx.domain_name)
     print("workgroup is %s" % ctx.domain_name)
@@ -912,9 +910,11 @@ def join_RODC(server=None, creds=None, lp=None, site=None, netbios_name=None,
 
 
 def join_DC(server=None, creds=None, lp=None, site=None, netbios_name=None,
-            targetdir=None, domain=None, domain_critical_only=False):
+            targetdir=None, domain=None, domain_critical_only=False,
+            machinepass=None):
     """join as a DC"""
-    ctx = dc_join(server, creds, lp, site, netbios_name, targetdir, domain)
+    ctx = dc_join(server, creds, lp, site, netbios_name, targetdir, domain,
+                  machinepass)
 
     lp.set("workgroup", ctx.domain_name)
     print("workgroup is %s" % ctx.domain_name)
@@ -940,9 +940,11 @@ def join_DC(server=None, creds=None, lp=None, site=None, netbios_name=None,
     print "Joined domain %s (SID %s) as a DC" % (ctx.domain_name, ctx.domsid)
 
 def join_subdomain(server=None, creds=None, lp=None, site=None, netbios_name=None,
-                   targetdir=None, parent_domain=None, dnsdomain=None, netbios_domain=None):
+                   targetdir=None, parent_domain=None, dnsdomain=None, netbios_domain=None,
+                   machinepass=None):
     """join as a DC"""
-    ctx = dc_join(server, creds, lp, site, netbios_name, targetdir, parent_domain)
+    ctx = dc_join(server, creds, lp, site, netbios_name, targetdir, parent_domain,
+                  machinepass)
     ctx.subdomain = True
     ctx.parent_domain_name = ctx.domain_name
     ctx.domain_name = netbios_domain