remove unnessary kubectl conversions

pull/8/head
David Eads 2018-05-03 08:05:50 -04:00
parent 398ced1dcd
commit a9a99681e4
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/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/kubernetes/pkg/kubectl"
"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/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
@ -151,7 +151,7 @@ func (o *SetLastAppliedOptions) Validate() error {
if err != nil {
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 {
return err
}
@ -189,6 +189,8 @@ func (o *SetLastAppliedOptions) Validate() error {
func (o *SetLastAppliedOptions) RunSetLastApplied() error {
for i, patch := range o.patchBufferList {
info := o.infoList[i]
finalObj := info.Object
if !o.dryRun {
mapping := info.ResourceMapping()
client, err := o.unstructuredClientForMapping(mapping)
@ -196,13 +198,12 @@ func (o *SetLastAppliedOptions) RunSetLastApplied() error {
return err
}
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 {
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
}
}

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)
}
originalJS, err := encodeToJson(cmdutil.InternalVersionJSONEncoder(), originalInfo.Object)
originalJS, err := encodeToJson(originalInfo.Object.(runtime.Unstructured))
if err != nil {
return err
}
editedJS, err := encodeToJson(cmdutil.InternalVersionJSONEncoder(), info.Object)
editedJS, err := encodeToJson(info.Object.(runtime.Unstructured))
if err != nil {
return err
}
@ -461,7 +461,7 @@ func (o *EditOptions) visitToApplyEditPatch(originalInfos []*resource.Info, patc
}
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 {
return err
}
@ -478,8 +478,8 @@ func (o *EditOptions) annotationPatch(update *resource.Info) error {
return nil
}
func GetApplyPatch(obj runtime.Object, codec runtime.Encoder) ([]byte, []byte, types.PatchType, error) {
beforeJSON, err := encodeToJson(codec, obj)
func GetApplyPatch(obj runtime.Unstructured) ([]byte, []byte, types.PatchType, error) {
beforeJSON, err := encodeToJson(obj)
if err != nil {
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)
accessor.SetAnnotations(objCopy, annotations)
afterJSON, err := encodeToJson(codec, objCopy)
afterJSON, err := encodeToJson(objCopy.(runtime.Unstructured))
if err != nil {
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
}
func encodeToJson(codec runtime.Encoder, obj runtime.Object) ([]byte, error) {
serialization, err := runtime.Encode(codec, obj)
func encodeToJson(obj runtime.Unstructured) ([]byte, error) {
serialization, err := runtime.Encode(unstructured.UnstructuredJSONScheme, obj)
if err != nil {
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)
}
originalJS, err := encodeToJson(cmdutil.InternalVersionJSONEncoder(), originalInfo.Object)
originalJS, err := encodeToJson(originalInfo.Object.(runtime.Unstructured))
if err != nil {
return err
}
editedJS, err := encodeToJson(cmdutil.InternalVersionJSONEncoder(), info.Object)
editedJS, err := encodeToJson(info.Object.(runtime.Unstructured))
if err != nil {
return err
}