-
Notifications
You must be signed in to change notification settings - Fork 1.4k
/
iamserviceaccount.go
105 lines (81 loc) · 2.8 KB
/
iamserviceaccount.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package get
import (
"os"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
"github.com/weaveworks/eksctl/pkg/actions/irsa"
api "github.com/weaveworks/eksctl/pkg/apis/eksctl.io/v1alpha5"
"github.com/weaveworks/eksctl/pkg/ctl/cmdutils"
"github.com/weaveworks/eksctl/pkg/printers"
)
func getIAMServiceAccountCmd(cmd *cmdutils.Cmd) {
cfg := api.NewClusterConfig()
cmd.ClusterConfig = cfg
var name, namespace string
cfg.IAM.WithOIDC = api.Enabled()
params := &getCmdParams{}
cmd.SetDescription("iamserviceaccount", "Get iamserviceaccount(s)", "", "iamserviceaccounts")
cmd.CobraCommand.RunE = func(_ *cobra.Command, args []string) error {
cmd.NameArg = cmdutils.GetNameArg(args)
return doGetIAMServiceAccount(cmd, namespace, name, params)
}
cmd.FlagSetGroup.InFlagSet("General", func(fs *pflag.FlagSet) {
fs.StringVar(&cfg.Metadata.Name, "cluster", "", "EKS cluster name")
fs.StringVar(&namespace, "namespace", "", "namespace to look for iamserviceaccount")
fs.StringVar(&name, "name", "", "name of iamserviceaccount to get")
cmdutils.AddRegionFlag(fs, &cmd.ProviderConfig)
cmdutils.AddConfigFileFlag(fs, &cmd.ClusterConfigFile)
cmdutils.AddCommonFlagsForGetCmd(fs, ¶ms.chunkSize, ¶ms.output)
cmdutils.AddTimeoutFlag(fs, &cmd.ProviderConfig.WaitTimeout)
})
cmdutils.AddCommonFlagsForAWS(cmd.FlagSetGroup, &cmd.ProviderConfig, false)
}
func doGetIAMServiceAccount(cmd *cmdutils.Cmd, namespace, name string, params *getCmdParams) error {
if err := cmdutils.NewGetIAMServiceAccountLoader(cmd).Load(); err != nil {
return err
}
cfg := cmd.ClusterConfig
ctl, err := cmd.NewCtl()
if err != nil {
return err
}
if params.output == "table" {
cmdutils.LogRegionAndVersionInfo(cmd.ClusterConfig.Metadata)
}
if err := ctl.CheckAuth(); err != nil {
return err
}
if ok, err := ctl.CanOperate(cfg); !ok {
return err
}
stackManager := ctl.NewStackManager(cfg)
irsaManager := irsa.New(cfg.Metadata.Name, stackManager, nil, nil)
serviceAccounts, err := irsaManager.Get(namespace, name)
if err != nil {
return err
}
printer, err := printers.NewPrinter(params.output)
if err != nil {
return err
}
var obj interface{}
if params.output == "table" {
addIAMServiceAccountSummaryTableColumns(printer.(*printers.TablePrinter))
obj = serviceAccounts
} else {
cfg.IAM.ServiceAccounts = serviceAccounts
obj = cfg
}
return printer.PrintObjWithKind("iamserviceaccounts", obj, os.Stdout)
}
func addIAMServiceAccountSummaryTableColumns(printer *printers.TablePrinter) {
printer.AddColumn("NAMESPACE", func(sa *api.ClusterIAMServiceAccount) string {
return sa.Namespace
})
printer.AddColumn("NAME", func(sa *api.ClusterIAMServiceAccount) string {
return sa.Name
})
printer.AddColumn("ROLE ARN", func(sa *api.ClusterIAMServiceAccount) string {
return *sa.Status.RoleARN
})
}