summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2013-01-17 10:00:20 -0500
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2013-01-17 10:00:20 -0500
commit41cfeba3ec2f4287dc1294a2c421e64f7b1224f8 (patch)
treedd176d58195505339c5f38dbc8604cef7bdb8c49 /src
parentf45551e656bc9a7894ddbf4412263e9045e73154 (diff)
downloadbcfg2-41cfeba3ec2f4287dc1294a2c421e64f7b1224f8.tar.gz
bcfg2-41cfeba3ec2f4287dc1294a2c421e64f7b1224f8.tar.bz2
bcfg2-41cfeba3ec2f4287dc1294a2c421e64f7b1224f8.zip
Options: split loading a new OptionParser from fetching an existing parser
Diffstat (limited to 'src')
-rw-r--r--src/lib/Bcfg2/Options.py31
-rwxr-xr-xsrc/sbin/bcfg24
-rwxr-xr-xsrc/sbin/bcfg2-admin2
-rwxr-xr-xsrc/sbin/bcfg2-crypt2
-rwxr-xr-xsrc/sbin/bcfg2-info2
-rwxr-xr-xsrc/sbin/bcfg2-lint2
-rwxr-xr-xsrc/sbin/bcfg2-report-collector2
-rwxr-xr-xsrc/sbin/bcfg2-server2
-rwxr-xr-xsrc/sbin/bcfg2-test2
9 files changed, 27 insertions, 22 deletions
diff --git a/src/lib/Bcfg2/Options.py b/src/lib/Bcfg2/Options.py
index 780619f3b..4818c67f9 100644
--- a/src/lib/Bcfg2/Options.py
+++ b/src/lib/Bcfg2/Options.py
@@ -1256,16 +1256,12 @@ class OptionParser(OptionSet):
_PARSER = None
-def get_option_parser(args=None, argv=None, quiet=False):
- """ Get an OptionParser object. If :attr:`_PARSER` already
- exists, that will be used; if not, a new OptionParser object will
- be created.
+def load_option_parser(args, argv=None, quiet=False):
+ """ Load an :class:`Bcfg2.Options.OptionParser` object, caching it
+ in :attr:`_PARSER` for later retrieval via
+ :func:`get_option_parser`.
- If ``args`` or ``argv`` are given, then a new OptionParser object
- will be instantiated regardless of whether one already exists.
-
- :param args: The argument set to parse. This is required on the
- first invocation of :func:`get_option_parser`.
+ :param args: The argument set to parse.
:type args: dict of :class:`Bcfg2.Options.Option` objects
:param argv: The command-line argument list. If this is not
provided, :attr:`sys.argv` will be used.
@@ -1275,8 +1271,17 @@ def get_option_parser(args=None, argv=None, quiet=False):
:returns: :class:`Bcfg2.Options.OptionParser`
"""
global _PARSER # pylint: disable=W0603
- if _PARSER is None or args is not None or argv is not None:
- if args is None:
- args = CLI_COMMON_OPTIONS
- _PARSER = OptionParser(args, argv=argv, quiet=quiet)
+ _PARSER = OptionParser(args, argv=argv, quiet=quiet)
+ return _PARSER
+
+
+def get_option_parser():
+ """ Get an already-created :class:`Bcfg2.Options.OptionParser` object. If
+ :attr:`_PARSER` has not been populated, then a new OptionParser
+ will be created with basic arguments.
+
+ :returns: :class:`Bcfg2.Options.OptionParser`
+ """
+ if _PARSER is None:
+ return load_option_parser(CLI_COMMON_OPTIONS)
return _PARSER
diff --git a/src/sbin/bcfg2 b/src/sbin/bcfg2
index e9beb47cd..62f749b80 100755
--- a/src/sbin/bcfg2
+++ b/src/sbin/bcfg2
@@ -4,7 +4,7 @@
import sys
import signal
from Bcfg2.Client.Client import Client
-from Bcfg2.Options import get_option_parser, CLIENT_COMMON_OPTIONS
+from Bcfg2.Options import load_option_parser, CLIENT_COMMON_OPTIONS
def cb_sigint_handler(signum, frame):
@@ -13,7 +13,7 @@ def cb_sigint_handler(signum, frame):
def main():
- setup = get_option_parser(CLIENT_COMMON_OPTIONS)
+ setup = load_option_parser(CLIENT_COMMON_OPTIONS)
setup.parse(sys.argv[1:])
if setup['args']:
diff --git a/src/sbin/bcfg2-admin b/src/sbin/bcfg2-admin
index 8f6643ee0..3c63cd3f5 100755
--- a/src/sbin/bcfg2-admin
+++ b/src/sbin/bcfg2-admin
@@ -41,7 +41,7 @@ def main():
optinfo = dict()
optinfo.update(Bcfg2.Options.CLI_COMMON_OPTIONS)
optinfo.update(Bcfg2.Options.SERVER_COMMON_OPTIONS)
- setup = Bcfg2.Options.get_option_parser(optinfo)
+ setup = Bcfg2.Options.load_option_parser(optinfo)
# override default help message to include description of all modes
setup.hm = "Usage:\n\n%s\n%s" % (setup.buildHelpMessage(),
create_description())
diff --git a/src/sbin/bcfg2-crypt b/src/sbin/bcfg2-crypt
index 6a13b9bc5..0bee7e9b9 100755
--- a/src/sbin/bcfg2-crypt
+++ b/src/sbin/bcfg2-crypt
@@ -371,7 +371,7 @@ def main(): # pylint: disable=R0912,R0915
optinfo = dict(interactive=Bcfg2.Options.INTERACTIVE)
optinfo.update(Bcfg2.Options.CRYPT_OPTIONS)
optinfo.update(Bcfg2.Options.CLI_COMMON_OPTIONS)
- setup = Bcfg2.Options.get_option_parser(optinfo)
+ setup = Bcfg2.Options.load_option_parser(optinfo)
setup.hm = " bcfg2-crypt [options] <filename>\nOptions:\n%s" % \
setup.buildHelpMessage()
setup.parse()
diff --git a/src/sbin/bcfg2-info b/src/sbin/bcfg2-info
index c697e9fca..60b099284 100755
--- a/src/sbin/bcfg2-info
+++ b/src/sbin/bcfg2-info
@@ -751,7 +751,7 @@ def main():
interpreter=Bcfg2.Options.INTERPRETER)
optinfo.update(Bcfg2.Options.CLI_COMMON_OPTIONS)
optinfo.update(Bcfg2.Options.SERVER_COMMON_OPTIONS)
- setup = Bcfg2.Options.get_option_parser(optinfo)
+ setup = Bcfg2.Options.load_option_parser(optinfo)
setup.hm = "\n".join([" bcfg2-info [options] [command <command args>]",
"Options:",
setup.buildHelpMessage(),
diff --git a/src/sbin/bcfg2-lint b/src/sbin/bcfg2-lint
index f12fcc6c4..557a03405 100755
--- a/src/sbin/bcfg2-lint
+++ b/src/sbin/bcfg2-lint
@@ -146,7 +146,7 @@ def main():
lint_plugins=Bcfg2.Options.LINT_PLUGINS)
optinfo.update(Bcfg2.Options.CLI_COMMON_OPTIONS)
optinfo.update(Bcfg2.Options.SERVER_COMMON_OPTIONS)
- setup = Bcfg2.Options.get_option_parser(optinfo)
+ setup = Bcfg2.Options.load_option_parser(optinfo)
setup.parse(sys.argv[1:])
log_args = dict(to_syslog=setup['syslog'], to_console=logging.WARNING)
diff --git a/src/sbin/bcfg2-report-collector b/src/sbin/bcfg2-report-collector
index d925023d1..403775251 100755
--- a/src/sbin/bcfg2-report-collector
+++ b/src/sbin/bcfg2-report-collector
@@ -20,7 +20,7 @@ def main():
)
optinfo.update(Bcfg2.Options.CLI_COMMON_OPTIONS)
optinfo.update(Bcfg2.Options.REPORTING_COMMON_OPTIONS)
- setup = Bcfg2.Options.get_option_parser(optinfo)
+ setup = Bcfg2.Options.load_option_parser(optinfo)
setup.parse()
# run collector
diff --git a/src/sbin/bcfg2-server b/src/sbin/bcfg2-server
index 7e7dede30..8e96d65f2 100755
--- a/src/sbin/bcfg2-server
+++ b/src/sbin/bcfg2-server
@@ -16,7 +16,7 @@ def main():
optinfo.update(Bcfg2.Options.CLI_COMMON_OPTIONS)
optinfo.update(Bcfg2.Options.SERVER_COMMON_OPTIONS)
optinfo.update(Bcfg2.Options.DAEMON_COMMON_OPTIONS)
- setup = Bcfg2.Options.get_option_parser(args=optinfo)
+ setup = Bcfg2.Options.load_option_parser(optinfo)
setup.parse(sys.argv[1:])
# check whether the specified bcfg2.conf exists
if not os.path.exists(setup['configfile']):
diff --git a/src/sbin/bcfg2-test b/src/sbin/bcfg2-test
index a708a233a..28023a0f2 100755
--- a/src/sbin/bcfg2-test
+++ b/src/sbin/bcfg2-test
@@ -69,7 +69,7 @@ def main():
validate=Bcfg2.Options.CFG_VALIDATION)
optinfo.update(Bcfg2.Options.CLI_COMMON_OPTIONS)
optinfo.update(Bcfg2.Options.SERVER_COMMON_OPTIONS)
- setup = Bcfg2.Options.get_option_parser(args=optinfo)
+ setup = Bcfg2.Options.load_option_parser(optinfo)
setup.hm = \
"bcfg2-test [options] [client] [client] [...]\nOptions:\n %s" % \
setup.buildHelpMessage()