From mboxrd@z Thu Jan 1 00:00:00 1970 From: rmccabe@sourceware.org Date: 31 Oct 2006 17:18:14 -0000 Subject: [Cluster-devel] conga/luci/site/luci/Extensions cluster_adapte ... Message-ID: <20061031171814.6436.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-31 17:18:14 Modified files: luci/site/luci/Extensions: cluster_adapters.py ricci_communicator.py Log message: fix node flags brokenness Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.134&r2=1.135 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ricci_communicator.py.diff?cvsroot=cluster&r1=1.15&r2=1.16 --- conga/luci/site/luci/Extensions/cluster_adapters.py 2006/10/31 00:16:14 1.134 +++ conga/luci/site/luci/Extensions/cluster_adapters.py 2006/10/31 17:18:12 1.135 @@ -2898,31 +2898,35 @@ try: cluname = req.form['clusterName'] except: - luci_log.debug_verbose('No cluster name -- returning empty map') + luci_log.debug_verbose('ICB0: No cluster name -- returning empty map') return map - path = CLUSTER_FOLDER_PATH + cluname + path = str(CLUSTER_FOLDER_PATH + cluname) try: - clusterfolder = self.restrictedTraverse(str(path)) + clusterfolder = self.restrictedTraverse(path) if not clusterfolder: raise Exception, 'clusterfolder is None' except Exception, e: - luci_log.debug_verbose('cluster %s [%s] folder missing: %s -- returning empty map' % (cluname, path, str(e))) + luci_log.debug_verbose('ICB1: cluster %s [%s] folder missing: %s -- returning empty map' % (cluname, path, str(e))) return map except: - luci_log.debug_verbose('cluster %s [%s] folder missing: returning empty map' % (cluname, path)) + luci_log.debug_verbose('ICB2: cluster %s [%s] folder missing: returning empty map' % (cluname, path)) try: items = clusterfolder.objectItems('ManagedSystem') if not items or len(items) < 1: + luci_log.debug_verbose('ICB3: no flags at %s for cluster %s' \ + % (cluname, path)) return map #This returns an empty map, and should indicate not busy except Exception, e: - luci_log.debug('An error occurred while looking for cluster %s flags at path %s: %s' % (cluname, path, str(e))) + luci_log.debug('ICB4: An error occurred while looking for cluster %s flags at path %s: %s' % (cluname, path, str(e))) return map except: - luci_log.debug('An error occurred while looking for cluster %s flags at path %s' % (cluname, path)) + luci_log.debug('ICB5: An error occurred while looking for cluster %s flags@path %s' % (cluname, path)) return map - + + luci_log.debug_verbose('ICB6: isClusterBusy: %s is busy: %d flags' \ + % (cluname, len(items))) map['busy'] = "true" #Ok, here is what is going on...if there is an item, #we need to call the ricci_bridge and get a batch report. @@ -2952,31 +2956,58 @@ batch_xml = None ricci = item[0].split("____") #This removes the 'flag' suffix + luci_log.debug_verbose('ICB6A: using host %s for rc for item %s' \ + % (ricci[0], item[0])) try: rc = RicciCommunicator(ricci[0]) + if not rc: + rc = None + raise RicciError, 'rc is None for %s' % ricci[0] except RicciError, e: rc = None - luci_log.debug_verbose('ricci returned error in iCB for %s: %s' \ + luci_log.debug_verbose('ICB7: ricci returned error in iCB for %s: %s' \ % (cluname, str(e))) except: rc = None - luci_log.info('ricci connection failed for cluster %s' % cluname) + luci_log.info('ICB8: ricci connection failed for cluster %s' % cluname) + batch_id = None if rc is not None: try: - batch_xml = rc.batch_report(item[1].getProperty(BATCH_ID)) - if batch_xml != None: - (creation_status, total) = batch_status(batch_xml) - else: - luci_log.debug_verbose('batch report for cluster %s, item %s is None' % (cluname, item[0])) - except: - creation_status = RICCI_CONNECT_FAILURE #No contact with ricci (-1000) - batch_xml = "bloody_failure" #set to avoid next if statement - else: + batch_id = item[1].getProperty(BATCH_ID) + luci_log.debug_verbose('ICB8A: got batch_id %s from %s' \ + % (batch_id, item[0])) + except Exception, e: + try: + luci_log.debug_verbose('ICB8B: failed to get batch_id from %s: %s' \ + % (item[0], str(e))) + except: + luci_log.debug_verbose('ICB8C: failed to get batch_id from %s' % item[0]) + + if batch_id is not None: + try: + batch_xml = rc.batch_report(batch_id) + if batch_xml is not None: + luci_log.debug_verbose('ICB8D: batch_xml for %s from batch_report is not None -- getting batch status' % batch_id) + (creation_status, total) = batch_status(batch_xml) + try: + luci_log.debug_verbose('ICB8E: batch status returned (%d,%d)' \ + % (creation_status, total)) + except: + luci_log.debug_verbose('ICB8F: error logging batch status return') + else: + luci_log.debug_verbose('ICB9: batch_xml for cluster is None') + except Exception, e: + luci_log.debug_verbose('ICB9A: error getting batch_xml from rc.batch_report: %s' % str(e)) + creation_status = RICCI_CONNECT_FAILURE #No contact with ricci (-1000) + batch_xml = "bloody_failure" #set to avoid next if statement + + if rc is None or batch_id is None: + luci_log.debug_verbose('ICB12: unable to connect to a ricci agent for cluster %s to get batch status') creation_status = RICCI_CONNECT_FAILURE #No contact with ricci (-1000) - batch_xml = "bloody_failure" #set to avoid next if statement + batch_xml = "bloody_bloody_failure" #set to avoid next if statement - if batch_xml == None: #The job is done and gone from queue + if batch_xml is None: #The job is done and gone from queue if redirect_message == False: #We have not displayed this message yet node_report['desc'] = REDIRECT_MSG node_report['iserror'] = True @@ -2984,7 +3015,7 @@ nodereports.append(node_report) redirect_message = True - luci_log.debug_verbose('batch job is done -- deleting %s' % item[0]) + luci_log.debug_verbose('ICB13: batch job is done -- deleting %s' % item[0]) clusterfolder.manage_delObjects(item[0]) continue @@ -3038,7 +3069,7 @@ try: clusterfolder.manage_delObjects(item[0]) except Exception, e: - luci_log.info('Unable to delete %s: %s' % (item[0], str(e))) + luci_log.info('ICB14: Unable to delete %s: %s' % (item[0], str(e))) continue else: map['busy'] = "true" --- conga/luci/site/luci/Extensions/ricci_communicator.py 2006/10/31 13:16:30 1.15 +++ conga/luci/site/luci/Extensions/ricci_communicator.py 2006/10/31 17:18:12 1.16 @@ -221,7 +221,7 @@ return doc def batch_report(self, batch_id): - luci_log.debug_verbose('[auth=%d] asking for batchid# %d for host %s' \ + luci_log.debug_verbose('[auth=%d] asking for batchid# %s for host %s' \ % (self.__authed, batch_id, self.__hostname)) if not self.authed(): @@ -244,7 +244,7 @@ if doc.firstChild.getAttribute('success') == '12': return None if doc.firstChild.getAttribute('success') != '0': - raise RicciError, 'Error while retrieving batch report for batch #%s from host %s' % (batch_id, self.__hostname) + raise RicciError, 'Error while retrieving batch report for batch #%d from host %s' % (batch_id, self.__hostname) batch_node = None for node in doc.firstChild.childNodes: if node.nodeType == xml.dom.Node.ELEMENT_NODE: @@ -403,10 +403,10 @@ last = last + 1 last = last - 2 * last try: - luci_log.debug_verbose('Returning (%s, %s) for batch_status(\"%s\")' \ + luci_log.debug_verbose('Returning (%d, %d) for batch_status(\"%s\")' \ % (last, total, batch_xml.toxml())) except: - pass + luci_log.debug_verbose('Returning last, total') return (last, total)