From 404ab78ecf163ba6a0faffb73a4cd4e6226f6ae4 Mon Sep 17 00:00:00 2001 From: Andrey Vertiprahov Date: Thu, 14 May 2020 11:09:51 +0000 Subject: [PATCH 1/2] Merge branch 'noc-1231' into 'master' noc/noc#1231 Qtech.QSW.get_version. Fix version regex. See merge request noc/noc!3599 (cherry picked from commit 6d25d5ad8e04451c4f7a6f89502df5bc1878b716) 97d95b32 Qtech.QSW.get_version. Fix version regex. --- sa/profiles/Qtech/QSW/get_version.py | 56 ++++++++++++++-------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/sa/profiles/Qtech/QSW/get_version.py b/sa/profiles/Qtech/QSW/get_version.py index c6c9df165a..212e505524 100644 --- a/sa/profiles/Qtech/QSW/get_version.py +++ b/sa/profiles/Qtech/QSW/get_version.py @@ -18,9 +18,10 @@ class Script(BaseScript): name = "Qtech.QSW.get_version" interface = IGetVersion cache = True + always_prefer = "S" rx_plat_ver = re.compile( - r"^software version\s+:\s+QTECH\s+(?P\S+)\s+" r"(?P\S+)$", re.MULTILINE + r"^software version\s+:\s*(QTECH|)\s+(?P\S+)\s+(?P\S+)$", re.MULTILINE ) rx_bootprom = re.compile(r"^bootrom version\s+:\s+V+(?P\S+)$", re.MULTILINE) rx_hardware = re.compile(r"^hardware version\s+:\s+V+(?P\S+)$", re.MULTILINE) @@ -34,35 +35,32 @@ class Script(BaseScript): r"^\s+(?:Device serial number\s|Serial No\.:)(?P\d\S+)$", re.MULTILINE ) - def execute(self): + def execute_snmp(self, **kwargs): # Try SNMP first - if self.has_snmp(): - try: - platform = self.snmp.get("1.3.6.1.4.1.27514.1.2.1.1.2.15.0", cached=True) - if not platform: - raise self.snmp.TimeOutError - if " " in platform: - platform = platform.split(" ")[1] - version = self.snmp.get("1.3.6.1.4.1.27514.1.2.1.1.2.2.0", cached=True) - version = version.split(" ")[2] - bootprom = self.snmp.get("1.3.6.1.4.1.27514.1.2.1.1.2.9.0", cached=True) - bootprom = bootprom.split("V")[1] - hardware = self.snmp.get("1.3.6.1.4.1.27514.1.2.1.1.2.8.0", cached=True) - hardware = hardware.split("V")[1] - serial = self.snmp.get("1.3.6.1.4.1.27514.1.2.1.1.2.19.0", cached=True) - return { - "vendor": "Qtech", - "platform": platform, - "version": version, - "attributes": { - "Boot PROM": bootprom, - "HW version": hardware, - "Serial Number": serial, - }, - } - except self.snmp.TimeOutError: - pass + platform = self.snmp.get("1.3.6.1.4.1.27514.1.2.1.1.2.15.0", cached=True) + if not platform: + raise self.snmp.TimeOutError + if " " in platform: + platform = platform.split(" ")[1] + version = self.snmp.get("1.3.6.1.4.1.27514.1.2.1.1.2.2.0", cached=True) + version = version.split(" ") + if platform == "Switch" and len(version) == 2: + platform, version = version + else: + version = version[2] + bootprom = self.snmp.get("1.3.6.1.4.1.27514.1.2.1.1.2.9.0", cached=True) + bootprom = bootprom.split("V")[1] + hardware = self.snmp.get("1.3.6.1.4.1.27514.1.2.1.1.2.8.0", cached=True) + hardware = hardware.split("V")[1] + serial = self.snmp.get("1.3.6.1.4.1.27514.1.2.1.1.2.19.0", cached=True) + return { + "vendor": "Qtech", + "platform": platform, + "version": version, + "attributes": {"Boot PROM": bootprom, "HW version": hardware, "Serial Number": serial,}, + } + def execute_cli(self, **kwargs): # Fallback to CLI ver = self.cli("show version", cached=True) match = self.rx_plat_ver.search(ver) @@ -73,7 +71,7 @@ class Script(BaseScript): hardware = self.re_search(self.rx_hardware, ver) serial = self.re_search(self.rx_serial, ver) else: - match = self.rx_plat1.search(ver) + # match = self.rx_plat1.search(ver) platform = self.re_search(self.rx_plat1, ver).group("platform") version = self.re_search(self.rx_soft1, ver).group("version") bootprom = self.re_search(self.rx_bootprom1, ver) -- GitLab From 2f66bbf7c527ef9b825904a82ab034f95c0ddb98 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 14 May 2020 16:35:55 +0500 Subject: [PATCH 2/2] Fix flake. --- sa/profiles/Qtech/QSW/get_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sa/profiles/Qtech/QSW/get_version.py b/sa/profiles/Qtech/QSW/get_version.py index 212e505524..25d61f417b 100644 --- a/sa/profiles/Qtech/QSW/get_version.py +++ b/sa/profiles/Qtech/QSW/get_version.py @@ -57,7 +57,7 @@ class Script(BaseScript): "vendor": "Qtech", "platform": platform, "version": version, - "attributes": {"Boot PROM": bootprom, "HW version": hardware, "Serial Number": serial,}, + "attributes": {"Boot PROM": bootprom, "HW version": hardware, "Serial Number": serial}, } def execute_cli(self, **kwargs): -- GitLab