|
|
@ -27,7 +27,6 @@ import (
|
|
|
|
"sync"
|
|
|
|
"sync"
|
|
|
|
"time"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
|
|
jsonpatch "github.com/evanphx/json-patch"
|
|
|
|
|
|
|
|
"github.com/pkg/errors"
|
|
|
|
"github.com/pkg/errors"
|
|
|
|
batch "k8s.io/api/batch/v1"
|
|
|
|
batch "k8s.io/api/batch/v1"
|
|
|
|
v1 "k8s.io/api/core/v1"
|
|
|
|
v1 "k8s.io/api/core/v1"
|
|
|
@ -41,6 +40,7 @@ import (
|
|
|
|
"k8s.io/apimachinery/pkg/fields"
|
|
|
|
"k8s.io/apimachinery/pkg/fields"
|
|
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
|
|
"k8s.io/apimachinery/pkg/types"
|
|
|
|
"k8s.io/apimachinery/pkg/types"
|
|
|
|
|
|
|
|
"k8s.io/apimachinery/pkg/util/jsonmergepatch"
|
|
|
|
"k8s.io/apimachinery/pkg/util/strategicpatch"
|
|
|
|
"k8s.io/apimachinery/pkg/util/strategicpatch"
|
|
|
|
"k8s.io/apimachinery/pkg/watch"
|
|
|
|
"k8s.io/apimachinery/pkg/watch"
|
|
|
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
|
|
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
|
|
@ -445,7 +445,7 @@ func createPatch(target *resource.Info, current runtime.Object) ([]byte, types.P
|
|
|
|
|
|
|
|
|
|
|
|
// Unstructured objects, such as CRDs, may not have an not registered error
|
|
|
|
// Unstructured objects, such as CRDs, may not have an not registered error
|
|
|
|
// returned from ConvertToVersion. Anything that's unstructured should
|
|
|
|
// returned from ConvertToVersion. Anything that's unstructured should
|
|
|
|
// use the jsonpatch.CreateMergePatch. Strategic Merge Patch is not supported
|
|
|
|
// use the jsonmergepatch.CreateThreeWayJSONMergePatch. Strategic Merge Patch is not supported
|
|
|
|
// on objects like CRDs.
|
|
|
|
// on objects like CRDs.
|
|
|
|
_, isUnstructured := versionedObject.(runtime.Unstructured)
|
|
|
|
_, isUnstructured := versionedObject.(runtime.Unstructured)
|
|
|
|
|
|
|
|
|
|
|
@ -454,7 +454,7 @@ func createPatch(target *resource.Info, current runtime.Object) ([]byte, types.P
|
|
|
|
|
|
|
|
|
|
|
|
if isUnstructured || isCRD {
|
|
|
|
if isUnstructured || isCRD {
|
|
|
|
// fall back to generic JSON merge patch
|
|
|
|
// fall back to generic JSON merge patch
|
|
|
|
patch, err := jsonpatch.CreateMergePatch(oldData, newData)
|
|
|
|
patch, err := jsonmergepatch.CreateThreeWayJSONMergePatch(oldData, newData, currentData)
|
|
|
|
return patch, types.MergePatchType, err
|
|
|
|
return patch, types.MergePatchType, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|