def cluster_cmd(argv): if len(argv) == 0: usage.cluster() exit(1) sub_cmd = argv.pop(0) if (sub_cmd == "help"): usage.cluster() elif (sub_cmd == "configure"): corosync_configure(argv) elif (sub_cmd == "sync"): sync_nodes(utils.getNodesFromCorosyncConf(),utils.getCorosyncConf()) elif (sub_cmd == "gui-status"): cluster_gui_status(argv) elif (sub_cmd == "auth"): cluster_auth(argv) elif (sub_cmd == "token"): cluster_token(argv) elif (sub_cmd == "start"): start_cluster(argv) elif (sub_cmd == "stop"): stop_cluster(argv) elif (sub_cmd == "startall"): start_cluster_all() elif (sub_cmd == "stopall"): stop_cluster_all() else: usage.cluster()
def cluster_cmd(argv): if len(argv) == 0: usage.cluster() exit(1) sub_cmd = argv.pop(0) if (sub_cmd == "help"): usage.cluster() elif (sub_cmd == "setup"): corosync_setup(argv) elif (sub_cmd == "sync"): sync_nodes(utils.getNodesFromCorosyncConf(),utils.getCorosyncConf()) elif (sub_cmd == "status"): status.cluster_status(argv) elif (sub_cmd == "pcsd-status"): cluster_gui_status(argv) elif (sub_cmd == "auth"): cluster_auth(argv) elif (sub_cmd == "token"): cluster_token(argv) elif (sub_cmd == "start"): if "--all" in utils.pcs_options: start_cluster_all() else: start_cluster(argv) elif (sub_cmd == "stop"): if "--all" in utils.pcs_options: stop_cluster_all() else: stop_cluster(argv) elif (sub_cmd == "force_stop"): force_stop_cluster(argv) elif (sub_cmd == "standby"): node_standby(argv) elif (sub_cmd == "unstandby"): node_standby(argv, False) elif (sub_cmd == "enable"): if "--all" in utils.pcs_options: enable_cluster_all() else: enable_cluster(argv) elif (sub_cmd == "disable"): if "--all" in utils.pcs_options: disable_cluster_all() else: disable_cluster(argv) elif (sub_cmd == "cib"): get_cib(argv) elif (sub_cmd == "push"): cluster_push(argv) elif (sub_cmd == "node"): cluster_node(argv) elif (sub_cmd == "localnode"): cluster_localnode(argv) elif (sub_cmd == "corosync"): cluster_get_corosync_conf(argv) else: usage.cluster() sys.exit(1)
def cluster_cmd(argv): if len(argv) == 0: usage.cluster() exit(1) sub_cmd = argv.pop(0) if (sub_cmd == "help"): usage.cluster() elif (sub_cmd == "setup"): corosync_setup(argv) elif (sub_cmd == "sync"): sync_nodes(utils.getNodesFromCorosyncConf(), utils.getCorosyncConf()) elif (sub_cmd == "status"): status.cluster_status(argv) elif (sub_cmd == "pcsd-status"): cluster_gui_status(argv) elif (sub_cmd == "auth"): cluster_auth(argv) elif (sub_cmd == "token"): cluster_token(argv) elif (sub_cmd == "start"): if "--all" in utils.pcs_options: start_cluster_all() else: start_cluster(argv) elif (sub_cmd == "stop"): if "--all" in utils.pcs_options: stop_cluster_all() else: stop_cluster(argv) elif (sub_cmd == "force_stop"): force_stop_cluster(argv) elif (sub_cmd == "standby"): node_standby(argv) elif (sub_cmd == "unstandby"): node_standby(argv, False) elif (sub_cmd == "enable"): if "--all" in utils.pcs_options: enable_cluster_all() else: enable_cluster(argv) elif (sub_cmd == "disable"): if "--all" in utils.pcs_options: disable_cluster_all() else: disable_cluster(argv) elif (sub_cmd == "cib"): get_cib(argv) elif (sub_cmd == "push"): cluster_push(argv) elif (sub_cmd == "node"): cluster_node(argv) elif (sub_cmd == "localnode"): cluster_localnode(argv) elif (sub_cmd == "corosync"): cluster_get_corosync_conf(argv) else: usage.cluster() sys.exit(1)
def cluster_get_corosync_conf(argv): if utils.is_rhel6(): utils.err("corosync.conf is not supported on RHEL6") if len(argv) > 1: usage.cluster() exit(1) if len(argv) == 0: print utils.getCorosyncConf() return node = argv[0] retval, output = utils.getCorosyncConfig(node) if retval != 0: utils.err(output) else: print output
def cluster_uidgid_rhel6(argv, silent_list = False): if not os.path.isfile("/etc/cluster/cluster.conf"): utils.err("the /etc/cluster/cluster.conf file doesn't exist on this machine, create a cluster before running this command") if len(argv) == 0: found = False output, retval = utils.run(["/usr/sbin/ccs", "-f", "/etc/cluster/cluster.conf", "--lsmisc"]) if retval != 0: utils.err("error running ccs\n" + output) lines = output.split('\n') for line in lines: if line.startswith('UID/GID: '): print line found = True if not found and not silent_list: print "No uidgids configured in cluster.conf" return command = argv.pop(0) uid="" gid="" if (command == "add" or command == "rm") and len(argv) > 0: for arg in argv: if arg.find('=') == -1: utils.err("uidgid options must be of the form uid=<uid> gid=<gid>") (k,v) = arg.split('=',1) if k != "uid" and k != "gid": utils.err("%s is not a valid key, you must use uid or gid" %k) if k == "uid": uid = v if k == "gid": gid = v if uid == "" and gid == "": utils.err("you must set either uid or gid") if command == "add": output, retval = utils.run(["/usr/sbin/ccs", "-f", "/etc/cluster/cluster.conf", "--setuidgid", "uid="+uid, "gid="+gid]) if retval != 0: utils.err("unable to add uidgid\n" + output.rstrip()) elif command == "rm": output, retval = utils.run(["/usr/sbin/ccs", "-f", "/etc/cluster/cluster.conf", "--rmuidgid", "uid="+uid, "gid="+gid]) if retval != 0: utils.err("unable to remove uidgid\n" + output.rstrip()) # If we make a change, we sync out the changes to all nodes unless we're using -f if not utils.usefile: sync_nodes(utils.getNodesFromCorosyncConf(), utils.getCorosyncConf()) else: usage.cluster(["uidgid"]) exit(1)
def cluster_cmd(argv): if len(argv) == 0: usage.cluster() exit(1) sub_cmd = argv.pop(0) if (sub_cmd == "help"): usage.cluster() elif (sub_cmd == "configure"): corosync_configure(argv) elif (sub_cmd == "sync"): sync_nodes(utils.getNodesFromCorosyncConf(),utils.getCorosyncConf()) elif (sub_cmd == "gui-status"): cluster_gui_status(argv) elif (sub_cmd == "auth"): cluster_auth(argv) elif (sub_cmd == "token"): cluster_token(argv) elif (sub_cmd == "start"): start_cluster(argv) elif (sub_cmd == "stop"): stop_cluster(argv) elif (sub_cmd == "enable"): enable_cluster() elif (sub_cmd == "disable"): disable_cluster() elif (sub_cmd == "startall"): start_cluster_all() elif (sub_cmd == "stopall"): stop_cluster_all() elif (sub_cmd == "enableall"): enable_cluster_all() elif (sub_cmd == "disableall"): disable_cluster_all() elif (sub_cmd == "cib"): get_cib() elif (sub_cmd == "push"): cluster_push(argv) elif (sub_cmd == "node"): cluster_node(argv) elif (sub_cmd == "localnode"): cluster_localnode(argv) elif (sub_cmd == "get_conf"): cluster_get_corosync_conf(argv) else: usage.cluster()
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])
def cluster_cmd(argv): if len(argv) == 0: usage.cluster() exit(1) sub_cmd = argv.pop(0) if (sub_cmd == "help"): usage.cluster(argv) elif (sub_cmd == "setup"): if "--name" in utils.pcs_options: corosync_setup([utils.pcs_options["--name"]] + argv) else: utils.err("A cluster name (--name <name>) is required to setup a cluster") elif (sub_cmd == "sync"): sync_nodes(utils.getNodesFromCorosyncConf(),utils.getCorosyncConf()) elif (sub_cmd == "status"): status.cluster_status(argv) print "" print "PCSD Status:" cluster_gui_status([],True) elif (sub_cmd == "pcsd-status"): cluster_gui_status(argv) elif (sub_cmd == "certkey"): cluster_certkey(argv) elif (sub_cmd == "auth"): cluster_auth(argv) elif (sub_cmd == "token"): cluster_token(argv) elif (sub_cmd == "start"): if "--all" in utils.pcs_options: start_cluster_all() else: start_cluster(argv) elif (sub_cmd == "stop"): if "--all" in utils.pcs_options: stop_cluster_all() else: stop_cluster(argv) elif (sub_cmd == "kill"): kill_cluster(argv) elif (sub_cmd == "standby"): node_standby(argv) elif (sub_cmd == "unstandby"): node_standby(argv, False) elif (sub_cmd == "enable"): if "--all" in utils.pcs_options: enable_cluster_all() else: enable_cluster(argv) elif (sub_cmd == "disable"): if "--all" in utils.pcs_options: disable_cluster_all() else: disable_cluster(argv) elif (sub_cmd == "remote-node"): cluster_remote_node(argv) elif (sub_cmd == "cib"): get_cib(argv) elif (sub_cmd == "cib-push"): cluster_push(argv) elif (sub_cmd == "cib-upgrade"): cluster_upgrade() elif (sub_cmd == "cib-revisions"): cluster_cib_revisions(argv) elif (sub_cmd == "cib-rollback"): cluster_cib_rollback(argv) elif (sub_cmd == "edit"): cluster_edit(argv) elif (sub_cmd == "node"): cluster_node(argv) elif (sub_cmd == "localnode"): cluster_localnode(argv) elif (sub_cmd == "uidgid"): cluster_uidgid(argv) elif (sub_cmd == "corosync"): cluster_get_corosync_conf(argv) elif (sub_cmd == "reload"): cluster_reload(argv) elif (sub_cmd == "destroy"): cluster_destroy(argv) elif (sub_cmd == "verify"): cluster_verify(argv) elif (sub_cmd == "report"): cluster_report(argv) else: usage.cluster() sys.exit(1)