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


The following commit(s) were added to refs/heads/main by this push:
     new 62d2a54  fix: Handle Integration changes while waiting for Kit build
62d2a54 is described below

commit 62d2a54dfe8d4605534218f4323d3f6327bead20
Author: Antonin Stefanutti <anto...@stefanutti.fr>
AuthorDate: Fri Oct 1 17:15:27 2021 +0200

    fix: Handle Integration changes while waiting for Kit build
---
 pkg/controller/integration/build_kit.go | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/pkg/controller/integration/build_kit.go 
b/pkg/controller/integration/build_kit.go
index 17e3c85..d357940 100644
--- a/pkg/controller/integration/build_kit.go
+++ b/pkg/controller/integration/build_kit.go
@@ -24,6 +24,7 @@ import (
 
        v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
        "github.com/apache/camel-k/pkg/trait"
+       "github.com/apache/camel-k/pkg/util/digest"
        "github.com/apache/camel-k/pkg/util/kubernetes"
 )
 
@@ -46,6 +47,18 @@ func (action *buildKitAction) CanHandle(integration 
*v1.Integration) bool {
 func (action *buildKitAction) Handle(ctx context.Context, integration 
*v1.Integration) (*v1.Integration, error) {
        // TODO: we may need to add a timeout strategy, i.e give up after some 
time in case of an unrecoverable error.
 
+       // Check if the Integration has changed and requires a rebuild
+       hash, err := digest.ComputeForIntegration(integration)
+       if err != nil {
+               return nil, err
+       }
+       if hash != integration.Status.Digest {
+               action.L.Info("Integration needs a rebuild")
+               integration.Initialize()
+               integration.Status.Digest = hash
+               return integration, nil
+       }
+
        if integration.Status.IntegrationKit != nil {
                kit, err := kubernetes.GetIntegrationKit(ctx, action.client, 
integration.Status.IntegrationKit.Name, 
integration.Status.IntegrationKit.Namespace)
                if err != nil {

Reply via email to