cisco-config-parser 2.2.8__tar.gz → 2.2.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/PKG-INFO +1 -1
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/__init__.py +1 -1
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/layer3_interface/l3_interface_parser.py +2 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/layer3_interface/l3_section_parser.py +57 -16
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/parser_regex/ios_regex.py +2 -1
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/setup.py +1 -1
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser.egg-info/PKG-INFO +1 -1
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/setup.py +1 -1
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/README.md +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/cisco_config_parser.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/global_search/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/global_search/global_obj.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/global_search/global_parser.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/global_search/global_separator.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/global_search/ios/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/global_search/nxos/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/global_search/xr/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/helper/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/helper/help.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/helper/helper.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/layer2_interface/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/layer2_interface/l2_interface_obj.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/layer2_interface/l2_interface_parser.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/layer2_interface/l2_interface_separator.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/layer2_interface/l2_section_parser.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/layer3_interface/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/layer3_interface/l3_interface_obj.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/layer3_interface/l3_interface_separator.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/old_version/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/old_version/exceptions.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/old_version/obj.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/old_version/old_parse.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/old_version/ssh.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/old_version/utils.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/parent_child/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/parent_child/parent_child_obj.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/parent_child/parent_child_parser.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/parent_child/parent_child_separator.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/parser/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/parser/parser.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/parser_regex/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/parser_regex/common_regex.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/parser_regex/nxos_regex.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/ios/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/ios/rtp_bgp.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/ios/rtp_eigtp.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/ios/rtp_ios_rtp_obj.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/ios/rtp_ospf.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/ios/rtp_static.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/nxos/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/nxos/rtp_bgp.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/nxos/rtp_nxos_rtp_obj.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/nxos/rtp_ospf.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/nxos/rtp_static.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/nxos/rtp_vxlan.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/utils/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/utils/rtp_ios_separator.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/utils/rtp_nxos_separator.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/utils/utils.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/routing_protocol/xr/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/separator/__init__.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/separator/separator.py +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser.egg-info/SOURCES.txt +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser.egg-info/dependency_links.txt +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser.egg-info/top_level.txt +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/pyproject.toml +0 -0
- {cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cisco_config_parser
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.9
|
|
4
4
|
Summary: This library is used for Network Automation involving Cisco Routers and Switch. It will parse Cisco IOS, IOS-XE, IOS-XR, and NXOS configuration file into objects and/or json format
|
|
5
5
|
Home-page: https://github.com/arezazadeh/cisco_config_parser
|
|
6
6
|
Author: Ahmad Rezazadeh
|
|
@@ -63,6 +63,7 @@ class L3InterfaceParser:
|
|
|
63
63
|
sec_ip_address_regex = SECONDARY_IP_ADDRESS_REGEX.search(l3_interface_stripped)
|
|
64
64
|
|
|
65
65
|
|
|
66
|
+
|
|
66
67
|
# if the regex is found, parse the line and store the value in the l3_intf_cls object
|
|
67
68
|
ip_address_kwargs = {
|
|
68
69
|
"ip_address_line_regex": ip_address_regex,
|
|
@@ -77,6 +78,7 @@ class L3InterfaceParser:
|
|
|
77
78
|
if sec_ip_address_regex:
|
|
78
79
|
# set the primary flag to False to indicate that the ip address is a secondary ip address
|
|
79
80
|
ip_address_kwargs["primary"] = False
|
|
81
|
+
ip_address_kwargs["ip_address_line_regex"] = sec_ip_address_regex
|
|
80
82
|
l3_intf_cls = _L3SectionParser._parse_ip_address_line(**ip_address_kwargs)
|
|
81
83
|
|
|
82
84
|
if vrf_regex:
|
|
@@ -19,7 +19,37 @@ class _L3SectionParser:
|
|
|
19
19
|
return: l3_interface_obj
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
|
|
23
|
+
def cleanup_ip_address(ip_address_line_regex):
|
|
24
|
+
ip_address_regex = [ip_group for ip_group in ip_address_line_regex.groups() if ip_group]
|
|
25
|
+
if not ip_address_regex:
|
|
26
|
+
return None
|
|
27
|
+
|
|
28
|
+
if "/" in ip_address_regex[0]:
|
|
29
|
+
ip_address_config = ip_address_regex[0].split("/")
|
|
30
|
+
ip_addr = ip_address_config[0].strip()
|
|
31
|
+
cidr = ip_address_config[1].strip()
|
|
32
|
+
subnet_ = ipaddress.IPv4Network(f"{ip_addr}/{cidr}", strict=False)
|
|
33
|
+
return {
|
|
34
|
+
"ip_address": ip_addr.strip(),
|
|
35
|
+
"mask": str(subnet_.netmask),
|
|
36
|
+
"subnet": str(subnet_).strip()
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
else:
|
|
40
|
+
ip_address_section = ip_address_regex[0].split()
|
|
41
|
+
ip_address = ip_address_section[0].strip()
|
|
42
|
+
mask = ip_address_section[1].strip()
|
|
43
|
+
subnet = str(ipaddress.IPv4Network(f"{ip_address}/{mask}", strict=False))
|
|
44
|
+
return {
|
|
45
|
+
"ip_address": ip_address.strip(),
|
|
46
|
+
"mask": mask.strip(),
|
|
47
|
+
"subnet": subnet.strip()
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def process_ip_address_with_cidr(ip_address_with_cidr, obj, primary=True):
|
|
23
53
|
"""
|
|
24
54
|
Process the ip address with cidr
|
|
25
55
|
:param ip_address_with_cidr: str
|
|
@@ -39,25 +69,36 @@ class _L3SectionParser:
|
|
|
39
69
|
l3_interface_obj = kwargs.get("l3_interface_obj")
|
|
40
70
|
primary = kwargs.get("primary", True)
|
|
41
71
|
|
|
42
|
-
|
|
72
|
+
ip_info = cleanup_ip_address(ip_address_line_regex)
|
|
73
|
+
# ip_address_regex = [ip_group for ip_group in ip_address_line_regex.groups() if ip_group]
|
|
43
74
|
|
|
75
|
+
# print(ip_address_regex)
|
|
44
76
|
# Check if the ip address has a CIDR - 10.1.1.1/24
|
|
45
|
-
if "/" in ip_address_regex[0]:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
77
|
+
# if "/" in ip_address_regex[0]:
|
|
78
|
+
#
|
|
79
|
+
# l3_interface_obj = process_ip_address_with_cidr(ip_address_regex[0], l3_interface_obj)
|
|
80
|
+
# return l3_interface_obj
|
|
81
|
+
|
|
82
|
+
# ip_address_section = ip_address_regex[0].split()
|
|
83
|
+
# ip_address = ip_address_section[0].strip()
|
|
84
|
+
# mask = ip_address_section[1].strip()
|
|
85
|
+
# subnet = str(ipaddress.IPv4Network(f"{ip_address}/{mask}", strict=False))
|
|
53
86
|
if primary:
|
|
54
|
-
l3_interface_obj.ip_address = ip_address.strip()
|
|
55
|
-
l3_interface_obj.mask = mask.strip()
|
|
56
|
-
l3_interface_obj.subnet = subnet.strip()
|
|
87
|
+
l3_interface_obj.ip_address = ip_info["ip_address"].strip()
|
|
88
|
+
l3_interface_obj.mask = ip_info["mask"].strip()
|
|
89
|
+
l3_interface_obj.subnet = ip_info["subnet"].strip()
|
|
90
|
+
|
|
91
|
+
# l3_interface_obj.ip_address = ip_address.strip()
|
|
92
|
+
# l3_interface_obj.mask = mask.strip()
|
|
93
|
+
# l3_interface_obj.subnet = subnet.strip()
|
|
57
94
|
else:
|
|
58
|
-
l3_interface_obj.sec_ip_address = ip_address.strip()
|
|
59
|
-
l3_interface_obj.sec_mask = mask.strip()
|
|
60
|
-
l3_interface_obj.sec_subnet = subnet.strip()
|
|
95
|
+
l3_interface_obj.sec_ip_address = ip_info["ip_address"].strip()
|
|
96
|
+
l3_interface_obj.sec_mask = ip_info["mask"].strip()
|
|
97
|
+
l3_interface_obj.sec_subnet = ip_info["subnet"].strip()
|
|
98
|
+
|
|
99
|
+
# l3_interface_obj.sec_ip_address = ip_address.strip()
|
|
100
|
+
# l3_interface_obj.sec_mask = mask.strip()
|
|
101
|
+
# l3_interface_obj.sec_subnet = subnet.strip()
|
|
61
102
|
|
|
62
103
|
return l3_interface_obj
|
|
63
104
|
|
|
@@ -28,9 +28,10 @@ INTERFACE_REGEX = re.compile(r"interface\s(.*)", flags=re.MULTILINE)
|
|
|
28
28
|
# L3 Interface
|
|
29
29
|
DESCRIPTION_REGEX = re.compile(r"description\s(.*)", flags=re.MULTILINE)
|
|
30
30
|
IP_ADDRESS_REGEX = re.compile(r"ip\saddress\s(\d+\.\d+\.\d+\.\d+\s\d+\.\d+\.\d+\.\d+)|ip\saddress\s(\d+\.\d+\.\d+\.\d+/\d+)|ipv4\saddress\s(\d+\.\d+\.\d+\.\d+\s\d+\.\d+\.\d+\.\d+)|ipv4\saddress\s(\d+\.\d+\.\d+\.\d+/\d+)")
|
|
31
|
+
# IP_ADDRESS_REGEX = re.compile(r"ipv?4?\saddress\s(\d+\.\d+\.\d+\.\d+)(\s\d+\.\d+\.\d+\.\d+|/\d+)?", flags=re.MULTILINE)
|
|
31
32
|
IP_ADDRESS_CIDR_REGEX = re.compile(r"ip\saddress\s(\d+\.\d+\.\d+\.\d+/\d+)", flags=re.MULTILINE)
|
|
32
33
|
HELPER_ADDRESS_REGEX = re.compile(r"ip\shelper-address\s(.*)", flags=re.MULTILINE)
|
|
33
|
-
SECONDARY_IP_ADDRESS_REGEX = re.compile(r"ip\saddress\s(.*)
|
|
34
|
+
SECONDARY_IP_ADDRESS_REGEX = re.compile(r"^ip\saddress\s(.*)\ssecondary", flags=re.MULTILINE)
|
|
34
35
|
VRF_REGEX = re.compile(r"^ip\svrf\sforwarding\s(.*)|^vrf\smember\s(.*)|^vrf\sforwarding\s(.*)|^vrf\s(\S+)$", flags=re.MULTILINE)
|
|
35
36
|
|
|
36
37
|
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cisco_config_parser
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.9
|
|
4
4
|
Summary: This library is used for Network Automation involving Cisco Routers and Switch. It will parse Cisco IOS, IOS-XE, IOS-XR, and NXOS configuration file into objects and/or json format
|
|
5
5
|
Home-page: https://github.com/arezazadeh/cisco_config_parser
|
|
6
6
|
Author: Ahmad Rezazadeh
|
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/cisco_config_parser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/helper/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/helper/helper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/old_version/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/old_version/obj.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/old_version/old_parse.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/old_version/ssh.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/old_version/utils.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/parent_child/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/parser/__init__.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/parser/parser.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/parser_regex/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/separator/__init__.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser/separator/separator.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{cisco_config_parser-2.2.8 → cisco_config_parser-2.2.9}/cisco_config_parser.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|