def attribute_set_cmd(node, argv): try: attrs = prepare_options(argv) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "node", "attribute") for name, value in attrs.items(): utils.set_node_attribute(name, value, node)
def node_cmd(lib, argv, modifiers): if len(argv) < 1: usage.node() sys.exit(1) sub_cmd, argv_next = argv[0], argv[1:] try: if sub_cmd == "help": usage.node(argv) elif sub_cmd == "maintenance": node_maintenance_cmd(lib, argv_next, modifiers, True) elif sub_cmd == "unmaintenance": node_maintenance_cmd(lib, argv_next, modifiers, False) elif sub_cmd == "standby": node_standby_cmd(lib, argv_next, modifiers, True) elif sub_cmd == "unstandby": node_standby_cmd(lib, argv_next, modifiers, False) elif sub_cmd == "attribute": node_attribute_cmd(lib, argv_next, modifiers) elif sub_cmd == "utilization": node_utilization_cmd(lib, argv_next, modifiers) # pcs-to-pcsd use only elif sub_cmd == "pacemaker-status": node_pacemaker_status(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, "node", sub_cmd)
def quorum_cmd(lib, argv, modificators): if len(argv) < 1: sub_cmd, argv_next = "config", [] else: sub_cmd, argv_next = argv[0], argv[1:] try: if sub_cmd == "help": usage.quorum(argv) elif sub_cmd == "config": quorum_config_cmd(lib, argv_next, modificators) elif sub_cmd == "expected-votes": quorum_expected_votes_cmd(lib, argv_next, modificators) elif sub_cmd == "status": quorum_status_cmd(lib, argv_next, modificators) elif sub_cmd == "device": quorum_device_cmd(lib, argv_next, modificators) elif sub_cmd == "unblock": # TODO switch to new architecture quorum_unblock_cmd(argv_next) elif sub_cmd == "update": quorum_update_cmd(lib, argv_next, modificators) else: raise CmdLineInputError() except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "quorum", sub_cmd)
def alert_cmd(*args): argv = args[1] if not argv: sub_cmd = "config" else: sub_cmd = argv.pop(0) try: if sub_cmd == "help": usage.alert(argv) elif sub_cmd == "create": alert_add(*args) elif sub_cmd == "update": alert_update(*args) elif sub_cmd == "remove": alert_remove(*args) elif sub_cmd == "config" or sub_cmd == "show": print_alert_config(*args) elif sub_cmd == "recipient": recipient_cmd(*args) elif sub_cmd == "get_all_alerts": print_alerts_in_json(*args) else: raise CmdLineInputError() except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "alert", sub_cmd)
def acl_cmd(lib, argv, modifiers): if len(argv) < 1: sub_cmd, argv_next = "show", [] else: sub_cmd, argv_next = argv[0], argv[1:] try: if sub_cmd == "help": usage.acl(argv_next) elif sub_cmd == "show": show_acl_config(lib, argv_next, modifiers) elif sub_cmd == "enable": acl_enable(argv_next) elif sub_cmd == "disable": acl_disable(argv_next) elif sub_cmd == "role": acl_role(lib, argv_next, modifiers) elif sub_cmd in ["target", "user"]: acl_user(lib, argv_next, modifiers) elif sub_cmd == "group": acl_group(lib, argv_next, modifiers) elif sub_cmd == "permission": acl_permission(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, "acl", sub_cmd)
def qdevice_cmd(lib, argv, modifiers): if len(argv) < 1: usage.qdevice() sys.exit(1) sub_cmd, argv_next = argv[0], argv[1:] try: if sub_cmd == "help": usage.qdevice(argv) elif sub_cmd == "setup": qdevice_setup_cmd(lib, argv_next, modifiers) elif sub_cmd == "destroy": qdevice_destroy_cmd(lib, argv_next, modifiers) elif sub_cmd == "start": qdevice_start_cmd(lib, argv_next, modifiers) elif sub_cmd == "stop": qdevice_stop_cmd(lib, argv_next, modifiers) elif sub_cmd == "kill": qdevice_kill_cmd(lib, argv_next, modifiers) elif sub_cmd == "enable": qdevice_enable_cmd(lib, argv_next, modifiers) elif sub_cmd == "disable": qdevice_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, "qdevice", 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 booth_cmd(lib, argv, modifiers): """ routes booth command """ if len(argv) < 1: usage.booth() sys.exit(1) sub_cmd, argv_next = argv[0], argv[1:] try: if sub_cmd == "help": usage.booth(argv) elif sub_cmd == "config": command.config_show(lib, argv_next, modifiers) elif sub_cmd == "setup": command.config_setup(lib, argv_next, modifiers) elif sub_cmd == "destroy": command.config_destroy(lib, argv_next, modifiers) elif sub_cmd == "ticket": if len(argv_next) < 1: raise CmdLineInputError() if argv_next[0] == "add": command.config_ticket_add(lib, argv_next[1:], modifiers) elif argv_next[0] == "remove": command.config_ticket_remove(lib, argv_next[1:], modifiers) elif argv_next[0] == "grant": command.ticket_grant(lib, argv_next[1:], modifiers) elif argv_next[0] == "revoke": command.ticket_revoke(lib, argv_next[1:], modifiers) else: raise CmdLineInputError() elif sub_cmd == "create": command.get_create_in_cluster(resource_create)( lib, argv_next, modifiers ) elif sub_cmd == "remove": command.get_remove_from_cluster(resource_remove)( lib, argv_next, modifiers ) elif sub_cmd == "sync": command.sync(lib, argv_next, modifiers) elif sub_cmd == "pull": command.pull(lib, argv_next, modifiers) elif sub_cmd == "enable": command.enable(lib, argv_next, modifiers) elif sub_cmd == "disable": command.disable(lib, argv_next, modifiers) elif sub_cmd == "start": command.start(lib, argv_next, modifiers) elif sub_cmd == "stop": command.stop(lib, argv_next, modifiers) elif sub_cmd == "status": command.status(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, "booth", 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 acl_user(lib, argv, modifiers): if len(argv) < 1: raise CmdLineInputError() sub_cmd, argv_next = argv[0], argv[1:] try: if sub_cmd == "create": user_create(lib, argv_next, modifiers) elif sub_cmd == "delete": user_delete(lib, argv_next, modifiers) else: usage.show("acl", ["user"]) sys.exit(1) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "acl", "user {0}".format(sub_cmd))
def status_cmd(argv): if len(argv) == 0: full_status() sys.exit(0) sub_cmd = argv.pop(0) if (sub_cmd == "help"): usage.status(argv) elif (sub_cmd == "resources"): resource.resource_show(argv) elif (sub_cmd == "groups"): resource.resource_group_list(argv) elif (sub_cmd == "cluster"): cluster_status(argv) elif (sub_cmd == "nodes"): nodes_status(argv) elif (sub_cmd == "pcsd"): cluster_pcsd_status(argv) elif (sub_cmd == "xml"): xml_status() elif (sub_cmd == "corosync"): corosync_status() elif sub_cmd == "qdevice": try: qdevice_status_cmd( utils.get_library_wrapper(), argv, utils.get_modificators() ) except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "status", sub_cmd) elif sub_cmd == "quorum": try: quorum_status_cmd( utils.get_library_wrapper(), argv, utils.get_modificators() ) except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "status", sub_cmd) else: usage.status() sys.exit(1)
def node_cmd(argv): if len(argv) == 0: usage.node() sys.exit(1) sub_cmd = argv.pop(0) if sub_cmd == "help": usage.node(argv) elif sub_cmd == "maintenance": node_maintenance(argv) elif sub_cmd == "unmaintenance": node_maintenance(argv, False) elif sub_cmd == "standby": node_standby(argv) elif sub_cmd == "unstandby": node_standby(argv, False) elif sub_cmd == "attribute": if "--name" in utils.pcs_options and len(argv) > 1: usage.node("attribute") sys.exit(1) filter_attr=utils.pcs_options.get("--name", None) if len(argv) == 0: attribute_show_cmd(filter_attr=filter_attr) elif len(argv) == 1: attribute_show_cmd(argv.pop(0), filter_attr=filter_attr) else: attribute_set_cmd(argv.pop(0), argv) elif sub_cmd == "utilization": if "--name" in utils.pcs_options and len(argv) > 1: usage.node("utilization") sys.exit(1) filter_name=utils.pcs_options.get("--name", None) if len(argv) == 0: print_node_utilization(filter_name=filter_name) elif len(argv) == 1: print_node_utilization(argv.pop(0), filter_name=filter_name) else: try: set_node_utilization(argv.pop(0), argv) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "node", "utilization") # pcs-to-pcsd use only elif sub_cmd == "pacemaker-status": node_pacemaker_status() else: usage.node() sys.exit(1)
def acl_permission(lib, argv, modifiers): if len(argv) < 1: raise CmdLineInputError() sub_cmd, argv_next = argv[0], argv[1:] try: if sub_cmd == "add": permission_add(lib, argv_next, modifiers) elif sub_cmd == "delete": run_permission_delete(lib, argv_next, modifiers) else: usage.show("acl", ["permission"]) sys.exit(1) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror( e, "acl", "permission {0}".format(sub_cmd) )
def quorum_device_cmd(lib, argv, modificators): if len(argv) < 1: raise CmdLineInputError() sub_cmd, argv_next = argv[0], argv[1:] try: if sub_cmd == "add": quorum_device_add_cmd(lib, argv_next, modificators) elif sub_cmd == "remove": quorum_device_remove_cmd(lib, argv_next, modificators) elif sub_cmd == "update": quorum_device_update_cmd(lib, argv_next, modificators) else: raise CmdLineInputError() except CmdLineInputError as e: utils.exit_on_cmdline_input_errror( e, "quorum", "device {0}".format(sub_cmd) )
def acl_role(lib, argv, modifiers): if len(argv) < 1: raise CmdLineInputError() sub_cmd, argv_next = argv[0], argv[1:] try: if sub_cmd == "create": role_create(lib, argv_next, modifiers) elif sub_cmd == "delete": role_delete(lib, argv_next, modifiers) elif sub_cmd == "assign": role_assign(lib, argv_next, modifiers) elif sub_cmd == "unassign": role_unassign(lib, argv_next, modifiers) else: usage.show("acl", ["role"]) sys.exit(1) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "acl", "role {0}".format(sub_cmd))
def acl_permission(argv): if len(argv) < 1: usage.acl(["permission"]) sys.exit(1) command = argv.pop(0) if command == "add": try: run_permission_add(argv) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, 'acl', 'permission add') except LibraryError as e: utils.process_library_reports(e.args) elif command == "delete": run_permission_delete(argv) else: usage.acl(["permission"]) sys.exit(1)
def _router(lib, argv, modifiers): if argv: sub_cmd, *argv_next = argv else: if default_cmd is None: raise CmdLineInputError() sub_cmd, argv_next = default_cmd, [] try: if sub_cmd not in cmd_map: sub_cmd = "" raise CmdLineInputError() return cmd_map[sub_cmd](lib, argv_next, modifiers) except CmdLineInputError as e: if not usage_sub_cmd: raise utils.exit_on_cmdline_input_errror( e, usage_sub_cmd[0], (usage_sub_cmd[1:] + [sub_cmd]) )
def sbd_cmd(lib, argv, modifiers): if len(argv) == 0: raise CmdLineInputError() cmd = argv.pop(0) try: if cmd == "enable": sbd_enable(lib, argv, modifiers) elif cmd == "disable": sbd_disable(lib, argv, modifiers) elif cmd == "status": sbd_status(lib, argv, modifiers) elif cmd == "config": sbd_config(lib, argv, modifiers) elif cmd == "local_config_in_json": local_sbd_config(lib, argv, modifiers) else: raise CmdLineInputError() except CmdLineInputError as e: utils.exit_on_cmdline_input_errror( e, "stonith", "sbd {0}".format(cmd) )
def quorum_cmd(lib, argv, modificators): if len(argv) < 1: usage.quorum() sys.exit(1) sub_cmd, argv_next = argv[0], argv[1:] try: if sub_cmd == "help": usage.quorum(argv) elif sub_cmd == "config": quorum_config_cmd(lib, argv_next, modificators) elif sub_cmd == "device": quorum_device_cmd(lib, argv_next, modificators) elif sub_cmd == "unblock": cluster_quorum_unblock(argv_next) elif sub_cmd == "update": quorum_update_cmd(lib, argv_next, modificators) else: raise CmdLineInputError() except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "quorum", sub_cmd)
def recipient_cmd(*args): argv = args[1] if not argv: usage.alert(["recipient"]) sys.exit(1) sub_cmd = argv.pop(0) try: if sub_cmd == "help": usage.alert(["recipient"]) elif sub_cmd == "add": recipient_add(*args) elif sub_cmd == "update": recipient_update(*args) elif sub_cmd == "remove": recipient_remove(*args) else: raise CmdLineInputError() except CmdLineInputError as e: utils.exit_on_cmdline_input_errror( e, "alert", "recipient {0}".format(sub_cmd) )
def qdevice_cmd(lib, argv, modifiers): if len(argv) < 1: usage.qdevice() sys.exit(1) sub_cmd, argv_next = argv[0], argv[1:] try: if sub_cmd == "help": usage.qdevice(argv) elif sub_cmd == "status": qdevice_status_cmd(lib, argv_next, modifiers) elif sub_cmd == "setup": qdevice_setup_cmd(lib, argv_next, modifiers) elif sub_cmd == "destroy": qdevice_destroy_cmd(lib, argv_next, modifiers) elif sub_cmd == "start": qdevice_start_cmd(lib, argv_next, modifiers) elif sub_cmd == "stop": qdevice_stop_cmd(lib, argv_next, modifiers) elif sub_cmd == "kill": qdevice_kill_cmd(lib, argv_next, modifiers) elif sub_cmd == "enable": qdevice_enable_cmd(lib, argv_next, modifiers) elif sub_cmd == "disable": qdevice_disable_cmd(lib, argv_next, modifiers) # following commands are internal use only, called from pcsd elif sub_cmd == "sign-net-cert-request": qdevice_sign_net_cert_request_cmd(lib, argv_next, modifiers) elif sub_cmd == "net-client": qdevice_net_client_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, "qdevice", sub_cmd)
def constraint_location_cmd(lib, argv, modifiers): if not argv: sub_cmd = "show" else: sub_cmd = argv.pop(0) try: if sub_cmd == "add": location_add(lib, argv, modifiers) elif sub_cmd in ["remove", "delete"]: location_remove(lib, argv, modifiers) elif sub_cmd == "show": location_show(lib, argv, modifiers) elif len(argv) >= 2: if argv[0] == "rule": location_rule(lib, [sub_cmd] + argv, modifiers) else: location_prefer(lib, [sub_cmd] + argv, modifiers) else: raise CmdLineInputError() except CmdLineInputError as e: utils.exit_on_cmdline_input_errror( e, "constraint", ["location", sub_cmd] )
def stonith_level_cmd(lib, argv, modifiers): if len(argv) < 1: sub_cmd, argv_next = "config", [] else: sub_cmd, argv_next = argv[0], argv[1:] try: if sub_cmd == "add": stonith_level_add_cmd(lib, argv_next, modifiers) elif sub_cmd == "clear": stonith_level_clear_cmd(lib, argv_next, modifiers) elif sub_cmd == "config": stonith_level_config_cmd(lib, argv_next, modifiers) elif sub_cmd in ["remove", "delete"]: stonith_level_remove_cmd(lib, argv_next, modifiers) elif sub_cmd == "verify": stonith_level_verify_cmd(lib, argv_next, modifiers) else: sub_cmd = "" raise CmdLineInputError() except CmdLineInputError as e: utils.exit_on_cmdline_input_errror( e, "stonith", "level {0}".format(sub_cmd) )
def qdevice_cmd(lib, argv, modifiers): if len(argv) < 1: usage.qdevice() sys.exit(1) sub_cmd, argv_next = argv[0], argv[1:] try: if sub_cmd == "help": usage.qdevice([" ".join(argv_next)] if argv_next else []) elif sub_cmd == "status": qdevice_status_cmd(lib, argv_next, modifiers) elif sub_cmd == "setup": qdevice_setup_cmd(lib, argv_next, modifiers) elif sub_cmd == "destroy": qdevice_destroy_cmd(lib, argv_next, modifiers) elif sub_cmd == "start": qdevice_start_cmd(lib, argv_next, modifiers) elif sub_cmd == "stop": qdevice_stop_cmd(lib, argv_next, modifiers) elif sub_cmd == "kill": qdevice_kill_cmd(lib, argv_next, modifiers) elif sub_cmd == "enable": qdevice_enable_cmd(lib, argv_next, modifiers) elif sub_cmd == "disable": qdevice_disable_cmd(lib, argv_next, modifiers) # following commands are internal use only, called from pcsd elif sub_cmd == "sign-net-cert-request": qdevice_sign_net_cert_request_cmd(lib, argv_next, modifiers) elif sub_cmd == "net-client": qdevice_net_client_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, "qdevice", sub_cmd)
def acl_role(argv): if len(argv) < 2: usage.acl(["role"]) sys.exit(1) command = argv.pop(0) if command == "create": try: run_create_role(argv) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, 'acl', 'role create') except LibraryError as e: utils.process_library_reports(e.args) elif command == "delete": run_role_delete(argv) elif command == "assign": run_role_assign(argv) elif command == "unassign": run_role_unassign(argv) else: usage.acl(["role"]) sys.exit(1)
def sbd_cmd(lib, argv, modifiers): if len(argv) == 0: raise CmdLineInputError() cmd = argv.pop(0) try: if cmd == "enable": sbd_enable(lib, argv, modifiers) elif cmd == "disable": sbd_disable(lib, argv, modifiers) elif cmd == "status": sbd_status(lib, argv, modifiers) elif cmd == "config": sbd_config(lib, argv, modifiers) elif cmd == "local_config_in_json": local_sbd_config(lib, argv, modifiers) elif cmd == "device": sbd_device_cmd(lib, argv, modifiers) elif cmd == "watchdog": sbd_watchdog_cmd(lib, argv, modifiers) else: cmd = "" raise CmdLineInputError() except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "stonith", "sbd {0}".format(cmd))
def _router(lib: Any, argv: List[str], modifiers: InputModifiers) -> None: if argv: sub_cmd, *argv_next = argv else: if default_cmd is None: raise CmdLineInputError() sub_cmd, argv_next = default_cmd, [] try: if sub_cmd not in cmd_map: sub_cmd = "" raise CmdLineInputError() return cmd_map[sub_cmd](lib, argv_next, modifiers) except CmdLineInputError as e: if not usage_sub_cmd: raise return utils.exit_on_cmdline_input_errror( e, usage_sub_cmd[0], (usage_sub_cmd[1:] + [sub_cmd]))
def constraint_cmd(lib, argv, modifiers): if not argv: argv = ["list"] sub_cmd = argv.pop(0) try: if sub_cmd == "help": usage.constraint(argv) elif sub_cmd == "location": try: if not argv: sub_cmd2 = "show" else: sub_cmd2 = argv.pop(0) if sub_cmd2 == "add": location_add(lib, argv, modifiers) elif sub_cmd2 in ["remove", "delete"]: location_remove(lib, argv, modifiers) elif sub_cmd2 == "show": location_show(lib, argv, modifiers) elif len(argv) >= 2: if argv[0] == "rule": location_rule(lib, [sub_cmd2] + argv, modifiers) else: location_prefer(lib, [sub_cmd2] + argv, modifiers) else: raise CmdLineInputError() except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "constraint", f"location {sub_cmd2}") elif sub_cmd == "order": if not argv: sub_cmd2 = "show" else: sub_cmd2 = argv.pop(0) try: if sub_cmd2 == "set": order_command.create_with_set(lib, argv, modifiers) elif sub_cmd2 in ["remove", "delete"]: order_rm(lib, argv, modifiers) elif sub_cmd2 == "show": order_command.show(lib, argv, modifiers) else: order_start(lib, [sub_cmd2] + argv, modifiers) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "constraint", f"order {sub_cmd2}") elif sub_cmd == "ticket": usage_name = "ticket" try: command_map = { "set": ticket_command.create_with_set, "add": ticket_command.add, "delete": ticket_command.remove, "remove": ticket_command.remove, "show": ticket_command.show, } sub_command = argv[0] if argv else "show" if sub_command not in command_map: raise CmdLineInputError() usage_name = "ticket " + sub_command command_map[sub_command](lib, argv[1:], modifiers) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "constraint", usage_name) elif sub_cmd == "colocation": if not argv: sub_cmd2 = "show" else: sub_cmd2 = argv.pop(0) try: if sub_cmd2 == "add": colocation_add(lib, argv, modifiers) elif sub_cmd2 in ["remove", "delete"]: colocation_rm(lib, argv, modifiers) elif sub_cmd2 == "set": colocation_command.create_with_set(lib, argv, modifiers) elif sub_cmd2 == "show": colocation_command.show(lib, argv, modifiers) else: raise CmdLineInputError() except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "constraint", f"colocation {sub_cmd2}") elif sub_cmd in ["remove", "delete"]: constraint_rm(lib, argv, modifiers) elif sub_cmd in ("show", "list"): # all these commands accept -f and --full therefore there is no # need to change something here location_show(lib, argv, modifiers) order_command.show(lib, argv, modifiers) colocation_command.show(lib, argv, modifiers) ticket_command.show(lib, argv, modifiers) elif sub_cmd == "ref": constraint_ref(lib, argv, modifiers) elif sub_cmd == "rule": constraint_rule(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, "constraint", sub_cmd)
def constraint_cmd(argv): lib = utils.get_library_wrapper() modificators = utils.get_modificators() if len(argv) == 0: argv = ["list"] sub_cmd = argv.pop(0) if (sub_cmd == "help"): usage.constraint(argv) elif (sub_cmd == "location"): if len (argv) == 0: sub_cmd2 = "show" else: sub_cmd2 = argv.pop(0) if (sub_cmd2 == "add"): location_add(argv) elif (sub_cmd2 in ["remove","delete"]): location_add(argv,True) elif (sub_cmd2 == "show"): location_show(argv) elif len(argv) >= 2: if argv[0] == "rule": location_rule([sub_cmd2] + argv) else: location_prefer([sub_cmd2] + argv) else: usage.constraint() sys.exit(1) elif (sub_cmd == "order"): if (len(argv) == 0): sub_cmd2 = "show" else: sub_cmd2 = argv.pop(0) if (sub_cmd2 == "set"): try: order_command.create_with_set(lib, argv, modificators) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "constraint", 'order set') except LibraryError as e: utils.process_library_reports(e.args) elif (sub_cmd2 in ["remove","delete"]): order_rm(argv) elif (sub_cmd2 == "show"): order_command.show(lib, argv, modificators) else: order_start([sub_cmd2] + argv) elif sub_cmd == "ticket": usage_name = "ticket" try: command_map = { "set": ticket_command.create_with_set, "add": ticket_command.add, "show": ticket_command.show, } sub_command = argv[0] if argv else "show" if sub_command not in command_map: raise CmdLineInputError() usage_name = "ticket "+sub_command command_map[sub_command](lib, argv[1:], modificators) except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "constraint", usage_name) elif (sub_cmd == "colocation"): if (len(argv) == 0): sub_cmd2 = "show" else: sub_cmd2 = argv.pop(0) if (sub_cmd2 == "add"): colocation_add(argv) elif (sub_cmd2 in ["remove","delete"]): colocation_rm(argv) elif (sub_cmd2 == "set"): try: colocation_command.create_with_set(lib, argv, modificators) except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "constraint", "colocation set") elif (sub_cmd2 == "show"): colocation_command.show(lib, argv, modificators) else: usage.constraint() sys.exit(1) elif (sub_cmd in ["remove","delete"]): constraint_rm(argv) elif (sub_cmd == "show" or sub_cmd == "list"): location_show(argv) order_command.show(lib, argv, modificators) colocation_command.show(lib, argv, modificators) ticket_command.show(lib, argv, modificators) elif (sub_cmd == "ref"): constraint_ref(argv) elif (sub_cmd == "rule"): constraint_rule(argv) else: usage.constraint() sys.exit(1)
def constraint_cmd(argv): lib = utils.get_library_wrapper() modificators = utils.get_modificators() if len(argv) == 0: argv = ["list"] sub_cmd = argv.pop(0) try: if (sub_cmd == "help"): usage.constraint(argv) elif (sub_cmd == "location"): if len(argv) == 0: sub_cmd2 = "show" else: sub_cmd2 = argv.pop(0) if (sub_cmd2 == "add"): location_add(argv) elif (sub_cmd2 in ["remove", "delete"]): location_add(argv, True) elif (sub_cmd2 == "show"): location_show(argv) elif len(argv) >= 2: if argv[0] == "rule": location_rule([sub_cmd2] + argv) else: location_prefer([sub_cmd2] + argv) else: usage.constraint() sys.exit(1) elif (sub_cmd == "order"): if (len(argv) == 0): sub_cmd2 = "show" else: sub_cmd2 = argv.pop(0) if (sub_cmd2 == "set"): try: order_command.create_with_set(lib, argv, modificators) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "constraint", 'order set') except LibraryError as e: utils.process_library_reports(e.args) elif (sub_cmd2 in ["remove", "delete"]): order_rm(argv) elif (sub_cmd2 == "show"): order_command.show(lib, argv, modificators) else: order_start([sub_cmd2] + argv) elif sub_cmd == "ticket": usage_name = "ticket" try: command_map = { "set": ticket_command.create_with_set, "add": ticket_command.add, "remove": ticket_command.remove, "show": ticket_command.show, } sub_command = argv[0] if argv else "show" if sub_command not in command_map: raise CmdLineInputError() usage_name = "ticket " + sub_command command_map[sub_command](lib, argv[1:], modificators) except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "constraint", usage_name) elif (sub_cmd == "colocation"): if (len(argv) == 0): sub_cmd2 = "show" else: sub_cmd2 = argv.pop(0) if (sub_cmd2 == "add"): colocation_add(argv) elif (sub_cmd2 in ["remove", "delete"]): colocation_rm(argv) elif (sub_cmd2 == "set"): try: colocation_command.create_with_set(lib, argv, modificators) except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "constraint", "colocation set") elif (sub_cmd2 == "show"): colocation_command.show(lib, argv, modificators) else: usage.constraint() sys.exit(1) elif (sub_cmd in ["remove", "delete"]): constraint_rm(argv) elif (sub_cmd == "show" or sub_cmd == "list"): location_show(argv) order_command.show(lib, argv, modificators) colocation_command.show(lib, argv, modificators) ticket_command.show(lib, argv, modificators) elif (sub_cmd == "ref"): constraint_ref(argv) elif (sub_cmd == "rule"): constraint_rule(argv) else: usage.constraint() sys.exit(1) except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "resource", sub_cmd)
def cluster_cmd(argv): if len(argv) == 0: usage.cluster() exit(1) sub_cmd = argv.pop(0) if (sub_cmd == "help"): usage.cluster([" ".join(argv)] if argv else []) elif (sub_cmd == "setup"): try: cluster_setup(utils.get_library_wrapper(), argv, utils.get_modifiers()) except LibraryError as e: process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "cluster", sub_cmd) elif (sub_cmd == "sync"): sync_nodes(utils.get_corosync_conf_facade().get_nodes_names(), utils.getCorosyncConf()) elif (sub_cmd == "status"): status.cluster_status(argv) elif (sub_cmd == "pcsd-status"): status.cluster_pcsd_status(argv) elif (sub_cmd == "certkey"): cluster_certkey(argv) elif (sub_cmd == "auth"): try: cluster_auth_cmd(utils.get_library_wrapper(), argv, utils.get_modifiers()) except LibraryError as e: process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "cluster", sub_cmd) elif (sub_cmd == "start"): if "--all" in utils.pcs_options: if argv: utils.err(ERR_NODE_LIST_AND_ALL_MUTUALLY_EXCLUSIVE) start_cluster_all() else: start_cluster(argv) elif (sub_cmd == "stop"): if "--all" in utils.pcs_options: if argv: utils.err(ERR_NODE_LIST_AND_ALL_MUTUALLY_EXCLUSIVE) stop_cluster_all() else: stop_cluster(argv) elif (sub_cmd == "kill"): kill_cluster(argv) elif (sub_cmd == "standby"): try: node.node_standby_cmd(utils.get_library_wrapper(), argv, utils.get_modifiers(), True) except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "node", "standby") elif (sub_cmd == "unstandby"): try: node.node_standby_cmd(utils.get_library_wrapper(), argv, utils.get_modifiers(), False) except LibraryError as e: utils.process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "node", "unstandby") elif (sub_cmd == "enable"): if "--all" in utils.pcs_options: if argv: utils.err(ERR_NODE_LIST_AND_ALL_MUTUALLY_EXCLUSIVE) enable_cluster_all() else: enable_cluster(argv) elif (sub_cmd == "disable"): if "--all" in utils.pcs_options: if argv: utils.err(ERR_NODE_LIST_AND_ALL_MUTUALLY_EXCLUSIVE) disable_cluster_all() else: disable_cluster(argv) elif (sub_cmd == "remote-node"): try: cluster_remote_node(argv) except LibraryError as e: utils.process_library_reports(e.args) elif (sub_cmd == "cib"): get_cib(argv) elif (sub_cmd == "cib-push"): cluster_push(argv) elif (sub_cmd == "cib-upgrade"): utils.cluster_upgrade() elif (sub_cmd == "edit"): cluster_edit(argv) elif (sub_cmd == "node"): node_command_map = { "add": node_add, "add-guest": cluster_command.node_add_guest, "add-outside": node_add_outside_cluster, "add-remote": cluster_command.node_add_remote, "clear": cluster_command.node_clear, "remove": node_remove, "remove-guest": cluster_command.node_remove_guest, "remove-remote": cluster_command.create_node_remove_remote( resource.resource_remove), } if argv and argv[0] in node_command_map: try: node_command_map[argv[0]](utils.get_library_wrapper(), argv[1:], utils.get_modifiers()) except LibraryError as e: process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "cluster", "node " + argv[0]) else: usage.cluster(["node"]) sys.exit(1) 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"): try: cluster_destroy(argv) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "cluster", sub_cmd) elif (sub_cmd == "verify"): cluster_verify(argv) elif (sub_cmd == "report"): cluster_report(argv) elif (sub_cmd == "quorum"): if argv and argv[0] == "unblock": quorum.quorum_unblock_cmd(argv[1:]) else: usage.cluster() sys.exit(1) elif (sub_cmd == "remove_nodes_from_cib"): try: remove_nodes_from_cib( utils.get_library_wrapper(), argv, utils.get_modifiers(), ) except LibraryError as e: process_library_reports(e.args) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "cluster", sub_cmd) else: usage.cluster() sys.exit(1)