@@ -131,10 +131,9 @@ func (hv *HypervisorController) Reconcile(ctx context.Context, req ctrl.Request)
131131 return ctrl.Result {}, hv .Status ().Update (ctx , hypervisor )
132132 }
133133
134- // transport label/anotations changes
134+ // transport label changes
135135 before := hypervisor .DeepCopy ()
136- updateLabelsAndAnnotations (& node .ObjectMeta , hypervisor )
137- if ! reflect .DeepEqual (before , hypervisor ) {
136+ if transportLabels (& node .ObjectMeta , hypervisor ) {
138137 return ctrl.Result {}, hv .Patch (ctx , hypervisor , k8sclient .MergeFrom (before ))
139138 }
140139
@@ -147,8 +146,10 @@ func (hv *HypervisorController) Reconcile(ctx context.Context, req ctrl.Request)
147146 hypervisor .Spec .SkipTests = nodeLabels .Get (labelLifecycleMode ) == "skip-tests"
148147 }
149148
149+ // transport relevant labels
150+ transportLabels (& node .ObjectMeta , hypervisor )
150151 // transport relevant annotations
151- updateLabelsAndAnnotations (& node .ObjectMeta , hypervisor )
152+ transportAggregatesAndTraits (& node .ObjectMeta , hypervisor )
152153
153154 if err := controllerutil .SetOwnerReference (node , hypervisor , hv .Scheme , controllerutil .WithBlockOwnerDeletion (true )); err != nil {
154155 return ctrl.Result {}, fmt .Errorf ("failed setting controller reference: %w" , err )
@@ -187,8 +188,9 @@ func (hv *HypervisorController) SetupWithManager(mgr ctrl.Manager) error {
187188 Complete (hv )
188189}
189190
190- // updateLabelsAndAnnotations transports relevant annotations from the Node to the Hypervisor spec
191- func updateLabelsAndAnnotations (node * metav1.ObjectMeta , hypervisor * kvmv1.Hypervisor ) {
191+ // transportAggregatesAndTraits transports relevant aggregates/traits from the Node to the Hypervisor spec
192+ func transportAggregatesAndTraits (node * metav1.ObjectMeta , hypervisor * kvmv1.Hypervisor ) bool {
193+ before := hypervisor .DeepCopy ()
192194 // transport aggregates annotation to hypervisor spec
193195 if aggregates , found := node .Annotations [annotationAggregates ]; found {
194196 // split aggregates string
@@ -214,11 +216,17 @@ func updateLabelsAndAnnotations(node *metav1.ObjectMeta, hypervisor *kvmv1.Hyper
214216 }
215217 })
216218 }
219+ return ! reflect .DeepEqual (before , hypervisor )
220+ }
217221
222+ // transportLabels transports relevant labels from the Node to the Hypervisor spec
223+ func transportLabels (node * metav1.ObjectMeta , hypervisor * kvmv1.Hypervisor ) bool {
224+ before := hypervisor .DeepCopy ()
218225 // transfer labels
219226 for _ , transferLabel := range transferLabels {
220227 if label , ok := node .Labels [transferLabel ]; ok {
221228 hypervisor .Labels [transferLabel ] = label
222229 }
223230 }
231+ return ! reflect .DeepEqual (before , hypervisor )
224232}
0 commit comments