From 91998b6042b3b1df6158d14043778c7be09ca1d1 Mon Sep 17 00:00:00 2001 From: Aleksandr Eliseev Date: Wed, 15 Apr 2026 11:30:08 +0300 Subject: [PATCH] adding SNR vendor --- annet/annlib/netdev/devdb/data/devdb.json | 7 +++- annet/vendors/__init__.py | 1 + annet/vendors/library/snr.py | 41 +++++++++++++++++++++++ annet/vendors/tabparser.py | 8 +++++ 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 annet/vendors/library/snr.py diff --git a/annet/annlib/netdev/devdb/data/devdb.json b/annet/annlib/netdev/devdb/data/devdb.json index ff925d27..9c4b6be0 100644 --- a/annet/annlib/netdev/devdb/data/devdb.json +++ b/annet/annlib/netdev/devdb/data/devdb.json @@ -206,5 +206,10 @@ "B4com.CS4100": "^[Bb]4com B4T-CS41.*", "B4com.CS4132U": "^[Bb]4com B4T-CS4132U.*", "B4com.CS4148Q": "^[Bb]4com B4T-CS4148Q.*", - "B4com.CS4164U": "^[Bb]4com B4T-CS4164U.*" + "B4com.CS4164U": "^[Bb]4com B4T-CS4164U.*", + + "SNR": "^SNR", + "SNR.S5110G": "[-\\s]S5110G", + "SNR.S5210G": "[-\\s]S5210G", + "SNR.S5310G": "[-\\s]S5310G" } diff --git a/annet/vendors/__init__.py b/annet/vendors/__init__.py index 4b336abe..6637cd1f 100644 --- a/annet/vendors/__init__.py +++ b/annet/vendors/__init__.py @@ -18,6 +18,7 @@ pc, ribbon, routeros, + snr, ) from .registry import Registry, registry diff --git a/annet/vendors/library/snr.py b/annet/vendors/library/snr.py new file mode 100644 index 00000000..3cfc5609 --- /dev/null +++ b/annet/vendors/library/snr.py @@ -0,0 +1,41 @@ +from annet.annlib.command import Command, CommandList +from annet.annlib.netdev.views.hardware import HardwareView +from annet.vendors.base import AbstractVendor +from annet.vendors.registry import registry +from annet.vendors.tabparser import SNRFormatter + + +@registry.register +class SNRVendor(AbstractVendor): + NAME = "snr" + + def apply(self, hw: HardwareView, do_commit: bool, do_finalize: bool, path: str) -> tuple[CommandList, CommandList]: + before, after = CommandList(), CommandList() + + before.add_cmd(Command("conf t")) + after.add_cmd(Command("exit")) + if do_finalize: + after.add_cmd(Command("copy running-config startup-config", timeout=40)) + + return before, after + + def match(self) -> list[str]: + return ["SNR"] + + @property + def reverse(self) -> str: + return "no" + + @property + def hardware(self) -> HardwareView: + return HardwareView("SNR") + + def svi_name(self, num: int) -> str: + return f"vlan{num}" + + def make_formatter(self, **kwargs) -> SNRFormatter: + return SNRFormatter(**kwargs) + + @property + def exit(self) -> str: + return "exit" diff --git a/annet/vendors/tabparser.py b/annet/vendors/tabparser.py index 319c73dd..a739dd37 100644 --- a/annet/vendors/tabparser.py +++ b/annet/vendors/tabparser.py @@ -847,6 +847,14 @@ def cmd_paths(self, patch, _prev=""): return commands +class SNRFormatter(BlockExitFormatter): + def __init__(self, indent=" "): + super().__init__("exit", indent) + + def split(self, text): + return self.split_remove_spaces(text) + + # ====