|
|
@@ -0,0 +1,21 @@
|
|
|
+from django.db.models.signals import pre_delete
|
|
|
+from django.dispatch import receiver
|
|
|
+
|
|
|
+from dcim.models import Device
|
|
|
+from virtualization.models import VirtualMachine
|
|
|
+from .models import IPAddress
|
|
|
+
|
|
|
+
|
|
|
+@receiver(pre_delete, sender=IPAddress)
|
|
|
+def clear_primary_ip(instance, **kwargs):
|
|
|
+ """
|
|
|
+ When an IPAddress is deleted, trigger save() on any Devices/VirtualMachines for which it
|
|
|
+ was a primary IP.
|
|
|
+ """
|
|
|
+ field_name = f'primary_ip{instance.family}'
|
|
|
+ device = Device.objects.filter(**{field_name: instance}).first()
|
|
|
+ if device:
|
|
|
+ device.save()
|
|
|
+ virtualmachine = VirtualMachine.objects.filter(**{field_name: instance}).first()
|
|
|
+ if virtualmachine:
|
|
|
+ virtualmachine.save()
|