From 42ee2068384dd47d684121db8f92e593af1f50fc Mon Sep 17 00:00:00 2001 From: Maciej Szulik Date: Mon, 8 Jun 2020 14:02:33 +0200 Subject: [PATCH] Fix --save-config for kubectl create commands, where it was missing --- staging/src/k8s.io/kubectl/pkg/cmd/create/create.go | 8 +++----- .../k8s.io/kubectl/pkg/cmd/create/create_clusterrole.go | 6 ++++++ .../src/k8s.io/kubectl/pkg/cmd/create/create_cronjob.go | 9 +++++++++ .../k8s.io/kubectl/pkg/cmd/create/create_deployment.go | 8 ++++++++ staging/src/k8s.io/kubectl/pkg/cmd/create/create_job.go | 9 +++++++++ staging/src/k8s.io/kubectl/pkg/cmd/create/create_role.go | 7 +++++++ 6 files changed, 42 insertions(+), 5 deletions(-) diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/create/create.go b/staging/src/k8s.io/kubectl/pkg/cmd/create/create.go index 790c0244fdc..44c4ede4833 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/create/create.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/create/create.go @@ -427,6 +427,9 @@ func (o *CreateSubcommandOptions) Run() error { if err != nil { return err } + if err := util.CreateOrUpdateAnnotation(o.CreateAnnotation, obj, scheme.DefaultJSONEncoder()); err != nil { + return err + } if o.DryRunStrategy != cmdutil.DryRunClient { // create subcommands have compiled knowledge of things they create, so type them directly gvks, _, err := scheme.Scheme.ObjectKinds(obj) @@ -439,12 +442,7 @@ func (o *CreateSubcommandOptions) Run() error { return err } - if err := util.CreateOrUpdateAnnotation(o.CreateAnnotation, obj, scheme.DefaultJSONEncoder()); err != nil { - return err - } - asUnstructured := &unstructured.Unstructured{} - if err := scheme.Scheme.Convert(obj, asUnstructured, nil); err != nil { return err } diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/create/create_clusterrole.go b/staging/src/k8s.io/kubectl/pkg/cmd/create/create_clusterrole.go index 113f8d8eb2a..933ea2587ce 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/create/create_clusterrole.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/create/create_clusterrole.go @@ -28,6 +28,8 @@ import ( "k8s.io/cli-runtime/pkg/genericclioptions" cliflag "k8s.io/component-base/cli/flag" cmdutil "k8s.io/kubectl/pkg/cmd/util" + "k8s.io/kubectl/pkg/scheme" + "k8s.io/kubectl/pkg/util" "k8s.io/kubectl/pkg/util/i18n" "k8s.io/kubectl/pkg/util/templates" ) @@ -201,6 +203,10 @@ func (c *CreateClusterRoleOptions) RunCreateRole() error { } } + if err := util.CreateOrUpdateAnnotation(c.CreateAnnotation, clusterRole, scheme.DefaultJSONEncoder()); err != nil { + return err + } + // Create ClusterRole. if c.DryRunStrategy != cmdutil.DryRunClient { createOptions := metav1.CreateOptions{} diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/create/create_cronjob.go b/staging/src/k8s.io/kubectl/pkg/cmd/create/create_cronjob.go index 94fcc8ceb68..57709febb26 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/create/create_cronjob.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/create/create_cronjob.go @@ -32,6 +32,7 @@ import ( batchv1beta1client "k8s.io/client-go/kubernetes/typed/batch/v1beta1" cmdutil "k8s.io/kubectl/pkg/cmd/util" "k8s.io/kubectl/pkg/scheme" + "k8s.io/kubectl/pkg/util" "k8s.io/kubectl/pkg/util/templates" ) @@ -65,6 +66,7 @@ type CreateCronJobOptions struct { DryRunVerifier *resource.DryRunVerifier Builder *resource.Builder FieldManager string + CreateAnnotation bool genericclioptions.IOStreams } @@ -135,6 +137,8 @@ func (o *CreateCronJobOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, a } o.Builder = f.NewBuilder() + o.CreateAnnotation = cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag) + o.DryRunStrategy, err = cmdutil.GetDryRunStrategy(cmd) if err != nil { return err @@ -162,6 +166,11 @@ func (o *CreateCronJobOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, a func (o *CreateCronJobOptions) Run() error { cronjob := o.createCronJob() + + if err := util.CreateOrUpdateAnnotation(o.CreateAnnotation, cronjob, scheme.DefaultJSONEncoder()); err != nil { + return err + } + if o.DryRunStrategy != cmdutil.DryRunClient { createOptions := metav1.CreateOptions{} if o.FieldManager != "" { diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/create/create_deployment.go b/staging/src/k8s.io/kubectl/pkg/cmd/create/create_deployment.go index b579298ceb7..92afced48c0 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/create/create_deployment.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/create/create_deployment.go @@ -33,6 +33,7 @@ import ( appsv1client "k8s.io/client-go/kubernetes/typed/apps/v1" cmdutil "k8s.io/kubectl/pkg/cmd/util" "k8s.io/kubectl/pkg/scheme" + "k8s.io/kubectl/pkg/util" "k8s.io/kubectl/pkg/util/i18n" "k8s.io/kubectl/pkg/util/templates" ) @@ -69,6 +70,7 @@ type CreateDeploymentOptions struct { Namespace string EnforceNamespace bool FieldManager string + CreateAnnotation bool Client appsv1client.AppsV1Interface DryRunStrategy cmdutil.DryRunStrategy @@ -143,6 +145,8 @@ func (o *CreateDeploymentOptions) Complete(f cmdutil.Factory, cmd *cobra.Command return err } + o.CreateAnnotation = cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag) + o.DryRunStrategy, err = cmdutil.GetDryRunStrategy(cmd) if err != nil { return err @@ -180,6 +184,10 @@ func (o *CreateDeploymentOptions) Validate() error { func (o *CreateDeploymentOptions) Run() error { deploy := o.createDeployment() + if err := util.CreateOrUpdateAnnotation(o.CreateAnnotation, deploy, scheme.DefaultJSONEncoder()); err != nil { + return err + } + if o.DryRunStrategy != cmdutil.DryRunClient { createOptions := metav1.CreateOptions{} if o.FieldManager != "" { diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/create/create_job.go b/staging/src/k8s.io/kubectl/pkg/cmd/create/create_job.go index 96aa28dabbd..b6133434730 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/create/create_job.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/create/create_job.go @@ -32,6 +32,7 @@ import ( batchv1client "k8s.io/client-go/kubernetes/typed/batch/v1" cmdutil "k8s.io/kubectl/pkg/cmd/util" "k8s.io/kubectl/pkg/scheme" + "k8s.io/kubectl/pkg/util" "k8s.io/kubectl/pkg/util/i18n" "k8s.io/kubectl/pkg/util/templates" ) @@ -69,6 +70,7 @@ type CreateJobOptions struct { DryRunVerifier *resource.DryRunVerifier Builder *resource.Builder FieldManager string + CreateAnnotation bool genericclioptions.IOStreams } @@ -128,6 +130,8 @@ func (o *CreateJobOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args return err } + o.CreateAnnotation = cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag) + o.Namespace, o.EnforceNamespace, err = f.ToRawKubeConfigLoader().Namespace() if err != nil { return err @@ -202,6 +206,11 @@ func (o *CreateJobOptions) Run() error { job = o.createJobFromCronJob(cronJob) } + + if err := util.CreateOrUpdateAnnotation(o.CreateAnnotation, job, scheme.DefaultJSONEncoder()); err != nil { + return err + } + if o.DryRunStrategy != cmdutil.DryRunClient { createOptions := metav1.CreateOptions{} if o.FieldManager != "" { diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/create/create_role.go b/staging/src/k8s.io/kubectl/pkg/cmd/create/create_role.go index 7cd6a1978dd..62e624476ed 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/create/create_role.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/create/create_role.go @@ -34,6 +34,7 @@ import ( clientgorbacv1 "k8s.io/client-go/kubernetes/typed/rbac/v1" cmdutil "k8s.io/kubectl/pkg/cmd/util" "k8s.io/kubectl/pkg/scheme" + "k8s.io/kubectl/pkg/util" "k8s.io/kubectl/pkg/util/i18n" "k8s.io/kubectl/pkg/util/templates" ) @@ -136,6 +137,7 @@ type CreateRoleOptions struct { Mapper meta.RESTMapper PrintObj func(obj runtime.Object) error FieldManager string + CreateAnnotation bool genericclioptions.IOStreams } @@ -254,6 +256,7 @@ func (o *CreateRoleOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args } o.DryRunVerifier = resource.NewDryRunVerifier(dynamicClient, discoveryClient) o.OutputFormat = cmdutil.GetFlagString(cmd, "output") + o.CreateAnnotation = cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag) cmdutil.PrintFlagsWithDryRunStrategy(o.PrintFlags, o.DryRunStrategy) printer, err := o.PrintFlags.ToPrinter() @@ -357,6 +360,10 @@ func (o *CreateRoleOptions) RunCreateRole() error { role.Namespace = o.Namespace } + if err := util.CreateOrUpdateAnnotation(o.CreateAnnotation, role, scheme.DefaultJSONEncoder()); err != nil { + return err + } + // Create role. if o.DryRunStrategy != cmdutil.DryRunClient { createOptions := metav1.CreateOptions{}