client-fake object tracker: support merge patch

Signed-off-by: Steve Kriss <krisss@vmware.com>

Kubernetes-commit: d425fe29bd808db54c59e3e0ecdedbe735b8f68b
This commit is contained in:
Steve Kriss
2019-02-21 13:47:16 -07:00
committed by Kubernetes Publisher
parent 9163569417
commit f0c6576981
2 changed files with 16 additions and 7 deletions

View File

@@ -20,7 +20,7 @@ import (
"fmt"
"sync"
"github.com/evanphx/json-patch"
jsonpatch "github.com/evanphx/json-patch"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -138,7 +138,7 @@ func ObjectReaction(tracker ObjectTracker) ReactionFunc {
if err != nil {
return true, nil, err
}
// Only supports strategic merge patch and JSONPatch as coded.
switch action.GetPatchType() {
case types.JSONPatchType:
patch, err := jsonpatch.DecodePatch(action.GetPatch())
@@ -152,6 +152,15 @@ func ObjectReaction(tracker ObjectTracker) ReactionFunc {
if err = json.Unmarshal(modified, obj); err != nil {
return true, nil, err
}
case types.MergePatchType:
modified, err := jsonpatch.MergePatch(old, action.GetPatch())
if err != nil {
return true, nil, err
}
if err := json.Unmarshal(modified, obj); err != nil {
return true, nil, err
}
case types.StrategicMergePatchType:
mergedByte, err := strategicpatch.StrategicMergePatch(old, action.GetPatch(), obj)
if err != nil {