@@ -19,11 +19,11 @@ package overridemanager
19
19
import (
20
20
"context"
21
21
"encoding/json"
22
+ "errors"
23
+ "reflect"
22
24
"sort"
23
25
24
26
jsonpatch "github.com/evanphx/json-patch/v5"
25
- "github.com/tidwall/gjson"
26
- "github.com/tidwall/sjson"
27
27
corev1 "k8s.io/api/core/v1"
28
28
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
29
29
yamlutil "k8s.io/apimachinery/pkg/util/yaml"
@@ -32,6 +32,7 @@ import (
32
32
"sigs.k8s.io/controller-runtime/pkg/client"
33
33
"sigs.k8s.io/yaml"
34
34
35
+ "github.com/go-openapi/jsonpointer"
35
36
clusterv1alpha1 "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
36
37
policyv1alpha1 "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1"
37
38
"github.com/karmada-io/karmada/pkg/events"
@@ -290,7 +291,6 @@ func applyRawJSONPatch(raw []byte, overrides []overrideOption) ([]byte, error) {
290
291
if err != nil {
291
292
return nil , err
292
293
}
293
- // fmt.Printf(string(jsonPatchBytes) + " " + string(raw))
294
294
295
295
patch , err := jsonpatch .DecodePatch (jsonPatchBytes )
296
296
if err != nil {
@@ -379,13 +379,19 @@ func applyPlaintextObjectOverriders(rawObj *unstructured.Unstructured, plaintext
379
379
if len (plaintextObjectOverriders ) == 0 {
380
380
return nil
381
381
}
382
- rawObjJSONBytes , err := rawObj .MarshalJSON ()
383
- if err != nil {
384
- return err
385
- }
386
382
for index := range plaintextObjectOverriders {
387
- res := gjson .GetBytes (rawObjJSONBytes , plaintextObjectOverriders [index ].Path )
388
- dataBytes := []byte (res .String ())
383
+ pointer , err := jsonpointer .New (plaintextObjectOverriders [index ].Path )
384
+ if err != nil {
385
+ return err
386
+ }
387
+ res , kind , err := pointer .Get (rawObj .Object )
388
+ if err != nil {
389
+ return err
390
+ }
391
+ if kind != reflect .String {
392
+ return errors .New ("path's value should be string" )
393
+ }
394
+ dataBytes := []byte (res .(string ))
389
395
isJSON := yamlutil .IsJSONBuffer (dataBytes )
390
396
if ! isJSON {
391
397
dataBytes , err = yaml .YAMLToJSON (dataBytes )
@@ -403,12 +409,13 @@ func applyPlaintextObjectOverriders(rawObj *unstructured.Unstructured, plaintext
403
409
return err
404
410
}
405
411
}
406
- rawObjJSONBytes , err = sjson .SetBytes (rawObjJSONBytes , plaintextObjectOverriders [index ].Path , appliedRawData )
412
+
413
+ _ , err = pointer .Set (rawObj .Object , string (appliedRawData ))
407
414
if err != nil {
408
415
return err
409
416
}
410
417
}
411
- return rawObj . UnmarshalJSON ( rawObjJSONBytes )
418
+ return nil
412
419
}
413
420
414
421
func parseJSONPatchesByPlaintext (overriders []policyv1alpha1.PlaintextOverrider ) []overrideOption {
0 commit comments