diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-10-17 10:26:13 -0400 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-10-17 10:27:42 -0400 |
commit | 90b1276b8039642f95f5987ff1d0df413454a6d9 (patch) | |
tree | 72b6a65f3e2614d7b9d693e173d683e234fbac0d /src/sbin | |
parent | 6eeded84fca720269d1fda36f785f01ddeb705bb (diff) | |
download | bcfg2-90b1276b8039642f95f5987ff1d0df413454a6d9.tar.gz bcfg2-90b1276b8039642f95f5987ff1d0df413454a6d9.tar.bz2 bcfg2-90b1276b8039642f95f5987ff1d0df413454a6d9.zip |
expanded pylint coverage to Admin modes, removed some old/broken admin modes
Diffstat (limited to 'src/sbin')
-rwxr-xr-x | src/sbin/bcfg2-admin | 31 | ||||
-rwxr-xr-x | src/sbin/bcfg2-info | 19 |
2 files changed, 35 insertions, 15 deletions
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.<mode>.""" 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 <command> <args> - Profile a single bcfg2-info command """ |