Cleanup unused IPAddress derived stuff

This commit is contained in:
Brian Tiemann 2024-11-01 14:33:20 -04:00
parent e763207181
commit 1b42b9076b
3 changed files with 0 additions and 145 deletions

View File

@ -1625,15 +1625,6 @@ class MACAddressFilterSet(NetBoxModelFilterSet):
label=_('VM interface (ID)'),
)
# assigned_to_interface = django_filters.BooleanFilter(
# method='_assigned_to_interface',
# label=_('Is assigned to an interface'),
# )
# assigned = django_filters.BooleanFilter(
# method='_assigned',
# label=_('Is assigned'),
# )
class Meta:
model = MACAddress
fields = ('id', 'description', 'interface', 'assigned_object_type', 'assigned_object_id')
@ -1647,106 +1638,6 @@ class MACAddressFilterSet(NetBoxModelFilterSet):
)
return queryset.filter(qs_filter)
def search_by_parent(self, queryset, name, value):
if not value:
return queryset
q = Q()
for prefix in value:
try:
query = str(netaddr.IPNetwork(prefix.strip()).cidr)
q |= Q(address__net_host_contained=query)
except (AddrFormatError, ValueError):
return queryset.none()
return queryset.filter(q)
def parse_inet_addresses(self, value):
'''
Parse networks or IP addresses and cast to a format
acceptable by the Postgres inet type.
Skips invalid values.
'''
parsed = []
for addr in value:
if netaddr.valid_ipv4(addr) or netaddr.valid_ipv6(addr):
parsed.append(addr)
continue
try:
network = netaddr.IPNetwork(addr)
parsed.append(str(network))
except (AddrFormatError, ValueError):
continue
return parsed
def filter_address(self, queryset, name, value):
# Let's first parse the addresses passed
# as argument. If they are all invalid,
# we return an empty queryset
value = self.parse_inet_addresses(value)
if (len(value) == 0):
return queryset.none()
try:
return queryset.filter(address__net_in=value)
except ValidationError:
return queryset.none()
@extend_schema_field(OpenApiTypes.STR)
def filter_present_in_vrf(self, queryset, name, vrf):
if vrf is None:
return queryset.none
return queryset.filter(
Q(vrf=vrf) |
Q(vrf__export_targets__in=vrf.import_targets.all())
).distinct()
def filter_device(self, queryset, name, value):
devices = Device.objects.filter(**{'{}__in'.format(name): value})
if not devices.exists():
return queryset.none()
interface_ids = []
for device in devices:
interface_ids.extend(device.vc_interfaces().values_list('id', flat=True))
return queryset.filter(
interface__in=interface_ids
)
def filter_virtual_machine(self, queryset, name, value):
virtual_machines = VirtualMachine.objects.filter(**{'{}__in'.format(name): value})
if not virtual_machines.exists():
return queryset.none()
interface_ids = []
for vm in virtual_machines:
interface_ids.extend(vm.interfaces.values_list('id', flat=True))
return queryset.filter(
vminterface__in=interface_ids
)
def _assigned_to_interface(self, queryset, name, value):
content_types = ContentType.objects.get_for_models(Interface, VMInterface).values()
if value:
return queryset.filter(
assigned_object_type__in=content_types,
assigned_object_id__isnull=False
)
else:
return queryset.exclude(
assigned_object_type__in=content_types,
assigned_object_id__isnull=False
)
def _assigned(self, queryset, name, value):
if value:
return queryset.exclude(
assigned_object_type__isnull=True,
assigned_object_id__isnull=True
)
else:
return queryset.filter(
assigned_object_type__isnull=True,
assigned_object_id__isnull=True
)
class CommonInterfaceFilterSet(django_filters.FilterSet):
vlan_id = django_filters.CharFilter(

View File

@ -1355,28 +1355,6 @@ class MACAddressForm(NetBoxModelForm):
super().__init__(*args, **kwargs)
# Initialize primary_for_parent if IP address is already assigned
if self.instance.pk and self.instance.assigned_object:
# parent = getattr(self.instance.assigned_object, 'parent_object', None)
# if parent and (
# self.instance.address.version == 4 and parent.primary_ip4_id == self.instance.pk or
# self.instance.address.version == 6 and parent.primary_ip6_id == self.instance.pk
# ):
# self.initial['primary_for_parent'] = True
if type(instance.assigned_object) is Interface:
self.fields['interface'].widget.add_query_params({
'device_id': instance.assigned_object.device.pk,
})
elif type(instance.assigned_object) is VMInterface:
self.fields['vminterface'].widget.add_query_params({
'virtual_machine_id': instance.assigned_object.virtual_machine.pk,
})
# Disable object assignment fields if the IP address is designated as primary
if self.initial.get('primary_for_parent'):
self.fields['interface'].disabled = True
self.fields['vminterface'].disabled = True
def clean(self):
super().clean()

View File

@ -1363,20 +1363,6 @@ class MACAddress(PrimaryModel):
blank=True,
verbose_name=_('MAC address')
)
# interface = models.ForeignKey(
# to='dcim.Interface',
# on_delete=models.PROTECT,
# null=True,
# blank=True,
# verbose_name=_('Interface')
# )
# vm_interface = models.ForeignKey(
# to='virtualization.VMInterface',
# on_delete=models.PROTECT,
# null=True,
# blank=True,
# verbose_name=_('VM Interface')
# )
assigned_object_type = models.ForeignKey(
to='contenttypes.ContentType',
limit_choices_to=MACADDRESS_ASSIGNMENT_MODELS,