From ffe7b78ebcba7c06effe6860dc977855d8296801 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon=20Solbj=C3=B8rg?= Date: Thu, 6 Apr 2023 21:37:17 +0200 Subject: fix(mist2netbox): Don't persist non-global IPv6 addresses --- tools/netbox/scripts/mist2netbox/mist2netbox.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'tools/netbox/scripts/mist2netbox/mist2netbox.py') diff --git a/tools/netbox/scripts/mist2netbox/mist2netbox.py b/tools/netbox/scripts/mist2netbox/mist2netbox.py index da376d6..7f5c2cd 100644 --- a/tools/netbox/scripts/mist2netbox/mist2netbox.py +++ b/tools/netbox/scripts/mist2netbox/mist2netbox.py @@ -5,6 +5,7 @@ from django.contrib.contenttypes.models import ContentType from dcim.choices import InterfaceModeChoices, InterfaceTypeChoices from dcim.models import Cable, CableTermination, Device, DeviceRole, DeviceType, Interface, Site +from ipaddress import IPv6Address from extras.models import Tag from extras.scripts import * from ipam.models import IPAddress, Prefix, VLAN, VLANGroup @@ -181,11 +182,13 @@ class Mist2Netbox(Script): mgmt_addr_v6 = f"{mgmt_addr_ipv6}{mgmt_addr_ipv6_netmask}" if device.primary_ip6 and device.primary_ip6 != mgmt_addr_v6: device.primary_ip6.delete() - mgmt_addr_v6, _ = IPAddress.objects.get_or_create( - address=mgmt_addr_v6, - assigned_object_type=interface_type, - assigned_object_id=interface.id, - ) + if IPv6Address(str(mgmt_addr_ipv6)).is_global: + self.log_warning(f"AP {device.name} missing global IPv6 address") + mgmt_addr_v6, _ = IPAddress.objects.get_or_create( + address=mgmt_addr_v6, + assigned_object_type=interface_type, + assigned_object_id=interface.id, + ) device = Device.objects.get(pk=device.pk) device.primary_ip4 = mgmt_addr_v4 device.primary_ip6 = mgmt_addr_v6 -- cgit v1.2.3