From 45f7e202f6b7860214d709d0d470f2c8938c2993 Mon Sep 17 00:00:00 2001 From: Sol Jerome Date: Tue, 21 Jun 2011 11:27:19 -0500 Subject: bcfg2: Catch tracebacks (Tickets #1016 and #1017) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This also moves the exception handling added in #1012 to the bcfg2 code for consistency (as per Holger Weiß's suggestion). Signed-off-by: Sol Jerome --- src/lib/Proxy.py | 11 ++++------- src/sbin/bcfg2 | 8 ++++++++ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/lib/Proxy.py b/src/lib/Proxy.py index e4a0f6a3d..4cb0bbe80 100644 --- a/src/lib/Proxy.py +++ b/src/lib/Proxy.py @@ -47,6 +47,9 @@ __all__ = ["ComponentProxy", class CertificateError(Exception): def __init__(self, commonName): self.commonName = commonName + def __str__(self): + return ("Got unallowed commonName %s from server" + % self.commonName) class RetryMethod(xmlrpclib._Method): @@ -193,13 +196,7 @@ class SSLHTTPConnection(httplib.HTTPConnection): ca_certs=self.ca, suppress_ragged_eofs=True, keyfile=self.key, certfile=self.cert, ssl_version=ssl_protocol_ver) - try: - self.sock.connect((self.host, self.port)) - except socket.gaierror: - e = sys.exc_info()[1] - self.logger.error("Unable to connect to %s:%s\n%s" % - (self.host, self.port, e.strerror)) - sys.exit(1) + self.sock.connect((self.host, self.port)) peer_cert = self.sock.getpeercert() if peer_cert and self.scns: scn = [x[0][1] for x in peer_cert['subject'] if x[0][0] == 'commonName'][0] diff --git a/src/sbin/bcfg2 b/src/sbin/bcfg2 index 534ab8238..5ddfd8791 100755 --- a/src/sbin/bcfg2 +++ b/src/sbin/bcfg2 @@ -7,6 +7,7 @@ import fcntl import logging import os import signal +import socket import stat import sys import tempfile @@ -199,6 +200,13 @@ class Client: self.logger.error("Failed to download probes from bcfg2") self.logger.error(flt.faultString) raise SystemExit(1) + except (Bcfg2.Proxy.CertificateError, + socket.gaierror, + socket.error): + e = sys.exc_info()[1] + self.logger.error("Failed to download probes from bcfg2: %s" + % e) + raise SystemExit(1) times['probe_download'] = time.time() -- cgit v1.2.3-1-g7c22