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