summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2006-02-27 20:07:09 +0000
committerNarayan Desai <desai@mcs.anl.gov>2006-02-27 20:07:09 +0000
commit9e19b48f3213af71b63432800cc66fedeb4c000d (patch)
tree816737e9e38cedf45eb324e36407b10856339f7d /src
parentfc9881381c8bb4d6e729532de2fe030b3ff418b3 (diff)
downloadbcfg2-9e19b48f3213af71b63432800cc66fedeb4c000d.tar.gz
bcfg2-9e19b48f3213af71b63432800cc66fedeb4c000d.tar.bz2
bcfg2-9e19b48f3213af71b63432800cc66fedeb4c000d.zip
Improve error handling for server problems
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@1773 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src')
-rw-r--r--src/lib/Client/Proxy.py2
-rwxr-xr-xsrc/sbin/bcfg222
2 files changed, 18 insertions, 6 deletions
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)