From db1bba73fc17f5a35d0179fd4c5f263d59677fd4 Mon Sep 17 00:00:00 2001 From: Rob Blake Date: Fri, 17 May 2024 10:45:21 +0100 Subject: [PATCH] OCM-8112 | fix: Force users into interactive mode if omitting a name when creating a KubeletConfig for HCP clusters --- cmd/create/kubeletconfig/cmd.go | 2 +- cmd/create/kubeletconfig/cmd_test.go | 24 ------------------------ cmd/describe/kubeletconfig/cmd.go | 2 +- cmd/dlt/kubeletconfig/cmd.go | 2 +- cmd/edit/kubeletconfig/cmd.go | 2 +- pkg/kubeletconfig/config.go | 5 +++-- 6 files changed, 7 insertions(+), 30 deletions(-) diff --git a/cmd/create/kubeletconfig/cmd.go b/cmd/create/kubeletconfig/cmd.go index dcb71c0689..d7aaf632be 100644 --- a/cmd/create/kubeletconfig/cmd.go +++ b/cmd/create/kubeletconfig/cmd.go @@ -82,7 +82,7 @@ func CreateKubeletConfigRunner(options *KubeletConfigOptions) rosa.CommandRunner "You should edit it via 'rosa edit kubeletconfig'", clusterKey) } } else { - options.Name, err = PromptForName(options.Name) + options.Name, err = PromptForName(options.Name, true) if err != nil { return err } diff --git a/cmd/create/kubeletconfig/cmd_test.go b/cmd/create/kubeletconfig/cmd_test.go index 15c10d1f6d..30f4f3aacf 100644 --- a/cmd/create/kubeletconfig/cmd_test.go +++ b/cmd/create/kubeletconfig/cmd_test.go @@ -124,30 +124,6 @@ var _ = Describe("create kubeletconfig", func() { ContainSubstring("Failed getting KubeletConfig for cluster 'cluster'")) }) - It("Returns an error if no name specified for HCP KubeletConfig", func() { - cluster := MockCluster(func(c *cmv1.ClusterBuilder) { - c.State(cmv1.ClusterStateReady) - b := cmv1.HypershiftBuilder{} - b.Enabled(true) - c.Hypershift(&b) - - }) - - t.ApiServer.AppendHandlers( - testing.RespondWithJSON( - http.StatusOK, FormatClusterList([]*cmv1.Cluster{cluster}))) - t.SetCluster("cluster", cluster) - - options := NewKubeletConfigOptions() - options.PodPidsLimit = 10000 - - runner := CreateKubeletConfigRunner(options) - - err := runner(context.Background(), t.RosaRuntime, nil, nil) - Expect(err).To(HaveOccurred()) - Expect(err.Error()).To(Equal("The --name flag is required for Hosted Control Plane clusters.")) - }) - It("Creates the KubeletConfig for HCP clusters", func() { cluster := MockCluster(func(c *cmv1.ClusterBuilder) { c.State(cmv1.ClusterStateReady) diff --git a/cmd/describe/kubeletconfig/cmd.go b/cmd/describe/kubeletconfig/cmd.go index 43301e43d3..e2c94092a0 100644 --- a/cmd/describe/kubeletconfig/cmd.go +++ b/cmd/describe/kubeletconfig/cmd.go @@ -73,7 +73,7 @@ func DescribeKubeletConfigRunner(options *KubeletConfigOptions) rosa.CommandRunn var exists bool if cluster.Hypershift().Enabled() { - options.Name, err = PromptForName(options.Name) + options.Name, err = PromptForName(options.Name, false) if err != nil { return err } diff --git a/cmd/dlt/kubeletconfig/cmd.go b/cmd/dlt/kubeletconfig/cmd.go index 85afd951af..29f43f9f7f 100644 --- a/cmd/dlt/kubeletconfig/cmd.go +++ b/cmd/dlt/kubeletconfig/cmd.go @@ -75,7 +75,7 @@ func DeleteKubeletConfigRunner(options *KubeletConfigOptions) rosa.CommandRunner } if cluster.Hypershift().Enabled() { - options.Name, err = PromptForName(options.Name) + options.Name, err = PromptForName(options.Name, false) if err != nil { return err } diff --git a/cmd/edit/kubeletconfig/cmd.go b/cmd/edit/kubeletconfig/cmd.go index 703e5b4706..5a345114a4 100644 --- a/cmd/edit/kubeletconfig/cmd.go +++ b/cmd/edit/kubeletconfig/cmd.go @@ -81,7 +81,7 @@ func EditKubeletConfigRunner(options *KubeletConfigOptions) rosa.CommandRunner { var exists bool if cluster.Hypershift().Enabled() { - options.Name, err = PromptForName(options.Name) + options.Name, err = PromptForName(options.Name, false) if err != nil { return err } diff --git a/pkg/kubeletconfig/config.go b/pkg/kubeletconfig/config.go index 1509587e5b..d04737904c 100644 --- a/pkg/kubeletconfig/config.go +++ b/pkg/kubeletconfig/config.go @@ -53,9 +53,10 @@ func GetInteractiveInput(maxPidsLimit int, kubeletConfig *v1.KubeletConfig) inte } } -func PromptForName(requestedName string) (string, error) { +func PromptForName(requestedName string, forceInteractive bool) (string, error) { - if requestedName == "" && interactive.Enabled() { + if requestedName == "" && forceInteractive { + interactive.Enable() return interactive.GetString(interactive.Input{ Question: InteractiveNameHelpPrompt, Help: InteractiveNameHelp,