diff --git a/sa/profiles/Generic/get_fqdn.py b/sa/profiles/Generic/get_fqdn.py new file mode 100644 index 0000000000000000000000000000000000000000..c55109ee5415ea04bdd943baa47b5297734f43ac --- /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_OID = 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_OID diff --git a/sa/profiles/Huawei/MA5300/get_fqdn.py b/sa/profiles/Huawei/MA5300/get_fqdn.py index 3f4da344e60d9462789323ae55f2dfa582afcdcb..2c8c1e9e822be2b281a793f2eaefd53b47feed20 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 0000000000000000000000000000000000000000..2bcc6329b1a8356b914a609a90f7f008337eecee --- /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 8e2e8a4c90f6eb1cde322c84488bf7099bbd9e77..dffe543d3a00f2fb8dc44aa2bec5aca99cfa136a 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 0000000000000000000000000000000000000000..a5b6b8e9bb7f1e062f2cf773fb28458764078120 --- /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.DSLAM.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 0000000000000000000000000000000000000000..fc170587124450093ffd7c419b75d7b3d91b5564 --- /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