@@ -68,7 +68,7 @@ type Action struct {
68
68
nonResourceURL string
69
69
subResource string
70
70
resourceName string
71
- gr schema.GroupResource
71
+ gr schema.GroupResource
72
72
73
73
namespace string
74
74
allNamespaces bool
@@ -96,67 +96,44 @@ type whoCan struct {
96
96
clioptions.IOStreams
97
97
}
98
98
99
- func NewWhoCanOptions (configFlags * clioptions.ConfigFlags ,
100
- clientConfig clientcmd.ClientConfig ,
101
- clientNamespace clientcore.NamespaceInterface ,
102
- clientRBAC clientrbac.RbacV1Interface ,
103
- namespaceValidator NamespaceValidator ,
104
- resourceResolver ResourceResolver ,
105
- accessChecker AccessChecker ,
106
- policyRuleMatcher PolicyRuleMatcher ,
107
- streams clioptions.IOStreams ) * whoCan {
108
- return & whoCan {
109
- configFlags : configFlags ,
110
- clientConfig : clientConfig ,
111
- clientNamespace : clientNamespace ,
112
- clientRBAC : clientRBAC ,
113
- namespaceValidator : namespaceValidator ,
114
- resourceResolver : resourceResolver ,
115
- accessChecker : accessChecker ,
116
- policyRuleMatcher : policyRuleMatcher ,
117
- IOStreams : streams ,
118
- }
119
- }
120
-
121
99
func NewCmdWhoCan (streams clioptions.IOStreams ) (* cobra.Command , error ) {
122
- configFlags := clioptions .NewConfigFlags (true )
123
-
124
- clientConfig , err := configFlags .ToRESTConfig ()
125
- if err != nil {
126
- return nil , fmt .Errorf ("getting config: %v" , err )
127
- }
128
-
129
- client , err := kubernetes .NewForConfig (clientConfig )
130
- if err != nil {
131
- return nil , fmt .Errorf ("creating client: %v" , err )
132
- }
133
-
134
- mapper , err := configFlags .ToRESTMapper ()
135
- if err != nil {
136
- return nil , fmt .Errorf ("getting mapper: %v" , err )
137
- }
138
-
139
- clientNamespace := client .CoreV1 ().Namespaces ()
140
- accessChecker := NewAccessChecker (client .AuthorizationV1 ().SelfSubjectAccessReviews ())
141
- namespaceValidator := NewNamespaceValidator (clientNamespace )
142
- resourceResolver := NewResourceResolver (client .Discovery (), mapper )
143
-
144
- o := NewWhoCanOptions (configFlags ,
145
- configFlags .ToRawKubeConfigLoader (),
146
- clientNamespace ,
147
- client .RbacV1 (),
148
- namespaceValidator ,
149
- resourceResolver ,
150
- accessChecker ,
151
- NewPolicyRuleMatcher (),
152
- streams )
100
+ var configFlags * clioptions.ConfigFlags
101
+ var o whoCan
153
102
154
103
cmd := & cobra.Command {
155
104
Use : whoCanUsage ,
156
105
Long : whoCanLong ,
157
106
Example : whoCanExample ,
158
107
SilenceUsage : true ,
159
108
RunE : func (cmd * cobra.Command , args []string ) error {
109
+ clientConfig , err := configFlags .ToRESTConfig ()
110
+ if err != nil {
111
+ return fmt .Errorf ("getting config: %v" , err )
112
+ }
113
+
114
+ client , err := kubernetes .NewForConfig (clientConfig )
115
+ if err != nil {
116
+ return fmt .Errorf ("creating client: %v" , err )
117
+ }
118
+
119
+ mapper , err := configFlags .ToRESTMapper ()
120
+ if err != nil {
121
+ return fmt .Errorf ("getting mapper: %v" , err )
122
+ }
123
+
124
+ clientNamespace := client .CoreV1 ().Namespaces ()
125
+ namespaceValidator := NewNamespaceValidator (clientNamespace )
126
+
127
+ o .configFlags = configFlags
128
+ o .clientConfig = configFlags .ToRawKubeConfigLoader ()
129
+ o .clientNamespace = clientNamespace
130
+ o .clientRBAC = client .RbacV1 ()
131
+ o .namespaceValidator = namespaceValidator
132
+ o .resourceResolver = NewResourceResolver (client .Discovery (), mapper )
133
+ o .accessChecker = NewAccessChecker (client .AuthorizationV1 ().SelfSubjectAccessReviews ())
134
+ o .policyRuleMatcher = NewPolicyRuleMatcher ()
135
+ o .IOStreams = streams
136
+
160
137
if err := o .Complete (args ); err != nil {
161
138
return err
162
139
}
@@ -171,14 +148,15 @@ func NewCmdWhoCan(streams clioptions.IOStreams) (*cobra.Command, error) {
171
148
},
172
149
}
173
150
174
- cmd .PersistentFlags ().StringVar (& o .subResource , "subresource" , o .subResource ,
151
+ cmd .Flags ().StringVar (& o .subResource , "subresource" , o .subResource ,
175
152
"SubResource such as pod/log or deployment/scale" )
176
- cmd .PersistentFlags ().BoolVarP (& o .allNamespaces , "all-namespaces" , "A" , false ,
153
+ cmd .Flags ().BoolVarP (& o .allNamespaces , "all-namespaces" , "A" , o . allNamespaces ,
177
154
"If true, check the specified action in all namespaces." )
178
155
179
- flag .CommandLine .VisitAll (func (goflag * flag.Flag ) {
180
- cmd .PersistentFlags ().AddGoFlag (goflag )
156
+ flag .CommandLine .VisitAll (func (gf * flag.Flag ) {
157
+ cmd .Flags ().AddGoFlag (gf )
181
158
})
159
+ configFlags = clioptions .NewConfigFlags (true )
182
160
configFlags .AddFlags (cmd .Flags ())
183
161
184
162
return cmd , nil
0 commit comments