Skip to content

Commit 2f11726

Browse files
committed
Fix dry run client ignore namespace
1 parent 71277de commit 2f11726

File tree

6 files changed

+56
-34
lines changed

6 files changed

+56
-34
lines changed

staging/src/k8s.io/cli-runtime/pkg/genericclioptions/config_flags_fake.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ type namespacedClientConfig struct {
9696
}
9797

9898
func (c *namespacedClientConfig) Namespace() (string, bool, error) {
99-
return c.namespace, false, nil
99+
return c.namespace, len(c.namespace) > 0, nil
100100
}
101101

102102
func (c *namespacedClientConfig) RawConfig() (clientcmdapi.Config, error) {

staging/src/k8s.io/kubectl/pkg/cmd/create/create_cronjob.go

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,13 @@ type CreateCronJobOptions struct {
5858
Command []string
5959
Restart string
6060

61-
Namespace string
62-
Client batchv1beta1client.BatchV1beta1Interface
63-
DryRunStrategy cmdutil.DryRunStrategy
64-
DryRunVerifier *resource.DryRunVerifier
65-
Builder *resource.Builder
66-
FieldManager string
61+
Namespace string
62+
EnforceNamespace bool
63+
Client batchv1beta1client.BatchV1beta1Interface
64+
DryRunStrategy cmdutil.DryRunStrategy
65+
DryRunVerifier *resource.DryRunVerifier
66+
Builder *resource.Builder
67+
FieldManager string
6768

6869
genericclioptions.IOStreams
6970
}
@@ -126,7 +127,7 @@ func (o *CreateCronJobOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, a
126127
return err
127128
}
128129

129-
o.Namespace, _, err = f.ToRawKubeConfigLoader().Namespace()
130+
o.Namespace, o.EnforceNamespace, err = f.ToRawKubeConfigLoader().Namespace()
130131
if err != nil {
131132
return err
132133
}
@@ -193,7 +194,7 @@ func (o *CreateCronJobOptions) Run() error {
193194
}
194195

195196
func (o *CreateCronJobOptions) createCronJob() *batchv1beta1.CronJob {
196-
return &batchv1beta1.CronJob{
197+
cronjob := &batchv1beta1.CronJob{
197198
TypeMeta: metav1.TypeMeta{APIVersion: batchv1beta1.SchemeGroupVersion.String(), Kind: "CronJob"},
198199
ObjectMeta: metav1.ObjectMeta{
199200
Name: o.Name,
@@ -221,4 +222,8 @@ func (o *CreateCronJobOptions) createCronJob() *batchv1beta1.CronJob {
221222
},
222223
},
223224
}
225+
if o.EnforceNamespace {
226+
cronjob.Namespace = o.Namespace
227+
}
228+
return cronjob
224229
}

staging/src/k8s.io/kubectl/pkg/cmd/create/create_job.go

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,13 @@ type CreateJobOptions struct {
6262
From string
6363
Command []string
6464

65-
Namespace string
66-
Client batchv1client.BatchV1Interface
67-
DryRunStrategy cmdutil.DryRunStrategy
68-
DryRunVerifier *resource.DryRunVerifier
69-
Builder *resource.Builder
70-
FieldManager string
65+
Namespace string
66+
EnforceNamespace bool
67+
Client batchv1client.BatchV1Interface
68+
DryRunStrategy cmdutil.DryRunStrategy
69+
DryRunVerifier *resource.DryRunVerifier
70+
Builder *resource.Builder
71+
FieldManager string
7172

7273
genericclioptions.IOStreams
7374
}
@@ -126,7 +127,7 @@ func (o *CreateJobOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
126127
return err
127128
}
128129

129-
o.Namespace, _, err = f.ToRawKubeConfigLoader().Namespace()
130+
o.Namespace, o.EnforceNamespace, err = f.ToRawKubeConfigLoader().Namespace()
130131
if err != nil {
131132
return err
132133
}
@@ -222,7 +223,7 @@ func (o *CreateJobOptions) Run() error {
222223
}
223224

224225
func (o *CreateJobOptions) createJob() *batchv1.Job {
225-
return &batchv1.Job{
226+
job := &batchv1.Job{
226227
// this is ok because we know exactly how we want to be serialized
227228
TypeMeta: metav1.TypeMeta{APIVersion: batchv1.SchemeGroupVersion.String(), Kind: "Job"},
228229
ObjectMeta: metav1.ObjectMeta{
@@ -243,6 +244,10 @@ func (o *CreateJobOptions) createJob() *batchv1.Job {
243244
},
244245
},
245246
}
247+
if o.EnforceNamespace {
248+
job.Namespace = o.Namespace
249+
}
250+
return job
246251
}
247252

248253
func (o *CreateJobOptions) createJobFromCronJob(cronJob *batchv1beta1.CronJob) *batchv1.Job {
@@ -252,7 +257,7 @@ func (o *CreateJobOptions) createJobFromCronJob(cronJob *batchv1beta1.CronJob) *
252257
annotations[k] = v
253258
}
254259

255-
return &batchv1.Job{
260+
job := &batchv1.Job{
256261
// this is ok because we know exactly how we want to be serialized
257262
TypeMeta: metav1.TypeMeta{APIVersion: batchv1.SchemeGroupVersion.String(), Kind: "Job"},
258263
ObjectMeta: metav1.ObjectMeta{
@@ -270,4 +275,8 @@ func (o *CreateJobOptions) createJobFromCronJob(cronJob *batchv1beta1.CronJob) *
270275
},
271276
Spec: cronJob.Spec.JobTemplate.Spec,
272277
}
278+
if o.EnforceNamespace {
279+
job.Namespace = o.Namespace
280+
}
281+
return job
273282
}

staging/src/k8s.io/kubectl/pkg/cmd/create/create_role.go

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -127,14 +127,15 @@ type CreateRoleOptions struct {
127127
Resources []ResourceOptions
128128
ResourceNames []string
129129

130-
DryRunStrategy cmdutil.DryRunStrategy
131-
DryRunVerifier *resource.DryRunVerifier
132-
OutputFormat string
133-
Namespace string
134-
Client clientgorbacv1.RbacV1Interface
135-
Mapper meta.RESTMapper
136-
PrintObj func(obj runtime.Object) error
137-
FieldManager string
130+
DryRunStrategy cmdutil.DryRunStrategy
131+
DryRunVerifier *resource.DryRunVerifier
132+
OutputFormat string
133+
Namespace string
134+
EnforceNamespace bool
135+
Client clientgorbacv1.RbacV1Interface
136+
Mapper meta.RESTMapper
137+
PrintObj func(obj runtime.Object) error
138+
FieldManager string
138139

139140
genericclioptions.IOStreams
140141
}
@@ -263,7 +264,7 @@ func (o *CreateRoleOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
263264
return printer.PrintObj(obj, o.Out)
264265
}
265266

266-
o.Namespace, _, err = f.ToRawKubeConfigLoader().Namespace()
267+
o.Namespace, o.EnforceNamespace, err = f.ToRawKubeConfigLoader().Namespace()
267268
if err != nil {
268269
return err
269270
}
@@ -352,6 +353,9 @@ func (o *CreateRoleOptions) RunCreateRole() error {
352353
return err
353354
}
354355
role.Rules = rules
356+
if o.EnforceNamespace {
357+
role.Namespace = o.Namespace
358+
}
355359

356360
// Create role.
357361
if o.DryRunStrategy != cmdutil.DryRunClient {

staging/src/k8s.io/kubectl/pkg/cmd/create/create_role_test.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ import (
3333

3434
func TestCreateRole(t *testing.T) {
3535
roleName := "my-role"
36-
37-
tf := cmdtesting.NewTestFactory().WithNamespace("test")
36+
testNameSpace := "test"
37+
tf := cmdtesting.NewTestFactory().WithNamespace(testNameSpace)
3838
defer tf.Cleanup()
3939

4040
tf.Client = &fake.RESTClient{}
@@ -52,7 +52,8 @@ func TestCreateRole(t *testing.T) {
5252
expectedRole: &rbac.Role{
5353
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "Role"},
5454
ObjectMeta: v1.ObjectMeta{
55-
Name: roleName,
55+
Name: roleName,
56+
Namespace: testNameSpace,
5657
},
5758
Rules: []rbac.PolicyRule{
5859
{
@@ -70,7 +71,8 @@ func TestCreateRole(t *testing.T) {
7071
expectedRole: &rbac.Role{
7172
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "Role"},
7273
ObjectMeta: v1.ObjectMeta{
73-
Name: roleName,
74+
Name: roleName,
75+
Namespace: testNameSpace,
7476
},
7577
Rules: []rbac.PolicyRule{
7678
{
@@ -88,7 +90,8 @@ func TestCreateRole(t *testing.T) {
8890
expectedRole: &rbac.Role{
8991
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "Role"},
9092
ObjectMeta: v1.ObjectMeta{
91-
Name: roleName,
93+
Name: roleName,
94+
Namespace: testNameSpace,
9295
},
9396
Rules: []rbac.PolicyRule{
9497
{
@@ -106,7 +109,8 @@ func TestCreateRole(t *testing.T) {
106109
expectedRole: &rbac.Role{
107110
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "Role"},
108111
ObjectMeta: v1.ObjectMeta{
109-
Name: roleName,
112+
Name: roleName,
113+
Namespace: testNameSpace,
110114
},
111115
Rules: []rbac.PolicyRule{
112116
{

staging/src/k8s.io/kubectl/pkg/cmd/set/set_env_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func TestSetEnvLocal(t *testing.T) {
7979
}
8080

8181
func TestSetEnvLocalNamespace(t *testing.T) {
82-
tf := cmdtesting.NewTestFactory().WithNamespace("test")
82+
tf := cmdtesting.NewTestFactory()
8383
defer tf.Cleanup()
8484

8585
tf.Client = &fake.RESTClient{

0 commit comments

Comments
 (0)