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/lib/Bcfg2/Server/Admin/Client.py | 12 ++++++++---- src/lib/Bcfg2/Server/Admin/Compare.py | 3 ++- src/lib/Bcfg2/Server/Admin/Minestruct.py | 11 +++++++---- src/lib/Bcfg2/Server/Admin/Pull.py | 3 ++- src/lib/Bcfg2/Server/Admin/Reports.py | 23 +++++++++++++++-------- src/lib/Bcfg2/Server/Admin/Syncdb.py | 9 ++++++--- src/lib/Bcfg2/Server/Admin/Xcmd.py | 16 ++++++++++++++-- 7 files changed, 54 insertions(+), 23 deletions(-) (limited to 'src/lib/Bcfg2/Server/Admin') diff --git a/src/lib/Bcfg2/Server/Admin/Client.py b/src/lib/Bcfg2/Server/Admin/Client.py index 187ccfd71..570e993ed 100644 --- a/src/lib/Bcfg2/Server/Admin/Client.py +++ b/src/lib/Bcfg2/Server/Admin/Client.py @@ -18,15 +18,19 @@ class Client(Bcfg2.Server.Admin.MetadataCore): try: self.metadata.add_client(args[1]) except MetadataConsistencyError: - self.errExit("Error in adding client: %s" % sys.exc_info()[1]) + err = sys.exc_info()[1] + print("Error in adding client: %s" % err) + raise SystemExit(1) elif args[0] in ['delete', 'remove', 'del', 'rm']: try: self.metadata.remove_client(args[1]) except MetadataConsistencyError: - self.errExit("Error in deleting client: %s" % - sys.exc_info()[1]) + err = sys.exc_info()[1] + print("Error in deleting client: %s" % err) + raise SystemExit(1) elif args[0] in ['list', 'ls']: for client in self.metadata.list_clients(): print(client) else: - self.errExit("No command specified") + print("No command specified") + raise SystemExit(1) diff --git a/src/lib/Bcfg2/Server/Admin/Compare.py b/src/lib/Bcfg2/Server/Admin/Compare.py index e3648a6d0..c56dd0a8f 100644 --- a/src/lib/Bcfg2/Server/Admin/Compare.py +++ b/src/lib/Bcfg2/Server/Admin/Compare.py @@ -145,4 +145,5 @@ class Compare(Bcfg2.Server.Admin.Mode): (old, new) = args return self.compareSpecifications(new, old) except IndexError: - self.errExit(self.__call__.__doc__) + print(self.__call__.__doc__) + raise SystemExit(1) diff --git a/src/lib/Bcfg2/Server/Admin/Minestruct.py b/src/lib/Bcfg2/Server/Admin/Minestruct.py index 21a56de23..93e42305c 100644 --- a/src/lib/Bcfg2/Server/Admin/Minestruct.py +++ b/src/lib/Bcfg2/Server/Admin/Minestruct.py @@ -21,7 +21,8 @@ class Minestruct(Bcfg2.Server.Admin.StructureMode): try: (opts, args) = getopt.getopt(args, 'f:g:h') except: - self.errExit(self.__doc__) + self.log.error(self.__doc__) + raise SystemExit(1) client = args[0] output = sys.stdout @@ -32,7 +33,8 @@ class Minestruct(Bcfg2.Server.Admin.StructureMode): try: output = open(optarg, 'w') except IOError: - self.errExit("Failed to open file: %s" % (optarg)) + self.log.error("Failed to open file: %s" % (optarg)) + raise SystemExit(1) elif opt == '-g': groups = optarg.split(':') @@ -42,8 +44,9 @@ class Minestruct(Bcfg2.Server.Admin.StructureMode): for item in source.GetExtra(client): extra.add(item) except: - self.errExit("Failed to find extra entry info for client %s" % - client) + self.log.error("Failed to find extra entry info for client %s" % + client) + raise SystemExit(1) root = lxml.etree.Element("Base") self.log.info("Found %d extra entries" % (len(extra))) add_point = root diff --git a/src/lib/Bcfg2/Server/Admin/Pull.py b/src/lib/Bcfg2/Server/Admin/Pull.py index cc0dced82..8001425df 100644 --- a/src/lib/Bcfg2/Server/Admin/Pull.py +++ b/src/lib/Bcfg2/Server/Admin/Pull.py @@ -33,7 +33,8 @@ class Pull(Bcfg2.Server.Admin.MetadataCore): try: opts, gargs = getopt.getopt(args, 'vfIs') except: - self.errExit(self.__doc__) + print(self.__doc__) + raise SystemExit(1) for opt in opts: if opt[0] == '-v': self.log = True diff --git a/src/lib/Bcfg2/Server/Admin/Reports.py b/src/lib/Bcfg2/Server/Admin/Reports.py index 849df8025..6e313e84b 100644 --- a/src/lib/Bcfg2/Server/Admin/Reports.py +++ b/src/lib/Bcfg2/Server/Admin/Reports.py @@ -79,7 +79,8 @@ class Reports(Bcfg2.Server.Admin.Mode): def __call__(self, args): if len(args) == 0 or args[0] == '-h': - self.errExit(self.__usage__) + print(self.__usage__) + raise SystemExit(0) # FIXME - dry run @@ -100,7 +101,9 @@ class Reports(Bcfg2.Server.Admin.Mode): management.call_command("syncdb", verbosity=vrb) management.call_command("migrate", verbosity=vrb) except: - self.errExit("Update failed: %s" % sys.exc_info()[1]) + print("Update failed: %s" % + traceback.format_exc().splitlines()[-1]) + raise SystemExit(1) elif args[0] == 'purge': expired = False client = None @@ -121,20 +124,22 @@ class Reports(Bcfg2.Server.Admin.Mode): maxdate = datetime.datetime.now() - \ datetime.timedelta(days=int(args[i + 1])) except: - self.errExit("Invalid number of days: %s" % - args[i + 1]) + self.log.error("Invalid number of days: %s" % + args[i + 1]) + raise SystemExit(-1) i = i + 1 elif args[i] == '--expired': expired = True i = i + 1 if expired: if state: - self.errExit("--state is not valid with --expired") + self.log.error("--state is not valid with --expired") + raise SystemExit(-1) self.purge_expired(maxdate) else: self.purge(client, maxdate, state) else: - self.errExit("Unknown command: %s" % args[0]) + print("Unknown command: %s" % args[0]) @transaction.commit_on_success def scrub(self): @@ -150,7 +155,8 @@ class Reports(Bcfg2.Server.Admin.Mode): (start_count - cls.objects.count(), cls.__class__.__name__)) except: print("Failed to prune %s: %s" % - (cls.__class__.__name__, sys.exc_info()[1])) + (cls.__class__.__name__, + traceback.format_exc().splitlines()[-1])) def django_command_proxy(self, command): '''Call a django command''' @@ -174,7 +180,8 @@ class Reports(Bcfg2.Server.Admin.Mode): cobj = Client.objects.get(name=client) ipurge = ipurge.filter(client=cobj) except Client.DoesNotExist: - self.errExit("Client %s not in database" % client) + self.log.error("Client %s not in database" % client) + raise SystemExit(-1) self.log.debug("Filtering by client: %s" % client) if maxdate: diff --git a/src/lib/Bcfg2/Server/Admin/Syncdb.py b/src/lib/Bcfg2/Server/Admin/Syncdb.py index 53cfd1bec..4ba840b86 100644 --- a/src/lib/Bcfg2/Server/Admin/Syncdb.py +++ b/src/lib/Bcfg2/Server/Admin/Syncdb.py @@ -22,7 +22,10 @@ class Syncdb(Bcfg2.Server.Admin.Mode): call_command("syncdb", interactive=False, verbosity=0) self._database_available = True except ImproperlyConfigured: - self.errExit("Django configuration problem: %s" % - sys.exc_info()[1]) + err = sys.exc_info()[1] + self.log.error("Django configuration problem: %s" % err) + raise SystemExit(1) except: - self.errExit("Database update failed: %s" % sys.exc_info()[1]) + err = sys.exc_info()[1] + self.log.error("Database update failed: %s" % err) + raise SystemExit(1) diff --git a/src/lib/Bcfg2/Server/Admin/Xcmd.py b/src/lib/Bcfg2/Server/Admin/Xcmd.py index e3173e20a..be556bed4 100644 --- a/src/lib/Bcfg2/Server/Admin/Xcmd.py +++ b/src/lib/Bcfg2/Server/Admin/Xcmd.py @@ -31,15 +31,27 @@ class Xcmd(Bcfg2.Server.Admin.Mode): ca=setup['ca'], timeout=setup['timeout']) if len(setup['args']) == 0: - self.errExit("Usage: xcmd ") + print("Usage: xcmd ") + return cmd = setup['args'][0] args = () if len(setup['args']) > 1: args = tuple(setup['args'][1:]) try: data = getattr(proxy, cmd)(*args) + except xmlrpclib.Fault: + flt = sys.exc_info()[1] + if flt.faultCode == 7: + print("Unknown method %s" % cmd) + return + elif flt.faultCode == 20: + return + else: + raise except Bcfg2.Proxy.ProxyError: - self.errExit("Proxy Error: %s" % sys.exc_info()[1]) + err = sys.exc_info()[1] + print("Proxy Error: %s" % err) + return if data is not None: print(data) -- cgit v1.2.3-1-g7c22