From 9e19b48f3213af71b63432800cc66fedeb4c000d Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Mon, 27 Feb 2006 20:07:09 +0000 Subject: Improve error handling for server problems git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@1773 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Client/Proxy.py | 2 +- src/sbin/bcfg2 | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/lib/Client/Proxy.py b/src/lib/Client/Proxy.py index a58f8bd53..b019e5656 100644 --- a/src/lib/Client/Proxy.py +++ b/src/lib/Client/Proxy.py @@ -52,7 +52,7 @@ class SafeProxy: time.sleep(0.5) except: break - self.log.error("%s failed:\nCould not connect to %s" % (method_name, self.component)) + raise xmlrpclib.Fault(20, 'Server Failure') def __get_location(self, name): '''Perform component location lookups if needed''' diff --git a/src/sbin/bcfg2 b/src/sbin/bcfg2 index 5265601ab..3c97e8bab 100755 --- a/src/sbin/bcfg2 +++ b/src/sbin/bcfg2 @@ -6,7 +6,7 @@ __revision__ = '$Revision$' from ConfigParser import ConfigParser, NoSectionError, NoOptionError from lxml.etree import Element, XML, tostring, XMLSyntaxError -import getopt, logging, os, signal, sys, tempfile, time, traceback +import getopt, logging, os, signal, sys, tempfile, time, traceback, xmlrpclib import Bcfg2.Client.Proxy, Bcfg2.Logging def cb_sigint_handler(signum, frame): @@ -285,8 +285,12 @@ class Client: if self.setup['profile']: proxy.AssertProfile(self.setup['profile']) - - probe_data = proxy.GetProbes() + + try: + probe_data = proxy.GetProbes() + except xmlrpclib.Fault: + self.logger.error("Failed to download probes from bcfg2") + raise SystemExit, 1 times['probe_download'] = time.time() @@ -309,7 +313,11 @@ class Client: times['probe_upload'] = time.time() - rawconfig = proxy.GetConfig() + try: + rawconfig = proxy.GetConfig() + except xmlrpclib.Fault: + self.logger.error("Failed to download configuration from bcfg2") + raise SystemExit, 2 times['config_download'] = time.time() @@ -378,7 +386,11 @@ class Client: stats.append(timeinfo) feedback.append(stats) - proxy.RecvStats(tostring(feedback)) + try: + proxy.RecvStats(tostring(feedback)) + except xmlrpclib.Fault: + self.logger.error("Failed to upload configuration statistics") + raise SystemExit, 2 if __name__ == '__main__': signal.signal(signal.SIGINT, cb_sigint_handler) -- cgit v1.2.3-1-g7c22