cisco-config-parser 2.2.7__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.
Files changed (68) hide show
  1. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/PKG-INFO +1 -1
  2. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/__init__.py +1 -1
  3. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/layer3_interface/l3_interface_parser.py +9 -8
  4. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/layer3_interface/l3_section_parser.py +2 -0
  5. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/parser_regex/ios_regex.py +4 -4
  6. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/setup.py +1 -1
  7. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser.egg-info/PKG-INFO +1 -1
  8. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/setup.py +1 -1
  9. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/README.md +0 -0
  10. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/cisco_config_parser.py +0 -0
  11. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/global_search/__init__.py +0 -0
  12. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/global_search/global_obj.py +0 -0
  13. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/global_search/global_parser.py +0 -0
  14. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/global_search/global_separator.py +0 -0
  15. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/global_search/ios/__init__.py +0 -0
  16. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/global_search/nxos/__init__.py +0 -0
  17. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/global_search/xr/__init__.py +0 -0
  18. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/helper/__init__.py +0 -0
  19. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/helper/help.py +0 -0
  20. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/helper/helper.py +0 -0
  21. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/layer2_interface/__init__.py +0 -0
  22. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/layer2_interface/l2_interface_obj.py +0 -0
  23. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/layer2_interface/l2_interface_parser.py +0 -0
  24. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/layer2_interface/l2_interface_separator.py +0 -0
  25. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/layer2_interface/l2_section_parser.py +0 -0
  26. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/layer3_interface/__init__.py +0 -0
  27. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/layer3_interface/l3_interface_obj.py +0 -0
  28. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/layer3_interface/l3_interface_separator.py +0 -0
  29. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/__init__.py +0 -0
  30. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/exceptions.py +0 -0
  31. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/obj.py +0 -0
  32. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/old_parse.py +0 -0
  33. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/ssh.py +0 -0
  34. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/old_version/utils.py +0 -0
  35. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/parent_child/__init__.py +0 -0
  36. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/parent_child/parent_child_obj.py +0 -0
  37. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/parent_child/parent_child_parser.py +0 -0
  38. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/parent_child/parent_child_separator.py +0 -0
  39. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/parser/__init__.py +0 -0
  40. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/parser/parser.py +0 -0
  41. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/parser_regex/__init__.py +0 -0
  42. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/parser_regex/common_regex.py +0 -0
  43. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/parser_regex/nxos_regex.py +0 -0
  44. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/__init__.py +0 -0
  45. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/ios/__init__.py +0 -0
  46. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/ios/rtp_bgp.py +0 -0
  47. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/ios/rtp_eigtp.py +0 -0
  48. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/ios/rtp_ios_rtp_obj.py +0 -0
  49. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/ios/rtp_ospf.py +0 -0
  50. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/ios/rtp_static.py +0 -0
  51. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/nxos/__init__.py +0 -0
  52. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/nxos/rtp_bgp.py +0 -0
  53. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/nxos/rtp_nxos_rtp_obj.py +0 -0
  54. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/nxos/rtp_ospf.py +0 -0
  55. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/nxos/rtp_static.py +0 -0
  56. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/nxos/rtp_vxlan.py +0 -0
  57. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/utils/__init__.py +0 -0
  58. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/utils/rtp_ios_separator.py +0 -0
  59. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/utils/rtp_nxos_separator.py +0 -0
  60. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/utils/utils.py +0 -0
  61. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/routing_protocol/xr/__init__.py +0 -0
  62. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/separator/__init__.py +0 -0
  63. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser/separator/separator.py +0 -0
  64. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser.egg-info/SOURCES.txt +0 -0
  65. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser.egg-info/dependency_links.txt +0 -0
  66. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/cisco_config_parser.egg-info/top_level.txt +0 -0
  67. {cisco_config_parser-2.2.7 → cisco_config_parser-2.2.8}/pyproject.toml +0 -0
  68. {cisco_config_parser-2.2.7 → 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.7
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,7 +6,7 @@ _ALL_ = [
6
6
  "ConfigParserOld",
7
7
  ]
8
8
 
9
- __version__ = "2.2.7"
9
+ __version__ = "2.2.8"
10
10
  __author__ = "Ahmad Rezazadeh"
11
11
  __email__ = "ahmad@klevernet.io"
12
12
  __url__ = "klevernet.ai"
@@ -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(l3_interface)
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(l3_interface)
58
- description_regex = DESCRIPTION_REGEX.search(l3_interface)
59
- ip_address_regex = IP_ADDRESS_REGEX.search(l3_interface)
60
- vrf_regex = VRF_REGEX.search(l3_interface)
61
- helper_address_regex = HELPER_ADDRESS_REGEX.search(l3_interface)
62
- sec_ip_address_regex = SECONDARY_IP_ADDRESS_REGEX.search(l3_interface)
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=l3_interface)
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
 
@@ -28,10 +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_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(.*)|vrf\smember\s(.*)|vrf\s(.*)")
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
 
@@ -3,6 +3,6 @@ from setuptools import setup, find_packages
3
3
 
4
4
  setup(
5
5
  name='cisco_config_parser',
6
- version='2.2.7',
6
+ version='2.2.8',
7
7
  packages=find_packages(),
8
8
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cisco_config_parser
3
- Version: 2.2.7
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
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages
3
3
 
4
4
  HERE = pathlib.Path(__file__).parent
5
5
 
6
- VERSION = '2.2.7'
6
+ VERSION = '2.2.8'
7
7
  PACKAGE_NAME = 'cisco_config_parser'
8
8
  AUTHOR = 'Ahmad Rezazadeh'
9
9
  AUTHOR_EMAIL = 'ahmad@klevernet.io'