From mboxrd@z Thu Jan 1 00:00:00 1970 From: rmccabe@sourceware.org Date: 1 Mar 2007 20:22:30 -0000 Subject: [Cluster-devel] conga/luci/site/luci/Extensions cluster_adapte ... Message-ID: <20070301202230.24282.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 2007-03-01 20:22:29 Modified files: luci/site/luci/Extensions: cluster_adapters.py Log message: - Don't leave behind empty clusters when cluster creation fails - Pass manage_delObjects() a list in a few places it was getting a string Related: bz 230466 Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.244&r2=1.245 --- conga/luci/site/luci/Extensions/cluster_adapters.py 2007/02/23 22:07:45 1.244 +++ conga/luci/site/luci/Extensions/cluster_adapters.py 2007/03/01 20:22:29 1.245 @@ -3295,17 +3295,26 @@ % (clustername, cluster_path, str(e))) return results - for node in nodelist: + if len(nodelist) < 1: + luci_log.debug_verbose('GCSDB0a: removing cluster %s because it has no nodes' % clustername) try: - node_val = {} - node_val['type'] = 'node' - node_val['name'] = node[0] - node_val['clustered'] = '[unknown]' - node_val['online'] = '[unknown]' - node_val['error'] = True - results.append(node_val) + clusters_dir = self.restrictedTraverse(CLUSTER_FOLDER_PATH) + clusters_dir.manage_delObjects([clustername]) except Exception, e: - luci_log.debug_verbose('GCSDB1: %s' % str(e)) + luci_log.debug_verbose('GCSDB0b: %s: %s' % (clustername, str(e))) + else: + for node in nodelist: + try: + node_val = {} + node_val['type'] = 'node' + node_val['name'] = node[0] + node_val['clustered'] = '[unknown]' + node_val['online'] = '[unknown]' + node_val['error'] = True + results.append(node_val) + except Exception, e: + luci_log.debug_verbose('GCSDB1: %s' % str(e)) + return results def getClusterStatus(self, request, rc, cluname=None): @@ -4186,7 +4195,7 @@ errors += 1 continue if nodeJoin(self, rc, clustername, nodename_resolved) is None: - luci_log.debug_verbose('CStart1: nodeLeave %s' % nodename_resolved) + luci_log.debug_verbose('CStart1: nodeJoin %s' % nodename_resolved) errors += 1 return errors @@ -5446,12 +5455,12 @@ redirect_message = True luci_log.debug_verbose('ICB13: batch job is done -- deleting %s' % item[0]) - clusterfolder.manage_delObjects(item[0]) + clusterfolder.manage_delObjects([item[0]]) continue - - + del_db_obj = False if creation_status < 0: #an error was encountered + luci_log.debug_verbose('ICB13a: %s: CS %d for %s' % (cluname, creation_status, ricci[0])) if creation_status == RICCI_CONNECT_FAILURE: laststatus = item[1].getProperty(LAST_STATUS) if laststatus == INSTALL_TASK: #This means maybe node is rebooting @@ -5481,14 +5490,17 @@ node_report['iserror'] = True (err_code, err_msg) = extract_module_status(batch_xml, INSTALL_TASK) node_report['errormessage'] = CLUNODE_CREATE_ERRORS[INSTALL_TASK] + err_msg + del_db_obj = True elif creation_status == -(DISABLE_SVC_TASK): node_report['iserror'] = True (err_code, err_msg) = extract_module_status(batch_xml, DISABLE_SVC_TASK) node_report['errormessage'] = CLUNODE_CREATE_ERRORS[DISABLE_SVC_TASK] + err_msg + del_db_obj = True elif creation_status == -(REBOOT_TASK): node_report['iserror'] = True (err_code, err_msg) = extract_module_status(batch_xml, REBOOT_TASK) node_report['errormessage'] = CLUNODE_CREATE_ERRORS[REBOOT_TASK] + err_msg + del_db_obj = True elif creation_status == -(SEND_CONF): node_report['iserror'] = True (err_code, err_msg) = extract_module_status(batch_xml, SEND_CONF) @@ -5502,11 +5514,15 @@ (err_code, err_msg) = extract_module_status(batch_xml, START_NODE) node_report['errormessage'] = CLUNODE_CREATE_ERRORS[START_NODE] else: + del_db_obj = True node_report['iserror'] = True node_report['errormessage'] = CLUNODE_CREATE_ERRORS[0] try: - clusterfolder.manage_delObjects(item[0]) + if del_db_obj is True: + luci_log.debug_verbose('ICB13a: %s node creation failed for %s: %d: deleting DB entry' % (cluname, ricci[0], creation_status)) + clusterfolder.manage_delObjects([ricci[0]]) + clusterfolder.manage_delObjects([item[0]]) except Exception, e: luci_log.debug_verbose('ICB14: delObjects: %s: %s' \ % (item[0], str(e))) @@ -5520,7 +5536,7 @@ node_report['statusindex'] = creation_status nodereports.append(node_report) try: - clusterfolder.manage_delObjects(item[0]) + clusterfolder.manage_delObjects([item[0]]) except Exception, e: luci_log.info('ICB15: Unable to delete %s: %s' % (item[0], str(e))) continue @@ -5571,7 +5587,7 @@ node_report['desc'] = flag_msg + flag_desc + REDIRECT_MSG nodereports.append(node_report) try: - clusterfolder.manage_delObjects(item[0]) + clusterfolder.manage_delObjects([item[0]]) except Exception, e: luci_log.info('ICB16: Unable to delete %s: %s' % (item[0], str(e))) else: @@ -7354,7 +7370,7 @@ if finished == -1: luci_log.debug_verbose('NNFP2: batch error: %s' % batch_ret[1]) try: - nodefolder.manage_delObjects(item[0]) + nodefolder.manage_delObjects([item[0]]) except Exception, e: luci_log.info('NNFP3: manage_delObjects for %s failed: %s' \ % (item[0], str(e)))