Merge pull request #63398 from deads2k/cli-45-conversion

Automatic merge from submit-queue (batch tested with PRs 63258, 63398, 63403). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

remove unnessary kubectl conversions

Working with unstructured types means that conversion can be eliminated.  This pulls  it from places I noticed.

/assign @juanvallejo 

@kubernetes/sig-cli-misc 

```release-note
NONE
```
This commit is contained in:
Kubernetes Submit Queue 2018-05-03 12:48:13 -07:00 committed by GitHub
commit eaa3aa382a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 15 deletions

View File

@ -24,6 +24,7 @@ import (
"k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
"k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates" "k8s.io/kubernetes/pkg/kubectl/cmd/templates"
@ -31,7 +32,6 @@ import (
"k8s.io/kubernetes/pkg/kubectl/cmd/util/editor" "k8s.io/kubernetes/pkg/kubectl/cmd/util/editor"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions" "k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/resource" "k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n" "k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers" "k8s.io/kubernetes/pkg/printers"
) )
@ -151,7 +151,7 @@ func (o *SetLastAppliedOptions) Validate() error {
if err != nil { if err != nil {
return err return err
} }
patchBuf, diffBuf, patchType, err := editor.GetApplyPatch(info.Object, scheme.DefaultJSONEncoder()) patchBuf, diffBuf, patchType, err := editor.GetApplyPatch(info.Object.(runtime.Unstructured))
if err != nil { if err != nil {
return err return err
} }
@ -189,6 +189,8 @@ func (o *SetLastAppliedOptions) Validate() error {
func (o *SetLastAppliedOptions) RunSetLastApplied() error { func (o *SetLastAppliedOptions) RunSetLastApplied() error {
for i, patch := range o.patchBufferList { for i, patch := range o.patchBufferList {
info := o.infoList[i] info := o.infoList[i]
finalObj := info.Object
if !o.dryRun { if !o.dryRun {
mapping := info.ResourceMapping() mapping := info.ResourceMapping()
client, err := o.unstructuredClientForMapping(mapping) client, err := o.unstructuredClientForMapping(mapping)
@ -196,13 +198,12 @@ func (o *SetLastAppliedOptions) RunSetLastApplied() error {
return err return err
} }
helper := resource.NewHelper(client, mapping) helper := resource.NewHelper(client, mapping)
patchedObj, err := helper.Patch(o.namespace, info.Name, patch.PatchType, patch.Patch) finalObj, err = helper.Patch(o.namespace, info.Name, patch.PatchType, patch.Patch)
if err != nil { if err != nil {
return err return err
} }
info.Refresh(patchedObj, false)
} }
if err := o.PrintObj(cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping), o.Out); err != nil { if err := o.PrintObj(finalObj, o.Out); err != nil {
return err return err
} }
} }

View File

@ -426,12 +426,12 @@ func (o *EditOptions) visitToApplyEditPatch(originalInfos []*resource.Info, patc
return fmt.Errorf("no original object found for %#v", info.Object) return fmt.Errorf("no original object found for %#v", info.Object)
} }
originalJS, err := encodeToJson(cmdutil.InternalVersionJSONEncoder(), originalInfo.Object) originalJS, err := encodeToJson(originalInfo.Object.(runtime.Unstructured))
if err != nil { if err != nil {
return err return err
} }
editedJS, err := encodeToJson(cmdutil.InternalVersionJSONEncoder(), info.Object) editedJS, err := encodeToJson(info.Object.(runtime.Unstructured))
if err != nil { if err != nil {
return err return err
} }
@ -461,7 +461,7 @@ func (o *EditOptions) visitToApplyEditPatch(originalInfos []*resource.Info, patc
} }
func (o *EditOptions) annotationPatch(update *resource.Info) error { func (o *EditOptions) annotationPatch(update *resource.Info) error {
patch, _, patchType, err := GetApplyPatch(update.Object, cmdutil.InternalVersionJSONEncoder()) patch, _, patchType, err := GetApplyPatch(update.Object.(runtime.Unstructured))
if err != nil { if err != nil {
return err return err
} }
@ -478,8 +478,8 @@ func (o *EditOptions) annotationPatch(update *resource.Info) error {
return nil return nil
} }
func GetApplyPatch(obj runtime.Object, codec runtime.Encoder) ([]byte, []byte, types.PatchType, error) { func GetApplyPatch(obj runtime.Unstructured) ([]byte, []byte, types.PatchType, error) {
beforeJSON, err := encodeToJson(codec, obj) beforeJSON, err := encodeToJson(obj)
if err != nil { if err != nil {
return nil, []byte(""), types.MergePatchType, err return nil, []byte(""), types.MergePatchType, err
} }
@ -494,7 +494,7 @@ func GetApplyPatch(obj runtime.Object, codec runtime.Encoder) ([]byte, []byte, t
} }
annotations[api.LastAppliedConfigAnnotation] = string(beforeJSON) annotations[api.LastAppliedConfigAnnotation] = string(beforeJSON)
accessor.SetAnnotations(objCopy, annotations) accessor.SetAnnotations(objCopy, annotations)
afterJSON, err := encodeToJson(codec, objCopy) afterJSON, err := encodeToJson(objCopy.(runtime.Unstructured))
if err != nil { if err != nil {
return nil, beforeJSON, types.MergePatchType, err return nil, beforeJSON, types.MergePatchType, err
} }
@ -502,8 +502,8 @@ func GetApplyPatch(obj runtime.Object, codec runtime.Encoder) ([]byte, []byte, t
return patch, beforeJSON, types.MergePatchType, err return patch, beforeJSON, types.MergePatchType, err
} }
func encodeToJson(codec runtime.Encoder, obj runtime.Object) ([]byte, error) { func encodeToJson(obj runtime.Unstructured) ([]byte, error) {
serialization, err := runtime.Encode(codec, obj) serialization, err := runtime.Encode(unstructured.UnstructuredJSONScheme, obj)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -560,12 +560,12 @@ func (o *EditOptions) visitToPatch(originalInfos []*resource.Info, patchVisitor
return fmt.Errorf("no original object found for %#v", info.Object) return fmt.Errorf("no original object found for %#v", info.Object)
} }
originalJS, err := encodeToJson(cmdutil.InternalVersionJSONEncoder(), originalInfo.Object) originalJS, err := encodeToJson(originalInfo.Object.(runtime.Unstructured))
if err != nil { if err != nil {
return err return err
} }
editedJS, err := encodeToJson(cmdutil.InternalVersionJSONEncoder(), info.Object) editedJS, err := encodeToJson(info.Object.(runtime.Unstructured))
if err != nil { if err != nil {
return err return err
} }