[Cluster-devel] conga/luci/site/luci/Extensions conga_constant ...
rmccabe at sourceware.org
rmccabe at sourceware.org
Fri Jun 8 18:26:16 UTC 2007
CVSROOT: /cvs/cluster
Module name: conga
Branch: EXPERIMENTAL
Changes by: rmccabe at sourceware.org 2007-06-08 18:26:15
Modified files:
luci/site/luci/Extensions: conga_constants.py
ricci_communicator.py LuciSyslog.py
Log message:
Groundwork and part of the fix for 227852
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/conga_constants.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.39.2.8&r2=1.39.2.9
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ricci_communicator.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.25.2.6&r2=1.25.2.7
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciSyslog.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.11.4.3&r2=1.11.4.4
--- conga/luci/site/luci/Extensions/conga_constants.py 2007/06/07 06:41:05 1.39.2.8
+++ conga/luci/site/luci/Extensions/conga_constants.py 2007/06/08 18:26:14 1.39.2.9
@@ -147,4 +147,5 @@
# to >= 2 to get full debugging output in syslog (LOG_DAEMON/LOG_DEBUG).
LUCI_DEBUG_MODE = False
+LUCI_DEBUG_NET = False
LUCI_DEBUG_VERBOSITY = 0
--- conga/luci/site/luci/Extensions/ricci_communicator.py 2007/06/01 23:18:16 1.25.2.6
+++ conga/luci/site/luci/Extensions/ricci_communicator.py 2007/06/08 18:26:15 1.25.2.7
@@ -10,7 +10,7 @@
from xml.dom import minidom
from LuciSyslog import get_logger
from conga_ssl import SSLSocket
-from conga_constants import LUCI_DEBUG_MODE
+from conga_constants import LUCI_DEBUG_MODE, LUCI_DEBUG_NET
CERTS_DIR_PATH = '/var/lib/luci/var/certs/'
luci_log = get_logger()
@@ -37,22 +37,23 @@
self.__timeout_init)
if enforce_trust:
if not self.ss.trusted():
+ luci_log.info('The SSL certificate for host "%s" is not trusted. Aborting connection attempt.' % self.__hostname)
raise RicciError, 'ricci\'s certificate is not trusted'
except Exception, e:
- raise RicciError, 'Error setting up SSL for connection to %s: %s' \
- % (self.__hostname, str(e))
- except:
- raise RicciError, 'Error setting up SSL for connection to %s' \
- % self.__hostname
+ errmsg = 'Unable to establish an SSL connection to %s:%d: %s' \
+ % ((self.__hostname, self.__port, str(e)))
+ luci_log.info(errmsg)
+ raise RicciError, errmsg
# receive ricci header
hello = self.__receive(self.__timeout_init)
try:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:init0: recv header from %s: \"%s\"' \
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net('RC:init0: recv header from %s: \"%s\"' \
% (self.__hostname, hello.toxml()))
except:
- pass
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('RC:init0: error receiving header from %s: %r %s' % (self.__hostname, e, str(e)))
self.__authed = hello.firstChild.getAttribute('authenticated') == 'true'
self.__cluname = hello.firstChild.getAttribute('clustername')
@@ -62,43 +63,47 @@
self.__dom0 = hello.firstChild.getAttribute('xen_host') == 'true'
def hostname(self):
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:hostname: [auth %d] hostname = %s' \
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net('RC:hostname: [auth %d] hostname = %s' \
% (self.__authed, self.__hostname))
return self.__hostname
def authed(self):
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:authed: reported authed = %d for %s' \
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net('RC:authed: reported authed = %d for %s' \
% (self.__authed, self.__hostname))
return self.__authed
def system_name(self):
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:system_name: [auth %d] system_name = %s for %s' % (self.__authed, self.__reported_hostname, self.__hostname))
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net('RC:SN: [auth %d] system_name = %s for %s' \
+ % (self.__authed, self.__reported_hostname, self.__hostname))
return self.__reported_hostname
def cluster_info(self):
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:cluster_info: [auth %d] reported cluster_info = (%s,%s) for %s' % (self.__authed, self.__cluname, self.__clualias, self.__hostname))
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net('RC:CI: [auth %d] (%s,%s) for %s' \
+ % ( self.__authed, self.__cluname,
+ self.__clualias, self.__hostname))
+
return (self.__cluname, self.__clualias)
def os(self):
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:os: [auth %d] reported os = %s for %s' \
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net('RC:OS: [auth %d] reported os = %s for %s' \
% (self.__authed, self.__os, self.__hostname))
return self.__os
def dom0(self):
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:dom0: [auth %d] dom0 = %s for %s' \
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net('RC:DOM0: [auth %d] dom0 = %s for %s' \
% (self.__authed, self.__dom0, self.__hostname))
return self.__dom0
def fingerprint(self):
fp = self.ss.peer_fingerprint()
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:fp: [auth %d] fp for %s = %s' \
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net('RC:fp: [auth %d] fp for %s = %s' \
% (self.__authed, self.__hostname, fp))
return fp
@@ -114,7 +119,7 @@
def auth(self, password):
if self.authed():
if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:auth0: already authenticated to %s' \
+ luci_log.debug_verbose('RC:AUTH0: already authenticated to %s' \
% self.__hostname)
return True
@@ -138,11 +143,13 @@
self.__reported_hostname = resp.firstChild.getAttribute('hostname')
self.__os = resp.firstChild.getAttribute('os')
self.__dom0 = resp.firstChild.getAttribute('xen_host') == 'true'
- except:
- pass
+ except Exception, e:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('RC:AUTH1: %r %s for %s' \
+ % (e, str(e), self.__hostname))
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:auth1: auth call returning %d' \
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net('RC:auth1: auth call returning %d' \
% self.__authed)
return self.__authed
@@ -155,14 +162,10 @@
self.__send(doc, self.__timeout_auth)
resp = self.__receive(self.__timeout_auth)
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:unauth0: unauthenticate %s' \
- % self.__hostname)
-
try:
ret = resp.firstChild.getAttribute('success')
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:unauth1: unauthenticate %s for %s' \
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net('RC:UNAUTH0: unauthenticate %s for %s' \
% (ret, self.__hostname))
if ret != '0':
raise Exception, 'Invalid response'
@@ -172,36 +175,36 @@
except:
pass
except:
- errstr = 'Error authenticating to host %s: %s' \
+ errstr = 'Error authenticating host %s: %s' \
% (self.__hostname, str(ret))
-
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:unauth2: %s' % errstr)
+ luci_log.info(errstr)
raise RicciError, errstr
return True
-
def process_batch(self, batch_xml, async=False):
- if LUCI_DEBUG_MODE is True:
- try:
- luci_log.debug_verbose('RC:PB0: [auth=%d] to %s for batch %s [async=%d]' % (self.__authed, self.__hostname, batch_xml.toxml(), async))
- except:
- pass
+ try:
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net_priv('RC:PB0: [auth=%d] to %s for batch %s [async=%d]' % (self.__authed, self.__hostname, batch_xml.toxml(), async))
+ except:
+ pass
if not self.authed():
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('RC:PB1: not authenticated to %s' \
+ % self.__hostname)
raise RicciError, 'not authenticated to host %s' % self.__hostname
# construct request
doc = minidom.Document()
- ricci = doc.createElement("ricci")
- ricci.setAttribute("version", "1.0")
- ricci.setAttribute("function", "process_batch")
+ ricci = doc.createElement('ricci')
+ ricci.setAttribute('version', '1.0')
+ ricci.setAttribute('function', 'process_batch')
async_str = None
if async:
async_str = 'true'
else:
async_str = 'false'
- ricci.setAttribute("async", async_str)
+ ricci.setAttribute('async', async_str)
doc.appendChild(ricci)
ricci.appendChild(batch_xml)#.cloneNode(True))
@@ -209,25 +212,25 @@
try:
self.__send(doc, self.__timeout_short)
except Exception, e:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:PB1: Error sending XML \"%s\" to host %s' % (doc.toxml(), self.__hostname))
- raise RicciError, 'Error sending XML to host %s: %s' \
- % (self.__hostname, str(e))
- except:
- raise RicciError, 'Error sending XML to host %s' % self.__hostname
+ errstr = 'Error sending XML batch command to %s:%d: %s' \
+ % (self.__hostname, self.__port, str(e))
+ luci_log.info(errstr)
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net_priv('RC:PB2: Error sending XML \"%s\" to host %s' % (doc.toxml(), self.__hostname))
+ raise RicciError, errstr
# receive response
doc = self.__receive(self.__timeout_long)
- if LUCI_DEBUG_MODE is True:
+ if LUCI_DEBUG_NET is True:
try:
- luci_log.debug_verbose('RC:PB2: received from %s XML \"%s\"' \
+ luci_log.debug_net_priv('RC:PB3: received from %s XML \"%s\"' \
% (self.__hostname, doc.toxml()))
except:
pass
if doc.firstChild.getAttribute('success') != '0':
if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:PB3: batch command failed')
+ luci_log.debug_verbose('RC:PB4: batch command failed')
raise RicciError, 'The last ricci command to host %s failed' \
% self.__hostname
@@ -238,7 +241,8 @@
batch_node = node#.cloneNode(True)
if batch_node is None:
if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:PB4: batch node missing <batch/>')
+ luci_log.debug_verbose('RC:PB5: no <batch/> from %s' \
+ % self.__hostname)
raise RicciError, 'missing <batch/> in ricci response from "%s"' \
% self.__hostname
@@ -248,24 +252,24 @@
try:
batch_xml_str = '<?xml version="1.0" ?><batch>%s</batch>' \
% batch_str
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:BRun0: attempting batch "%s" for host "%s"' % (batch_xml_str, self.__hostname))
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net_priv('RC:BRun0: attempting batch "%s" for host "%s"' % (batch_xml_str, self.__hostname))
batch_xml = minidom.parseString(batch_xml_str).firstChild
except Exception, e:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:BRun1: received invalid batch XML for %s: "%s": "%s"' % (self.__hostname, batch_xml_str, str(e)))
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net_priv('RC:BRun1: received invalid batch XML for %s: "%s": "%s"' % (self.__hostname, batch_xml_str, str(e)))
raise RicciError, 'batch XML is malformed'
try:
ricci_xml = self.process_batch(batch_xml, async)
- if LUCI_DEBUG_MODE is True:
+ if LUCI_DEBUG_NET is True:
try:
- luci_log.debug_verbose('RC:BRun2: received XML "%s" from host %s in response to batch command.' % (ricci_xml.toxml(), self.__hostname))
+ luci_log.debug_net_priv('RC:BRun2: received XML "%s" from host %s in response to batch command.' % (ricci_xml.toxml(), self.__hostname))
except:
pass
except:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:BRun3: An error occurred while trying to process the batch job: "%s"' % batch_xml_str)
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net_priv('RC:BRun3: An error occurred while trying to process the batch job: "%s"' % batch_xml_str)
return None
doc = minidom.Document()
@@ -273,8 +277,8 @@
return doc
def batch_report(self, batch_id):
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:BRep0: [auth=%d] asking for batchid# %s for host %s' % (self.__authed, batch_id, self.__hostname))
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net('RC:BRep0: [auth=%d] asking for batchid# %s for host %s' % (self.__authed, batch_id, self.__hostname))
if not self.authed():
raise RicciError, 'Not authenticated to host %s' % self.__hostname
@@ -290,7 +294,6 @@
# send request
self.__send(doc, self.__timeout_short)
-
# receive response
doc = self.__receive(self.__timeout_short)
if doc.firstChild.getAttribute('success') == '12':
@@ -308,62 +311,63 @@
def __send(self, xml_doc, timeout):
- buff = '%s\n' % xml_doc.toxml()
try:
- self.ss.send(buff, timeout)
+ self.ss.send(xml_doc.toxml(), timeout)
+ self.ss.send('\n', timeout)
except Exception, e:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:send0: Error sending XML "%s" to %s: %s' % (buff, self.__hostname, str(e)))
- raise RicciError, 'write error while sending XML to host %s' \
- % self.__hostname
- except:
- raise RicciError, 'write error while sending XML to host %s' \
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net_priv('RC:send0: sending XML "%s" to %s: %s' \
+ % (xml_doc.toxml(), self.__hostname, str(e)))
+ luci_log.info('Error sending batch command to %s:%d: %s' \
+ % (self.__hostname, self.__port, str(e)))
+ raise RicciError, 'Write error while sending XML to host %s' \
% self.__hostname
- if LUCI_DEBUG_MODE is True:
+
+ if LUCI_DEBUG_NET is True:
try:
- luci_log.debug_verbose('RC:send1: Sent XML "%s" to host %s' \
+ luci_log.debug_net_priv('RC:send1: Sent XML "%s" to host %s' \
% (xml_doc.toxml(), self.__hostname))
except:
pass
return
def __receive(self, timeout):
- doc = None
xml_in = ''
try:
xml_in = self.ss.recv(timeout)
except Exception, e:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:recv0: Error reading from %s: %s' \
- % (self.__hostname, str(e)))
- raise RicciError, 'Error reading data from host %s' \
- % self.__hostname
- except:
- raise RicciError, 'Error reading data from host %s' \
- % self.__hostname
+ errstr = 'Error reading from %s:%d: %s' \
+ % (self.__hostname, self.__port, str(e))
+ luci_log.info(errstr)
+ raise RicciError, errstr
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:recv1: Received XML "%s" from host %s' \
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net_priv('RC:recv1: Received XML "%s" from host %s' \
% (xml_in, self.__hostname))
+ doc = None
try:
- if doc is None:
- doc = minidom.parseString(xml_in)
+ doc = minidom.parseString(xml_in)
except Exception, e:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:recv2: parsing XML "%s" from %s' \
+ errstr = 'Error parsing XML from host %s:%d: %s' \
+ % (self.__hostname, self.__port, str(e))
+ luci_log.info(errstr)
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net_priv('RC:recv2: parsing XML "%s" from %s' \
% (xml_in, str(e)))
- raise RicciError, 'Error parsing XML from host %s: %s' \
- % (self.__hostname, str(e))
+ raise RicciError, errstr
if not doc or not doc.firstChild:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('RC:recv3: empty XML response from %s' \
+ % self.__hostname)
raise RicciError, 'Error an empty response was received from host %s' % self.__hostname
try:
if doc.firstChild.nodeName != 'ricci':
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:recv3: Expecting "ricci" got XML "%s" from %s' % (xml_in, self.__hostname))
- raise Exception, 'Expecting first XML child node to be "ricci"'
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net_priv('RC:recv4: Expecting "<ricci>" tag, got XML "%s" from %s' % (xml_in, self.__hostname))
+ raise Exception, 'Expected first XML child node to be "<ricci>"'
except Exception, e:
raise RicciError, 'Invalid XML ricci response from host %s' \
% self.__hostname
@@ -374,10 +378,12 @@
return None
try:
- return RicciCommunicator(hostname)
+ rc = RicciCommunicator(hostname)
+ if not rc:
+ raise Exception, 'initialization failed'
except Exception, e:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:GRC0: Error creating a ricci connection to %s: %s' % (hostname, str(e)))
+ luci_log.info('Error creating a ricci connection to %s: %r %s' \
+ % (hostname, e, str(e)))
return None
def ricci_get_called_hostname(self, ricci):
@@ -413,9 +419,10 @@
def batch_status(batch_xml):
if batch_xml.nodeName != 'batch':
- if LUCI_DEBUG_MODE is True:
+ if LUCI_DEBUG_NET is True:
try:
- luci_log.debug_verbose('RC:BS0: Expecting an XML batch node. Got \"%s\"' % batch_xml.toxml())
+ luci_log.debug_net_priv('RC:BS0: batch node. Got \"%s\"' \
+ % batch_xml.toxml())
except:
pass
raise RicciError, 'Not an XML batch node'
@@ -435,11 +442,12 @@
last = last + 1
last = last - 2 * last
try:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:BS1: Returning (%d, %d) for batch_status("%s")' % (last, total, batch_xml.toxml()))
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net_priv('RC:BS1: (%d, %d) for batch_status("%s")' \
+ % (last, total, batch_xml.toxml()))
except Exception, e:
if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:BS2: error %r %s: (last, total)' \
+ luci_log.debug_verbose('RC:BS2: error %r %s: (%d, %d)' \
% (e, str(e), last, total))
return (last, total)
@@ -464,8 +472,8 @@
def extract_module_status(batch_xml, module_num=1):
if batch_xml.nodeName != 'batch':
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('RC:EMS0: Expecting "batch" got "%s"' \
+ if LUCI_DEBUG_NET is True:
+ luci_log.debug_net_priv('RC:EMS0: Expecting "batch" got "%s"' \
% batch_xml.toxml())
raise RicciError, 'Invalid XML node; expecting a batch node'
--- conga/luci/site/luci/Extensions/LuciSyslog.py 2007/05/18 02:36:59 1.11.4.3
+++ conga/luci/site/luci/Extensions/LuciSyslog.py 2007/06/08 18:26:15 1.11.4.4
@@ -32,37 +32,9 @@
def initialized(self):
return self.__init > 0
- def info(self, msg):
- if not self.__init:
- return
- try:
- syslog(LOG_INFO, msg)
- except:
- #raise LuciSyslogError, 'syslog info call failed'
- pass
-
- def warn(self, msg):
- if not self.__init:
- return
- try:
- syslog(LOG_WARNING, msg)
- except:
- #raise LuciSyslogError, 'syslog warn call failed'
- pass
-
- def private(self, msg):
+ def log_msg(self, pri, msg):
if not self.__init:
return
- try:
- syslog(LOG_AUTH, msg)
- except:
- #raise LuciSyslogError, 'syslog private call failed'
- pass
-
- def debug_verbose(self, msg):
- if not LUCI_DEBUG_MODE or LUCI_DEBUG_VERBOSITY < 2 or not self.__init:
- return
-
msg_len = len(msg)
if msg_len < 1:
return
@@ -70,8 +42,9 @@
while True:
cur_len = min(msg_len, 800)
cur_msg = msg[:cur_len]
+
try:
- syslog(LOG_DEBUG, cur_msg)
+ syslog(pri, cur_msg)
except:
pass
@@ -81,14 +54,34 @@
else:
break
+ def info(self, msg):
+ self.log_msg(LOG_INFO, msg)
+
+ def warn(self, msg):
+ self.log_msg(LOG_WARNING, msg)
+
+ def private(self, msg):
+ self.log_msg(LOG_AUTH, msg)
+
+ def debug_verbose(self, msg):
+ if LUCI_DEBUG_MODE is not True or LUCI_DEBUG_VERBOSITY < 2:
+ return
+ self.log_msg(LOG_DEBUG, msg)
+
+ def debug_net(self, msg):
+ if LUCI_DEBUG_MODE is not True or LUCI_DEBUG_VERBOSITY < 3:
+ return
+ self.log_msg(LOG_DEBUG, msg)
+
+ def debug_net_priv(self, msg):
+ if LUCI_DEBUG_MODE is not True or LUCI_DEBUG_VERBOSITY < 3:
+ return
+ self.log_msg(LOG_AUTH, msg)
+
def debug(self, msg):
- if not LUCI_DEBUG_MODE or not self.__init:
+ if LUCI_DEBUG_MODE is not True:
return
- try:
- syslog(LOG_DEBUG, msg)
- except:
- #raise LuciSyslogError, 'syslog debug call failed'
- pass
+ self.log_msg(LOG_DEBUG, msg)
def close(self):
try:
More information about the Cluster-devel
mailing list