This is an automated email from the ASF dual-hosted git repository. astefanutti pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 467a69774d0756d2b15c32244b1dc55c90926ab6 Author: Antonin Stefanutti <anto...@stefanutti.fr> AuthorDate: Tue Jan 18 11:46:58 2022 +0100 fix: Use Kamelet serialized JSON as merge patch for client-side apply --- pkg/install/kamelets.go | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/pkg/install/kamelets.go b/pkg/install/kamelets.go index 024341c..6bd15f4 100644 --- a/pkg/install/kamelets.go +++ b/pkg/install/kamelets.go @@ -19,6 +19,7 @@ package install import ( "context" + "encoding/json" "errors" "fmt" "io/fs" @@ -33,7 +34,6 @@ import ( "golang.org/x/sync/errgroup" k8serrors "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" @@ -139,26 +139,16 @@ func serverSideApply(ctx context.Context, c client.Client, resource runtime.Obje } func clientSideApply(ctx context.Context, c client.Client, resource ctrl.Object) error { - err := c.Create(ctx, resource) - if err == nil { + if err := c.Create(ctx, resource); err == nil { return nil } else if !k8serrors.IsAlreadyExists(err) { return fmt.Errorf("error during create resource: %s/%s: %w", resource.GetNamespace(), resource.GetName(), err) } - object := &unstructured.Unstructured{} - object.SetNamespace(resource.GetNamespace()) - object.SetName(resource.GetName()) - object.SetGroupVersionKind(resource.GetObjectKind().GroupVersionKind()) - err = c.Get(ctx, ctrl.ObjectKeyFromObject(object), object) + // Directly use the serialized resource as JSON merge patch since it's prescriptive + p, err := json.Marshal(resource) if err != nil { return err } - p, err := patch.MergePatch(object, resource) - if err != nil { - return err - } else if len(p) == 0 { - return nil - } return c.Patch(ctx, resource, ctrl.RawPatch(types.MergePatchType, p)) }