diff --git a/pkg/kubectl/cmd/apply_set_last_applied.go b/pkg/kubectl/cmd/apply_set_last_applied.go index 40ca8841c60..f2291807f21 100644 --- a/pkg/kubectl/cmd/apply_set_last_applied.go +++ b/pkg/kubectl/cmd/apply_set_last_applied.go @@ -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 } } diff --git a/pkg/kubectl/cmd/util/editor/editoptions.go b/pkg/kubectl/cmd/util/editor/editoptions.go index 93c7f6f031b..d9dc1247fbe 100644 --- a/pkg/kubectl/cmd/util/editor/editoptions.go +++ b/pkg/kubectl/cmd/util/editor/editoptions.go @@ -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 }