summaryrefslogtreecommitdiffstats
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
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.
-rw-r--r--misc/bcfg2.spec7
-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
-rwxr-xr-xsrc/sbin/bcfg2-admin4
9 files changed, 60 insertions, 28 deletions
diff --git a/misc/bcfg2.spec b/misc/bcfg2.spec
index 10d913d7c..f7289f1dd 100644
--- a/misc/bcfg2.spec
+++ b/misc/bcfg2.spec
@@ -99,6 +99,8 @@ Requires: bcfg2 = %{version}
Requires: python-ssl
%endif
Requires: python-lxml >= 1.2.1
+%if "%{_vendor}" == "redhat"
+%endif
%if 0%{?suse_version}
Requires: python-pyinotify
Requires: python-python-daemon
@@ -149,7 +151,7 @@ Group: System Tools
Requires: bcfg2 = %{version}
Requires: bcfg2-server = %{version}
-# cherrypy 3.3 actually doesn't exist yet, but 3.2 has bugs that
+# cherrypy 3.2.3 actually doesn't exist yet, but 3.2.2 has bugs that
# prevent it from working:
# https://bitbucket.org/cherrypy/cherrypy/issue/1154/assertionerror-in-recv-when-ssl-is-enabled
Requires: python-cherrypy > 3.3
@@ -295,8 +297,6 @@ This package includes the Bcfg2 reports web frontend.
%{?pythonpath: export PYTHONPATH="%{pythonpath}"}
%{__python}%{pythonversion} setup.py build_sphinx
-sed -i "s/apache2/httpd/g" misc/apache/bcfg2.conf
-
%install
rm -rf %{buildroot}
%{__python}%{pythonversion} setup.py install --root=%{buildroot} --record=INSTALLED_FILES --prefix=/usr
@@ -333,6 +333,7 @@ cp -r tools/* %{buildroot}%{_defaultdocdir}/bcfg2-server-%{version}
cp -r build/sphinx/html/* %{buildroot}%{_defaultdocdir}/bcfg2-doc-%{version}
%{__install} -d %{buildroot}%{apache_conf}/conf.d
+sed -i "s/apache2/httpd/g" misc/apache/bcfg2.conf
%{__install} -m 644 misc/apache/bcfg2.conf %{buildroot}%{apache_conf}/conf.d/wsgi_bcfg2.conf
%{__mkdir_p} %{buildroot}%{_localstatedir}/cache/%{name}
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)
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)