Пример #1
0
def map_params_to_obj(module, required_together=None):
    keys = ['prefix', 'mask', 'state', 'next_hop', 'interface', 'description',
            'admin_distance', 'tag']
    obj = []

    aggregate = module.params.get('aggregate')
    if aggregate:
        for item in aggregate:
            route = item.copy()
            for key in keys:
                if route.get(key) is None:
                    route[key] = module.params.get(key)

            route = dict((k, v) for k, v in route.items() if v is not None)
            check_required_together(required_together, route)
            obj.append(route)
    else:
        check_required_together(required_together, module.params)
        route = dict()
        for key in keys:
            if module.params.get(key) is not None:
                route[key] = module.params.get(key)
        obj.append(route)

    return obj
Пример #2
0
def map_params_to_obj(module, required_together=None):
    obj = []

    aggregate = module.params.get("aggregate")
    if aggregate:
        for item in aggregate:
            for key in item:
                if item.get(key) is None:
                    item[key] = module.params[key]

            try:
                check_required_together(required_together, item)
            except TypeError as exc:
                module.fail_json(to_text(exc))
            d = item.copy()

            obj.append(d)
    else:
        obj.append({
            "address": module.params["address"].strip(),
            "next_hop": module.params["next_hop"].strip(),
            "admin_distance": module.params["admin_distance"],
            "state": module.params["state"],
            "vrf": module.params["vrf"],
        })

    return obj
Пример #3
0
def map_params_to_obj(module, required_together=None):
    obj = []

    aggregate = module.params.get("aggregate")
    if aggregate:
        for item in aggregate:
            for key in item:
                if item.get(key) is None:
                    item[key] = module.params[key]

            try:
                check_required_together(required_together, item)
            except TypeError as exc:
                module.fail_json(to_text(exc))
            d = item.copy()
            d["group"] = str(d["group"])
            d["min_links"] = str(d["min_links"])

            obj.append(d)
    else:
        obj.append(
            {
                "group": str(module.params["group"]),
                "mode": module.params["mode"],
                "min_links": str(module.params["min_links"]),
                "members": module.params["members"],
                "state": module.params["state"],
            }
        )

    return obj
def map_params_to_obj(module, required_together=None):
    keys = [
        "prefix", "mask", "state", "next_hop", "vrf", "interface",
        "admin_distance"
    ]
    obj = []

    aggregate = module.params.get("aggregate")
    if aggregate:
        for item in aggregate:
            route = item.copy()
            for key in keys:
                if route.get(key) is None:
                    route[key] = module.params.get(key)

            route = dict((k, v) for k, v in route.items() if v is not None)
            check_required_together(required_together, route)
            obj.append(route)
    else:
        check_required_together(required_together, module.params)
        route = dict()
        for key in keys:
            if module.params.get(key) is not None:
                route[key] = module.params.get(key)
        obj.append(route)

    return obj
Пример #5
0
def test_check_required_together_missing(together_terms):
    params = {
        'bananas': 'woohoo',
        'wolves': 'uh oh',
    }
    expected = "parameters are required together: bananas, potatoes"

    with pytest.raises(TypeError) as e:
        check_required_together(together_terms, params)

    assert to_native(e.value) == expected
Пример #6
0
    def _check_required_together(self, spec, param=None):
        if spec is None:
            return
        if param is None:
            param = self.params

        try:
            check_required_together(spec, param)
        except TypeError as e:
            msg = to_native(e)
            if self._options_context:
                msg += " found in %s" % " -> ".join(self._options_context)
            self.fail_json(msg=msg)
Пример #7
0
def test_check_required_together_missing_none():
    terms = None
    params = {
        'foo': 'bar',
        'baz': 'buzz',
    }
    assert check_required_together(terms, params) == []
Пример #8
0
def test_check_required_together(together_terms):
    params = {
        'bananas': 'hello',
        'potatoes': 'this is here too',
        'dogs': 'haha',
    }
    assert check_required_together(together_terms, params) == []
Пример #9
0
def map_params_to_obj(module, required_together=None):
    obj = []
    aggregate = module.params.get("aggregate")
    if aggregate:
        for item in aggregate:
            for key in item:
                if item.get(key) is None:
                    item[key] = module.params[key]

            try:
                check_required_together(required_together, item)
            except TypeError as exc:
                module.fail_json(to_text(exc))
            d = item.copy()
            if "/" in d["prefix"]:
                d["mask"] = d["prefix"].split("/")[1]
                d["prefix"] = d["prefix"].split("/")[0]

            if "admin_distance" in d:
                d["admin_distance"] = str(d["admin_distance"])

            obj.append(d)
    else:
        prefix = module.params["prefix"].strip()
        if "/" in prefix:
            mask = prefix.split("/")[1]
            prefix = prefix.split("/")[0]
        else:
            mask = module.params["mask"].strip()
        next_hop = module.params["next_hop"].strip()
        admin_distance = str(module.params["admin_distance"])
        state = module.params["state"]

        obj.append({
            "prefix": prefix,
            "mask": mask,
            "next_hop": next_hop,
            "admin_distance": admin_distance,
            "state": state,
        })

    return obj
Пример #10
0
def map_params_to_obj(module, required_together=None):
    keys = [
        "prefix",
        "mask",
        "state",
        "next_hop",
        "vrf",
        "interface",
        "name",
        "admin_distance",
        "track",
        "tag",
    ]
    obj = []
    aggregate = module.params.get("aggregate")
    if aggregate:
        for item in aggregate:
            route = item.copy()
            for key in keys:
                if route.get(key) is None:
                    route[key] = module.params.get(key)
            route = dict((k, v) for k, v in route.items() if v is not None)
            try:
                check_required_together(required_together, route)
            except TypeError as exc:
                module.fail_json(to_text(exc))
            obj.append(route)
    else:
        try:
            check_required_together(required_together, module.params)
        except TypeError as exc:
            module.fail_json(to_text(exc))
        route = dict()
        for key in keys:
            if module.params.get(key) is not None:
                route[key] = module.params.get(key)
        obj.append(route)
    return obj
Пример #11
0
def map_params_to_obj(module, required_together=None):
    keys = ['prefix', 'mask', 'next_hop', 'admin_distance', 'state']
    obj = []

    aggregate = module.params.get('aggregate')
    if aggregate:
        for item in aggregate:
            route = item.copy()
            for key in keys:
                if route.get(key) is None:
                    route[key] = module.params.get(key)

            check_required_together(required_together, route)

            prefix, mask = prefix_length_parser(route['prefix'], route['mask'],
                                                module)
            route.update({'prefix': prefix, 'mask': mask})

            obj.append(route)
    else:
        check_required_together(required_together, module.params)
        prefix, mask = prefix_length_parser(module.params['prefix'],
                                            module.params['mask'], module)

        obj.append({
            'prefix': prefix,
            'mask': mask,
            'next_hop': module.params['next_hop'].strip(),
            'admin_distance': module.params.get('admin_distance'),
            'state': module.params['state'],
        })

    for route in obj:
        if route['admin_distance']:
            route['admin_distance'] = str(route['admin_distance'])

    return obj
Пример #12
0
def test_check_required_together_no_params(together_terms):
    with pytest.raises(TypeError) as te:
        check_required_together(together_terms, None)

    assert "'NoneType' object is not iterable" in to_native(te.value)