Esempio n. 1
0
def map_config_to_obj(module):
    config = get_config(module, flags=['| section interface'])
    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
Esempio n. 2
0
def map_config_to_obj(module):
    config = get_config(module, flags=['| section interface'])
    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
Esempio n. 4
0
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
Esempio n. 5
0
    def map_config_to_obj(self, config):
        results = []

        match = re.findall(r'^interface\s+(\S+)', config, re.M)
        if not match:
            return results

        configobj = NetworkConfig(indent=1, contents=config)

        for intf_name in set(match):
            obj = {'state': 'present', 'name': intf_name}

            # ip addressで始まっている設定コマンドをリスト化する
            # これにはsecondaryも含まれる
            #  ip address 3.3.3.3 255.255.255.0
            #  ip address 33.33.33.33 255.255.255.0 secondary
            cmds = self.parse_config_argument(configobj, intf_name,
                                              'ip address')

            ipv4 = None
            secondary_list = []
            for cmd in cmds:
                tokens = cmd.strip().split(' ')
                if len(tokens) >= 2 and is_netmask(tokens[1]):
                    prefix = '{0}/{1}'.format(tokens[0],
                                              to_text(to_masklen(tokens[1])))
                    is_secondary = bool(
                        len(tokens) == 3 and tokens[2] == 'secondary')
                    if is_secondary:
                        secondary_list.append(prefix)
                    else:
                        ipv4 = prefix

            obj['ipv4'] = ipv4
            obj['ipv4_secondary'] = secondary_list

            ipv6_list = self.parse_config_argument(configobj, intf_name,
                                                   'ipv6 address')
            obj['ipv6'] = ipv6_list

            results.append(obj)

        return results
Esempio n. 6
0
def test_to_masklen_invalid():
    with pytest.raises(ValueError):
        to_masklen('255')
Esempio n. 7
0
def test_to_masklen():
    assert 24 == to_masklen('255.255.255.0')
def test_to_masklen_invalid():
    with pytest.raises(ValueError):
        to_masklen('255')
def test_to_masklen():
    assert 24 == to_masklen('255.255.255.0')