diff options
author | Håkon Solbjørg <hakon@solbj.org> | 2023-04-06 21:37:17 +0200 |
---|---|---|
committer | Håkon Solbjørg <hakon@solbj.org> | 2023-04-06 21:37:17 +0200 |
commit | ffe7b78ebcba7c06effe6860dc977855d8296801 (patch) | |
tree | e6ee03c53515d3f1fca30f79a952bb1d0b6133dc /tools | |
parent | e1e907e383c0478890fa2979d8680be16b39c11f (diff) |
fix(mist2netbox): Don't persist non-global IPv6 addresses
Diffstat (limited to 'tools')
-rw-r--r-- | tools/netbox/scripts/mist2netbox/mist2netbox.py | 13 |
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 |