From 41ce06976df85be1fedd6b182b6394935fab8e3c Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 2 Feb 2024 11:17:45 -0800 Subject: [PATCH 1/3] 15020 Update assigned VMs site when move cluster --- netbox/virtualization/models/clusters.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/netbox/virtualization/models/clusters.py b/netbox/virtualization/models/clusters.py index f8acc4c3611..503b9e015e1 100644 --- a/netbox/virtualization/models/clusters.py +++ b/netbox/virtualization/models/clusters.py @@ -141,3 +141,7 @@ def clean(self): "{count} devices are assigned as hosts for this cluster but are not in site {site}" ).format(count=nonsite_devices, site=self.site) }) + + def save(self, *args, **kwargs): + # Update Site for all assigned virtual machines + self.virtual_machines.all().update(site=self.site) From e7705d5b793a84fed3f8151faa4e1178401557ee Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 2 Feb 2024 11:35:21 -0800 Subject: [PATCH 2/3] 15020 call super --- netbox/virtualization/models/clusters.py | 1 + 1 file changed, 1 insertion(+) diff --git a/netbox/virtualization/models/clusters.py b/netbox/virtualization/models/clusters.py index 503b9e015e1..1bfa6b42186 100644 --- a/netbox/virtualization/models/clusters.py +++ b/netbox/virtualization/models/clusters.py @@ -144,4 +144,5 @@ def clean(self): def save(self, *args, **kwargs): # Update Site for all assigned virtual machines + super().save(*args, **kwargs) self.virtual_machines.all().update(site=self.site) From 0a45e4b574798d5169c4b4b9fee7627e20fd8c3c Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 5 Feb 2024 07:35:24 -0800 Subject: [PATCH 3/3] 15020 change to use denormalized --- netbox/virtualization/apps.py | 7 +++++++ netbox/virtualization/models/clusters.py | 5 ----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/netbox/virtualization/apps.py b/netbox/virtualization/apps.py index f0af9a16396..fe35fee7827 100644 --- a/netbox/virtualization/apps.py +++ b/netbox/virtualization/apps.py @@ -1,5 +1,7 @@ from django.apps import AppConfig +from netbox import denormalized + class VirtualizationConfig(AppConfig): name = 'virtualization' @@ -9,5 +11,10 @@ def ready(self): from .models import VirtualMachine from utilities.counters import connect_counters + # Register denormalized fields + denormalized.register(VirtualMachine, 'cluster', { + 'site': 'site', + }) + # Register counters connect_counters(VirtualMachine) diff --git a/netbox/virtualization/models/clusters.py b/netbox/virtualization/models/clusters.py index 1bfa6b42186..f8acc4c3611 100644 --- a/netbox/virtualization/models/clusters.py +++ b/netbox/virtualization/models/clusters.py @@ -141,8 +141,3 @@ def clean(self): "{count} devices are assigned as hosts for this cluster but are not in site {site}" ).format(count=nonsite_devices, site=self.site) }) - - def save(self, *args, **kwargs): - # Update Site for all assigned virtual machines - super().save(*args, **kwargs) - self.virtual_machines.all().update(site=self.site)