summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2013-06-03 10:56:26 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2013-06-03 10:56:26 -0400
commit06dae2a73ae03ea72feed4e7d6e56d25cfa24195 (patch)
tree7e9464187639d8d32ba13958d22f7cc853e76e4b /src/lib
parentdae8f399151052fd2a0ce43ac61a56f399a28252 (diff)
downloadbcfg2-06dae2a73ae03ea72feed4e7d6e56d25cfa24195.tar.gz
bcfg2-06dae2a73ae03ea72feed4e7d6e56d25cfa24195.tar.bz2
bcfg2-06dae2a73ae03ea72feed4e7d6e56d25cfa24195.zip
Revert "bcfg2-admin: set appropriate return values on error"
This reverts commit dae8f399151052fd2a0ce43ac61a56f399a28252. Splitting this into two commits.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Bcfg2/Server/Admin/Client.py12
-rw-r--r--src/lib/Bcfg2/Server/Admin/Compare.py3
-rw-r--r--src/lib/Bcfg2/Server/Admin/Minestruct.py11
-rw-r--r--src/lib/Bcfg2/Server/Admin/Pull.py3
-rw-r--r--src/lib/Bcfg2/Server/Admin/Reports.py23
-rw-r--r--src/lib/Bcfg2/Server/Admin/Syncdb.py9
-rw-r--r--src/lib/Bcfg2/Server/Admin/Xcmd.py16
7 files changed, 54 insertions, 23 deletions
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 <xmlrpc method> <optional arguments>")
+ print("Usage: xcmd <xmlrpc method> <optional arguments>")
+ 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)