diff --git a/pkg/ctl/cmdutils/configfile.go b/pkg/ctl/cmdutils/configfile.go index 0d10447d7f..49ada47897 100644 --- a/pkg/ctl/cmdutils/configfile.go +++ b/pkg/ctl/cmdutils/configfile.go @@ -883,6 +883,13 @@ func NewGetLabelsLoader(cmd *Cmd, ngName string) ClusterConfigLoader { return l } +// NewGetClusterLoader will load config or use flags for 'eksctl get cluster(s)' +func NewGetClusterLoader(cmd *Cmd) ClusterConfigLoader { + l := newCommonClusterConfigLoader(cmd) + + 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..af6115c322 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(getClusterConfigFile) + 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 getClusterConfigFile = `apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig +metadata: + name: test-nodegroup-cluster-config + region: us-west-2 + version: '1.20' +` diff --git a/pkg/ctl/get/nodegroup_test.go b/pkg/ctl/get/nodegroup_test.go index ba365dd54a..e89922c904 100644 --- a/pkg/ctl/get/nodegroup_test.go +++ b/pkg/ctl/get/nodegroup_test.go @@ -24,7 +24,7 @@ var _ = Describe("get", func() { It("setting --name and --config-file at the same time", func() { f, err := os.CreateTemp("", "configfile") Expect(err).NotTo(HaveOccurred()) - _, err = f.WriteString(configFile) + _, err = f.WriteString(nodegroupConfigFile) Expect(err).NotTo(HaveOccurred()) cmd := newMockCmd("nodegroup", "--name", "name", "--config-file", f.Name()) _, err = cmd.execute() @@ -34,7 +34,7 @@ var _ = Describe("get", func() { It("setting --cluster and --config-file at the same time", func() { f, err := os.CreateTemp("", "configfile") Expect(err).NotTo(HaveOccurred()) - _, err = f.WriteString(configFile) + _, err = f.WriteString(nodegroupConfigFile) Expect(err).NotTo(HaveOccurred()) cmd := newMockCmd("nodegroup", "--cluster", "name", "--config-file", f.Name()) _, err = cmd.execute() @@ -49,7 +49,7 @@ var _ = Describe("get", func() { }) }) -var configFile = `apiVersion: eksctl.io/v1alpha5 +var nodegroupConfigFile = `apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: diff --git a/pkg/eks/mocks/KubeNodeGroup.go b/pkg/eks/mocks/KubeNodeGroup.go index 49e2ea4f2b..c4714e2b50 100644 --- a/pkg/eks/mocks/KubeNodeGroup.go +++ b/pkg/eks/mocks/KubeNodeGroup.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v0.0.0-dev. DO NOT EDIT. package mocks