From 55f6d26c9dda9f2e8194fc2500dd70c5d59fa30c Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Mon, 3 Jun 2013 09:44:43 -0400 Subject: bcfg2-lint: log run time for each lint plugin --- src/sbin/bcfg2-lint | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/sbin') diff --git a/src/sbin/bcfg2-lint b/src/sbin/bcfg2-lint index 9a98eaaaa..9abec31a5 100755 --- a/src/sbin/bcfg2-lint +++ b/src/sbin/bcfg2-lint @@ -3,6 +3,7 @@ """This tool examines your Bcfg2 specifications for errors.""" import sys +import time import inspect import logging import Bcfg2.Logger @@ -52,7 +53,10 @@ def run_plugin(plugin, plugin_name, setup=None, errorhandler=None, args.append(setup) # python 2.5 doesn't support mixing *magic and keyword arguments - return plugin(*args, **dict(files=files, errorhandler=errorhandler)).Run() + start = time.time() + rv = plugin(*args, **dict(files=files, errorhandler=errorhandler)).Run() + LOGGER.debug(" Ran %s in %0.2f seconds" % (plugin_name, time.time() - start)) + return rv def get_errorhandler(setup): -- cgit v1.2.3-1-g7c22 From dae8f399151052fd2a0ce43ac61a56f399a28252 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Mon, 3 Jun 2013 10:54:54 -0400 Subject: bcfg2-admin: set appropriate return values on error --- src/sbin/bcfg2-admin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/sbin') diff --git a/src/sbin/bcfg2-admin b/src/sbin/bcfg2-admin index 31e49c00b..14d188342 100755 --- a/src/sbin/bcfg2-admin +++ b/src/sbin/bcfg2-admin @@ -83,7 +83,7 @@ def main(): raise SystemExit(1) mode = mode_cls(setup) try: - mode(setup['args'][1:]) + return mode(setup['args'][1:]) finally: mode.shutdown() else: @@ -93,6 +93,6 @@ def main(): if __name__ == '__main__': try: - main() + sys.exit(main()) except KeyboardInterrupt: raise SystemExit(1) -- cgit v1.2.3-1-g7c22 From 06dae2a73ae03ea72feed4e7d6e56d25cfa24195 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Mon, 3 Jun 2013 10:56:26 -0400 Subject: Revert "bcfg2-admin: set appropriate return values on error" This reverts commit dae8f399151052fd2a0ce43ac61a56f399a28252. Splitting this into two commits. --- src/sbin/bcfg2-admin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/sbin') diff --git a/src/sbin/bcfg2-admin b/src/sbin/bcfg2-admin index 14d188342..31e49c00b 100755 --- a/src/sbin/bcfg2-admin +++ b/src/sbin/bcfg2-admin @@ -83,7 +83,7 @@ def main(): raise SystemExit(1) mode = mode_cls(setup) try: - return mode(setup['args'][1:]) + mode(setup['args'][1:]) finally: mode.shutdown() else: @@ -93,6 +93,6 @@ def main(): if __name__ == '__main__': try: - sys.exit(main()) + main() except KeyboardInterrupt: raise SystemExit(1) -- cgit v1.2.3-1-g7c22 From 7175d64e3b4c150340bb71363e5a25faac80e21e Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Mon, 3 Jun 2013 10:57:00 -0400 Subject: bcfg2-admin: set appropriate return values on error --- src/sbin/bcfg2-admin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/sbin') diff --git a/src/sbin/bcfg2-admin b/src/sbin/bcfg2-admin index 31e49c00b..14d188342 100755 --- a/src/sbin/bcfg2-admin +++ b/src/sbin/bcfg2-admin @@ -83,7 +83,7 @@ def main(): raise SystemExit(1) mode = mode_cls(setup) try: - mode(setup['args'][1:]) + return mode(setup['args'][1:]) finally: mode.shutdown() else: @@ -93,6 +93,6 @@ def main(): if __name__ == '__main__': try: - main() + sys.exit(main()) except KeyboardInterrupt: raise SystemExit(1) -- cgit v1.2.3-1-g7c22 From 3ed8637d59fcfe7b38aaa3f8717b0269d2c4650c Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Mon, 3 Jun 2013 13:16:21 -0400 Subject: fixed unit tests --- src/sbin/bcfg2-lint | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/sbin') diff --git a/src/sbin/bcfg2-lint b/src/sbin/bcfg2-lint index 9abec31a5..ab3b6450f 100755 --- a/src/sbin/bcfg2-lint +++ b/src/sbin/bcfg2-lint @@ -55,7 +55,8 @@ def run_plugin(plugin, plugin_name, setup=None, errorhandler=None, # python 2.5 doesn't support mixing *magic and keyword arguments start = time.time() rv = plugin(*args, **dict(files=files, errorhandler=errorhandler)).Run() - LOGGER.debug(" Ran %s in %0.2f seconds" % (plugin_name, time.time() - start)) + LOGGER.debug(" Ran %s in %0.2f seconds" % (plugin_name, + time.time() - start)) return rv -- cgit v1.2.3-1-g7c22 From d67baf714e6c6635846e57b9258e649a59430c55 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Thu, 13 Jun 2013 15:25:26 -0400 Subject: Yum: handle and log helper errors better --- src/sbin/bcfg2-yum-helper | 64 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 19 deletions(-) (limited to 'src/sbin') diff --git a/src/sbin/bcfg2-yum-helper b/src/sbin/bcfg2-yum-helper index 7dbdad16b..48f28257f 100755 --- a/src/sbin/bcfg2-yum-helper +++ b/src/sbin/bcfg2-yum-helper @@ -223,27 +223,53 @@ def main(): depsolver = DepSolver(options.config, options.verbose) if cmd == "clean": - depsolver.clean_cache() - print(json.dumps(True)) + try: + depsolver.clean_cache() + print(json.dumps(True)) + except: + logger.error("Unexpected error cleaning cache: %s" % + sys.exc_info()[1], exc_info=1) + print(json.dumps(False)) + return 2 elif cmd == "complete": - data = json.loads(sys.stdin.read()) - depsolver.groups = data['groups'] - (packages, unknown) = depsolver.complete([pkg_to_tuple(p) - for p in data['packages']]) - print(json.dumps(dict(packages=list(packages), - unknown=list(unknown)))) + try: + data = json.loads(sys.stdin.read()) + except: + logger.error("Unexpected error decoding JSON input: %s" % + sys.exc_info()[1]) + return 2 + try: + depsolver.groups = data['groups'] + (packages, unknown) = depsolver.complete( + [pkg_to_tuple(p) for p in data['packages']]) + print(json.dumps(dict(packages=list(packages), + unknown=list(unknown)))) + except: + logger.error("Unexpected error completing package set: %s" % + sys.exc_info()[1], exc_info=1) + print(json.dumps(dict(packages=[], unknown=data['packages']))) + return 2 elif cmd == "get_groups": - data = json.loads(sys.stdin.read()) - rv = dict() - for gdata in data: - if "type" in gdata: - packages = depsolver.get_group(gdata['group'], - ptype=gdata['type']) - else: - packages = depsolver.get_group(gdata['group']) - rv[gdata['group']] = list(packages) - print(json.dumps(rv)) - + try: + data = json.loads(sys.stdin.read()) + rv = dict() + for gdata in data: + if "type" in gdata: + packages = depsolver.get_group(gdata['group'], + ptype=gdata['type']) + else: + packages = depsolver.get_group(gdata['group']) + rv[gdata['group']] = list(packages) + print(json.dumps(rv)) + except: + logger.error("Unexpected error getting groups: %s" % + sys.exc_info()[1], exc_info=1) + print(json.dumps(dict())) + return 2 + else: + logger.error("Unknown command %s" % cmd) + print(json.dumps(None)) + return 2 if __name__ == '__main__': sys.exit(main()) -- cgit v1.2.3-1-g7c22 From 11c4f14a942337bc3889dd0767a32bcef651fe19 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Fri, 14 Jun 2013 10:58:28 -0400 Subject: bcfg2-yum-helper: fixed unit tests --- src/sbin/bcfg2-yum-helper | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/sbin') diff --git a/src/sbin/bcfg2-yum-helper b/src/sbin/bcfg2-yum-helper index 48f28257f..4ef531d39 100755 --- a/src/sbin/bcfg2-yum-helper +++ b/src/sbin/bcfg2-yum-helper @@ -221,6 +221,8 @@ def main(): logger.error("Config file %s not found" % options.config) return 1 + # pylint: disable=W0702 + rv = 0 depsolver = DepSolver(options.config, options.verbose) if cmd == "clean": try: @@ -230,14 +232,14 @@ def main(): logger.error("Unexpected error cleaning cache: %s" % sys.exc_info()[1], exc_info=1) print(json.dumps(False)) - return 2 + rv = 2 elif cmd == "complete": try: data = json.loads(sys.stdin.read()) except: logger.error("Unexpected error decoding JSON input: %s" % sys.exc_info()[1]) - return 2 + rv = 2 try: depsolver.groups = data['groups'] (packages, unknown) = depsolver.complete( @@ -248,7 +250,7 @@ def main(): logger.error("Unexpected error completing package set: %s" % sys.exc_info()[1], exc_info=1) print(json.dumps(dict(packages=[], unknown=data['packages']))) - return 2 + rv = 2 elif cmd == "get_groups": try: data = json.loads(sys.stdin.read()) @@ -265,11 +267,12 @@ def main(): logger.error("Unexpected error getting groups: %s" % sys.exc_info()[1], exc_info=1) print(json.dumps(dict())) - return 2 + rv = 2 else: logger.error("Unknown command %s" % cmd) print(json.dumps(None)) - return 2 + rv = 2 + return rv if __name__ == '__main__': sys.exit(main()) -- cgit v1.2.3-1-g7c22 From 16c50e6cda8920576c78e2f690ef9a169df53ba0 Mon Sep 17 00:00:00 2001 From: Sol Jerome Date: Fri, 21 Jun 2013 11:42:05 -0500 Subject: bcfg2-info: Remove nonexistent option This option was removed in f157617a5c. Signed-off-by: Sol Jerome --- src/sbin/bcfg2-info | 1 - 1 file changed, 1 deletion(-) (limited to 'src/sbin') diff --git a/src/sbin/bcfg2-info b/src/sbin/bcfg2-info index 4e71ba35a..133e1ccb3 100755 --- a/src/sbin/bcfg2-info +++ b/src/sbin/bcfg2-info @@ -473,7 +473,6 @@ Bcfg2 client itself.""") ('Path Bcfg2 repository', self.setup['repo']), ('Plugins', self.setup['plugins']), ('Password', self.setup['password']), - ('Server Metadata Connector', self.setup['mconnect']), ('Filemonitor', self.setup['filemonitor']), ('Server address', self.setup['location']), ('Path to key', self.setup['key']), -- cgit v1.2.3-1-g7c22 From 8b49d8b198564d0dae3e40b99b6f9d76188dcda7 Mon Sep 17 00:00:00 2001 From: Sol Jerome Date: Wed, 26 Jun 2013 09:15:40 -0500 Subject: Revert "Core: properly handle Ctrl-C" This reverts commit 4568c44372c99ba809826e016680da9b881bd8e8. Trying to handle ^c in the core is difficult and can break STDOUT for interactive programs that invoke the core. Signed-off-by: Sol Jerome Conflicts: src/lib/Bcfg2/Server/Core.py src/sbin/bcfg2-test tools/bcfg2-profile-templates.py --- src/sbin/bcfg2-test | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/sbin') diff --git a/src/sbin/bcfg2-test b/src/sbin/bcfg2-test index c33143a04..54ddad6df 100755 --- a/src/sbin/bcfg2-test +++ b/src/sbin/bcfg2-test @@ -5,6 +5,7 @@ without failures""" import os import sys +import signal import fnmatch import logging import Bcfg2.Logger @@ -193,6 +194,21 @@ def run_child(setup, clients, queue): def parse_args(): """ Parse command line arguments. """ optinfo = dict(Bcfg2.Options.TEST_COMMON_OPTIONS) + + +def get_sigint_handler(core): + """ Get a function that handles SIGINT/Ctrl-C by shutting down the + core and exiting properly.""" + + def hdlr(sig, frame): # pylint: disable=W0613 + """ Handle SIGINT/Ctrl-C by shutting down the core and exiting + properly. """ + core.shutdown() + os._exit(1) # pylint: disable=W0212 + + return hdlr + + optinfo.update(Bcfg2.Options.CLI_COMMON_OPTIONS) optinfo.update(Bcfg2.Options.SERVER_COMMON_OPTIONS) setup = Bcfg2.Options.OptionParser(optinfo) @@ -220,6 +236,7 @@ def parse_args(): logger.warning("Python multiprocessing library not found, running " "with no children") setup['children'] = 0 + signal.signal(signal.SIGINT, get_sigint_handler(core)) if (setup['children'] and ('--with-xunit' in setup['noseopts'] or '--xunit-file' in setup['noseopts'])): -- cgit v1.2.3-1-g7c22 From b44c1e2972a3841b0a2b9198797ba42caddc97d4 Mon Sep 17 00:00:00 2001 From: Sol Jerome Date: Wed, 26 Jun 2013 09:29:52 -0500 Subject: bcfg2-test: Fix merge thinko Signed-off-by: Sol Jerome --- src/sbin/bcfg2-test | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/sbin') diff --git a/src/sbin/bcfg2-test b/src/sbin/bcfg2-test index 54ddad6df..d32df5cfb 100755 --- a/src/sbin/bcfg2-test +++ b/src/sbin/bcfg2-test @@ -191,11 +191,6 @@ def run_child(setup, clients, queue): core.shutdown() -def parse_args(): - """ Parse command line arguments. """ - optinfo = dict(Bcfg2.Options.TEST_COMMON_OPTIONS) - - def get_sigint_handler(core): """ Get a function that handles SIGINT/Ctrl-C by shutting down the core and exiting properly.""" @@ -209,6 +204,10 @@ def get_sigint_handler(core): return hdlr +def parse_args(): + """ Parse command line arguments. """ + optinfo = dict(Bcfg2.Options.TEST_COMMON_OPTIONS) + optinfo.update(Bcfg2.Options.CLI_COMMON_OPTIONS) optinfo.update(Bcfg2.Options.SERVER_COMMON_OPTIONS) setup = Bcfg2.Options.OptionParser(optinfo) -- cgit v1.2.3-1-g7c22 From fae67722f126297d9f8a4fb211f97c6e99aadd47 Mon Sep 17 00:00:00 2001 From: Sol Jerome Date: Wed, 26 Jun 2013 09:35:48 -0500 Subject: bcfg2-test: Move signal handler Code was refactored such that this signal handler got put in the wrong place during the revert. Signed-off-by: Sol Jerome --- src/sbin/bcfg2-test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/sbin') diff --git a/src/sbin/bcfg2-test b/src/sbin/bcfg2-test index d32df5cfb..d7a1894f0 100755 --- a/src/sbin/bcfg2-test +++ b/src/sbin/bcfg2-test @@ -235,7 +235,6 @@ def parse_args(): logger.warning("Python multiprocessing library not found, running " "with no children") setup['children'] = 0 - signal.signal(signal.SIGINT, get_sigint_handler(core)) if (setup['children'] and ('--with-xunit' in setup['noseopts'] or '--xunit-file' in setup['noseopts'])): @@ -262,6 +261,7 @@ def main(): setup = parse_args() logger = logging.getLogger(sys.argv[0]) core = get_core(setup) + signal.signal(signal.SIGINT, get_sigint_handler(core)) if setup['args']: clients = setup['args'] -- cgit v1.2.3-1-g7c22