From a315128158ab91b0d4bf3131c10b31aa546312c0 Mon Sep 17 00:00:00 2001 From: Francisco Augusto Date: Tue, 12 Dec 2023 15:14:16 +0100 Subject: [PATCH] Fix node pool update when version is set --- cloud/services/container/nodepools/reconcile.go | 9 ++++++--- exp/api/v1beta1/types.go | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/cloud/services/container/nodepools/reconcile.go b/cloud/services/container/nodepools/reconcile.go index 2c86e4c9d..46798dd1c 100644 --- a/cloud/services/container/nodepools/reconcile.go +++ b/cloud/services/container/nodepools/reconcile.go @@ -355,9 +355,12 @@ func (s *Service) checkDiffAndPrepareUpdateConfig(existingNodePool *containerpb. desiredNodePool := scope.ConvertToSdkNodePool(*s.scope.GCPManagedMachinePool, *s.scope.MachinePool, isRegional, s.scope.GCPManagedControlPlane.Spec.ClusterName) // Node version - if s.scope.NodePoolVersion() != nil && *s.scope.NodePoolVersion() != infrav1exp.ConvertFromSdkNodeVersion(existingNodePool.Version) { - needUpdate = true - updateNodePoolRequest.NodeVersion = *s.scope.NodePoolVersion() + if s.scope.NodePoolVersion() != nil { + desiredNodePoolVersion := infrav1exp.ConvertFromSdkNodeVersion(*s.scope.NodePoolVersion()) + if desiredNodePoolVersion != infrav1exp.ConvertFromSdkNodeVersion(existingNodePool.Version) { + needUpdate = true + updateNodePoolRequest.NodeVersion = desiredNodePoolVersion + } } // Kubernetes labels if !cmp.Equal(desiredNodePool.Config.GetLabels(), existingNodePool.Config.Labels) { diff --git a/exp/api/v1beta1/types.go b/exp/api/v1beta1/types.go index 6f4baf0a2..e0d838a19 100644 --- a/exp/api/v1beta1/types.go +++ b/exp/api/v1beta1/types.go @@ -110,5 +110,5 @@ func ConvertToSdkAutoscaling(autoscaling *NodePoolAutoScaling) *containerpb.Node // ConvertFromSdkNodeVersion converts GCP SDK node version to k8s version. func ConvertFromSdkNodeVersion(sdkNodeVersion string) string { // For example, the node version returned from GCP SDK can be 1.27.2-gke.2100, we want to convert it to 1.27.2 - return strings.Split(sdkNodeVersion, "-")[0] + return strings.Replace(strings.Split(sdkNodeVersion, "-")[0], "v", "", 1) }