From 90b1276b8039642f95f5987ff1d0df413454a6d9 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Wed, 17 Oct 2012 10:26:13 -0400 Subject: expanded pylint coverage to Admin modes, removed some old/broken admin modes --- src/sbin/bcfg2-admin | 31 ++++++++++++++++--------------- src/sbin/bcfg2-info | 19 +++++++++++++++++++ 2 files changed, 35 insertions(+), 15 deletions(-) (limited to 'src/sbin') diff --git a/src/sbin/bcfg2-admin b/src/sbin/bcfg2-admin index 47dd923d4..fa4307702 100755 --- a/src/sbin/bcfg2-admin +++ b/src/sbin/bcfg2-admin @@ -1,17 +1,15 @@ #!/usr/bin/env python -"""bcfg2-admin is a script that helps to administrate a Bcfg2 deployment.""" +""" bcfg2-admin is a script that helps to administer a Bcfg2 +deployment. """ +import re import sys import logging import Bcfg2.Logger import Bcfg2.Options import Bcfg2.Server.Admin -# Compatibility import from Bcfg2.Compat import StringIO -log = logging.getLogger('bcfg2-admin') - - def mode_import(modename): """Load Bcfg2.Server.Admin..""" modname = modename.capitalize() @@ -32,10 +30,10 @@ def create_description(): description.write("Available modes are:\n\n") for mode in modes: try: - description.write((" %-15s %s\n" % - (mode, mode_import(mode).__shorthelp__))) + doc = re.sub(r'\s{2,}', ' ', mode_import(mode).__doc__.strip()) except (ImportError, SystemExit): - pass + continue + description.write((" %-15s %s\n" % (mode, doc))) return description.getvalue() @@ -58,6 +56,8 @@ def main(): Bcfg2.Logger.setup_logging('bcfg2-admin', to_syslog=setup['syslog'], level=level) + log = logging.getLogger('bcfg2-admin') + # Provide help if requested or no args were specified if (not setup['args'] or len(setup['args']) < 1 or setup['args'][0] == 'help' or setup['help']): @@ -72,18 +72,19 @@ def main(): if setup['args'][0] in get_modes(): modname = setup['args'][0].capitalize() if len(setup['args']) > 1 and setup['args'][1] == 'help': - print(mode_import(modname).__longhelp__) - raise SystemExit(0) + mode_cls = mode_import(modname) + mode_cls.usage(rv=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)) + err = sys.exc_info()[1] + log.error("Failed to load admin mode %s: %s" % (modname, err)) raise SystemExit(1) mode = mode_cls(setup) - mode(setup['args'][1:]) - if hasattr(mode, 'bcore'): - mode.bcore.shutdown() + try: + mode(setup['args'][1:]) + finally: + mode.shutdown() else: log.error("Error: Unknown mode '%s'\n" % setup['args'][0]) print(create_description()) diff --git a/src/sbin/bcfg2-info b/src/sbin/bcfg2-info index 16e1e8ca1..d6d529dec 100755 --- a/src/sbin/bcfg2-info +++ b/src/sbin/bcfg2-info @@ -687,6 +687,25 @@ Bcfg2 client itself.""") collection = self.plugins['Packages'].get_collection(metadata) print(collection.sourcelist()) + def do_query(self, args): + """ query {-g group|-p profile|-b bundle} - Query clients """ + arglist = args.split(" ") + if len(arglist) != 2: + print(self._get_usage(self.do_query)) + return + + qtype, qparam = arglist + if qtype == '-p': + res = self.metadata.get_client_names_by_profiles(qparam.split(',')) + elif qtype == '-g': + res = self.metadata.get_client_names_by_groups(qparam.split(',')) + elif qtype == '-b': + res = self.metadata.get_client_names_by_bundles(qparam.split(',')) + else: + print(self._get_usage(self.do_query)) + return + print("\n".join(res)) + def do_profile(self, arg): """ profile - Profile a single bcfg2-info command """ -- cgit v1.2.3-1-g7c22