...
1
16
17 package config
18
19 import (
20 "fmt"
21 "sort"
22
23 "github.com/spf13/cobra"
24
25 "k8s.io/cli-runtime/pkg/genericiooptions"
26 "k8s.io/client-go/tools/clientcmd"
27 cmdutil "k8s.io/kubectl/pkg/cmd/util"
28 "k8s.io/kubectl/pkg/util/i18n"
29 "k8s.io/kubectl/pkg/util/templates"
30 )
31
32 var (
33 getUsersExample = templates.Examples(`
34 # List the users that kubectl knows about
35 kubectl config get-users`)
36 )
37
38
39 type GetUsersOptions struct {
40 configAccess clientcmd.ConfigAccess
41
42 genericiooptions.IOStreams
43 }
44
45
46 func NewGetUsersOptions(ioStreams genericiooptions.IOStreams, configAccess clientcmd.ConfigAccess) *GetUsersOptions {
47 return &GetUsersOptions{
48 configAccess: configAccess,
49 IOStreams: ioStreams,
50 }
51 }
52
53
54
55 func NewCmdConfigGetUsers(streams genericiooptions.IOStreams, configAccess clientcmd.ConfigAccess) *cobra.Command {
56 o := NewGetUsersOptions(streams, configAccess)
57
58 cmd := &cobra.Command{
59 Use: "get-users",
60 Short: i18n.T("Display users defined in the kubeconfig"),
61 Long: i18n.T("Display users defined in the kubeconfig."),
62 Example: getUsersExample,
63 Run: func(cmd *cobra.Command, args []string) {
64 cmdutil.CheckErr(o.Run())
65 },
66 }
67
68 return cmd
69 }
70
71
72 func (o *GetUsersOptions) Run() error {
73 config, err := o.configAccess.GetStartingConfig()
74 if err != nil {
75 return err
76 }
77
78 users := make([]string, 0, len(config.AuthInfos))
79 for user := range config.AuthInfos {
80 users = append(users, user)
81 }
82 sort.Strings(users)
83
84 fmt.Fprintf(o.Out, "NAME\n")
85 for _, user := range users {
86 fmt.Fprintf(o.Out, "%s\n", user)
87 }
88
89 return nil
90 }
91
View as plain text