s4:provision - rework the "guess_names" and "make_smbconf" method
authorMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
Wed, 21 Oct 2009 17:38:52 +0000 (19:38 +0200)
committerMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
Wed, 21 Oct 2009 21:43:04 +0000 (23:43 +0200)
- Cleans it up from unnecessary "lower()/upper()" and parameters which can be
  derived through "lp" calls.
- Substitute the "HOSTNAME" caption in the "smb.conf" templates with
  "NETBIOS_NAME" which fits better.
- Now the "realm" and "domain" parameter of the provision are totally case
  insensitive and the script itself up/downcases them appropriately depending
  on the use (e.g. "realm" upcase for KERBEROS, lowcase for DNS domainname).

source4/scripting/python/samba/provision.py
source4/setup/provision.smb.conf.dc
source4/setup/provision.smb.conf.member
source4/setup/provision.smb.conf.standalone

index 10f4845fdf8250b436335e3034ff549bc90b68d7..d8c67908c27acd42c8e96ffaa37410032121188b 100644 (file)
@@ -428,59 +428,38 @@ def provision_paths_from_lp(lp, dnsdomain):
     return paths
 
 
-def guess_names(lp=None, hostname=None, domain=None, dnsdomain=None,
-                serverrole=None, rootdn=None, domaindn=None, configdn=None,
-                schemadn=None, serverdn=None, sitename=None, sambadn=None):
+def guess_names(lp=None, hostname=None, rootdn=None,
+                domaindn=None, configdn=None, schemadn=None, serverdn=None,
+                sitename=None, sambadn=None):
     """Guess configuration settings to use."""
 
     if hostname is None:
-        hostname = socket.gethostname().split(".")[0].lower()
+        hostname = socket.gethostname().split(".")[0]
 
     netbiosname = hostname.upper()
     if not valid_netbios_name(netbiosname):
         raise InvalidNetbiosName(netbiosname)
 
-    hostname = hostname.lower()
+    dnsdomain = lp.get("realm").lower()
+    realm = lp.get("realm").upper()
+    serverrole = lp.get("server role").lower()
 
-    if dnsdomain is None:
-        dnsdomain = lp.get("realm").lower()
-
-    if serverrole is None:
-        serverrole = lp.get("server role")
-
-    assert dnsdomain is not None
-    realm = dnsdomain.upper()
-
-    if lp.get("realm").upper() != realm:
-        raise Exception("realm '%s' in %s must match chosen realm '%s'" %
-                        (lp.get("realm"), lp.configfile, realm))
-    
     if serverrole == "domain controller":
-        if domain is None:
-            domain = lp.get("workgroup")
+        domain = lp.get("workgroup").upper()
         if domaindn is None:
             domaindn = "DC=" + dnsdomain.replace(".", ",DC=")
-        if lp.get("workgroup").upper() != domain.upper():
-            raise Exception("workgroup '%s' in smb.conf must match chosen domain '%s'",
-                        lp.get("workgroup"), domain)
     else:
         domain = netbiosname
         if domaindn is None:
             domaindn = "DC=" + netbiosname
         
-    assert domain is not None
-    domain = domain.upper()
-
     if not valid_netbios_name(domain):
         raise InvalidNetbiosName(domain)
         
-    if netbiosname.upper() == realm:
+    if netbiosname == realm:
         raise Exception("realm %s must not be equal to netbios domain name %s", realm, netbiosname)
         
-    if hostname.upper() == realm:
-        raise Exception("realm %s must not be equal to hostname %s", realm, hostname)
-        
-    if domain.upper() == realm:
+    if domain == realm:
         raise Exception("realm %s must not be equal to domain name %s", realm, domain)
 
     if rootdn is None:
@@ -520,7 +499,8 @@ def make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrole,
     """
     assert smbconf is not None
     if hostname is None:
-        hostname = socket.gethostname().split(".")[0].lower()
+        hostname = socket.gethostname().split(".")[0]
+    netbiosname = hostname.upper()
 
     if serverrole is None:
         serverrole = "standalone"
@@ -534,7 +514,10 @@ def make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrole,
         smbconfsuffix = "standalone"
 
     assert domain is not None
+    domain = domain.upper()
+
     assert realm is not None
+    realm = realm.upper()
 
     default_lp = param.LoadParm()
     #Load non-existant file
@@ -555,7 +538,7 @@ def make_smbconf(smbconf, setup_path, hostname, domain, realm, serverrole,
 
     setup_file(setup_path("provision.smb.conf.%s" % smbconfsuffix), 
                smbconf, {
-            "HOSTNAME": hostname,
+            "NETBIOS_NAME": netbiosname,
             "DOMAIN": domain,
             "REALM": realm,
             "SERVERROLE": serverrole,
@@ -1265,10 +1248,8 @@ def provision(setup_dir, message, session_info,
     lp = param.LoadParm()
     lp.load(smbconf)
 
-    names = guess_names(lp=lp, hostname=hostname, domain=domain, 
-                        dnsdomain=realm.lower(), serverrole=serverrole, sitename=sitename,
-                        rootdn=rootdn, domaindn=domaindn, configdn=configdn, schemadn=schemadn,
-                        serverdn=serverdn)
+    names = guess_names(lp=lp, hostname=hostname, domaindn=domaindn,
+                        configdn=configdn, schemadn=schemadn, serverdn=serverdn,                        sitename=sitename)
 
     paths = provision_paths_from_lp(lp, names.dnsdomain)
 
index ad06be43013ff5d5b705a413081f4db5ecf3a17f..f489f59ff9dd4540927e105f8b5c83776c38cd6b 100644 (file)
@@ -1,5 +1,5 @@
 [globals]
-       netbios name    = ${HOSTNAME}
+       netbios name    = ${NETBIOS_NAME}
        workgroup       = ${DOMAIN}
        realm           = ${REALM}
        server role     = ${SERVERROLE}
index 0d742fb9034c008c1ba77d14912961b01611a2af..96e5d0c2e5a41183437facd9c8f1ff4cfc3eeb0b 100644 (file)
@@ -1,5 +1,5 @@
 [globals]
-       netbios name    = ${HOSTNAME}
+       netbios name    = ${NETBIOS_NAME}
        workgroup       = ${DOMAIN}
        realm           = ${REALM}
        server role     = ${SERVERROLE}
index 0d742fb9034c008c1ba77d14912961b01611a2af..96e5d0c2e5a41183437facd9c8f1ff4cfc3eeb0b 100644 (file)
@@ -1,5 +1,5 @@
 [globals]
-       netbios name    = ${HOSTNAME}
+       netbios name    = ${NETBIOS_NAME}
        workgroup       = ${DOMAIN}
        realm           = ${REALM}
        server role     = ${SERVERROLE}