From 8a03d9e4952060f896aa8687f03955e82ea1cb00 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 19 May 2020 23:40:02 +0500 Subject: [PATCH 1/3] Add Generic.get_fqdn script. --- sa/profiles/Generic/get_fqdn.py | 28 ++++++++++++++++++++++++++ sa/profiles/Huawei/MA5300/get_fqdn.py | 18 ++++------------- sa/profiles/Huawei/MA5600T/get_fqdn.py | 15 ++++++++++++++ sa/profiles/Huawei/VRP/get_fqdn.py | 21 +++++-------------- sa/profiles/Zyxel/DSLAM/get_fqdn.py | 15 ++++++++++++++ sa/profiles/Zyxel/MSAN/get_fqdn.py | 15 ++++++++++++++ 6 files changed, 82 insertions(+), 30 deletions(-) create mode 100644 sa/profiles/Generic/get_fqdn.py create mode 100644 sa/profiles/Huawei/MA5600T/get_fqdn.py create mode 100644 sa/profiles/Zyxel/DSLAM/get_fqdn.py create mode 100644 sa/profiles/Zyxel/MSAN/get_fqdn.py diff --git a/sa/profiles/Generic/get_fqdn.py b/sa/profiles/Generic/get_fqdn.py new file mode 100644 index 0000000000..3dfb78b3d0 --- /dev/null +++ b/sa/profiles/Generic/get_fqdn.py @@ -0,0 +1,28 @@ +# --------------------------------------------------------------------- +# Generic.get_fqdn +# --------------------------------------------------------------------- +# Copyright (C) 2007-2020 The NOC Project +# See LICENSE for details +# --------------------------------------------------------------------- + +# NOC modules +from noc.core.script.base import BaseScript +from noc.sa.interfaces.igetfqdn import IGetFQDN +from noc.core.mib import mib + + +class Script(BaseScript): + name = "Generic.get_fqdn" + interface = IGetFQDN + + SNMP_SYSNAME_OIDS = mib["SNMPv2-MIB::sysName", 0] + + def execute_snmp(self, **kwargs): + # sysName.0 + v = self.snmp.get(self.get_sysname_oid()) + if v: + return v + raise NotImplementedError + + def get_sysname_oid(self): + return self.SNMP_SYSNAME_OIDS diff --git a/sa/profiles/Huawei/MA5300/get_fqdn.py b/sa/profiles/Huawei/MA5300/get_fqdn.py index 3f4da344e6..2c8c1e9e82 100644 --- a/sa/profiles/Huawei/MA5300/get_fqdn.py +++ b/sa/profiles/Huawei/MA5300/get_fqdn.py @@ -1,7 +1,7 @@ # --------------------------------------------------------------------- # Huawei.MA5300.get_fqdn # --------------------------------------------------------------------- -# Copyright (C) 2007-2018 The NOC Project +# Copyright (C) 2007-2020 The NOC Project # See LICENSE for details # --------------------------------------------------------------------- @@ -9,7 +9,7 @@ import re # NOC modules -from noc.core.script.base import BaseScript +from noc.sa.profiles.Generic.get_fqdn import Script as BaseScript from noc.sa.interfaces.igetfqdn import IGetFQDN @@ -17,21 +17,11 @@ class Script(BaseScript): name = "Huawei.MA5300.get_fqdn" interface = IGetFQDN - rx_hostname = re.compile(r"hostname\s+(?P\S+)", re.MULTILINE) + always_prefer = "S" - def execute_snmp(self): - v = self.snmp.get("1.3.6.1.2.1.1.5.0", cached=True) - return v + rx_hostname = re.compile(r"hostname\s+(?P\S+)", re.MULTILINE) def execute_cli(self): - if self.has_snmp(): - try: - # sysName.0 - v = self.snmp.get("1.3.6.1.2.1.1.5.0", cached=True) - if v: - return v - except self.snmp.TimeOutError: - pass v = self.cli("show all-config | include hostname") match = self.re_search(self.rx_hostname, v) if match: diff --git a/sa/profiles/Huawei/MA5600T/get_fqdn.py b/sa/profiles/Huawei/MA5600T/get_fqdn.py new file mode 100644 index 0000000000..2bcc6329b1 --- /dev/null +++ b/sa/profiles/Huawei/MA5600T/get_fqdn.py @@ -0,0 +1,15 @@ +# --------------------------------------------------------------------- +# Huawei.MA5600T.get_fqdn +# --------------------------------------------------------------------- +# Copyright (C) 2007-2020 The NOC Project +# See LICENSE for details +# --------------------------------------------------------------------- + +# NOC modules +from noc.sa.profiles.Generic.get_fqdn import Script as BaseScript +from noc.sa.interfaces.igetfqdn import IGetFQDN + + +class Script(BaseScript): + name = "Huawei.MA5600T.get_fqdn" + interface = IGetFQDN diff --git a/sa/profiles/Huawei/VRP/get_fqdn.py b/sa/profiles/Huawei/VRP/get_fqdn.py index 8e2e8a4c90..dffe543d3a 100644 --- a/sa/profiles/Huawei/VRP/get_fqdn.py +++ b/sa/profiles/Huawei/VRP/get_fqdn.py @@ -1,7 +1,7 @@ # --------------------------------------------------------------------- # Huawei.VRP.get_fqdn # --------------------------------------------------------------------- -# Copyright (C) 2007-2016 The NOC Project +# Copyright (C) 2007-2020 The NOC Project # See LICENSE for details # --------------------------------------------------------------------- @@ -9,32 +9,21 @@ import re # NOC modules -from noc.core.script.base import BaseScript +from noc.sa.profiles.Generic.get_fqdn import Script as BaseScript from noc.sa.interfaces.igetfqdn import IGetFQDN class Script(BaseScript): name = "Huawei.VRP.get_fqdn" interface = IGetFQDN + + always_prefer = "S" + rx_hostname = re.compile(r"^sysname\s+(?P\S+)", re.MULTILINE) rx_hostname_lldp = re.compile(r"^System name\s+:\s*(?P\S+)", re.MULTILINE) rx_domain_name = re.compile(r"^ip domain[ \-]name\s+(?P\S+)", re.MULTILINE) - def execute_snmp(self, **kwargs): - # sysName.0 - v = self.snmp.get("1.3.6.1.2.1.1.5.0", cached=True) - if v: - return v - def execute_cli(self): - if self.has_snmp(): - try: - # sysName.0 - v = self.snmp.get("1.3.6.1.2.1.1.5.0", cached=True) - if v: - return v - except self.snmp.TimeOutError: - pass if self.has_capability("Network | LLDP"): try: v2 = self.cli("display lldp local | include System name") diff --git a/sa/profiles/Zyxel/DSLAM/get_fqdn.py b/sa/profiles/Zyxel/DSLAM/get_fqdn.py new file mode 100644 index 0000000000..fc17058712 --- /dev/null +++ b/sa/profiles/Zyxel/DSLAM/get_fqdn.py @@ -0,0 +1,15 @@ +# --------------------------------------------------------------------- +# Zyxel.MSAN.get_fqdn +# --------------------------------------------------------------------- +# Copyright (C) 2007-2020 The NOC Project +# See LICENSE for details +# --------------------------------------------------------------------- + +# NOC modules +from noc.sa.profiles.Generic.get_fqdn import Script as BaseScript +from noc.sa.interfaces.igetfqdn import IGetFQDN + + +class Script(BaseScript): + name = "Zyxel.MSAN.get_fqdn" + interface = IGetFQDN diff --git a/sa/profiles/Zyxel/MSAN/get_fqdn.py b/sa/profiles/Zyxel/MSAN/get_fqdn.py new file mode 100644 index 0000000000..fc17058712 --- /dev/null +++ b/sa/profiles/Zyxel/MSAN/get_fqdn.py @@ -0,0 +1,15 @@ +# --------------------------------------------------------------------- +# Zyxel.MSAN.get_fqdn +# --------------------------------------------------------------------- +# Copyright (C) 2007-2020 The NOC Project +# See LICENSE for details +# --------------------------------------------------------------------- + +# NOC modules +from noc.sa.profiles.Generic.get_fqdn import Script as BaseScript +from noc.sa.interfaces.igetfqdn import IGetFQDN + + +class Script(BaseScript): + name = "Zyxel.MSAN.get_fqdn" + interface = IGetFQDN -- GitLab From 25a2d29053b6c45cf99b78742132e5ddb893ee1d Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 20 May 2020 10:20:57 +0500 Subject: [PATCH 2/3] Fix typo. --- sa/profiles/Generic/get_fqdn.py | 2 +- sa/profiles/Zyxel/DSLAM/get_fqdn.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sa/profiles/Generic/get_fqdn.py b/sa/profiles/Generic/get_fqdn.py index 3dfb78b3d0..a938354abc 100644 --- a/sa/profiles/Generic/get_fqdn.py +++ b/sa/profiles/Generic/get_fqdn.py @@ -15,7 +15,7 @@ class Script(BaseScript): name = "Generic.get_fqdn" interface = IGetFQDN - SNMP_SYSNAME_OIDS = mib["SNMPv2-MIB::sysName", 0] + SNMP_SYSNAME_OID = mib["SNMPv2-MIB::sysName", 0] def execute_snmp(self, **kwargs): # sysName.0 diff --git a/sa/profiles/Zyxel/DSLAM/get_fqdn.py b/sa/profiles/Zyxel/DSLAM/get_fqdn.py index fc17058712..a5b6b8e9bb 100644 --- a/sa/profiles/Zyxel/DSLAM/get_fqdn.py +++ b/sa/profiles/Zyxel/DSLAM/get_fqdn.py @@ -11,5 +11,5 @@ from noc.sa.interfaces.igetfqdn import IGetFQDN class Script(BaseScript): - name = "Zyxel.MSAN.get_fqdn" + name = "Zyxel.DSLAM.get_fqdn" interface = IGetFQDN -- GitLab From 178e3b20eb502d4cf8888f35673aff9d83bb2ff5 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 20 May 2020 10:21:15 +0500 Subject: [PATCH 3/3] Fix typo2. --- sa/profiles/Generic/get_fqdn.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sa/profiles/Generic/get_fqdn.py b/sa/profiles/Generic/get_fqdn.py index a938354abc..c55109ee54 100644 --- a/sa/profiles/Generic/get_fqdn.py +++ b/sa/profiles/Generic/get_fqdn.py @@ -25,4 +25,4 @@ class Script(BaseScript): raise NotImplementedError def get_sysname_oid(self): - return self.SNMP_SYSNAME_OIDS + return self.SNMP_SYSNAME_OID -- GitLab