From 114aef1f3051b05b9aa4a37fe90e9c577e0f76cd Mon Sep 17 00:00:00 2001 From: Fabian Wiesel Date: Tue, 16 Dec 2025 17:23:54 +0100 Subject: [PATCH 1/2] transportLabels for arbitrary metadata This opens the way to transport the labels between more resource types. --- internal/controller/hypervisor_controller.go | 10 +++++----- .../controller/hypervisor_maintenance_controller.go | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/controller/hypervisor_controller.go b/internal/controller/hypervisor_controller.go index f83d3bfa..087c15c7 100644 --- a/internal/controller/hypervisor_controller.go +++ b/internal/controller/hypervisor_controller.go @@ -162,7 +162,7 @@ func syncLabelsAndAnnotations(nodeLabels labels.Set, hypervisor *kvmv1.Hyperviso } // transport relevant labels - transportLabels(&node.ObjectMeta, hypervisor) + transportLabels(&node.ObjectMeta, &hypervisor.ObjectMeta) // transport relevant annotations transportAggregatesAndTraits(&node.ObjectMeta, hypervisor) } @@ -221,12 +221,12 @@ func transportAggregatesAndTraits(node *metav1.ObjectMeta, hypervisor *kvmv1.Hyp } } -// transportLabels transports relevant labels from the Node to the Hypervisor spec -func transportLabels(node *metav1.ObjectMeta, hypervisor *kvmv1.Hypervisor) { +// transportLabels transports relevant labels from the source to the destination metadata +func transportLabels(source, destination *metav1.ObjectMeta) { // transfer labels for _, transferLabel := range transferLabels { - if label, ok := node.Labels[transferLabel]; ok { - hypervisor.Labels[transferLabel] = label + if label, ok := source.Labels[transferLabel]; ok { + destination.Labels[transferLabel] = label } } } diff --git a/internal/controller/hypervisor_maintenance_controller.go b/internal/controller/hypervisor_maintenance_controller.go index eac1d11d..1565d8dc 100644 --- a/internal/controller/hypervisor_maintenance_controller.go +++ b/internal/controller/hypervisor_maintenance_controller.go @@ -233,7 +233,7 @@ func (hec *HypervisorMaintenanceController) ensureEviction(ctx context.Context, } // This also transports the label-selector, if set - transportLabels(&eviction.ObjectMeta, hypervisor) + transportLabels(&eviction.ObjectMeta, &hypervisor.ObjectMeta) if err = hec.Create(ctx, eviction); err != nil { return metav1.ConditionUnknown, fmt.Errorf("failed to create eviction due to %w", err) From 8baa4add5dd5b2f674777f7081247f663cc30e10 Mon Sep 17 00:00:00 2001 From: Fabian Wiesel Date: Tue, 16 Dec 2025 17:28:14 +0100 Subject: [PATCH 2/2] HypervisorMaintenance: Fix transport from hypervisor to eviction We actually want it the other way around. If there is a label on the node, it gets transported to the hypervisor and from there to the eviction. --- internal/controller/hypervisor_maintenance_controller.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/controller/hypervisor_maintenance_controller.go b/internal/controller/hypervisor_maintenance_controller.go index 1565d8dc..56f87b20 100644 --- a/internal/controller/hypervisor_maintenance_controller.go +++ b/internal/controller/hypervisor_maintenance_controller.go @@ -233,7 +233,7 @@ func (hec *HypervisorMaintenanceController) ensureEviction(ctx context.Context, } // This also transports the label-selector, if set - transportLabels(&eviction.ObjectMeta, &hypervisor.ObjectMeta) + transportLabels(&hypervisor.ObjectMeta, &eviction.ObjectMeta) if err = hec.Create(ctx, eviction); err != nil { return metav1.ConditionUnknown, fmt.Errorf("failed to create eviction due to %w", err)