cisco-config-parser 2.2.6__tar.gz → 2.2.8__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.6 → cisco_config_parser-2.2.8}/PKG-INFO +1 -1
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/__init__.py +3 -3
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/layer3_interface/l3_interface_parser.py +9 -8
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/layer3_interface/l3_section_parser.py +2 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/parser_regex/ios_regex.py +5 -5
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/setup.py +1 -1
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser.egg-info/PKG-INFO +1 -1
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/setup.py +1 -1
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/README.md +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/cisco_config_parser.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/global_search/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/global_search/global_obj.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/global_search/global_parser.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/global_search/global_separator.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/global_search/ios/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/global_search/nxos/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/global_search/xr/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/helper/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/helper/help.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/helper/helper.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/layer2_interface/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/layer2_interface/l2_interface_obj.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/layer2_interface/l2_interface_parser.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/layer2_interface/l2_interface_separator.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/layer2_interface/l2_section_parser.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/layer3_interface/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/layer3_interface/l3_interface_obj.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/layer3_interface/l3_interface_separator.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/exceptions.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/obj.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/old_parse.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/ssh.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/utils.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/parent_child/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/parent_child/parent_child_obj.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/parent_child/parent_child_parser.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/parent_child/parent_child_separator.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/parser/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/parser/parser.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/parser_regex/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/parser_regex/common_regex.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/parser_regex/nxos_regex.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/ios/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/ios/rtp_bgp.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/ios/rtp_eigtp.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/ios/rtp_ios_rtp_obj.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/ios/rtp_ospf.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/ios/rtp_static.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/nxos/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/nxos/rtp_bgp.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/nxos/rtp_nxos_rtp_obj.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/nxos/rtp_ospf.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/nxos/rtp_static.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/nxos/rtp_vxlan.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/utils/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/utils/rtp_ios_separator.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/utils/rtp_nxos_separator.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/utils/utils.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/xr/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/separator/__init__.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/separator/separator.py +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser.egg-info/SOURCES.txt +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser.egg-info/dependency_links.txt +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser.egg-info/top_level.txt +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/pyproject.toml +0 -0
- {cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/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.8
|
|
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
|
|
@@ -6,12 +6,12 @@ _ALL_ = [
|
|
|
6
6
|
"ConfigParserOld",
|
|
7
7
|
]
|
|
8
8
|
|
|
9
|
-
__version__ = "2.2.
|
|
9
|
+
__version__ = "2.2.8"
|
|
10
10
|
__author__ = "Ahmad Rezazadeh"
|
|
11
11
|
__email__ = "ahmad@klevernet.io"
|
|
12
12
|
__url__ = "klevernet.ai"
|
|
13
13
|
__license__ = "MIT"
|
|
14
|
-
__description__ = "
|
|
14
|
+
__description__ = "library to parse and automate Cisco configuration files"
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
__all__ =
|
|
17
|
+
__all__ = 'ConfigParser', 'ConfigParserOld'
|
|
@@ -41,25 +41,26 @@ class L3InterfaceParser:
|
|
|
41
41
|
|
|
42
42
|
for l3_interface in l3_interfaces:
|
|
43
43
|
|
|
44
|
+
l3_interface_stripped = "\n".join([line.strip() for line in l3_interface.split("\n") if line.strip()])
|
|
44
45
|
# create an instance of the L3Interface class
|
|
45
46
|
l3_intf_cls = L3Interface()
|
|
46
47
|
|
|
47
48
|
# split the l3_interface section into lines
|
|
48
49
|
# remove the first line which is the interface name
|
|
49
50
|
# and store the rest of the lines in the children attribute of the l3_intf_cls object
|
|
50
|
-
l3_intf_split_line = SPLIT_ON_LINE.split(
|
|
51
|
+
l3_intf_split_line = SPLIT_ON_LINE.split(l3_interface_stripped)
|
|
51
52
|
l3_intf_cls.children = [
|
|
52
53
|
line.strip() for line in l3_intf_split_line
|
|
53
54
|
if line and not line.startswith("interface")
|
|
54
55
|
]
|
|
55
56
|
|
|
56
57
|
# search for the regex in the l3_interface section
|
|
57
|
-
interface_regex = INTERFACE_MULTILINE_REGEX.search(
|
|
58
|
-
description_regex = DESCRIPTION_REGEX.search(
|
|
59
|
-
ip_address_regex = IP_ADDRESS_REGEX.search(
|
|
60
|
-
vrf_regex = VRF_REGEX.search(
|
|
61
|
-
helper_address_regex = HELPER_ADDRESS_REGEX.search(
|
|
62
|
-
sec_ip_address_regex = SECONDARY_IP_ADDRESS_REGEX.search(
|
|
58
|
+
interface_regex = INTERFACE_MULTILINE_REGEX.search(l3_interface_stripped)
|
|
59
|
+
description_regex = DESCRIPTION_REGEX.search(l3_interface_stripped)
|
|
60
|
+
ip_address_regex = IP_ADDRESS_REGEX.search(l3_interface_stripped)
|
|
61
|
+
vrf_regex = VRF_REGEX.search(l3_interface_stripped)
|
|
62
|
+
helper_address_regex = HELPER_ADDRESS_REGEX.search(l3_interface_stripped)
|
|
63
|
+
sec_ip_address_regex = SECONDARY_IP_ADDRESS_REGEX.search(l3_interface_stripped)
|
|
63
64
|
|
|
64
65
|
|
|
65
66
|
# if the regex is found, parse the line and store the value in the l3_intf_cls object
|
|
@@ -82,7 +83,7 @@ class L3InterfaceParser:
|
|
|
82
83
|
l3_intf_cls = _L3SectionParser._parse_vrf_line(vrf_line_regex=vrf_regex, l3_interface_obj=l3_intf_cls)
|
|
83
84
|
|
|
84
85
|
if helper_address_regex:
|
|
85
|
-
l3_intf_cls = _L3SectionParser._parse_helper_address_line(l3_interface_obj=l3_intf_cls, section=
|
|
86
|
+
l3_intf_cls = _L3SectionParser._parse_helper_address_line(l3_interface_obj=l3_intf_cls, section=l3_interface_stripped)
|
|
86
87
|
|
|
87
88
|
if interface_regex:
|
|
88
89
|
l3_intf_cls.name = interface_regex.group(1).strip()
|
|
@@ -73,7 +73,9 @@ class _L3SectionParser:
|
|
|
73
73
|
vrf_line_regex = kwargs.get("vrf_line_regex")
|
|
74
74
|
l3_interface_obj = kwargs.get("l3_interface_obj")
|
|
75
75
|
vrf = vrf_line_regex.groups()
|
|
76
|
+
|
|
76
77
|
vrf = [vrf_group for vrf_group in vrf if vrf_group][0]
|
|
78
|
+
|
|
77
79
|
l3_interface_obj.vrf = vrf.strip()
|
|
78
80
|
return l3_interface_obj
|
|
79
81
|
|
|
@@ -27,11 +27,11 @@ INTERFACE_REGEX = re.compile(r"interface\s(.*)", flags=re.MULTILINE)
|
|
|
27
27
|
|
|
28
28
|
# L3 Interface
|
|
29
29
|
DESCRIPTION_REGEX = re.compile(r"description\s(.*)", flags=re.MULTILINE)
|
|
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+)")
|
|
31
|
-
IP_ADDRESS_CIDR_REGEX = re.compile(r"ip\saddress\s(\d+\.\d+\.\d+\.\d+/\d+)")
|
|
32
|
-
HELPER_ADDRESS_REGEX = re.compile(r"ip\shelper-address\s(.*)")
|
|
33
|
-
SECONDARY_IP_ADDRESS_REGEX = re.compile(r"ip\saddress\s(.*)secondary")
|
|
34
|
-
VRF_REGEX = re.compile(r"ip\svrf\sforwarding\s(.*)
|
|
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_CIDR_REGEX = re.compile(r"ip\saddress\s(\d+\.\d+\.\d+\.\d+/\d+)", flags=re.MULTILINE)
|
|
32
|
+
HELPER_ADDRESS_REGEX = re.compile(r"ip\shelper-address\s(.*)", flags=re.MULTILINE)
|
|
33
|
+
SECONDARY_IP_ADDRESS_REGEX = re.compile(r"ip\saddress\s(.*)secondary", flags=re.MULTILINE)
|
|
34
|
+
VRF_REGEX = re.compile(r"^ip\svrf\sforwarding\s(.*)|^vrf\smember\s(.*)|^vrf\sforwarding\s(.*)|^vrf\s(\S+)$", flags=re.MULTILINE)
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
|
{cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/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.8
|
|
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.6 → cisco_config_parser-2.2.8}/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.6 → cisco_config_parser-2.2.8}/cisco_config_parser/helper/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/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.6 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/obj.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/old_parse.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/ssh.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/utils.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/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.6 → cisco_config_parser-2.2.8}/cisco_config_parser/parser/__init__.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/parser/parser.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/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.6 → cisco_config_parser-2.2.8}/cisco_config_parser/separator/__init__.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser/separator/separator.py
RENAMED
|
File without changes
|
{cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{cisco_config_parser-2.2.6 → cisco_config_parser-2.2.8}/cisco_config_parser.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|