From dd84b13bfc1df5ffe52f639e3738490657ccdee2 Mon Sep 17 00:00:00 2001 From: Chris Feist Date: Fri, 7 Sep 2012 17:56:24 -0500 Subject: [PATCH] Fixed incorrect errors when removing/adding nodes --- pcs/cluster.py | 2 ++ pcs/utils.py | 13 ++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/pcs/cluster.py b/pcs/cluster.py index 77bc7a591..396dd8499 100644 --- a/pcs/cluster.py +++ b/pcs/cluster.py @@ -356,6 +356,8 @@ def cluster_node(argv): sys.exit(1) else: nodesRemoved = False + output, retval = utils.run(["crm_node", "--force","-R", node]) + for my_node in utils.getNodesFromCorosyncConf(): retval, output = utils.removeLocalNode(my_node,node) if retval != 0: diff --git a/pcs/utils.py b/pcs/utils.py index db54dccdd..51774a92a 100644 --- a/pcs/utils.py +++ b/pcs/utils.py @@ -87,7 +87,7 @@ def addLocalNode(node,node_to_add): retval2 = myout[0] output = myout[1] except ValueError: - return 1,output + return 1, output return retval2, output else: return 1, output @@ -252,12 +252,16 @@ def addNodeToCorosync(node): # TODO: Need to make this smarter about parsing files not generated by pcs def removeNodeFromCorosync(node): + error = False node_found = False for c_node in getNodesFromCorosyncConf(): if c_node == node: node_found = True break + if not node_found: + return False + corosync_conf = getCorosyncConf().split("\n") for x in range(len(corosync_conf)): if corosync_conf[x].find("node {") != -1: @@ -267,12 +271,19 @@ def removeNodeFromCorosync(node): nodeid = match.group(1) else: print "Error: Unable to determine nodeid for %s" % node + error = True + break new_corosync_conf = "\n".join(corosync_conf[0:x] + corosync_conf[x+4:]) print new_corosync_conf setCorosyncConf(new_corosync_conf) run(["/sbin/corosync-cmapctl", "-D", "nodelist.node." + str(nodeid) + "."]) + if error: + return False + else: + return True + def getHighestnodeid(corosync_conf): highest = 0 corosync_conf = getCorosyncConf()