summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2011-07-21 11:15:43 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2011-07-21 11:15:43 -0400
commit494dea763857f784fb789243bda569c5bec0f10a (patch)
treee45032a8cdfd4db644ca17bba9c1b66dc99297b1 /src
parent9ecf23244aa27efd2e3e6924a0009ef12bf9fc37 (diff)
downloadbcfg2-494dea763857f784fb789243bda569c5bec0f10a.tar.gz
bcfg2-494dea763857f784fb789243bda569c5bec0f10a.tar.bz2
bcfg2-494dea763857f784fb789243bda569c5bec0f10a.zip
Miscellaneous bcfg2-admin bug fixes:
* Fixed mode argument parsing when a config file is supplied * Fixed loading help messages when Reports is not configured * Improved option parsing; used Bcfg2.Options.OptionParser
Diffstat (limited to 'src')
-rw-r--r--src/lib/Server/Admin/Reports.py7
-rw-r--r--src/lib/Server/Admin/Xcmd.py7
-rwxr-xr-xsrc/sbin/bcfg2-admin55
3 files changed, 33 insertions, 36 deletions
diff --git a/src/lib/Server/Admin/Reports.py b/src/lib/Server/Admin/Reports.py
index c9f3d3f58..b4c3b5fcd 100644
--- a/src/lib/Server/Admin/Reports.py
+++ b/src/lib/Server/Admin/Reports.py
@@ -28,10 +28,9 @@ import django.core.management
# FIXME - settings file uses a hardcoded path for /etc/bcfg2.conf
try:
import Bcfg2.Server.Reports.settings
-except Exception:
- e = sys.exc_info()[1]
- sys.stderr.write("Failed to load configuration settings. %s\n" % e)
- sys.exit(1)
+except Exception, err:
+ sys.stderr.write("Failed to load configuration settings. %s\n" % err)
+ raise SystemExit(1)
project_directory = os.path.dirname(Bcfg2.Server.Reports.settings.__file__)
project_name = os.path.basename(project_directory)
diff --git a/src/lib/Server/Admin/Xcmd.py b/src/lib/Server/Admin/Xcmd.py
index 2cb085346..6147139fb 100644
--- a/src/lib/Server/Admin/Xcmd.py
+++ b/src/lib/Server/Admin/Xcmd.py
@@ -1,5 +1,3 @@
-import sys
-
import Bcfg2.Options
import Bcfg2.Proxy
import Bcfg2.Server.Admin
@@ -24,7 +22,7 @@ class Xcmd(Bcfg2.Server.Admin.Mode):
'timeout': Bcfg2.Options.CLIENT_TIMEOUT,
}
setup = Bcfg2.Options.OptionParser(optinfo)
- setup.parse(sys.argv[2:])
+ setup.parse(args)
Bcfg2.Proxy.RetryMethod.max_retries = 1
proxy = Bcfg2.Proxy.ComponentProxy(setup['server'],
setup['user'],
@@ -42,8 +40,7 @@ class Xcmd(Bcfg2.Server.Admin.Mode):
args = tuple(setup['args'][1:])
try:
data = getattr(proxy, cmd)(*args)
- except xmlrpclib.Fault:
- flt = sys.exc_info()[1]
+ except xmlrpclib.Fault, flt:
if flt.faultCode == 7:
print("Unknown method %s" % cmd)
return
diff --git a/src/sbin/bcfg2-admin b/src/sbin/bcfg2-admin
index 1434afd97..4c92a0e2e 100755
--- a/src/sbin/bcfg2-admin
+++ b/src/sbin/bcfg2-admin
@@ -1,7 +1,7 @@
#!/usr/bin/env python
"""bcfg2-admin is a script that helps to administrate a Bcfg2 deployment."""
-from optparse import OptionParser
+import sys
import logging
import Bcfg2.Server.Core
import Bcfg2.Logger
@@ -33,51 +33,52 @@ def create_description():
try:
description.write((" %-15s %s\n" %
(mode, mode_import(mode).__shorthelp__)))
- except ImportError:
- continue
+ except (ImportError, SystemExit):
+ pass
return description.getvalue()
def main():
- Bcfg2.Logger.setup_logging('bcfg2-admin', to_console=True, level=40)
- usage = "Usage: %prog [options] MODE [args]"
- parser = OptionParser(usage=usage)
- parser.set_defaults(configfile=Bcfg2.Options.CFILE.default)
- parser.add_option("-C", "--configfile",
- dest="configfile",
- help="Path to bcfg2.conf",
- metavar="FILE")
- parser.disable_interspersed_args()
- (options, args) = parser.parse_args()
+ optinfo = {
+ 'configfile': Bcfg2.Options.CFILE,
+ 'help': Bcfg2.Options.HELP,
+ 'verbose': Bcfg2.Options.VERBOSE,
+ }
+ setup = Bcfg2.Options.OptionParser(optinfo)
+ setup.parse(sys.argv[1:])
+
+ log_args = dict(to_syslog=False, to_console=logging.WARNING)
+ if setup['verbose']:
+ log_args['to_console'] = logging.DEBUG
# Provide help if requested or no args were specified
- if len(args) < 1 or args[0] == 'help':
- if len(args) > 1:
+ if (not setup['args'] or len(setup['args']) < 1 or
+ setup['args'][0] == 'help' or setup['help']):
+ if len(setup['args']) > 1:
# Get help for a specific mode by passing it the help argument
- args = [args[1], args[0]]
+ setup['args'] = [setup['args'][1], setup['args'][0]]
else:
# Print short help for all modes
- parser.print_help()
+ print("Usage:\n %s" % setup.buildHelpMessage())
print(create_description())
raise SystemExit(0)
- if args[0] in get_modes():
- modname = args[0].capitalize()
- if len(args) == 1 or args[1] == 'help':
+ if setup['args'][0] in get_modes():
+ modname = setup['args'][0].capitalize()
+ if len(setup['args']) == 1 or setup['args'][1] == 'help':
print(mode_import(modname).__longhelp__)
raise SystemExit(0)
try:
mode_cls = mode_import(modname)
- except ImportError:
- e = sys.exc_info()[1]
- log.error("Failed to load admin mode %s: %s" % (modname, e))
+ except ImportError, err:
+ log.error("Failed to load admin mode %s: %s" % (modname, err))
raise SystemExit(1)
- mode = mode_cls(options.configfile)
- mode(args[1:])
+ mode = mode_cls(setup['configfile'])
+ mode(setup['args'][1:])
if hasattr(mode, 'bcore'):
mode.bcore.shutdown()
else:
- log.error("Unknown mode %s" % args[0])
- parser.print_help()
+ log.error("Unknown mode %s" % setup['args'][0])
+ print("Usage:\n %s" % setup.buildHelpMessage())
print(create_description())
raise SystemExit(1)