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
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
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
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
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)
def test_check_required_together_missing_none(): terms = None params = { 'foo': 'bar', 'baz': 'buzz', } assert check_required_together(terms, params) == []
def test_check_required_together(together_terms): params = { 'bananas': 'hello', 'potatoes': 'this is here too', 'dogs': 'haha', } assert check_required_together(together_terms, params) == []
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
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
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
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)