From: Jelmer Vernooij Date: Wed, 23 Jan 2008 22:33:36 +0000 (+0100) Subject: python: Add convenience function for getting command line loadparm context X-Git-Url: http://git.samba.org/samba.git/?a=commitdiff_plain;h=decdf5954d5e1ae84318d6767317965f544a897f;p=gd%2Fsamba%2F.git python: Add convenience function for getting command line loadparm context and default to using system smb.conf. (This used to be commit b3afde0f00ab5093b577b139a062c233d4db2524) --- diff --git a/source4/lib/ldb/tests/python/ldap.py b/source4/lib/ldb/tests/python/ldap.py index 01b66a38904..d35f7767dfd 100755 --- a/source4/lib/ldb/tests/python/ldap.py +++ b/source4/lib/ldb/tests/python/ldap.py @@ -19,7 +19,8 @@ from samba import Ldb import param parser = optparse.OptionParser("ldap [options] ") -parser.add_option_group(options.SambaOptions(parser)) +sambaopts = options.SambaOptions(parser) +parser.add_option_group(sambaopts) parser.add_option_group(options.VersionOptions(parser)) # use command line creds if available credopts = options.CredentialsOptions(parser) @@ -33,9 +34,7 @@ if len(args) < 1: host = args[0] -lp = param.LoadParm() -if opts.configfile: - lp.load(opts.configfile) +lp = sambaopts.get_loadparm() def delete_force(ldb, dn): try: diff --git a/source4/scripting/bin/winreg.py b/source4/scripting/bin/winreg.py index f68f2d12f25..1e39ee8f78e 100755 --- a/source4/scripting/bin/winreg.py +++ b/source4/scripting/bin/winreg.py @@ -12,7 +12,8 @@ import optparse import samba.getopt as options parser = optparse.OptionParser("%s [path]" % sys.argv[0]) -parser.add_option_group(options.SambaOptions(parser)) +sambaopts = options.SambaOptions(parser) +parser.add_option_group(sambaopts) parser.add_option("--createkey", type="string", metavar="KEYNAME", help="create a key") @@ -25,7 +26,7 @@ if len(args) < 1: binding = args[0] print "Connecting to " + binding -conn = winreg.winreg(binding, opts.configfile) +conn = winreg.winreg(binding, sambaopts.get_loadparm()) def list_values(key): (num_values, max_valnamelen, max_valbufsize) = conn.QueryInfoKey(key, winreg.String())[4:8] diff --git a/source4/scripting/python/samba/getopt.py b/source4/scripting/python/samba/getopt.py index a087974a698..dfcf2c457e8 100644 --- a/source4/scripting/python/samba/getopt.py +++ b/source4/scripting/python/samba/getopt.py @@ -23,9 +23,25 @@ from credentials import Credentials class SambaOptions(optparse.OptionGroup): def __init__(self, parser): optparse.OptionGroup.__init__(self, parser, "Samba Common Options") - self.add_option("-s", "--configfile", type="string", metavar="FILE", - help="Configuration file") + self.add_option("-s", "--configfile", action="callback", + type=str, metavar="FILE", help="Configuration file", + callback=self._load_configfile) + self._configfile = None + def get_loadparm_path(self): + return self._configfile + + def _load_configfile(self, option, opt_str, arg, parser): + self._configfile = arg + + def get_loadparm(self): + import param + lp = param.LoadParm() + if self._configfile is None: + lp.load_default() + else: + lp.load(self._configfile) + return lp class VersionOptions(optparse.OptionGroup): def __init__(self, parser): diff --git a/source4/setup/provision.py b/source4/setup/provision.py index 88015ce0a31..b9a11bdd78d 100755 --- a/source4/setup/provision.py +++ b/source4/setup/provision.py @@ -37,7 +37,8 @@ from samba.provision import (provision, provision_paths_from_lp) parser = optparse.OptionParser("provision [options]") -parser.add_option_group(options.SambaOptions(parser)) +sambaopts = options.SambaOptions(parser) +parser.add_option_group(sambaopts) parser.add_option_group(options.VersionOptions(parser)) credopts = options.CredentialsOptions(parser) parser.add_option_group(credopts) @@ -111,9 +112,7 @@ if opts.realm is None or opts.domain is None: sys.exit(1) # cope with an initially blank smb.conf -lp = param.LoadParm() -if opts.configfile: - lp.load(opts.configfile) +lp = sambaopts.get_loadparm() if opts.targetdir is not None: if not os.path.exists(opts.targetdir): os.mkdir(opts.targetdir) @@ -127,7 +126,7 @@ if opts.aci is not None: print "set ACI: %s" % opts.aci paths = provision_paths_from_lp(lp, opts.realm.lower()) -paths.smbconf = opts.configfile +paths.smbconf = sambaopts.get_loadparm_path() if opts.ldap_backend: if opts.ldap_backend == "ldapi": diff --git a/source4/setup/upgrade.py b/source4/setup/upgrade.py index ea6f83d7de6..4cf9641ef2a 100755 --- a/source4/setup/upgrade.py +++ b/source4/setup/upgrade.py @@ -14,7 +14,8 @@ import samba.getopt as options from auth import system_session parser = optparse.OptionParser("upgrade [options] ") -parser.add_option_group(options.SambaOptions(parser)) +sambaopts = options.SambaOptions(parser) +parser.add_option_group(sambaopts) parser.add_option_group(options.VersionOptions(parser)) credopts = options.CredentialsOptions(parser) parser.add_option_group(credopts) @@ -59,15 +60,13 @@ if setup_dir is None: setup_dir = "setup" creds = credopts.get_credentials() -lp = param.LoadParm() -if opts.configfile: - lp.load(opts.configfile) +lp = sambaopts.get_loadparm() if opts.targetdir is not None: if not os.path.exists(opts.targetdir): os.mkdir(opts.targetdir) lp.set("private dir", os.path.abspath(opts.targetdir)) lp.set("lock dir", os.path.abspath(opts.targetdir)) paths = provision_paths_from_lp(lp, "") -paths.smbconf = opts.configfile +paths.smbconf = sambaopts.get_loadparm_path() upgrade_provision(samba3, setup_dir, message, credentials=creds, session_info=system_session(), lp=lp, paths=paths) diff --git a/source4/setup/vampire.py b/source4/setup/vampire.py index 392cd2d4fb2..728c53146af 100755 --- a/source4/setup/vampire.py +++ b/source4/setup/vampire.py @@ -26,7 +26,8 @@ from auth import system_session import sys parser = optparse.OptionParser("vampire [options] ") -parser.add_option_group(options.SambaOptions(parser)) +sambaopts = options.SambaOptions(parser) +parser.add_option_group(sambaopts) parser.add_option_group(options.VersionOptions(parser)) credopts = options.CredentialsOptions(parser) parser.add_option_group(credopts) @@ -47,8 +48,6 @@ def vampire(domain, session_info, credentials, lp): ctx.samsync_ldb(vampire_ctx, machine_creds=machine_creds, session_info=session_info) -lp = param.LoadParm() -if opts.configfile: - lp.load(opts.configfile) +lp = sambaopts.get_loadparm() vampire(args[0], session_info=system_session(), credentials=credopts.get_credentials(), lp=lp)