provision: Write configuration without help of templates.
authorJelmer Vernooij <jelmer@samba.org>
Sun, 26 Feb 2012 22:15:48 +0000 (23:15 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Sun, 26 Feb 2012 23:52:46 +0000 (00:52 +0100)
Autobuild-User: Jelmer Vernooij <jelmer@samba.org>
Autobuild-Date: Mon Feb 27 00:52:46 CET 2012 on sn-devel-104

source4/scripting/python/samba/provision/__init__.py
source4/setup/provision.smb.conf.dc [deleted file]
source4/setup/provision.smb.conf.member [deleted file]
source4/setup/provision.smb.conf.standalone [deleted file]

index fa686c31373fce926c57ae8817f5277a5149a76c..48dd8673c7a159500364a7243595a67703a71966 100644 (file)
@@ -601,14 +601,6 @@ def make_smbconf(smbconf, hostname, domain, realm, targetdir,
     if serverrole is None:
         serverrole = "standalone"
 
-    try:
-        smbconfsuffix = {
-            "domain controller": "dc",
-            "member server": "member",
-            "standalone": "standalone"}[serverrole]
-    except KeyError:
-        raise ValueError("server role %r invalid" % serverrole)
-
     if sid_generator is None:
         sid_generator = "internal"
 
@@ -618,6 +610,14 @@ def make_smbconf(smbconf, hostname, domain, realm, targetdir,
     assert realm is not None
     realm = realm.upper()
 
+    global_settings = {
+        "passdb backend": "samba4",
+        "netbios name": netbiosname,
+        "workgroup": domain,
+        "realm": realm,
+        "server role": serverrole,
+        }
+
     if lp is None:
         lp = samba.param.LoadParm()
     #Load non-existant file
@@ -631,43 +631,39 @@ def make_smbconf(smbconf, hostname, domain, realm, targetdir,
         lp.set("posix:eadb", os.path.abspath(os.path.join(privdir, "eadb.tdb")))
 
     if server_services is not None:
-        server_services_line = "server services = " + " ".join(server_services)
-    else:
-        server_services_line = ""
+        global_settings["server services"] = " ".join(server_services)
 
     if targetdir is not None:
-        privatedir_line = "private dir = " + os.path.abspath(os.path.join(targetdir, "private"))
-        lockdir_line = "lock dir = " + os.path.abspath(targetdir)
-        statedir_line = "state directory = " + os.path.abspath(targetdir)
-        cachedir_line = "cache directory = " + os.path.abspath(targetdir)
+        global_settings["private dir"] = os.path.abspath(os.path.join(targetdir, "private"))
+        global_settings["lock dir"] = os.path.abspath(targetdir)
+        global_settings["state directory"] = os.path.abspath(targetdir)
+        global_settings["cache directory"] = os.path.abspath(targetdir)
 
         lp.set("lock dir", os.path.abspath(targetdir))
         lp.set("state directory", os.path.abspath(targetdir))
         lp.set("cache directory", os.path.abspath(targetdir))
-    else:
-        privatedir_line = ""
-        lockdir_line = ""
-        statedir_line = ""
-        cachedir_line = ""
-
-    sysvol = os.path.join(lp.get("state directory"), "sysvol")
-    netlogon = os.path.join(sysvol, realm.lower(), "scripts")
-
-    setup_file(setup_path("provision.smb.conf.%s" % smbconfsuffix),
-               smbconf, {
-            "NETBIOS_NAME": netbiosname,
-            "DOMAIN": domain,
-            "REALM": realm,
-            "SERVERROLE": serverrole,
-            "NETLOGONPATH": netlogon,
-            "SYSVOLPATH": sysvol,
-            "PRIVATEDIR_LINE": privatedir_line,
-            "LOCKDIR_LINE": lockdir_line,
-            "STATEDIR_LINE": statedir_line,
-            "CACHEDIR_LINE": cachedir_line,
-            "SERVER_SERVICES_LINE": server_services_line
-            })
 
+    shares = {}
+    if serverrole == "domain controller":
+        shares["sysvol"] = os.path.join(global_settings["state directory"],
+            "sysvol")
+        shares["netlogon"] = os.path.join(shares["sysvol"], realm.lower(),
+            "scripts")
+
+    f = open(smbconf, 'w')
+    try:
+        f.write("[globals]\n")
+        for key, val in global_settings.iteritems():
+            f.write("\t%s = %s\n" % (key, val))
+        f.write("\n")
+
+        for name, path in shares.iteritems():
+            f.write("[%s]\n" % name)
+            f.write("\tpath = %s\n" % path)
+            f.write("\tread only = no\n")
+            f.write("\n")
+    finally:
+        f.close()
     # reload the smb.conf
     lp.load(smbconf)
 
diff --git a/source4/setup/provision.smb.conf.dc b/source4/setup/provision.smb.conf.dc
deleted file mode 100644 (file)
index ba8555f..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-[globals]
-       netbios name    = ${NETBIOS_NAME}
-       workgroup       = ${DOMAIN}
-       realm           = ${REALM}
-       server role     = ${SERVERROLE}
-       ${SERVER_SERVICES_LINE}
-
-       ${PRIVATEDIR_LINE}
-       ${LOCKDIR_LINE}
-       ${STATEDIR_LINE}
-       ${CACHEDIR_LINE}
-
-       passdb backend = samba4
-
-[netlogon]
-       path = ${NETLOGONPATH}
-       read only = no
-
-[sysvol]
-       path = ${SYSVOLPATH}
-       read only = no
diff --git a/source4/setup/provision.smb.conf.member b/source4/setup/provision.smb.conf.member
deleted file mode 100644 (file)
index 0fc4de5..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[globals]
-       netbios name    = ${NETBIOS_NAME}
-       workgroup       = ${DOMAIN}
-       realm           = ${REALM}
-       server role     = ${SERVERROLE}
-       ${PRIVATEDIR_LINE}
-       ${LOCKDIR_LINE}
-       ${STATEDIR_LINE}
-       ${CACHEDIR_LINE}
-
-       passdb backend = samba4
-
diff --git a/source4/setup/provision.smb.conf.standalone b/source4/setup/provision.smb.conf.standalone
deleted file mode 100644 (file)
index 0fc4de5..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[globals]
-       netbios name    = ${NETBIOS_NAME}
-       workgroup       = ${DOMAIN}
-       realm           = ${REALM}
-       server role     = ${SERVERROLE}
-       ${PRIVATEDIR_LINE}
-       ${LOCKDIR_LINE}
-       ${STATEDIR_LINE}
-       ${CACHEDIR_LINE}
-
-       passdb backend = samba4
-