aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorHåkon Solbjørg <hakon@solbj.org>2023-04-06 21:37:17 +0200
committerHåkon Solbjørg <hakon@solbj.org>2023-04-06 21:37:17 +0200
commitffe7b78ebcba7c06effe6860dc977855d8296801 (patch)
treee6ee03c53515d3f1fca30f79a952bb1d0b6133dc /tools
parente1e907e383c0478890fa2979d8680be16b39c11f (diff)
fix(mist2netbox): Don't persist non-global IPv6 addresses
Diffstat (limited to 'tools')
-rw-r--r--tools/netbox/scripts/mist2netbox/mist2netbox.py13
1 files changed, 8 insertions, 5 deletions
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