From ba0d948d72e44b75470621474f3ed0e06520b84c Mon Sep 17 00:00:00 2001 From: DanNiESh Date: Fri, 5 Jun 2026 12:30:16 -0400 Subject: [PATCH] Exclude PoweredOn from provisioning config version hash MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PoweredOn is handled by reconcilePower() which directly calls the management backend API — it does not need the provisioning template. Including it in the hash caused the template to re-trigger on every power state toggle. Co-Authored-By: Claude Opus 4.6 --- internal/controller/hostlease_controller.go | 24 ++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/internal/controller/hostlease_controller.go b/internal/controller/hostlease_controller.go index 4ccdb34..8a5a98b 100644 --- a/internal/controller/hostlease_controller.go +++ b/internal/controller/hostlease_controller.go @@ -345,7 +345,29 @@ func (r *HostLeaseReconciler) reconcilePower(ctx context.Context, hostLease *v1a } func (r *HostLeaseReconciler) reconcileProvisioning(ctx context.Context, hostLease *v1alpha1.HostLease) (ctrl.Result, error) { - desiredVersion, err := provisioning.ComputeDesiredConfigVersion(hostLease.Spec) + desiredVersion, err := provisioning.ComputeDesiredConfigVersion(struct { + HostType string + ExternalHostID string + ExternalHostName string + HostClass string + NetworkClass string + Selector v1alpha1.HostSelectorSpec + InventoryLabels map[string]string + InventoryPersistentLabels map[string]string + TemplateID string + TemplateParameters string + }{ + hostLease.Spec.HostType, + hostLease.Spec.ExternalHostID, + hostLease.Spec.ExternalHostName, + hostLease.Spec.HostClass, + hostLease.Spec.NetworkClass, + hostLease.Spec.Selector, + hostLease.Spec.InventoryLabels, + hostLease.Spec.InventoryPersistentLabels, + hostLease.Spec.TemplateID, + hostLease.Spec.TemplateParameters, + }) if err != nil { return ctrl.Result{}, fmt.Errorf("failed to compute desired config version: %w", err) }