You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2021/04/08 08:43:14 UTC

[camel-k] 03/03: fix: Remove deep derivative comparison from deployer

This is an automated email from the ASF dual-hosted git repository.

nferraro pushed a commit to branch release-1.3.x
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 25fe071211a1d552f7bd95c5fa2fcc753077a6fc
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Tue Apr 6 15:12:08 2021 +0200

    fix: Remove deep derivative comparison from deployer
---
 pkg/trait/deployer.go   | 28 +++++++++++-----------------
 pkg/util/patch/patch.go | 39 ---------------------------------------
 2 files changed, 11 insertions(+), 56 deletions(-)

diff --git a/pkg/trait/deployer.go b/pkg/trait/deployer.go
index e21b0bd..6c705f3 100644
--- a/pkg/trait/deployer.go
+++ b/pkg/trait/deployer.go
@@ -94,23 +94,17 @@ func (t *deployerTrait) Apply(e *Environment) error {
 					return err
 				}
 
-				// If both objects have "ObjectMeta" and "Spec" fields and they contain all the expected fields
-				// (plus optional others), then avoid patching.
-				if !patch.ObjectMetaEqualDeepDerivative(object, resource) ||
-					!patch.SpecEqualDeepDerivative(object, resource) {
-
-					p, err := patch.PositiveMergePatch(object, resource)
-					if err != nil {
-						return err
-					} else if len(p) == 0 {
-						// Avoid triggering a patch request for nothing
-						continue
-					}
-
-					err = env.Client.Patch(env.C, resource, client.RawPatch(types.MergePatchType, p))
-					if err != nil {
-						return errors.Wrap(err, "error during patch resource")
-					}
+				p, err := patch.PositiveMergePatch(object, resource)
+				if err != nil {
+					return err
+				} else if len(p) == 0 {
+					// Avoid triggering a patch request for nothing
+					continue
+				}
+
+				err = env.Client.Patch(env.C, resource, client.RawPatch(types.MergePatchType, p))
+				if err != nil {
+					return errors.Wrap(err, "error during patch resource")
 				}
 			}
 			return nil
diff --git a/pkg/util/patch/patch.go b/pkg/util/patch/patch.go
index e2c54b1..e0ae632 100644
--- a/pkg/util/patch/patch.go
+++ b/pkg/util/patch/patch.go
@@ -21,7 +21,6 @@ import (
 	"reflect"
 
 	jsonpatch "github.com/evanphx/json-patch"
-	"k8s.io/apimachinery/pkg/api/equality"
 
 	"k8s.io/apimachinery/pkg/runtime"
 	"k8s.io/apimachinery/pkg/util/json"
@@ -90,41 +89,3 @@ func removeNilValues(v reflect.Value, parent reflect.Value) {
 		}
 	}
 }
-
-func ObjectMetaEqualDeepDerivative(object runtime.Object, expected runtime.Object) (res bool) {
-	defer func() {
-		if r := recover(); r != nil {
-			res = false
-		}
-	}()
-
-	if expected == nil {
-		return true
-	} else if object == nil {
-		return false
-	}
-
-	objectMeta := reflect.ValueOf(object).Elem().FieldByName("ObjectMeta").Interface()
-	expectedMeta := reflect.ValueOf(expected).Elem().FieldByName("ObjectMeta").Interface()
-
-	return equality.Semantic.DeepDerivative(expectedMeta, objectMeta)
-}
-
-func SpecEqualDeepDerivative(object runtime.Object, expected runtime.Object) (res bool) {
-	defer func() {
-		if r := recover(); r != nil {
-			res = false
-		}
-	}()
-
-	if expected == nil {
-		return true
-	} else if object == nil {
-		return false
-	}
-
-	objectSpec := reflect.ValueOf(object).Elem().FieldByName("Spec").Interface()
-	expectedSpec := reflect.ValueOf(expected).Elem().FieldByName("Spec").Interface()
-
-	return equality.Semantic.DeepDerivative(expectedSpec, objectSpec)
-}