def stonith_cmd(argv): if len(argv) < 1: sub_cmd, argv_next = "show", [] else: sub_cmd, argv_next = argv[0], argv[1:] lib = utils.get_library_wrapper() modifiers = utils.get_modifiers() try: if sub_cmd == "help": usage.stonith([" ".join(argv_next)] if argv_next else []) elif sub_cmd == "list": stonith_list_available(lib, argv_next, modifiers) elif sub_cmd == "describe": stonith_list_options(lib, argv_next, modifiers) elif sub_cmd == "create": stonith_create(lib, argv_next, modifiers) elif sub_cmd == "update": if len(argv_next) > 1: stn_id = argv_next.pop(0) resource.resource_update(stn_id, argv_next) else: raise CmdLineInputError() elif sub_cmd == "delete": if len(argv_next) == 1: stn_id = argv_next.pop(0) resource.resource_remove(stn_id) else: raise CmdLineInputError() elif sub_cmd == "show": resource.resource_show(argv_next, True) levels = stonith_level_config_to_str( lib.fencing_topology.get_config()) if levels: print("\n".join(indent(levels, 1))) elif sub_cmd == "level": stonith_level_cmd(lib, argv_next, modifiers) elif sub_cmd == "fence": stonith_fence(argv_next) elif sub_cmd == "cleanup": resource.resource_cleanup(argv_next) elif sub_cmd == "refresh": resource.resource_refresh(argv_next) elif sub_cmd == "confirm": stonith_confirm(argv_next) elif sub_cmd == "get_fence_agent_info": get_fence_agent_info(argv_next) elif sub_cmd == "sbd": sbd_cmd(lib, argv_next, modifiers) elif sub_cmd == "enable": resource.resource_enable_cmd(lib, argv_next, modifiers) elif sub_cmd == "disable": resource.resource_disable_cmd(lib, argv_next, modifiers) else: raise CmdLineInputError() except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "stonith", sub_cmd)
def stonith_cmd(argv): if len(argv) < 1: sub_cmd, argv_next = "show", [] else: sub_cmd, argv_next = argv[0], argv[1:] lib = utils.get_library_wrapper() modifiers = utils.get_modificators() try: if sub_cmd == "help": usage.stonith(argv) elif sub_cmd == "list": stonith_list_available(lib, argv_next, modifiers) elif sub_cmd == "describe": stonith_list_options(lib, argv_next, modifiers) elif sub_cmd == "create": stonith_create(lib, argv_next, modifiers) elif sub_cmd == "update": if len(argv_next) > 1: stn_id = argv_next.pop(0) resource.resource_update(stn_id, argv_next) else: raise CmdLineInputError() elif sub_cmd == "delete": if len(argv_next) == 1: stn_id = argv_next.pop(0) resource.resource_remove(stn_id) else: raise CmdLineInputError() elif sub_cmd == "show": resource.resource_show(argv_next, True) levels = stonith_level_config_to_str( lib.fencing_topology.get_config() ) if levels: print("\n".join(indent(levels, 1))) elif sub_cmd == "level": stonith_level_cmd(lib, argv_next, modifiers) elif sub_cmd == "fence": stonith_fence(argv_next) elif sub_cmd == "cleanup": resource.resource_cleanup(argv_next) elif sub_cmd == "confirm": stonith_confirm(argv_next) elif sub_cmd == "get_fence_agent_info": get_fence_agent_info(argv_next) elif sub_cmd == "sbd": sbd_cmd(lib, argv_next, modifiers) elif sub_cmd == "enable": resource.resource_enable(argv_next) elif sub_cmd == "disable": resource.resource_disable(argv_next) else: raise CmdLineInputError() except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "stonith", sub_cmd)
def stonith_cmd(lib, argv, modifiers): if argv: sub_cmd, argv_next = argv[0], argv[1:] else: sub_cmd, argv_next = "status", [] try: if sub_cmd == "help": usage.stonith([" ".join(argv_next)] if argv_next else []) elif sub_cmd == "list": stonith_list_available(lib, argv_next, modifiers) elif sub_cmd == "describe": stonith_list_options(lib, argv_next, modifiers) elif sub_cmd == "create": stonith_create(lib, argv_next, modifiers) elif sub_cmd == "update": resource.resource_update(lib, argv_next, modifiers) elif sub_cmd in {"delete", "remove"}: resource.resource_remove_cmd(lib, argv_next, modifiers) # TODO remove, deprecated command # replaced with 'stonith status' and 'stonith config' elif sub_cmd == "show": resource.resource_show(lib, argv_next, modifiers, stonith=True) print_stonith_levels(lib) elif sub_cmd == "status": resource.resource_status(lib, argv_next, modifiers, stonith=True) print_stonith_levels(lib) elif sub_cmd == "config": resource.resource_config(lib, argv_next, modifiers, stonith=True) print_stonith_levels(lib) elif sub_cmd == "level": stonith_level_cmd(lib, argv_next, modifiers) elif sub_cmd == "fence": stonith_fence(lib, argv_next, modifiers) elif sub_cmd == "cleanup": resource.resource_cleanup(lib, argv_next, modifiers) elif sub_cmd == "refresh": resource.resource_refresh(lib, argv_next, modifiers) elif sub_cmd == "confirm": stonith_confirm(lib, argv_next, modifiers) elif sub_cmd == "get_fence_agent_info": get_fence_agent_info(lib, argv_next, modifiers) elif sub_cmd == "sbd": sbd_cmd(lib, argv_next, modifiers) elif sub_cmd == "enable": resource.resource_enable_cmd(lib, argv_next, modifiers) elif sub_cmd == "disable": resource.resource_disable_cmd(lib, argv_next, modifiers) elif sub_cmd == "history": stonith_history_cmd(lib, argv_next, modifiers) else: raise CmdLineInputError() except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "stonith", sub_cmd)
def stonith_cmd(argv): lib = utils.get_library_wrapper() modifiers = utils.get_modificators() if len(argv) == 0: argv = ["show"] sub_cmd = argv.pop(0) try: if (sub_cmd == "help"): usage.stonith(argv) elif (sub_cmd == "list"): stonith_list_available(argv) elif (sub_cmd == "describe"): if len(argv) == 1: stonith_list_options(argv[0]) else: raise CmdLineInputError() elif (sub_cmd == "create"): stonith_create(argv) elif (sub_cmd == "update"): if len(argv) > 1: stn_id = argv.pop(0) resource.resource_update(stn_id,argv) else: raise CmdLineInputError() elif (sub_cmd == "delete"): if len(argv) == 1: stn_id = argv.pop(0) resource.resource_remove(stn_id) else: raise CmdLineInputError() elif (sub_cmd == "show"): resource.resource_show(argv, True) stonith_level([]) elif (sub_cmd == "level"): stonith_level(argv) elif (sub_cmd == "fence"): stonith_fence(argv) elif (sub_cmd == "cleanup"): resource.resource_cleanup(argv) elif (sub_cmd == "confirm"): stonith_confirm(argv) elif (sub_cmd == "get_fence_agent_info"): get_fence_agent_info(argv) elif (sub_cmd == "sbd"): sbd_cmd(lib, argv, modifiers) else: raise CmdLineInputError() except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "stonith", sub_cmd)
def stonith_cmd(argv): if len(argv) == 0: argv = ["show"] sub_cmd = argv.pop(0) if (sub_cmd == "help"): usage.stonith(argv) elif (sub_cmd == "list"): stonith_list_available(argv) elif (sub_cmd == "describe"): if len(argv) == 1: stonith_list_options(argv[0]) else: usage.stonith() sys.exit(1) elif (sub_cmd == "create"): stonith_create(argv) elif (sub_cmd == "update"): if len(argv) > 1: stn_id = argv.pop(0) resource.resource_update(stn_id,argv) else: usage.stonith(["update"]) sys.exit(1) elif (sub_cmd == "delete"): if len(argv) == 1: stn_id = argv.pop(0) resource.resource_remove(stn_id) else: usage.stonith(["delete"]) sys.exit(1) elif (sub_cmd == "show"): resource.resource_show(argv, True) stonith_level([]) elif (sub_cmd == "level"): stonith_level(argv) elif (sub_cmd == "fence"): stonith_fence(argv) elif (sub_cmd == "cleanup"): try: resource.resource_cleanup(argv) except utils.CmdLineInputError as e: exit_on_cmdline_input_errror('cleanup') except LibraryError as e: utils.process_library_reports(e.args) elif (sub_cmd == "confirm"): stonith_confirm(argv) elif (sub_cmd == "get_fence_agent_info"): get_fence_agent_info(argv) else: usage.stonith() sys.exit(1)
def update_cmd(lib: Any, argv: List[str], modifiers: parse_args.InputModifiers) -> None: """ Options: * -f - CIB file * --wait * --force - allow invalid options, do not fail if not possible to get agent metadata, allow not suitable command """ if not argv: raise CmdLineInputError() _check_is_stonith(lib, [argv[0]], "pcs resource update") resource.resource_update(argv, modifiers)
def stonith_cmd(argv): if len(argv) < 1: sub_cmd, argv_next = "show", [] else: sub_cmd, argv_next = argv[0], argv[1:] lib = utils.get_library_wrapper() modifiers = utils.get_modificators() try: if sub_cmd == "help": usage.stonith(argv) elif sub_cmd == "list": stonith_list_available(lib, argv_next, modifiers) elif sub_cmd == "describe": stonith_list_options(lib, argv_next, modifiers) elif sub_cmd == "create": stonith_create(argv_next) elif sub_cmd == "update": if len(argv_next) > 1: stn_id = argv_next.pop(0) resource.resource_update(stn_id, argv_next) else: raise CmdLineInputError() elif sub_cmd == "delete": if len(argv_next) == 1: stn_id = argv_next.pop(0) resource.resource_remove(stn_id) else: raise CmdLineInputError() elif sub_cmd == "show": resource.resource_show(argv_next, True) stonith_level([]) elif sub_cmd == "level": stonith_level(argv_next) elif sub_cmd == "fence": stonith_fence(argv_next) elif sub_cmd == "cleanup": resource.resource_cleanup(argv_next) elif sub_cmd == "confirm": stonith_confirm(argv_next) elif sub_cmd == "get_fence_agent_info": get_fence_agent_info(argv_next) elif sub_cmd == "sbd": sbd_cmd(lib, argv_next, modifiers) else: raise CmdLineInputError() except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "stonith", sub_cmd)
def cluster_remote_node(argv): usage_add = """\ remote-node add <hostname> <resource id> [options] Enables the specified resource as a remote-node resource on the specified hostname (hostname should be the same as 'uname -n').""" usage_remove = """\ remote-node remove <hostname> Disables any resources configured to be remote-node resource on the specified hostname (hostname should be the same as 'uname -n').""" if len(argv) < 1: print("\nUsage: pcs cluster remote-node...") print(usage_add) print() print(usage_remove) print() sys.exit(1) command = argv.pop(0) if command == "add": if len(argv) < 2: print("\nUsage: pcs cluster remote-node add...") print(usage_add) print() sys.exit(1) if "--force" in utils.pcs_options: warn( "this command is deprecated, use 'pcs cluster node add-guest'") else: raise error( "this command is deprecated, use 'pcs cluster node add-guest'" ", use --force to override") hostname = argv.pop(0) rsc = argv.pop(0) if not utils.dom_get_resource(utils.get_cib_dom(), rsc): utils.err("unable to find resource '%s'" % rsc) resource.resource_update(rsc, ["meta", "remote-node=" + hostname] + argv, deal_with_guest_change=False) elif command in ["remove", "delete"]: if len(argv) < 1: print("\nUsage: pcs cluster remote-node remove...") print(usage_remove) print() sys.exit(1) if "--force" in utils.pcs_options: warn("this command is deprecated, use" " 'pcs cluster node remove-guest'") else: raise error("this command is deprecated, use 'pcs cluster node" " remove-guest', use --force to override") hostname = argv.pop(0) dom = utils.get_cib_dom() nvpairs = dom.getElementsByTagName("nvpair") nvpairs_to_remove = [] for nvpair in nvpairs: if nvpair.getAttribute( "name") == "remote-node" and nvpair.getAttribute( "value") == hostname: for np in nvpair.parentNode.getElementsByTagName("nvpair"): if np.getAttribute("name").startswith("remote-"): nvpairs_to_remove.append(np) if len(nvpairs_to_remove) == 0: utils.err("unable to remove: cannot find remote-node '%s'" % hostname) for nvpair in nvpairs_to_remove[:]: nvpair.parentNode.removeChild(nvpair) dom = constraint.remove_constraints_containing_node(dom, hostname) utils.replace_cib_configuration(dom) if not utils.usefile: output, retval = utils.run( ["crm_node", "--force", "--remove", hostname]) if retval != 0: utils.err("unable to remove: {0}".format(output)) else: print("\nUsage: pcs cluster remote-node...") print(usage_add) print() print(usage_remove) print() sys.exit(1)