From f1244dc7659a3ca3cec31b135114af01afaf3f8a Mon Sep 17 00:00:00 2001 From: Patrick Ogenstad Date: Fri, 13 Dec 2019 07:36:48 +0100 Subject: [PATCH] Add support for Extreme and Procurve --- .travis.yml | 1 + lib/nelsnmp/hostinfo/collect.py | 4 ++++ lib/nelsnmp/vendors/extreme/__init__.py | 0 lib/nelsnmp/vendors/extreme/versions.py | 14 ++++++++++++++ lib/nelsnmp/vendors/hpe/__init__.py | 0 lib/nelsnmp/vendors/hpe/versions.py | 13 +++++++++++++ lib/nelsnmp/vendors/mappings.py | 2 ++ tests/valid_hostinfo_files/extreme.yml | 8 ++++++++ tests/valid_hostinfo_files/hpe.yml | 8 ++++++++ tox.ini | 2 +- 10 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 lib/nelsnmp/vendors/extreme/__init__.py create mode 100644 lib/nelsnmp/vendors/extreme/versions.py create mode 100644 lib/nelsnmp/vendors/hpe/__init__.py create mode 100644 lib/nelsnmp/vendors/hpe/versions.py create mode 100644 tests/valid_hostinfo_files/extreme.yml create mode 100644 tests/valid_hostinfo_files/hpe.yml diff --git a/.travis.yml b/.travis.yml index aa1aff3..a346581 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,7 @@ language: python python: - 2.7 - 3.6 + - 3.7 install: - pip install tox-travis diff --git a/lib/nelsnmp/hostinfo/collect.py b/lib/nelsnmp/hostinfo/collect.py index fbbc0b5..235ae36 100644 --- a/lib/nelsnmp/hostinfo/collect.py +++ b/lib/nelsnmp/hostinfo/collect.py @@ -3,6 +3,8 @@ from nelsnmp.vendors.arista.versions import AristaVersion from nelsnmp.vendors.cisco.versions import CiscoVersion from nelsnmp.vendors.ericsson.versions import EricssonVersion +from nelsnmp.vendors.extreme.versions import ExtremeVersion +from nelsnmp.vendors.hpe.versions import HpeVersion from nelsnmp.vendors.huawei.versions import HuaweiVersion from nelsnmp.vendors.juniper.versions import JuniperVersion from nelsnmp.vendors.metamako.versions import MetamakoVersion @@ -22,6 +24,8 @@ def get_device_version(**kwargs): vendors['arista'] = AristaVersion vendors['cisco'] = CiscoVersion vendors['ericsson'] = EricssonVersion + vendors['extreme'] = ExtremeVersion + vendors['hpe'] = HpeVersion vendors['huawei'] = HuaweiVersion vendors['juniper'] = JuniperVersion vendors['metamako'] = MetamakoVersion diff --git a/lib/nelsnmp/vendors/extreme/__init__.py b/lib/nelsnmp/vendors/extreme/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lib/nelsnmp/vendors/extreme/versions.py b/lib/nelsnmp/vendors/extreme/versions.py new file mode 100644 index 0000000..d6b89a0 --- /dev/null +++ b/lib/nelsnmp/vendors/extreme/versions.py @@ -0,0 +1,14 @@ +from nelsnmp.hostinfo.version import DeviceVersion + + +class ExtremeVersion(DeviceVersion): + + def _get_version(self): + for line in self._descriptions: + if 'ExtremeXOS' in line: + self.os = 'extremexos' + parts = line.split() + if len(parts) > 4: + if parts[2] == 'version': + self.version = '{} {}'.format(parts[3], parts[4]) + diff --git a/lib/nelsnmp/vendors/hpe/__init__.py b/lib/nelsnmp/vendors/hpe/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lib/nelsnmp/vendors/hpe/versions.py b/lib/nelsnmp/vendors/hpe/versions.py new file mode 100644 index 0000000..6e44713 --- /dev/null +++ b/lib/nelsnmp/vendors/hpe/versions.py @@ -0,0 +1,13 @@ +from nelsnmp.hostinfo.version import DeviceVersion + + +class HpeVersion(DeviceVersion): + + def _get_version(self): + for line in self._descriptions: + if 'ProCurve' in line: + self.os = 'procurve' + parts = line.split() + if len(parts) > 5: + if parts[4] == 'revision': + self.version = parts[5].split(',')[0] diff --git a/lib/nelsnmp/vendors/mappings.py b/lib/nelsnmp/vendors/mappings.py index 026bffc..67d8379 100644 --- a/lib/nelsnmp/vendors/mappings.py +++ b/lib/nelsnmp/vendors/mappings.py @@ -1,6 +1,8 @@ vendor_map = {} vendor_map['9'] = 'cisco' +vendor_map['11'] = 'hpe' +vendor_map['1916'] = 'extreme' vendor_map['2011'] = 'huawei' vendor_map['2352'] = 'ericsson' vendor_map['2636'] = 'juniper' diff --git a/tests/valid_hostinfo_files/extreme.yml b/tests/valid_hostinfo_files/extreme.yml new file mode 100644 index 0000000..e896e5f --- /dev/null +++ b/tests/valid_hostinfo_files/extreme.yml @@ -0,0 +1,8 @@ +--- +extreme01: + sysobjectid: 1.3.6.1.4.1.1916.2.93 + description: 'ExtremeXOS (Stack) version 15.3.1.4 v1531b4-patch1-33 by release-manager' + vendor: extreme + os: extremexos + version: 15.3.1.4 v1531b4-patch1-33 + diff --git a/tests/valid_hostinfo_files/hpe.yml b/tests/valid_hostinfo_files/hpe.yml new file mode 100644 index 0000000..26b86d5 --- /dev/null +++ b/tests/valid_hostinfo_files/hpe.yml @@ -0,0 +1,8 @@ +--- +procurve01: + sysobjectid: 1.3.6.1.4.1.11.2.3.7.11.62 + description: 'ProCurve j9020a Switch 2510-48, revision U.11.57, ROM R.10.06 (/sw/code/build/dosx' + vendor: hpe + os: procurve + version: U.11.57 + diff --git a/tox.ini b/tox.ini index c0c7929..0d2ea35 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py27, py36 +envlist = py27, py36, py37 [testenv] deps = pytest