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 in {"delete", "remove"}: 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 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 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 acl_group(lib, argv, modifiers): if len(argv) < 1: raise CmdLineInputError() sub_cmd, argv_next = argv[0], argv[1:] try: if sub_cmd == "create": group_create(lib, argv_next, modifiers) elif sub_cmd == "delete": group_delete(lib, argv_next, modifiers) else: usage.show("acl", ["group"]) sys.exit(1) except CmdLineInputError as e: utils.exit_on_cmdline_input_errror(e, "acl", "group {0}".format(sub_cmd))
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 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 main(argv=None): # pylint: disable=global-statement # pylint: disable=too-many-branches # pylint: disable=too-many-locals # pylint: disable=too-many-statements if completion.has_applicable_environment(os.environ): print( completion.make_suggestions( os.environ, usage.generate_completion_tree_from_usage() ) ) sys.exit() argv = argv if argv else sys.argv[1:] utils.subprocess_setup() global filename, usefile utils.pcs_options = {} # we want to support optional arguments for --wait, so if an argument # is specified with --wait (ie. --wait=30) then we use them waitsecs = None new_argv = [] for arg in argv: if arg.startswith("--wait="): tempsecs = arg.replace("--wait=", "") if tempsecs: waitsecs = tempsecs arg = "--wait" new_argv.append(arg) argv = new_argv try: if "--" in argv: pcs_options, argv = getopt.gnu_getopt( argv, parse_args.PCS_SHORT_OPTIONS, parse_args.PCS_LONG_OPTIONS ) else: # DEPRECATED # TODO remove # We want to support only the -- version ( args_without_negative_nums, args_filtered_out, ) = parse_args.filter_out_non_option_negative_numbers(argv) if args_filtered_out: options_str = "', '".join(args_filtered_out) output.warn( f"Using '{options_str}' without '--' is deprecated, those " "parameters will be considered position independent " "options in future pcs versions" ) pcs_options, dummy_argv = getopt.gnu_getopt( args_without_negative_nums, parse_args.PCS_SHORT_OPTIONS, parse_args.PCS_LONG_OPTIONS, ) argv = parse_args.filter_out_options(argv) except getopt.GetoptError as err: usage.main() print(err) if err.opt in {"V", "clone", "device", "watchdog"}: # Print error messages which point users to the changes section in # pcs manpage. # TODO remove # To be removed in the next significant version. print(f"Hint: {errors.HINT_SYNTAX_CHANGE}") sys.exit(1) full = False for option, dummy_value in pcs_options: if option == "--full": full = True break for opt, val in pcs_options: if not opt in utils.pcs_options: utils.pcs_options[opt] = val else: # If any options are a list then they've been entered twice which # isn't valid utils.err("%s can only be used once" % opt) if opt in ("-h", "--help"): if not argv: usage.main() sys.exit() else: argv = [argv[0], "help"] + argv[1:] elif opt == "-f": usefile = True filename = val utils.usefile = usefile utils.filename = filename elif opt == "--corosync_conf": settings.corosync_conf_file = val elif opt == "--version": print(settings.pcs_version) if full: print( " ".join( sorted( [ feat["id"] for feat in capabilities.get_pcs_capabilities() ] ) ) ) sys.exit() elif opt == "--fullhelp": usage.full_usage() sys.exit() elif opt == "--wait": utils.pcs_options[opt] = waitsecs elif opt == "--request-timeout": request_timeout_valid = False try: timeout = int(val) if timeout > 0: utils.pcs_options[opt] = timeout request_timeout_valid = True except ValueError: pass if not request_timeout_valid: utils.err( ( "'{0}' is not a valid --request-timeout value, use " "a positive integer" ).format(val) ) logger = logging.getLogger("pcs") logger.propagate = 0 logger.handlers = [] if (os.getuid() != 0) and (argv and argv[0] != "help") and not usefile: _non_root_run(argv) cmd_map = { "resource": resource.resource_cmd, "cluster": cluster.cluster_cmd, "stonith": stonith.stonith_cmd, "property": prop.property_cmd, "constraint": constraint.constraint_cmd, "acl": acl.acl_cmd, "status": status.status_cmd, "config": config.config_cmd, "pcsd": pcsd.pcsd_cmd, "node": node.node_cmd, "quorum": quorum.quorum_cmd, "qdevice": qdevice.qdevice_cmd, "alert": alert.alert_cmd, "booth": booth.booth_cmd, "host": host.host_cmd, "client": client.client_cmd, "dr": dr.dr_cmd, "tag": tag.tag_cmd, "help": lambda lib, argv, modifiers: usage.main(), } try: routing.create_router(cmd_map, [])( utils.get_library_wrapper(), argv, utils.get_input_modifiers() ) except LibraryError as e: process_library_reports(e.args) except errors.CmdLineInputError: if argv and argv[0] in cmd_map: usage.show(argv[0], []) else: usage.main() sys.exit(1)
def main(argv=None): # pylint: disable=too-many-locals, too-many-branches, too-many-statements, global-statement if completion.has_applicable_environment(os.environ): print(completion.make_suggestions( os.environ, usage.generate_completion_tree_from_usage() )) sys.exit() argv = argv if argv else sys.argv[1:] utils.subprocess_setup() global filename, usefile utils.pcs_options = {} # we want to support optional arguments for --wait, so if an argument # is specified with --wait (ie. --wait=30) then we use them waitsecs = None new_argv = [] for arg in argv: if arg.startswith("--wait="): tempsecs = arg.replace("--wait=", "") if tempsecs: waitsecs = tempsecs arg = "--wait" new_argv.append(arg) argv = new_argv try: pcs_options, dummy_argv = getopt.gnu_getopt( parse_args.filter_out_non_option_negative_numbers(argv), parse_args.PCS_SHORT_OPTIONS, parse_args.PCS_LONG_OPTIONS, ) except getopt.GetoptError as err: print(err) usage.main() sys.exit(1) argv = parse_args.filter_out_options(argv) full = False for option, dummy_value in pcs_options: if option == "--full": full = True break for opt, val in pcs_options: if not opt in utils.pcs_options: utils.pcs_options[opt] = val else: # If any options are a list then they've been entered twice which # isn't valid utils.err("%s can only be used once" % opt) if opt in ("-h", "--help"): if not argv: usage.main() sys.exit() else: argv = [argv[0], "help"] + argv[1:] elif opt == "-f": usefile = True filename = val utils.usefile = usefile utils.filename = filename elif opt == "--corosync_conf": settings.corosync_conf_file = val elif opt == "--version": print(settings.pcs_version) if full: print(" ".join( sorted([ feat["id"] for feat in capabilities.get_pcs_capabilities() ]) )) sys.exit() elif opt == "--fullhelp": usage.full_usage() sys.exit() elif opt == "--wait": utils.pcs_options[opt] = waitsecs elif opt == "--request-timeout": request_timeout_valid = False try: timeout = int(val) if timeout > 0: utils.pcs_options[opt] = timeout request_timeout_valid = True except ValueError: pass if not request_timeout_valid: utils.err( ( "'{0}' is not a valid --request-timeout value, use " "a positive integer" ).format(val) ) logger = logging.getLogger("pcs") logger.propagate = 0 logger.handlers = [] if (os.getuid() != 0) and (argv and argv[0] != "help") and not usefile: non_root_run(argv) cmd_map = { "resource": resource.resource_cmd, "cluster": cluster.cluster_cmd, "stonith": stonith.stonith_cmd, "property": prop.property_cmd, "constraint": constraint.constraint_cmd, "acl": acl.acl_cmd, "status": status.status_cmd, "config": config.config_cmd, "pcsd": pcsd.pcsd_cmd, "node": node.node_cmd, "quorum": quorum.quorum_cmd, "qdevice": qdevice.qdevice_cmd, "alert": alert.alert_cmd, "booth": booth.booth_cmd, "host": host.host_cmd, "client": client.client_cmd, "help": lambda lib, argv, modifiers: usage.main(), } try: routing.create_router(cmd_map, [])( utils.get_library_wrapper(), argv, utils.get_input_modifiers() ) except LibraryError as e: utils.process_library_reports(e.args) except errors.CmdLineInputError: if argv and argv[0] in cmd_map: usage.show(argv[0], []) else: usage.main() sys.exit(1)