Skip to content

Commit 590365c

Browse files
authored
Merge pull request kubernetes#90785 from zhouya0/fix_kubectl_run_ignore_namespace
Fix kubectl run --dry-run client ignore namespace
2 parents 2185064 + b3c830d commit 590365c

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

staging/src/k8s.io/kubectl/pkg/cmd/run/run.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@ type RunOptions struct {
125125
TTY bool
126126
fieldManager string
127127

128+
Namespace string
129+
EnforceNamespace bool
130+
128131
genericclioptions.IOStreams
129132
}
130133

@@ -283,7 +286,7 @@ func (o *RunOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []string) e
283286
return cmdutil.UsageErrorf(cmd, "--port must be set when exposing a service")
284287
}
285288

286-
namespace, _, err := f.ToRawKubeConfigLoader().Namespace()
289+
o.Namespace, o.EnforceNamespace, err = f.ToRawKubeConfigLoader().Namespace()
287290
if err != nil {
288291
return err
289292
}
@@ -324,7 +327,7 @@ func (o *RunOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []string) e
324327
params["env"] = cmdutil.GetFlagStringArray(cmd, "env")
325328

326329
var createdObjects = []*RunObject{}
327-
runObject, err := o.createGeneratedObject(f, cmd, generator, names, params, cmdutil.GetFlagString(cmd, "overrides"), namespace)
330+
runObject, err := o.createGeneratedObject(f, cmd, generator, names, params, cmdutil.GetFlagString(cmd, "overrides"))
328331
if err != nil {
329332
return err
330333
}
@@ -336,7 +339,7 @@ func (o *RunOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []string) e
336339
if len(serviceGenerator) == 0 {
337340
return cmdutil.UsageErrorf(cmd, "No service generator specified")
338341
}
339-
serviceRunObject, err := o.generateService(f, cmd, serviceGenerator, params, namespace)
342+
serviceRunObject, err := o.generateService(f, cmd, serviceGenerator, params)
340343
if err != nil {
341344
allErrs = append(allErrs, err)
342345
} else {
@@ -563,7 +566,7 @@ func verifyImagePullPolicy(cmd *cobra.Command) error {
563566
return cmdutil.UsageErrorf(cmd, "invalid image pull policy: %s", pullPolicy)
564567
}
565568

566-
func (o *RunOptions) generateService(f cmdutil.Factory, cmd *cobra.Command, serviceGenerator string, paramsIn map[string]interface{}, namespace string) (*RunObject, error) {
569+
func (o *RunOptions) generateService(f cmdutil.Factory, cmd *cobra.Command, serviceGenerator string, paramsIn map[string]interface{}) (*RunObject, error) {
567570
generators := generateversioned.GeneratorFn("expose")
568571
generator, found := generators[serviceGenerator]
569572
if !found {
@@ -593,7 +596,7 @@ func (o *RunOptions) generateService(f cmdutil.Factory, cmd *cobra.Command, serv
593596
params["default-name"] = name
594597
}
595598

596-
runObject, err := o.createGeneratedObject(f, cmd, generator, names, params, cmdutil.GetFlagString(cmd, "service-overrides"), namespace)
599+
runObject, err := o.createGeneratedObject(f, cmd, generator, names, params, cmdutil.GetFlagString(cmd, "service-overrides"))
597600
if err != nil {
598601
return nil, err
599602
}
@@ -609,7 +612,7 @@ func (o *RunOptions) generateService(f cmdutil.Factory, cmd *cobra.Command, serv
609612
return runObject, nil
610613
}
611614

612-
func (o *RunOptions) createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command, generator generate.Generator, names []generate.GeneratorParam, params map[string]interface{}, overrides, namespace string) (*RunObject, error) {
615+
func (o *RunOptions) createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command, generator generate.Generator, names []generate.GeneratorParam, params map[string]interface{}, overrides string) (*RunObject, error) {
613616
err := generate.ValidateParams(names, params)
614617
if err != nil {
615618
return nil, err
@@ -665,10 +668,14 @@ func (o *RunOptions) createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command
665668
NewHelper(client, mapping).
666669
DryRun(o.DryRunStrategy == cmdutil.DryRunServer).
667670
WithFieldManager(o.fieldManager).
668-
Create(namespace, false, obj)
671+
Create(o.Namespace, false, obj)
669672
if err != nil {
670673
return nil, err
671674
}
675+
} else {
676+
if meta, err := meta.Accessor(actualObj); err == nil && o.EnforceNamespace {
677+
meta.SetNamespace(o.Namespace)
678+
}
672679
}
673680

674681
return &RunObject{

staging/src/k8s.io/kubectl/pkg/cmd/run/run_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,8 @@ func TestGenerateService(t *testing.T) {
382382
PrintObj: func(obj runtime.Object) error {
383383
return printer.PrintObj(obj, buff)
384384
},
385+
386+
Namespace: "test",
385387
}
386388

387389
cmd := &cobra.Command{}
@@ -398,7 +400,7 @@ func TestGenerateService(t *testing.T) {
398400
test.params["port"] = test.port
399401
}
400402

401-
_, err = opts.generateService(tf, cmd, test.serviceGenerator, test.params, "test")
403+
_, err = opts.generateService(tf, cmd, test.serviceGenerator, test.params)
402404
if test.expectErr {
403405
if err == nil {
404406
t.Error("unexpected non-error")

0 commit comments

Comments
 (0)