From 983b5fb9273b5a95a205ac6c38dad40f85c97ba7 Mon Sep 17 00:00:00 2001 From: hkepley Date: Tue, 9 Jul 2024 11:59:00 -0400 Subject: [PATCH] OCM-9340 | fix: Re-add max-surge/max-unavailable code --- pkg/machinepool/machinepool.go | 56 +++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/pkg/machinepool/machinepool.go b/pkg/machinepool/machinepool.go index 1cad13992f..086bc4b3d8 100644 --- a/pkg/machinepool/machinepool.go +++ b/pkg/machinepool/machinepool.go @@ -577,10 +577,12 @@ func editNodePool(cmd *cobra.Command, nodePoolID string, isTuningsConfigSet := cmd.Flags().Changed("tuning-configs") isKubeletConfigSet := cmd.Flags().Changed("kubelet-configs") isNodeDrainGracePeriodSet := cmd.Flags().Changed("node-drain-grace-period") + isUpgradeMaxSurgeSet := cmd.Flags().Changed("max-surge") + isUpgradeMaxUnavailableSet := cmd.Flags().Changed("max-unavailable") // isAnyAdditionalParameterSet is true if at least one parameter not related to replicas and autoscaling is set isAnyAdditionalParameterSet := isLabelsSet || isTaintsSet || isAutorepairSet || isTuningsConfigSet || - isKubeletConfigSet + isKubeletConfigSet || isUpgradeMaxSurgeSet || isUpgradeMaxUnavailableSet isAnyParameterSet := isMinReplicasSet || isMaxReplicasSet || isReplicasSet || isAutoscalingSet || isAnyAdditionalParameterSet @@ -777,6 +779,58 @@ func editNodePool(cmd *cobra.Command, nodePoolID string, } } + if isUpgradeMaxSurgeSet && isUpgradeMaxUnavailableSet { + maxSurge := cmd.Flags().Lookup("max-surge").Value.String() + if maxSurge == "" && nodePool.ManagementUpgrade().MaxSurge() != "" { + maxSurge = nodePool.ManagementUpgrade().MaxSurge() + } + + maxUnavailable := cmd.Flags().Lookup("max-unavailable").Value.String() + if maxUnavailable == "" && nodePool.ManagementUpgrade().MaxUnavailable() != "" { + maxUnavailable = nodePool.ManagementUpgrade().MaxUnavailable() + } + if interactive.Enabled() { + maxSurge, err = interactive.GetString(interactive.Input{ + Question: "Max surge", + Help: cmd.Flags().Lookup("max-surge").Usage, + Default: maxSurge, + Required: false, + Validators: []interactive.Validator{ + mpHelpers.ValidateUpgradeMaxSurgeUnavailable, + }, + }) + if err != nil { + r.Reporter.Errorf("Expected a valid value for max surge: %s", err) + os.Exit(1) + } + + maxUnavailable, err = interactive.GetString(interactive.Input{ + Question: "Max unavailable", + Help: cmd.Flags().Lookup("max-unavailable").Usage, + Default: maxUnavailable, + Required: false, + Validators: []interactive.Validator{ + mpHelpers.ValidateUpgradeMaxSurgeUnavailable, + }, + }) + if err != nil { + r.Reporter.Errorf("Expected a valid value for max unavailable: %s", err) + os.Exit(1) + } + } + + if maxSurge != "" || maxUnavailable != "" { + mgmtUpgradeBuilder := cmv1.NewNodePoolManagementUpgrade() + if maxSurge != "" { + mgmtUpgradeBuilder.MaxSurge(maxSurge) + } + if maxUnavailable != "" { + mgmtUpgradeBuilder.MaxUnavailable(maxUnavailable) + } + npBuilder.ManagementUpgrade(mgmtUpgradeBuilder) + } + } + update, err := npBuilder.Build() if err != nil { return fmt.Errorf("Failed to create machine pool for hosted cluster '%s': %v", clusterKey, err)