From 1b42b9076bae0c34296d96f6522384ebab564bdf Mon Sep 17 00:00:00 2001 From: Brian Tiemann Date: Fri, 1 Nov 2024 14:33:20 -0400 Subject: [PATCH] Cleanup unused IPAddress derived stuff --- netbox/dcim/filtersets.py | 109 ------------------------ netbox/dcim/forms/model_forms.py | 22 ----- netbox/dcim/models/device_components.py | 14 --- 3 files changed, 145 deletions(-) diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index b3f451289..4822fa0ce 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -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( diff --git a/netbox/dcim/forms/model_forms.py b/netbox/dcim/forms/model_forms.py index b73268eff..b55e70728 100644 --- a/netbox/dcim/forms/model_forms.py +++ b/netbox/dcim/forms/model_forms.py @@ -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() diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index 855c3cae1..6d6001650 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -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,