예제 #1
0
파일: parse_args.py 프로젝트: wuyeliang/pcs
def prepare_set_args(argv):
    if argv.count("setoptions") > 1:
        raise CmdLineInputError(
            "Keyword 'setoptions' may be mentioned at most once"
        )

    resource_set_args, constraint_options_args = (
        parse_args.split_list(argv, "setoptions")
        if "setoptions" in argv else (argv, [])
    )

    if not resource_set_args:
        raise CmdLineInputError()

    resource_set_list = prepare_resource_sets(resource_set_args)
    if(
        not resource_set_list
        or
        not all(resource_set["ids"] for resource_set in resource_set_list)
    ):
        raise CmdLineInputError()

    constraint_options = {}
    if constraint_options_args:
        constraint_options = parse_args.prepare_options(constraint_options_args)

    return (resource_set_list, constraint_options)
예제 #2
0
파일: quorum.py 프로젝트: idevat/pcs
def quorum_device_add_cmd(lib, argv, modificators):
    # we expect "model" keyword once, followed by the actual model value
    options_lists = parse_args.split_list(argv, "model")
    if len(options_lists) != 2:
        raise CmdLineInputError()
    # check if model value was specified
    if not options_lists[1] or "=" in options_lists[1][0]:
        raise CmdLineInputError()
    generic_options = parse_args.prepare_options(options_lists[0])
    model = options_lists[1][0]
    model_options = parse_args.prepare_options(options_lists[1][1:])

    if "model" in generic_options:
        raise CmdLineInputError(
            "Model cannot be specified in generic options"
        )

    lib.quorum.add_device(
        model,
        model_options,
        generic_options,
        force_model=modificators["force"],
        force_options=modificators["force"],
        skip_offline_nodes=modificators["skip_offline_nodes"]
    )
예제 #3
0
def quorum_device_add_cmd(lib, argv, modificators):
    # we expect "model" keyword once, followed by the actual model value
    options_lists = parse_args.split_list(argv, "model")
    if len(options_lists) != 2:
        raise CmdLineInputError()
    # check if model value was specified
    if not options_lists[1] or "=" in options_lists[1][0]:
        raise CmdLineInputError()
    generic_options = parse_args.prepare_options(options_lists[0])
    model = options_lists[1][0]
    model_options = parse_args.prepare_options(options_lists[1][1:])

    if "model" in generic_options:
        raise CmdLineInputError(
            "Model cannot be specified in generic options"
        )

    lib.quorum.add_device(
        model,
        model_options,
        generic_options,
        force_model=modificators["force"],
        force_options=modificators["force"],
        skip_offline_nodes=modificators["skip_offline_nodes"]
    )
예제 #4
0
파일: parse_args.py 프로젝트: wuyeliang/pcs
def prepare_resource_sets(cmdline_args):
    return [
        {
            "ids": [id for id in args if "=" not in id],
            "options": parse_args.prepare_options(
                [opt for opt in args if "=" in opt]
            ),
        } for args in parse_args.split_list(cmdline_args, "set")
    ]
예제 #5
0
파일: quorum.py 프로젝트: jmartign/pcs
def quorum_device_update_cmd(lib, argv, modificators):
    # we expect "model" keyword once
    options_lists = parse_args.split_list(argv, "model")
    if len(options_lists) == 1:
        generic_options = parse_args.prepare_options(options_lists[0])
        model_options = dict()
    elif len(options_lists) == 2:
        generic_options = parse_args.prepare_options(options_lists[0])
        model_options = parse_args.prepare_options(options_lists[1])
    else:
        raise CmdLineInputError()

    if "model" in generic_options:
        raise CmdLineInputError("Model cannot be specified in generic options")

    lib.quorum.update_device(
        model_options,
        generic_options,
        force_options=modificators["force"],
        skip_offline_nodes=modificators["skip_offline_nodes"])
예제 #6
0
파일: quorum.py 프로젝트: idevat/pcs
def quorum_device_update_cmd(lib, argv, modificators):
    # we expect "model" keyword once
    options_lists = parse_args.split_list(argv, "model")
    if len(options_lists) == 1:
        generic_options = parse_args.prepare_options(options_lists[0])
        model_options = dict()
    elif len(options_lists) == 2:
        generic_options = parse_args.prepare_options(options_lists[0])
        model_options = parse_args.prepare_options(options_lists[1])
    else:
        raise CmdLineInputError()

    if "model" in generic_options:
        raise CmdLineInputError(
            "Model cannot be specified in generic options"
        )

    lib.quorum.update_device(
        model_options,
        generic_options,
        force_options=modificators["force"],
        skip_offline_nodes=modificators["skip_offline_nodes"]
    )
예제 #7
0
 def test_behave_like_string_split_when_the_separator_edges(self):
     self.assertEqual([[], ['a', 'b'], ['c', 'd'], []],
                      split_list(['|', 'a', 'b', '|', 'c', 'd', "|"], '|'))
예제 #8
0
 def test_returns_splited_list(self):
     self.assertEqual([['a', 'b'], ['c', 'd']],
                      split_list(['a', 'b', '|', 'c', 'd'], '|'))
예제 #9
0
 def test_returns_list_with_original_when_separator_not_in_original(self):
     self.assertEqual([['a', 'b']], split_list(['a', 'b'], 'c'))
예제 #10
0
 def test_behave_like_string_split_when_the_separator_edges(self):
     self.assertEqual(
         [[], ['a', 'b'], ['c', 'd'], []],
         split_list(['|','a', 'b', '|', 'c', 'd', "|"], '|')
     )
예제 #11
0
 def test_returns_splited_list(self):
     self.assertEqual(
         [['a', 'b'], ['c', 'd']],
         split_list(['a', 'b', '|', 'c', 'd'], '|')
     )
예제 #12
0
 def test_returns_list_with_original_when_separator_not_in_original(self):
     self.assertEqual([['a', 'b']], split_list(['a', 'b'], 'c'))
예제 #13
0
 def test_behave_like_string_split_when_the_separator_edges(self):
     self.assertEqual(
         [[], ["a", "b"], ["c", "d"], []],
         split_list(["|", "a", "b", "|", "c", "d", "|"], "|"),
     )
예제 #14
0
 def test_returns_splited_list(self):
     self.assertEqual([["a", "b"], ["c", "d"]],
                      split_list(["a", "b", "|", "c", "d"], "|"))
예제 #15
0
 def test_returns_list_with_original_when_separator_not_in_original(self):
     self.assertEqual([["a", "b"]], split_list(["a", "b"], "c"))