mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-29 11:56:25 -06:00
Cleanup unused IPAddress derived stuff
This commit is contained in:
parent
e763207181
commit
1b42b9076b
@ -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(
|
||||
|
@ -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()
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user