From a02e0772227d2032d5b5c9bf397d83c86683fd10 Mon Sep 17 00:00:00 2001 From: Andrey Vertiprahov Date: Tue, 23 Feb 2021 12:06:14 +0500 Subject: [PATCH 1/3] Discovery.get_neighbor_by_hostname ignore when find hostname. --- services/discovery/jobs/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/discovery/jobs/base.py b/services/discovery/jobs/base.py index 5f8152b0b0..61238c7ee6 100644 --- a/services/discovery/jobs/base.py +++ b/services/discovery/jobs/base.py @@ -1002,7 +1002,7 @@ class TopologyDiscoveryCheck(DiscoveryCheck): Resolve neighbor by hostname """ if hostname not in self.neighbor_hostname_cache: - hosts = DiscoveryID.objects.filter(hostname=hostname)[:2] + hosts = DiscoveryID.objects.filter(hostname__iexact=hostname)[:2] n = None if len(hosts) == 1: n = hosts[0].object -- GitLab From 6e7ce0f8e352e34715394cdc145176c46404b6fa Mon Sep 17 00:00:00 2001 From: Andrey Vertiprahov Date: Sat, 23 Apr 2022 09:37:10 +0500 Subject: [PATCH 2/3] Add hostname_raw. --- inv/models/discoveryid.py | 11 +++++++++-- services/discovery/jobs/base.py | 3 ++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/inv/models/discoveryid.py b/inv/models/discoveryid.py index 9f52d604fc..0ec925c42f 100644 --- a/inv/models/discoveryid.py +++ b/inv/models/discoveryid.py @@ -54,6 +54,7 @@ class DiscoveryID(Document): object = ForeignKeyField(ManagedObject) chassis_mac = ListField(EmbeddedDocumentField(MACRange)) hostname = StringField() + hostname_raw = StringField() router_id = StringField() udld_id = StringField() # UDLD local identifier # @@ -114,7 +115,8 @@ class DiscoveryID(Document): if o: old_macs = set(m.first_mac for m in o.chassis_mac) o.chassis_mac = ranges - o.hostname = hostname + o.hostname = hostname.lower() + o.hostname_raw = hostname o.router_id = router_id old_macs -= set(m.first_mac for m in o.chassis_mac) if old_macs: @@ -124,7 +126,12 @@ class DiscoveryID(Document): o.save() else: cls( - object=object, chassis_mac=ranges, hostname=hostname, router_id=router_id, macs=macs + object=object, + chassis_mac=ranges, + hostname=hostname.lower(), + hostname_raw=hostname, + router_id=router_id, + macs=macs, ).save() @classmethod diff --git a/services/discovery/jobs/base.py b/services/discovery/jobs/base.py index 61238c7ee6..9005d8d8b0 100644 --- a/services/discovery/jobs/base.py +++ b/services/discovery/jobs/base.py @@ -1001,8 +1001,9 @@ class TopologyDiscoveryCheck(DiscoveryCheck): """ Resolve neighbor by hostname """ + hostname = hostname.lower() if hostname not in self.neighbor_hostname_cache: - hosts = DiscoveryID.objects.filter(hostname__iexact=hostname)[:2] + hosts = DiscoveryID.objects.filter(hostname=hostname)[:2] n = None if len(hosts) == 1: n = hosts[0].object -- GitLab From 50b94f12ecc152944df95fa779bfce7c1adf4394 Mon Sep 17 00:00:00 2001 From: Andrey Vertiprahov Date: Sat, 23 Apr 2022 09:51:15 +0500 Subject: [PATCH 3/3] Fix typo. --- inv/models/discoveryid.py | 12 ++++++------ services/discovery/jobs/base.py | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/inv/models/discoveryid.py b/inv/models/discoveryid.py index 0ec925c42f..74089b63c2 100644 --- a/inv/models/discoveryid.py +++ b/inv/models/discoveryid.py @@ -49,12 +49,12 @@ class DiscoveryID(Document): "collection": "noc.inv.discovery_id", "strict": False, "auto_create_index": False, - "indexes": ["object", "hostname", "udld_id", "macs"], + "indexes": ["object", "hostname", "hostname_id", "udld_id", "macs"], } object = ForeignKeyField(ManagedObject) chassis_mac = ListField(EmbeddedDocumentField(MACRange)) hostname = StringField() - hostname_raw = StringField() + hostname_id = StringField() router_id = StringField() udld_id = StringField() # UDLD local identifier # @@ -115,8 +115,8 @@ class DiscoveryID(Document): if o: old_macs = set(m.first_mac for m in o.chassis_mac) o.chassis_mac = ranges - o.hostname = hostname.lower() - o.hostname_raw = hostname + o.hostname = hostname + o.hostname_id = hostname.lower() o.router_id = router_id old_macs -= set(m.first_mac for m in o.chassis_mac) if old_macs: @@ -128,8 +128,8 @@ class DiscoveryID(Document): cls( object=object, chassis_mac=ranges, - hostname=hostname.lower(), - hostname_raw=hostname, + hostname=hostname, + hostname_id=hostname.lower(), router_id=router_id, macs=macs, ).save() diff --git a/services/discovery/jobs/base.py b/services/discovery/jobs/base.py index 9005d8d8b0..ed5b21ac90 100644 --- a/services/discovery/jobs/base.py +++ b/services/discovery/jobs/base.py @@ -1003,7 +1003,7 @@ class TopologyDiscoveryCheck(DiscoveryCheck): """ hostname = hostname.lower() if hostname not in self.neighbor_hostname_cache: - hosts = DiscoveryID.objects.filter(hostname=hostname)[:2] + hosts = DiscoveryID.objects.filter(hostname_id=hostname)[:2] n = None if len(hosts) == 1: n = hosts[0].object @@ -1012,7 +1012,7 @@ class TopologyDiscoveryCheck(DiscoveryCheck): # Try to resolve anyway m = list( DiscoveryID.objects.filter( - hostname__istartswith=hostname + "." if "." not in hostname else hostname + hostname_id__istartswith=hostname + "." if "." not in hostname else hostname ) ) if len(m) == 1: -- GitLab