diff --git a/docs/ru/mkdocs.yml b/docs/ru/mkdocs.yml index 3b8ad0937cc0387db83e17f1694768d430207a0d..6e31e62226ac7d4997f1e6b608a1001fcb4c59bf 100644 --- a/docs/ru/mkdocs.yml +++ b/docs/ru/mkdocs.yml @@ -15,7 +15,8 @@ nav: - Overview: user/howto/index.md - Loading GIS data with etl command: user/howto/fias/index.md - Background: - - Overview: user/background/index.md + - Обзор: user/background/index.md + - Работа с конфигурацией оборудования: user/background/configuration-management/index.md - Reference: - Overview: user/reference/index.md - Concepts: @@ -26,12 +27,13 @@ nav: - Container: user/reference/concepts/container/index.md - Dialplan: user/reference/concepts/dialplan/index.md - DNS Zone: user/reference/concepts/dns-zone/index.md - - External Storage: user/reference/concepts/external-storage/index.md + - Dynamic Profile Classification: user/reference/concepts/dynamic-classification-policy/index.md + - Внешнее хранилище: user/reference/concepts/external-storage/index.md - Group: user/reference/concepts/group/index.md - Handler: user/reference/concepts/handler/index.md - - Interface: user/reference/concepts/interface/index.md - - Interface Profile: user/reference/concepts/interface-profile/index.md - - Label: user/reference/concepts/label/index.md + - Интерфейс: user/reference/concepts/interface/index.md + - Профиль интерфейса: user/reference/concepts/interface-profile/index.md + - Метка: user/reference/concepts/label/index.md - Managed Object: user/reference/concepts/managed-object/index.md - Managed Object Profile: user/reference/concepts/managed-object-profile/index.md - Network Segment: user/reference/concepts/network-segment/index.md diff --git a/sa/profiles/EdgeCore/ES/get_lldp_neighbors.py b/sa/profiles/EdgeCore/ES/get_lldp_neighbors.py index 8a0fdb8d8f04c59b871814d540b442fec7047b08..1aa290be4686d6a2d4e5e54dd309512d32d630d8 100644 --- a/sa/profiles/EdgeCore/ES/get_lldp_neighbors.py +++ b/sa/profiles/EdgeCore/ES/get_lldp_neighbors.py @@ -11,10 +11,9 @@ import re import binascii # NOC modules -from noc.core.script.base import BaseScript +from noc.sa.profiles.Generic.get_lldp_neighbors import Script as BaseScript from noc.sa.interfaces.igetlldpneighbors import IGetLLDPNeighbors, MACAddressParameter from noc.core.mib import mib -from noc.core.mac import MAC from noc.core.lldp import ( LLDP_CHASSIS_SUBTYPE_MAC, LLDP_CHASSIS_SUBTYPE_LOCAL, @@ -38,6 +37,8 @@ class Script(BaseScript): name = "EdgeCore.ES.get_lldp_neighbors" interface = IGetLLDPNeighbors + always_prefer = "S" + rx_localport = re.compile( r"^\s*Eth(| )(.+?)\s*(\|)MAC Address\s+(\S+).+?$", re.MULTILINE | re.DOTALL ) @@ -94,52 +95,6 @@ class Script(BaseScript): raise NotImplementedError() return r - def execute_snmp(self): - neighb = ( - "remote_chassis_id_subtype", - "remote_chassis_id", - "remote_port_subtype", - "remote_port", - "remote_port_description", - "remote_system_name", - ) - r = [] - local_ports = self.get_local_iface() - if self.has_snmp(): - for v in self.snmp.get_tables( - [ - mib["LLDP-MIB::lldpRemLocalPortNum"], - mib["LLDP-MIB::lldpRemChassisIdSubtype"], - mib["LLDP-MIB::lldpRemChassisId"], - mib["LLDP-MIB::lldpRemPortIdSubtype"], - mib["LLDP-MIB::lldpRemPortId"], - mib["LLDP-MIB::lldpRemPortDesc"], - mib["LLDP-MIB::lldpRemSysName"], - ], - bulk=True, - ): - if v: - neigh = dict(zip(neighb, v[2:])) - if neigh["remote_chassis_id_subtype"] == 4: - neigh["remote_chassis_id"] = MAC(neigh["remote_chassis_id"]) - if neigh["remote_port_subtype"] == 3: - try: - neigh["remote_port"] = MAC(neigh["remote_port"]) - except ValueError: - neigh["remote_port"] = neigh["remote_port"].strip(smart_text(" \x00")) - self.logger.warning( - "Bad MAC address on Remote Neighbor: %s", neigh["remote_port"] - ) - r += [ - { - "local_interface": local_ports[v[0].split(".")[1]]["local_interface"], - # @todo if local interface subtype != 5 - # "local_interface_id": 5, - "neighbors": [neigh], - } - ] - return r - def execute_cli(self): # No lldp on 46xx if self.is_platform_46: diff --git a/sa/profiles/EdgeCore/ES/profile.py b/sa/profiles/EdgeCore/ES/profile.py index 056ee1b6e5990cec8bf469b5e56985f747566102..b2219f873ef08f67aefc0b231c3b7e83758bcede 100644 --- a/sa/profiles/EdgeCore/ES/profile.py +++ b/sa/profiles/EdgeCore/ES/profile.py @@ -29,6 +29,7 @@ class Profile(BaseProfile): config_volatile = ["\x08+"] rogue_chars = [b"\r"] command_submit = "\r" + cli_timeout_prompt = 120 command_enter_config = "configure" command_leave_config = "end" command_save_config = "copy running-config startup-config" diff --git a/services/web/apps/sa/objectlist/views.py b/services/web/apps/sa/objectlist/views.py index 285a9d8ebb8b04aa1d1afa9083067b675ba48bc6..b4a7f7b296460559f8756248c4d71ae58487b02f 100644 --- a/services/web/apps/sa/objectlist/views.py +++ b/services/web/apps/sa/objectlist/views.py @@ -5,12 +5,8 @@ # See LICENSE for details # --------------------------------------------------------------------- -# Python module -import bson - # Third-party modules from django.db.models import Q as d_Q -from mongoengine.queryset.visitor import Q as m_Q # NOC modules from noc.lib.app.extapplication import ExtApplication, view @@ -58,7 +54,7 @@ class ObjectListApplication(ExtApplication): else: nq = {str(k): v[0] if len(v) == 1 else v for k, v in request.GET.lists()} if "selector" in nq: - s = self.get_object_or_404(ManagedObjectSelector, id=int(q["selector"])) + s = self.get_object_or_404(ManagedObjectSelector, id=int(nq["selector"])) if s: q &= s.Q del nq["selector"] @@ -132,7 +128,6 @@ class ObjectListApplication(ExtApplication): for k in q: if not k.startswith("_") and "__" not in k: nq[k] = q[k] - ids = set() self.logger.debug("Cleaned query: %s" % nq) if "ids" in nq: nq["id__in"] = list({int(nid) for nid in nq["ids"]})