mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 19:01:49 +00:00
Fix dry run client ignore namespace
This commit is contained in:
parent
71277de4d6
commit
2f117260fb
@ -96,7 +96,7 @@ type namespacedClientConfig struct {
|
||||
}
|
||||
|
||||
func (c *namespacedClientConfig) Namespace() (string, bool, error) {
|
||||
return c.namespace, false, nil
|
||||
return c.namespace, len(c.namespace) > 0, nil
|
||||
}
|
||||
|
||||
func (c *namespacedClientConfig) RawConfig() (clientcmdapi.Config, error) {
|
||||
|
@ -58,12 +58,13 @@ type CreateCronJobOptions struct {
|
||||
Command []string
|
||||
Restart string
|
||||
|
||||
Namespace string
|
||||
Client batchv1beta1client.BatchV1beta1Interface
|
||||
DryRunStrategy cmdutil.DryRunStrategy
|
||||
DryRunVerifier *resource.DryRunVerifier
|
||||
Builder *resource.Builder
|
||||
FieldManager string
|
||||
Namespace string
|
||||
EnforceNamespace bool
|
||||
Client batchv1beta1client.BatchV1beta1Interface
|
||||
DryRunStrategy cmdutil.DryRunStrategy
|
||||
DryRunVerifier *resource.DryRunVerifier
|
||||
Builder *resource.Builder
|
||||
FieldManager string
|
||||
|
||||
genericclioptions.IOStreams
|
||||
}
|
||||
@ -126,7 +127,7 @@ func (o *CreateCronJobOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, a
|
||||
return err
|
||||
}
|
||||
|
||||
o.Namespace, _, err = f.ToRawKubeConfigLoader().Namespace()
|
||||
o.Namespace, o.EnforceNamespace, err = f.ToRawKubeConfigLoader().Namespace()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -193,7 +194,7 @@ func (o *CreateCronJobOptions) Run() error {
|
||||
}
|
||||
|
||||
func (o *CreateCronJobOptions) createCronJob() *batchv1beta1.CronJob {
|
||||
return &batchv1beta1.CronJob{
|
||||
cronjob := &batchv1beta1.CronJob{
|
||||
TypeMeta: metav1.TypeMeta{APIVersion: batchv1beta1.SchemeGroupVersion.String(), Kind: "CronJob"},
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: o.Name,
|
||||
@ -221,4 +222,8 @@ func (o *CreateCronJobOptions) createCronJob() *batchv1beta1.CronJob {
|
||||
},
|
||||
},
|
||||
}
|
||||
if o.EnforceNamespace {
|
||||
cronjob.Namespace = o.Namespace
|
||||
}
|
||||
return cronjob
|
||||
}
|
||||
|
@ -62,12 +62,13 @@ type CreateJobOptions struct {
|
||||
From string
|
||||
Command []string
|
||||
|
||||
Namespace string
|
||||
Client batchv1client.BatchV1Interface
|
||||
DryRunStrategy cmdutil.DryRunStrategy
|
||||
DryRunVerifier *resource.DryRunVerifier
|
||||
Builder *resource.Builder
|
||||
FieldManager string
|
||||
Namespace string
|
||||
EnforceNamespace bool
|
||||
Client batchv1client.BatchV1Interface
|
||||
DryRunStrategy cmdutil.DryRunStrategy
|
||||
DryRunVerifier *resource.DryRunVerifier
|
||||
Builder *resource.Builder
|
||||
FieldManager string
|
||||
|
||||
genericclioptions.IOStreams
|
||||
}
|
||||
@ -126,7 +127,7 @@ func (o *CreateJobOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
|
||||
return err
|
||||
}
|
||||
|
||||
o.Namespace, _, err = f.ToRawKubeConfigLoader().Namespace()
|
||||
o.Namespace, o.EnforceNamespace, err = f.ToRawKubeConfigLoader().Namespace()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -222,7 +223,7 @@ func (o *CreateJobOptions) Run() error {
|
||||
}
|
||||
|
||||
func (o *CreateJobOptions) createJob() *batchv1.Job {
|
||||
return &batchv1.Job{
|
||||
job := &batchv1.Job{
|
||||
// this is ok because we know exactly how we want to be serialized
|
||||
TypeMeta: metav1.TypeMeta{APIVersion: batchv1.SchemeGroupVersion.String(), Kind: "Job"},
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
@ -243,6 +244,10 @@ func (o *CreateJobOptions) createJob() *batchv1.Job {
|
||||
},
|
||||
},
|
||||
}
|
||||
if o.EnforceNamespace {
|
||||
job.Namespace = o.Namespace
|
||||
}
|
||||
return job
|
||||
}
|
||||
|
||||
func (o *CreateJobOptions) createJobFromCronJob(cronJob *batchv1beta1.CronJob) *batchv1.Job {
|
||||
@ -252,7 +257,7 @@ func (o *CreateJobOptions) createJobFromCronJob(cronJob *batchv1beta1.CronJob) *
|
||||
annotations[k] = v
|
||||
}
|
||||
|
||||
return &batchv1.Job{
|
||||
job := &batchv1.Job{
|
||||
// this is ok because we know exactly how we want to be serialized
|
||||
TypeMeta: metav1.TypeMeta{APIVersion: batchv1.SchemeGroupVersion.String(), Kind: "Job"},
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
@ -270,4 +275,8 @@ func (o *CreateJobOptions) createJobFromCronJob(cronJob *batchv1beta1.CronJob) *
|
||||
},
|
||||
Spec: cronJob.Spec.JobTemplate.Spec,
|
||||
}
|
||||
if o.EnforceNamespace {
|
||||
job.Namespace = o.Namespace
|
||||
}
|
||||
return job
|
||||
}
|
||||
|
@ -127,14 +127,15 @@ type CreateRoleOptions struct {
|
||||
Resources []ResourceOptions
|
||||
ResourceNames []string
|
||||
|
||||
DryRunStrategy cmdutil.DryRunStrategy
|
||||
DryRunVerifier *resource.DryRunVerifier
|
||||
OutputFormat string
|
||||
Namespace string
|
||||
Client clientgorbacv1.RbacV1Interface
|
||||
Mapper meta.RESTMapper
|
||||
PrintObj func(obj runtime.Object) error
|
||||
FieldManager string
|
||||
DryRunStrategy cmdutil.DryRunStrategy
|
||||
DryRunVerifier *resource.DryRunVerifier
|
||||
OutputFormat string
|
||||
Namespace string
|
||||
EnforceNamespace bool
|
||||
Client clientgorbacv1.RbacV1Interface
|
||||
Mapper meta.RESTMapper
|
||||
PrintObj func(obj runtime.Object) error
|
||||
FieldManager string
|
||||
|
||||
genericclioptions.IOStreams
|
||||
}
|
||||
@ -263,7 +264,7 @@ func (o *CreateRoleOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
|
||||
return printer.PrintObj(obj, o.Out)
|
||||
}
|
||||
|
||||
o.Namespace, _, err = f.ToRawKubeConfigLoader().Namespace()
|
||||
o.Namespace, o.EnforceNamespace, err = f.ToRawKubeConfigLoader().Namespace()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -352,6 +353,9 @@ func (o *CreateRoleOptions) RunCreateRole() error {
|
||||
return err
|
||||
}
|
||||
role.Rules = rules
|
||||
if o.EnforceNamespace {
|
||||
role.Namespace = o.Namespace
|
||||
}
|
||||
|
||||
// Create role.
|
||||
if o.DryRunStrategy != cmdutil.DryRunClient {
|
||||
|
@ -33,8 +33,8 @@ import (
|
||||
|
||||
func TestCreateRole(t *testing.T) {
|
||||
roleName := "my-role"
|
||||
|
||||
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
||||
testNameSpace := "test"
|
||||
tf := cmdtesting.NewTestFactory().WithNamespace(testNameSpace)
|
||||
defer tf.Cleanup()
|
||||
|
||||
tf.Client = &fake.RESTClient{}
|
||||
@ -52,7 +52,8 @@ func TestCreateRole(t *testing.T) {
|
||||
expectedRole: &rbac.Role{
|
||||
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "Role"},
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Name: roleName,
|
||||
Name: roleName,
|
||||
Namespace: testNameSpace,
|
||||
},
|
||||
Rules: []rbac.PolicyRule{
|
||||
{
|
||||
@ -70,7 +71,8 @@ func TestCreateRole(t *testing.T) {
|
||||
expectedRole: &rbac.Role{
|
||||
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "Role"},
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Name: roleName,
|
||||
Name: roleName,
|
||||
Namespace: testNameSpace,
|
||||
},
|
||||
Rules: []rbac.PolicyRule{
|
||||
{
|
||||
@ -88,7 +90,8 @@ func TestCreateRole(t *testing.T) {
|
||||
expectedRole: &rbac.Role{
|
||||
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "Role"},
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Name: roleName,
|
||||
Name: roleName,
|
||||
Namespace: testNameSpace,
|
||||
},
|
||||
Rules: []rbac.PolicyRule{
|
||||
{
|
||||
@ -106,7 +109,8 @@ func TestCreateRole(t *testing.T) {
|
||||
expectedRole: &rbac.Role{
|
||||
TypeMeta: v1.TypeMeta{APIVersion: "rbac.authorization.k8s.io/v1", Kind: "Role"},
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Name: roleName,
|
||||
Name: roleName,
|
||||
Namespace: testNameSpace,
|
||||
},
|
||||
Rules: []rbac.PolicyRule{
|
||||
{
|
||||
|
@ -79,7 +79,7 @@ func TestSetEnvLocal(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestSetEnvLocalNamespace(t *testing.T) {
|
||||
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
||||
tf := cmdtesting.NewTestFactory()
|
||||
defer tf.Cleanup()
|
||||
|
||||
tf.Client = &fake.RESTClient{
|
||||
|
Loading…
Reference in New Issue
Block a user