def auth_nodes(nodes): if "-u" in utils.pcs_options: username = utils.pcs_options["-u"] else: username = None if "-p" in utils.pcs_options: password = utils.pcs_options["-p"] else: password = None for node in nodes: status = utils.checkAuthorization(node) if status[0] == 3 or "--force" in utils.pcs_options: if username == None: sys.stdout.write('Username: ') sys.stdout.flush() username = raw_input("") if password == None: if sys.stdout.isatty(): password = getpass.getpass("Password: "******"") utils.updateToken(node,nodes,username,password) print "%s: Authorized" % (node) elif status[0] == 0: print node + ": Already authorized" else: utils.err("Unable to communicate with %s" % (node))
def auth_nodes(nodes): if "-u" in utils.pcs_options: username = utils.pcs_options["-u"] else: username = None if "-p" in utils.pcs_options: password = utils.pcs_options["-p"] else: password = None for node in nodes: status = utils.checkAuthorization(node) if status[0] == 0: print node + ": Already authorized" elif status[0] == 3: if username == None: username = raw_input("Username: "******"Password: "******"%s: Authorized" % (node) else: print "Unable to communicate with %s" % (node) exit(1)
def cluster_node(argv): if len(argv) != 2: usage.cluster() sys.exit(1) if argv[0] == "add": add_node = True elif argv[0] in ["remove", "delete"]: add_node = False else: usage.cluster() sys.exit(1) node = argv[1] status, output = utils.checkAuthorization(node) if status == 2: utils.err("pcsd is not running on %s" % node) elif status == 3: utils.err("%s is not yet authenticated (try pcs cluster auth %s)" % (node, node)) if add_node == True: corosync_conf = None for my_node in utils.getNodesFromCorosyncConf(): retval, output = utils.addLocalNode(my_node, node) if retval != 0: print >> sys.stderr, "Error: unable to add %s on %s - %s" % ( node, my_node, output.strip()) else: print "%s: Corosync updated" % my_node corosync_conf = output if corosync_conf != None: utils.setCorosyncConfig(node, corosync_conf) if "--start" in utils.pcs_options: utils.startCluster(node) else: utils.err("Unable to update any nodes") else: nodesRemoved = False stop_cluster([node]) 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: print >> sys.stderr, "Error: unable to remove %s on %s - %s" % ( node, my_node, output.strip()) else: if output[0] == 0: print "%s: Corosync updated" % my_node nodesRemoved = True else: print >> sys.stderr, "%s: Error executing command occured: %s" % ( my_node, "".join(output[1])) if nodesRemoved == False: utils.err("Unable to update any nodes")
def cluster_node(argv): if len(argv) != 2: usage.cluster(); sys.exit(1) if argv[0] == "add": add_node = True elif argv[0] in ["remove","delete"]: add_node = False else: usage.cluster(); sys.exit(1) node = argv[1] status,output = utils.checkAuthorization(node) if status == 2: utils.err("pcsd is not running on %s" % node) elif status == 3: utils.err("%s is not yet authenticated (try pcs cluster auth %s)" % (node, node)) if add_node == True: corosync_conf = None for my_node in utils.getNodesFromCorosyncConf(): retval, output = utils.addLocalNode(my_node,node) if retval != 0: print >> sys.stderr, "Error: unable to add %s on %s - %s" % (node,my_node,output.strip()) else: print "%s: Corosync updated" % my_node corosync_conf = output if corosync_conf != None: utils.setCorosyncConfig(node, corosync_conf) if "--start" in utils.pcs_options: utils.startCluster(node) else: utils.err("Unable to update any nodes") else: nodesRemoved = False stop_cluster([node]) for my_node in utils.getNodesFromCorosyncConf(): retval, output = utils.removeLocalNode(my_node,node) if retval != 0: print >> sys.stderr, "Error: unable to remove %s on %s - %s" % (node,my_node,output.strip()) else: if output[0] == 0: print "%s: Corosync updated" % my_node nodesRemoved = True else: print >> sys.stderr, "%s: Error executing command occured: %s" % (my_node, "".join(output[1])) if nodesRemoved == False: utils.err("Unable to update any nodes") output, retval = utils.run(["crm_node", "--force","-R", node])
def check_nodes(nodes, prefix = ""): bad_nodes = False for node in nodes: status = utils.checkAuthorization(node) if status[0] == 0: print prefix + node + ": Online" elif status[0] == 3: print prefix + node + ": Unable to authenticate" bad_nodes = True else: print prefix + node + ": Offline" bad_nodes = True return bad_nodes
def auth_nodes(nodes): if "-u" in utils.pcs_options: username = utils.pcs_options["-u"] else: username = None if "-p" in utils.pcs_options: password = utils.pcs_options["-p"] else: password = None set_nodes = set(nodes) for node in nodes: status = utils.checkAuthorization(node) need_auth = status[0] == 3 or "--force" in utils.pcs_options mutually_authorized = False if status[0] == 0: try: auth_status = json.loads(status[1]) if auth_status["success"]: if set_nodes == set(auth_status["node_list"]): mutually_authorized = True except ValueError, KeyError: pass if need_auth or not mutually_authorized: if username == None: sys.stdout.write('Username: ') sys.stdout.flush() username = raw_input("") if password == None: if sys.stdout.isatty(): password = getpass.getpass("Password: "******"") utils.updateToken(node,nodes,username,password) print "%s: Authorized" % (node) elif mutually_authorized: print node + ": Already authorized" else: utils.err("Unable to communicate with %s" % (node), False)
def cluster_node(argv): if len(argv) != 2: usage.cluster(); sys.exit(1) if argv[0] == "add": add_node = True elif argv[0] in ["remove","delete"]: add_node = False else: usage.cluster(); sys.exit(1) node = argv[1] if "," in node: node0 = node.split(",")[0] node1 = node.split(",")[1] else: node0 = node node1 = None status,output = utils.checkAuthorization(node0) if status == 2: utils.err("pcsd is not running on %s" % node0) elif status == 3: utils.err( "%s is not yet authenticated (try pcs cluster auth %s)" % (node0, node0) ) if add_node == True: if node1 is None and utils.need_ring1_address(utils.getCorosyncConf()): utils.err( "cluster is configured for RRP, " "you have to specify ring 1 address for the node" ) elif ( node1 is not None and not utils.need_ring1_address(utils.getCorosyncConf()) ): utils.err( "cluster is not configured for RRP, " "you must not specify ring 1 address for the node" ) corosync_conf = None (canAdd, error) = utils.canAddNodeToCluster(node0) if not canAdd: utils.err("Unable to add '%s' to cluster: %s" % (node0, error)) for my_node in utils.getNodesFromCorosyncConf(): retval, output = utils.addLocalNode(my_node, node0, node1) if retval != 0: print >> sys.stderr, "Error: unable to add %s on %s - %s" % (node0, my_node, output.strip()) else: print "%s: Corosync updated" % my_node corosync_conf = output if corosync_conf != None: utils.setCorosyncConfig(node0, corosync_conf) if "--enable" in utils.pcs_options: utils.enableCluster(node0) if "--start" in utils.pcs_options: utils.startCluster(node0) else: utils.err("Unable to update any nodes") else: nodesRemoved = False c_nodes = utils.getNodesFromCorosyncConf() destroy_cluster([node0]) for my_node in c_nodes: if my_node == node0: continue retval, output = utils.removeLocalNode(my_node, node0) if retval != 0: print >> sys.stderr, "Error: unable to remove %s on %s - %s" % (node0,my_node,output.strip()) else: if output[0] == 0: print "%s: Corosync updated" % my_node nodesRemoved = True else: print >> sys.stderr, "%s: Error executing command occured: %s" % (my_node, "".join(output[1])) if nodesRemoved == False: utils.err("Unable to update any nodes") output, retval = utils.run(["crm_node", "--force", "-R", node0])