Fixes #18553: Update site for VMs only if cluster has a site assigned (#19086)

This commit is contained in:
Jeremy Stretch 2025-04-04 13:58:06 -04:00 committed by GitHub
parent 621b29cd71
commit 426e6439e3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 8 deletions

View File

@ -1,7 +1,5 @@
from django.apps import AppConfig from django.apps import AppConfig
from netbox import denormalized
class VirtualizationConfig(AppConfig): class VirtualizationConfig(AppConfig):
name = 'virtualization' name = 'virtualization'
@ -15,10 +13,5 @@ class VirtualizationConfig(AppConfig):
# Register models # Register models
register_models(*self.get_models()) register_models(*self.get_models())
# Register denormalized fields
denormalized.register(VirtualMachine, 'cluster', {
'site': '_site',
})
# Register counters # Register counters
connect_counters(VirtualMachine) connect_counters(VirtualMachine)

View File

@ -2,7 +2,7 @@ from django.db.models import Sum
from django.db.models.signals import post_delete, post_save from django.db.models.signals import post_delete, post_save
from django.dispatch import receiver from django.dispatch import receiver
from .models import VirtualDisk, VirtualMachine from .models import Cluster, VirtualDisk, VirtualMachine
@receiver((post_delete, post_save), sender=VirtualDisk) @receiver((post_delete, post_save), sender=VirtualDisk)
@ -14,3 +14,12 @@ def update_virtualmachine_disk(instance, **kwargs):
VirtualMachine.objects.filter(pk=vm.pk).update( VirtualMachine.objects.filter(pk=vm.pk).update(
disk=vm.virtualdisks.aggregate(Sum('size'))['size__sum'] disk=vm.virtualdisks.aggregate(Sum('size'))['size__sum']
) )
@receiver(post_save, sender=Cluster)
def update_virtualmachine_site(instance, **kwargs):
"""
Update the assigned site for all VMs to match that of the Cluster (if any).
"""
if instance._site:
VirtualMachine.objects.filter(cluster=instance).update(site=instance._site)