From mboxrd@z Thu Jan 1 00:00:00 1970 From: rmccabe@sourceware.org Date: 20 Oct 2006 20:00:30 -0000 Subject: [Cluster-devel] conga/luci/site/luci/Extensions LuciSyslog.py ... Message-ID: <20061020200030.16404.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: conga Changes by: rmccabe at sourceware.org 2006-10-20 20:00:30 Modified files: luci/site/luci/Extensions: LuciSyslog.py conga_constants.py ricci_communicator.py Log message: more debugging output Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciSyslog.py.diff?cvsroot=cluster&r1=1.4&r2=1.5 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/conga_constants.py.diff?cvsroot=cluster&r1=1.20&r2=1.21 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ricci_communicator.py.diff?cvsroot=cluster&r1=1.12&r2=1.13 --- conga/luci/site/luci/Extensions/LuciSyslog.py 2006/10/20 18:41:58 1.4 +++ conga/luci/site/luci/Extensions/LuciSyslog.py 2006/10/20 20:00:29 1.5 @@ -44,6 +44,14 @@ except: raise LuciSyslogError, 'syslog private call failed' + def debug_verbose(self, msg): + if not LUCI_DEBUG_MODE or LUCI_DEBUG_VERBOSITY < 2 or not self.__init: + return + try: + syslog(LOG_DEBUG, msg) + except: + raise LuciSyslogError, 'syslog debug calle failed' + def debug(self, msg): if not LUCI_DEBUG_MODE or not self.__init: return --- conga/luci/site/luci/Extensions/conga_constants.py 2006/10/20 18:41:58 1.20 +++ conga/luci/site/luci/Extensions/conga_constants.py 2006/10/20 20:00:29 1.21 @@ -115,3 +115,4 @@ PLONE_ROOT='luci' LUCI_DEBUG_MODE = 1 +LUCI_DEBUG_VERBOSITY = 2 --- conga/luci/site/luci/Extensions/ricci_communicator.py 2006/10/20 18:41:58 1.12 +++ conga/luci/site/luci/Extensions/ricci_communicator.py 2006/10/20 20:00:29 1.13 @@ -32,6 +32,8 @@ except Exception, e: raise RicciError, 'Error connecting to %s:%d: %s' \ % (self.__hostname, self.__port, str(e)) + luci_log.debug_verbose('Connected to %s:%d' \ + % (self.__hostname, self.__port)) try: self.ss = ssl(sock, self.__privkey_file, self.__cert_file) # TODO: data transfer timeout should be much less, @@ -43,6 +45,12 @@ # receive ricci header hello = self.__receive() + try: + luci_log.debug_verbose('Received header from %s: \"%s\"' \ + % (self.__hostname, hello.toxml())) + except: + pass + self.__authed = hello.firstChild.getAttribute('authenticated') == 'true' self.__cluname = hello.firstChild.getAttribute('clustername') self.__clualias = hello.firstChild.getAttribute('clusteralias') @@ -54,21 +62,35 @@ def hostname(self): + luci_log.debug_verbose('[auth %d] reported hostname = %s' \ + % (self.__authed, self.__hostname)) return self.__hostname def authed(self): + luci_log.debug_verbose('reported authed = %d for %s' \ + % (self.__authed, self.__hostname)) return self.__authed def system_name(self): + luci_log.debug_verbose('[auth %d] reported system_name = %s for %s' \ + % (self.__authed, self.__reported_hostname, self.__hostname)) return self.__reported_hostname def cluster_info(self): + luci_log.debug_verbose('[auth %d] reported cluster_info = (%s,%s) for %s' \ + % (self.__authed, self.__cluname, self.__clualias, self.__hostname)) return (self.__cluname, self.__clualias) def os(self): + luci_log.debug_verbose('[auth %d] reported system_name = %s for %s' \ + % (self.__authed, self.__os, self.__hostname)) return self.__os def dom0(self): + luci_log.debug_verbose('[auth %d] reported system_name = %s for %s' \ + % (self.__authed, self.__dom0, self.__hostname)) return self.__dom0 def auth(self, password): if self.authed(): + luci_log.debug_verbose('already authenticated to %s' \ + % self.__hostname) return True # send request @@ -83,8 +105,9 @@ # receive response resp = self.__receive() self.__authed = resp.firstChild.getAttribute('authenticated') == 'true' - - return self.authed() + + luci_log.debug_verbose('auth call returning %d' % self.__authed) + return self.__authed def unauth(self): @@ -96,8 +119,13 @@ self.__send(doc) resp = self.__receive() + luci_log.debug_verbose('trying to unauthenticate to %s' \ + % self.__hostname) + try: ret = resp.firstChild.getAttribute('success') + luci_log.debug_verbose('unauthenticate returned %s for %s' \ + % (ret, self.__hostname)) if ret != '0': raise Exception, 'Invalid response' except: @@ -109,6 +137,12 @@ def process_batch(self, batch_xml, async=False): + try: + luci_log.debug_verbose('auth=%d to %s for batch %s [async=%d]' \ + % (self.__authed, self.__hostname, batch_xml.toxml(), async)) + except: + pass + if not self.authed(): raise RicciError, 'not authenticated to host %s', self.__hostname @@ -137,7 +171,14 @@ # receive response doc = self.__receive() + try: + luci_log.debug_verbose('received from %s XML \"%s\"' \ + % (self.__hostname, doc.toxml())) + except: + pass + if doc.firstChild.getAttribute('success') != '0': + luci_log.debug_verbose('batch command failed') raise RicciError, 'The last ricci command to host %s failed' \ % self.__hostname @@ -147,6 +188,7 @@ if node.nodeName == 'batch': batch_node = node.cloneNode(True) if batch_node == None: + luci_log.debug_verbose('batch node missing ') raise RicciError, 'missing in ricci\'s response from %s' \ % self.__hostname @@ -155,6 +197,8 @@ def batch_run(self, batch_str, async=True): try: batch_xml_str = '' + batch_str + '' + luci_log.debug_verbose('attempting batch \"%s\" for host %s' \ + % (batch_xml_str, self.__hostname)) batch_xml = minidom.parseString(batch_xml_str).firstChild except Exception, e: luci_log.debug('received invalid batch XML for %s: \"%s\"' \ @@ -163,6 +207,11 @@ try: ricci_xml = self.process_batch(batch_xml, async) + try: + luci_log.debug_verbose('received XML \"%s\" from host %s in response to batch command.' \ + % (ricci_xml.toxml(), self.__hostname)) + except: + pass except: luci_log.debug('An error occurred while trying to process the batch job: %s' % batch_xml_str) return None @@ -170,6 +219,9 @@ return ricci_xml def batch_report(self, batch_id): + luci_log.debug_verbose('[auth=%d] asking for batchid# %d for host %s' \ + % (self.__authed, batch_id, self.__hostname)) + if not self.authed(): raise RicciError, 'Not authenticated to host %s' % self.__hostname @@ -215,6 +267,8 @@ raise RicciError, 'write error while sending XML to host %s' \ % self.__hostname buff = buff[pos:] + luci_log.debug_verbose('Sent XML \"%s\" to host %s' \ + % (buff, self.__hostname)) return def __receive(self): @@ -237,6 +291,8 @@ % (self.__hostname, str(e))) raise RicciError, 'Error reading data from host %s' \ % self.__hostname + luci_log.debug_verbose('Received XML \"%s\" from host %s' \ + % (xml_in, self.__hostname)) try: if doc == None: @@ -321,7 +377,12 @@ # module (-num) failed (next module won't be processed) def batch_status(batch_xml): if batch_xml.nodeName != 'batch': - raise 'not a batch' + try: + luci_log.debug('Expecting an XML batch node. Got \"%s\"' \ + % batch_xml.toxml()) + except: + pass + raise RicciError, 'Not an XML batch node' total = 0 last = 0 for node in batch_xml.childNodes: @@ -336,6 +397,12 @@ # failure last = last + 1 last = last - 2 * last + try: + luci_log.debug_verbose('Returning (%s, %s) for batch_status(\"%s\")' \ + % (last, total, batch_xml.toxml())) + except: + pass + return (last, total)