def map_config_to_obj(module): config = get_config(module) configobj = NetworkConfig(indent=1, contents=config) match = re.findall(r'^interface (\S+)', config, re.M) if not match: return list() instances = list() for item in set(match): ipv4 = parse_config_argument(configobj, item, 'ip address') if ipv4: # eg. 192.168.2.10 255.255.255.0 -> 192.168.2.10/24 address = ipv4.strip().split(' ') if len(address) == 2 and is_netmask(address[1]): ipv4 = '{0}/{1}'.format(address[0], to_text(to_masklen(address[1]))) obj = { 'name': item, 'ipv4': ipv4, 'ipv6': parse_config_argument(configobj, item, 'ipv6 address'), 'state': 'present' } instances.append(obj) return instances
def map_config_to_obj(module): config = get_config(module) configobj = NetworkConfig(indent=1, contents=config) match = re.findall(r"^interface (\S+)", config, re.M) if not match: return list() instances = list() for item in set(match): ipv4 = parse_config_argument(configobj, item, "ip address") if ipv4: # eg. 192.168.2.10 255.255.255.0 -> 192.168.2.10/24 address = ipv4.strip().split(" ") if len(address) == 2 and is_netmask(address[1]): ipv4 = "{0}/{1}".format(address[0], to_text(to_masklen(address[1]))) obj = { "name": item, "ipv4": ipv4, "ipv6": parse_config_argument(configobj, item, "ipv6 address"), "state": "present", } instances.append(obj) return instances
def map_config_to_obj(module): compare = module.params['check_running_config'] config = get_config(module, flags=['| begin interface'], compare=compare) configobj = NetworkConfig(indent=1, contents=config) match = re.findall(r'^interface (\S+ \S+)', config, re.M) if not match: return list() instances = list() for item in set(match): ipv4 = parse_config_argument(configobj, item, 'ip address') if ipv4: address = ipv4.strip().split(' ') if len(address) == 2 and is_netmask(address[1]): ipv4 = '{0}/{1}'.format(address[0], to_text(to_masklen(address[1]))) obj = { 'name': item, 'ipv4': ipv4, 'ipv6': parse_config_argument(configobj, item, 'ipv6 address'), 'state': 'present' } instances.append(obj) return instances
def generate_network_commands(want, have): commands = [] for w_network in want: masklen = w_network.get('masklen', 32) if is_netmask(masklen): masklen = to_masklen(masklen) subnet = to_subnet(w_network['prefix'], masklen) prefix = subnet.split('/')[0] w_network['prefix'] = prefix if remove_empties(w_network) not in have: command = 'network {}'.format(subnet) if w_network.get('route_map'): command += ' route-map {}'.format(w_network['route_map']) if w_network.get('backdoor'): command += ' backdoor' commands.append(command) return commands