From 8a2cf7bdb3133df75ca26597a72285b11bd6a1e4 Mon Sep 17 00:00:00 2001 From: Gergely Brautigam <182850+Skarlso@users.noreply.github.com> Date: Wed, 17 Nov 2021 13:24:18 +0100 Subject: [PATCH] Add config-file option to get cluster --- pkg/ctl/cmdutils/configfile.go | 7 +++++++ pkg/ctl/get/cluster.go | 4 ++++ pkg/ctl/get/cluster_test.go | 22 ++++++++++++++++++++-- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/pkg/ctl/cmdutils/configfile.go b/pkg/ctl/cmdutils/configfile.go index 9b0dd42c71..a0344a75ca 100644 --- a/pkg/ctl/cmdutils/configfile.go +++ b/pkg/ctl/cmdutils/configfile.go @@ -829,6 +829,13 @@ func NewUpdateNodegroupLoader(cmd *Cmd) ClusterConfigLoader { return l } +// NewGetClusterLoader will load config or use flags for 'eksctl get cluster(s)' +func NewGetClusterLoader(cmd *Cmd) ClusterConfigLoader { + l := newCommonClusterConfigLoader(cmd) + l.flagsIncompatibleWithoutConfigFile.Delete("name") + return l +} + // validateSupportedConfigFields parses a config file's fields, evaluates if non-empty fields are supported, // and returns an error if a field is not supported. func validateSupportedConfigFields(obj interface{}, supportedFields []string, unsupportedFields []string) ([]string, error) { diff --git a/pkg/ctl/get/cluster.go b/pkg/ctl/get/cluster.go index e58b180884..3c87f5bc16 100644 --- a/pkg/ctl/get/cluster.go +++ b/pkg/ctl/get/cluster.go @@ -40,12 +40,16 @@ func getClusterCmd(cmd *cmdutils.Cmd) { cmdutils.AddRegionFlag(fs, &cmd.ProviderConfig) cmdutils.AddCommonFlagsForGetCmd(fs, ¶ms.chunkSize, ¶ms.output) cmdutils.AddTimeoutFlag(fs, &cmd.ProviderConfig.WaitTimeout) + cmdutils.AddConfigFileFlag(fs, &cmd.ClusterConfigFile) }) cmdutils.AddCommonFlagsForAWS(cmd.FlagSetGroup, &cmd.ProviderConfig, false) } func doGetCluster(cmd *cmdutils.Cmd, params *getCmdParams, listAllRegions bool) error { + if err := cmdutils.NewGetClusterLoader(cmd).Load(); err != nil { + return err + } cfg := cmd.ClusterConfig regionGiven := cfg.Metadata.Region != "" // eks.New resets this field, so we need to check if it was set in the first place diff --git a/pkg/ctl/get/cluster_test.go b/pkg/ctl/get/cluster_test.go index 2286010455..dcfe29f260 100644 --- a/pkg/ctl/get/cluster_test.go +++ b/pkg/ctl/get/cluster_test.go @@ -1,6 +1,8 @@ package get import ( + "os" + . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) @@ -10,8 +12,24 @@ var _ = Describe("get", func() { It("with invalid flags", func() { cmd := newMockCmd("cluster", "--invalid", "dummy") _, err := cmd.execute() - Expect(err).To(HaveOccurred()) - Expect(err.Error()).To(ContainSubstring("Error: unknown flag: --invalid")) + Expect(err).To(MatchError(ContainSubstring("Error: unknown flag: --invalid"))) + }) + It("--name and --config-file together", func() { + f, err := os.CreateTemp("", "configfile") + Expect(err).NotTo(HaveOccurred()) + _, err = f.WriteString(configFile) + Expect(err).NotTo(HaveOccurred()) + cmd := newMockCmd("cluster", "--name", "dummy", "--config-file", f.Name()) + _, err = cmd.execute() + Expect(err).To(MatchError(ContainSubstring("Error: cannot use --name when --config-file/-f is set"))) }) }) }) + +var configFile = `apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig +metadata: + name: test-nodegroup-cluster-config + region: us-west-2 + version: '1.20' +`