[SCM] Samba Shared Repository - branch master updated
Jelmer Vernooij
jelmer at samba.org
Sun Feb 26 16:53:03 MST 2012
The branch, master has been updated
via 687e065 provision: Write configuration without help of templates.
via bb4de6d pyparam: fix formatting.
via 8524181 provision: Simplify make_smbconf a bit.
via 3bfccdf provision: Fix order for error formatting.
via e27e519 provision: Raise proper error when shares are missing rather than AssertionError.
from 411119d provision: Share more code for determine_netbios_name() with samba.valid_netbios_name().
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 687e065036d0d39099a6ec909860c07144b8aa51
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Sun Feb 26 23:15:48 2012 +0100
provision: Write configuration without help of templates.
Autobuild-User: Jelmer Vernooij <jelmer at samba.org>
Autobuild-Date: Mon Feb 27 00:52:46 CET 2012 on sn-devel-104
commit bb4de6df6ef2ff155e2bdc10794c232a288b0a9b
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Sun Feb 26 22:43:15 2012 +0100
pyparam: fix formatting.
commit 852418133ee5a8fc629bf8d3e01458eac6a0342d
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Sun Feb 26 22:23:27 2012 +0100
provision: Simplify make_smbconf a bit.
commit 3bfccdfbc89acf9a88043698ded045042bf4c577
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Sun Feb 26 22:09:44 2012 +0100
provision: Fix order for error formatting.
commit e27e519bb8cc844da8b4114f5b6c0ea417e43578
Author: Jelmer Vernooij <jelmer at samba.org>
Date: Sun Feb 26 21:47:50 2012 +0100
provision: Raise proper error when shares are missing rather than AssertionError.
-----------------------------------------------------------------------
Summary of changes:
source4/param/pyparam.c | 22 ++--
.../scripting/python/samba/provision/__init__.py | 120 ++++++++++----------
source4/scripting/python/samba/tests/samdb.py | 4 +-
source4/setup/provision.smb.conf.dc | 21 ----
source4/setup/provision.smb.conf.member | 12 --
source4/setup/provision.smb.conf.standalone | 12 --
6 files changed, 73 insertions(+), 118 deletions(-)
delete mode 100644 source4/setup/provision.smb.conf.dc
delete mode 100644 source4/setup/provision.smb.conf.member
delete mode 100644 source4/setup/provision.smb.conf.standalone
Changeset truncated at 500 lines:
diff --git a/source4/param/pyparam.c b/source4/param/pyparam.c
index 4d246a7..9874006 100644
--- a/source4/param/pyparam.c
+++ b/source4/param/pyparam.c
@@ -475,17 +475,17 @@ static PyObject *py_sbin_dir(PyObject *self)
}
static PyMethodDef pyparam_methods[] = {
- { "default_path", (PyCFunction)py_default_path, METH_NOARGS,
- "Returns the default smb.conf path." },
- { "setup_dir", (PyCFunction)py_setup_dir, METH_NOARGS,
- "Returns the compiled in location of provision tempates." },
- { "modules_dir", (PyCFunction)py_modules_dir, METH_NOARGS,
- "Returns the compiled in location of modules." },
- { "bin_dir", (PyCFunction)py_bin_dir, METH_NOARGS,
- "Returns the compiled in BINDIR." },
- { "sbin_dir", (PyCFunction)py_sbin_dir, METH_NOARGS,
- "Returns the compiled in SBINDIR." },
- { NULL }
+ { "default_path", (PyCFunction)py_default_path, METH_NOARGS,
+ "Returns the default smb.conf path." },
+ { "setup_dir", (PyCFunction)py_setup_dir, METH_NOARGS,
+ "Returns the compiled in location of provision tempates." },
+ { "modules_dir", (PyCFunction)py_modules_dir, METH_NOARGS,
+ "Returns the compiled in location of modules." },
+ { "bin_dir", (PyCFunction)py_bin_dir, METH_NOARGS,
+ "Returns the compiled in BINDIR." },
+ { "sbin_dir", (PyCFunction)py_sbin_dir, METH_NOARGS,
+ "Returns the compiled in SBINDIR." },
+ { NULL }
};
void initparam(void)
diff --git a/source4/scripting/python/samba/provision/__init__.py b/source4/scripting/python/samba/provision/__init__.py
index 3a69a07..48dd867 100644
--- a/source4/scripting/python/samba/provision/__init__.py
+++ b/source4/scripting/python/samba/provision/__init__.py
@@ -499,7 +499,6 @@ def guess_names(lp=None, hostname=None, domain=None, dnsdomain=None,
netbiosname = lp.get("netbios name")
if netbiosname is None:
netbiosname = determine_netbios_name(hostname)
- assert netbiosname is not None
netbiosname = netbiosname.upper()
if not valid_netbios_name(netbiosname):
raise InvalidNetbiosName(netbiosname)
@@ -527,7 +526,7 @@ def guess_names(lp=None, hostname=None, domain=None, dnsdomain=None,
raise ProvisioningError("guess_names: 'realm=%s' in %s must match chosen realm '%s'! Please remove the smb.conf file and let provision generate it" % (lp.get("realm").upper(), realm, lp.configfile))
if lp.get("server role").lower() != serverrole:
- raise ProvisioningError("guess_names: 'server role=%s' in %s must match chosen server role '%s'! Please remove the smb.conf file and let provision generate it" % (lp.get("server role"), serverrole, lp.configfile))
+ raise ProvisioningError("guess_names: 'server role=%s' in %s must match chosen server role '%s'! Please remove the smb.conf file and let provision generate it" % (lp.get("server role"), lp.configfile, serverrole))
if serverrole == "domain controller":
if domain is None:
@@ -567,7 +566,7 @@ def guess_names(lp=None, hostname=None, domain=None, dnsdomain=None,
schemadn = "CN=Schema," + configdn
if sitename is None:
- sitename=DEFAULTSITE
+ sitename = DEFAULTSITE
names = ProvisionNames()
names.rootdn = rootdn
@@ -587,29 +586,21 @@ def guess_names(lp=None, hostname=None, domain=None, dnsdomain=None,
return names
-def make_smbconf(smbconf, hostname, domain, realm, serverrole,
- targetdir, sid_generator="internal", eadb=False, lp=None,
+def make_smbconf(smbconf, hostname, domain, realm, targetdir,
+ serverrole=None, sid_generator=None, eadb=False, lp=None,
server_services=None):
"""Create a new smb.conf file based on a couple of basic settings.
"""
assert smbconf is not None
+
if hostname is None:
hostname = socket.gethostname().split(".")[0]
- netbiosname = determine_netbios_name(hostname)
- else:
- netbiosname = hostname.upper()
+
+ netbiosname = determine_netbios_name(hostname)
if serverrole is None:
serverrole = "standalone"
- assert serverrole in ("domain controller", "member server", "standalone")
- if serverrole == "domain controller":
- smbconfsuffix = "dc"
- elif serverrole == "member server":
- smbconfsuffix = "member"
- elif serverrole == "standalone":
- smbconfsuffix = "standalone"
-
if sid_generator is None:
sid_generator = "internal"
@@ -619,6 +610,14 @@ def make_smbconf(smbconf, hostname, domain, realm, serverrole,
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
@@ -632,43 +631,39 @@ def make_smbconf(smbconf, hostname, domain, realm, serverrole,
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)
@@ -1645,7 +1640,7 @@ def provision(logger, session_info, credentials, smbconf=None,
server_services = None
if dns_backend == "SAMBA_INTERNAL":
- server_services = [ "+dns" ]
+ server_services = ["+dns"]
# only install a new smb.conf if there isn't one there already
if os.path.exists(smbconf):
@@ -1659,12 +1654,13 @@ def provision(logger, session_info, credentials, smbconf=None,
f.close()
if data is None or data == "":
make_smbconf(smbconf, hostname, domain, realm,
- serverrole, targetdir, sid_generator, useeadb,
+ targetdir, serverrole=serverrole,
+ sid_generator=sid_generator, eadb=useeadb,
lp=lp, server_services=server_services)
else:
- make_smbconf(smbconf, hostname, domain, realm, serverrole,
- targetdir, sid_generator, useeadb, lp=lp,
- server_services=server_services)
+ make_smbconf(smbconf, hostname, domain, realm, targetdir,
+ serverrole=serverrole, sid_generator=sid_generator,
+ eadb=useeadb, lp=lp, server_services=server_services)
if lp is None:
lp = samba.param.LoadParm()
@@ -1779,17 +1775,12 @@ def provision(logger, session_info, credentials, smbconf=None,
if serverrole == "domain controller":
if paths.netlogon is None:
- logger.info("Existing smb.conf does not have a [netlogon] share, but you are configuring a DC.")
- logger.info("Please either remove %s or see the template at %s" %
- (paths.smbconf, setup_path("provision.smb.conf.dc")))
- assert paths.netlogon is not None
+ raise MissingShareError("netlogon", paths.smbconf,
+ setup_path("provision.smb.conf.dc"))
if paths.sysvol is None:
- logger.info("Existing smb.conf does not have a [sysvol] share, but you"
- " are configuring a DC.")
- logger.info("Please either remove %s or see the template at %s" %
- (paths.smbconf, setup_path("provision.smb.conf.dc")))
- assert paths.sysvol is not None
+ raise MissingShareError("sysvol", paths.smbconf,
+ setup_path("provision.smb.conf.dc"))
if not os.path.isdir(paths.netlogon):
os.makedirs(paths.netlogon, 0755)
@@ -1931,3 +1922,12 @@ class InvalidNetbiosName(Exception):
def __init__(self, name):
super(InvalidNetbiosName, self).__init__(
"The name '%r' is not a valid NetBIOS name" % name)
+
+
+class MissingShareError(ProvisioningError):
+
+ def __init__(self, name, smbconf, smbconf_template):
+ super(MissingShareError, self).__init__(
+ "Existing smb.conf does not have a [%s] share, but you are "
+ "configuring a DC. Please either remove %s or see the template "
+ "at %s" % (name, smbconf, smbconf_template))
diff --git a/source4/scripting/python/samba/tests/samdb.py b/source4/scripting/python/samba/tests/samdb.py
index 3df72b0..a60062d 100644
--- a/source4/scripting/python/samba/tests/samdb.py
+++ b/source4/scripting/python/samba/tests/samdb.py
@@ -53,7 +53,7 @@ class SamDBTestCase(TestCaseInTempDir):
domainsid = security.random_sid()
path = os.path.join(self.tempdir, "samdb.ldb")
session_info = system_session()
-
+
hostname="foo"
domain="EXAMPLE"
dnsdomain="example.com"
@@ -62,7 +62,7 @@ class SamDBTestCase(TestCaseInTempDir):
smbconf = os.path.join(self.tempdir, "smb.conf")
make_smbconf(smbconf, hostname, domain, dnsdomain,
- serverrole, self.tempdir)
+ self.tempdir, serverrole=serverrole)
self.lp = param.LoadParm()
self.lp.load(smbconf)
diff --git a/source4/setup/provision.smb.conf.dc b/source4/setup/provision.smb.conf.dc
deleted file mode 100644
index ba8555f..0000000
--- a/source4/setup/provision.smb.conf.dc
+++ /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
index 0fc4de5..0000000
--- a/source4/setup/provision.smb.conf.member
+++ /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
index 0fc4de5..0000000
--- a/source4/setup/provision.smb.conf.standalone
+++ /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
-
--
Samba Shared Repository
More information about the samba-cvs
mailing list