Skip to content

Commit 34dd7f4

Browse files
authored
Add rad etx config parser (#693)
* initial pass at rad etx config parser * add banner end * fix 'exit' in config parsing * fix parser and testing * add more feature tests with nesting * last fix for is_exit method * add exit back to parsing for proper compliance config pasting
1 parent d5499e6 commit 34dd7f4

File tree

14 files changed

+3724
-0
lines changed

14 files changed

+3724
-0
lines changed

changes/692.added

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add Rad ETX config parser.

docs/dev/include_parser_list.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,6 @@
2222
| nokia_sros | netutils.config.parser.NokiaConfigParser |
2323
| nvidia_onyx | netutils.config.parser.NvidiaOnyxConfigParser |
2424
| paloalto_panos | netutils.config.parser.PaloAltoNetworksConfigParser |
25+
| rad_etx | netutils.config.parser.RadEtxConfigParser |
2526
| ruckus_fastiron | netutils.config.parser.FastironConfigParser |
2627
| ubiquiti_airos | netutils.config.parser.UbiquitiAirOSConfigParser |

docs/user/lib_mapper/netutilsparser.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,6 @@
2222
| nokia_sros || nokia_sros |
2323
| nvidia_onyx || nvidia_onyx |
2424
| paloalto_panos || paloalto_panos |
25+
| rad_etx || rad_etx |
2526
| ruckus_fastiron || ruckus_fastiron |
2627
| ubiquiti_airos || ubiquiti_airos |

docs/user/lib_mapper/netutilsparser_reverse.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,6 @@
2323
| nokia_sros || nokia_sros |
2424
| nvidia_onyx || nvidia_onyx |
2525
| paloalto_panos || paloalto_panos |
26+
| rad_etx || rad_etx |
2627
| ruckus_fastiron || ruckus_fastiron |
2728
| ubiquiti_airos || ubiquiti_airos |

netutils/config/compliance.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"nokia_sros": parser.NokiaConfigParser,
3030
"nvidia_onyx": parser.NvidiaOnyxConfigParser,
3131
"paloalto_panos": parser.PaloAltoNetworksConfigParser,
32+
"rad_etx": parser.RadEtxConfigParser,
3233
"ruckus_fastiron": parser.FastironConfigParser,
3334
"ubiquiti_airos": parser.UbiquitiAirOSConfigParser,
3435
}

netutils/config/parser.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1862,3 +1862,32 @@ def build_config_relationship(self) -> t.List[ConfigLine]:
18621862
self.config_lines.append(ConfigLine(line, ()))
18631863

18641864
return self.config_lines
1865+
1866+
1867+
class RadEtxConfigParser(BaseSpaceConfigParser):
1868+
"""Rad ETX config parser."""
1869+
1870+
comment_chars: t.List[str] = ["#", "configure", "admin", "file"]
1871+
banner_start: t.List[str] = []
1872+
1873+
@property
1874+
def banner_end(self) -> str:
1875+
"""Demarcate End of Banner char(s)."""
1876+
raise NotImplementedError("Rad ETX platform doesn't have a banner.")
1877+
1878+
@property
1879+
def config_lines_only(self) -> str:
1880+
"""Remove spaces and comments from config lines.
1881+
1882+
Returns:
1883+
The non-space and non-comment lines from ``config``.
1884+
"""
1885+
if self._config is None:
1886+
config_lines = (
1887+
line.removeprefix(" ") # Rad ETX uses 8 spaces for initial indentation
1888+
for line in self.config.splitlines()
1889+
# if line and not self.is_comment(line) and not line.isspace() and not self.is_exit_or_exit_all(line)
1890+
if line and not self.is_comment(line) and not line.isspace()
1891+
)
1892+
self._config = "\n".join(config_lines)
1893+
return self._config

netutils/data_files/oui_mappings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
"""Dictionary object to store OUI information."""
2+
23
# pylint: disable=too-many-lines
34
import typing
45

netutils/lib_mapper.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,7 @@
425425
"nokia_sros": "nokia_sros",
426426
"nvidia_onyx": "nvidia_onyx",
427427
"paloalto_panos": "paloalto_panos",
428+
"rad_etx": "rad_etx",
428429
"ruckus_fastiron": "ruckus_fastiron",
429430
"ubiquiti_airos": "ubiquiti_airos",
430431
}
@@ -596,6 +597,7 @@
596597
"nokia_sros": "nokia_sros",
597598
"nvidia_onyx": "nvidia_onyx",
598599
"paloalto_panos": "paloalto_panos",
600+
"rad_etx": "rad_etx",
599601
"ruckus_fastiron": "ruckus_fastiron",
600602
"ubiquiti_airos": "ubiquiti_airos",
601603
}

0 commit comments

Comments
 (0)