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

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git


The following commit(s) were added to refs/heads/master by this push:
     new 4fb84e5  Add a phase to wake up integration reconcile loop on context 
build completion
4fb84e5 is described below

commit 4fb84e5e406781471f37d23676e52d419d3381e4
Author: Antonin Stefanutti <anto...@stefanutti.fr>
AuthorDate: Wed Feb 20 11:17:31 2019 +0100

    Add a phase to wake up integration reconcile loop on context build 
completion
    
    Fixes #460
---
 pkg/apis/camel/v1alpha1/integration_types.go |  2 ++
 pkg/controller/integration/build_context.go  |  3 ++-
 pkg/controller/integrationcontext/build.go   | 19 ++++++-----------
 pkg/trait/deployment.go                      | 31 ++++++++++++++--------------
 4 files changed, 25 insertions(+), 30 deletions(-)

diff --git a/pkg/apis/camel/v1alpha1/integration_types.go 
b/pkg/apis/camel/v1alpha1/integration_types.go
index 75f9726..e3dee63 100644
--- a/pkg/apis/camel/v1alpha1/integration_types.go
+++ b/pkg/apis/camel/v1alpha1/integration_types.go
@@ -132,6 +132,8 @@ const (
        IntegrationPhaseWaitingForPlatform IntegrationPhase = "Waiting For 
Platform"
        // IntegrationPhaseBuildingContext --
        IntegrationPhaseBuildingContext IntegrationPhase = "Building Context"
+       // IntegrationPhaseResolvingContext --
+       IntegrationPhaseResolvingContext IntegrationPhase = "Resolving Context"
        // IntegrationPhaseBuildImageSubmitted --
        IntegrationPhaseBuildImageSubmitted IntegrationPhase = "Build Image 
Submitted"
        // IntegrationPhaseBuildImageRunning --
diff --git a/pkg/controller/integration/build_context.go 
b/pkg/controller/integration/build_context.go
index e4d3061..2c03f24 100644
--- a/pkg/controller/integration/build_context.go
+++ b/pkg/controller/integration/build_context.go
@@ -42,7 +42,8 @@ func (action *buildContextAction) Name() string {
 }
 
 func (action *buildContextAction) CanHandle(integration *v1alpha1.Integration) 
bool {
-       return integration.Status.Phase == 
v1alpha1.IntegrationPhaseBuildingContext
+       return integration.Status.Phase == 
v1alpha1.IntegrationPhaseBuildingContext ||
+               integration.Status.Phase == 
v1alpha1.IntegrationPhaseResolvingContext
 }
 
 func (action *buildContextAction) Handle(ctx context.Context, integration 
*v1alpha1.Integration) error {
diff --git a/pkg/controller/integrationcontext/build.go 
b/pkg/controller/integrationcontext/build.go
index fd90163..8dad883 100644
--- a/pkg/controller/integrationcontext/build.go
+++ b/pkg/controller/integrationcontext/build.go
@@ -22,19 +22,16 @@ import (
        "errors"
        "fmt"
 
-       "github.com/apache/camel-k/pkg/util/cancellable"
-
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 
-       "github.com/apache/camel-k/pkg/util/kubernetes"
-
-       "github.com/apache/camel-k/pkg/trait"
+       k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
 
        "github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
        "github.com/apache/camel-k/pkg/builder"
        "github.com/apache/camel-k/pkg/platform"
-
-       k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
+       "github.com/apache/camel-k/pkg/trait"
+       "github.com/apache/camel-k/pkg/util/cancellable"
+       "github.com/apache/camel-k/pkg/util/kubernetes"
 )
 
 // NewBuildAction creates a new build request handling action for the context
@@ -245,12 +242,8 @@ func (action *buildAction) informIntegrations(ctx 
context.Context, ictx *v1alpha
                if integration.Status.Context != ictx.Name {
                        continue
                }
-
-               if integration.Annotations == nil {
-                       integration.Annotations = make(map[string]string)
-               }
-               integration.Annotations["camel.apache.org/context.digest"] = 
ictx.Status.Digest
-               err = action.client.Update(ctx, &integration)
+               integration.Status.Phase = 
v1alpha1.IntegrationPhaseResolvingContext
+               err = action.client.Status().Update(ctx, &integration)
                if err != nil {
                        return err
                }
diff --git a/pkg/trait/deployment.go b/pkg/trait/deployment.go
index 6551e33..f91d002 100644
--- a/pkg/trait/deployment.go
+++ b/pkg/trait/deployment.go
@@ -23,11 +23,10 @@ import (
        "strconv"
        "strings"
 
-       "github.com/apache/camel-k/pkg/util/kubernetes"
-
+       "github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
        "github.com/apache/camel-k/pkg/util/envvar"
+       "github.com/apache/camel-k/pkg/util/kubernetes"
 
-       "github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
        appsv1 "k8s.io/api/apps/v1"
        corev1 "k8s.io/api/core/v1"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -62,11 +61,9 @@ func (t *deploymentTrait) Configure(e *Environment) (bool, 
error) {
                return strategy == ControllerStrategyDeployment, nil
        }
 
-       if t.ContainerImage && e.InPhase(v1alpha1.IntegrationContextPhaseReady, 
v1alpha1.IntegrationPhaseBuildingContext) {
-               return true, nil
-       }
-
-       if !t.ContainerImage && 
e.InPhase(v1alpha1.IntegrationContextPhaseReady, 
v1alpha1.IntegrationPhaseBuildingContext) {
+       if e.IntegrationContextInPhase(v1alpha1.IntegrationContextPhaseReady) &&
+               (e.IntegrationInPhase(v1alpha1.IntegrationPhaseBuildingContext) 
||
+                       
e.IntegrationInPhase(v1alpha1.IntegrationPhaseResolvingContext)) {
                return true, nil
        }
 
@@ -74,14 +71,16 @@ func (t *deploymentTrait) Configure(e *Environment) (bool, 
error) {
 }
 
 func (t *deploymentTrait) Apply(e *Environment) error {
-       if t.ContainerImage && e.InPhase(v1alpha1.IntegrationContextPhaseReady, 
v1alpha1.IntegrationPhaseBuildingContext) {
-               // trigger container image build
-               e.Integration.Status.Phase = 
v1alpha1.IntegrationPhaseBuildImageSubmitted
-       }
-
-       if !t.ContainerImage && 
e.InPhase(v1alpha1.IntegrationContextPhaseReady, 
v1alpha1.IntegrationPhaseBuildingContext) {
-               // trigger integration deploy
-               e.Integration.Status.Phase = v1alpha1.IntegrationPhaseDeploying
+       if e.IntegrationContextInPhase(v1alpha1.IntegrationContextPhaseReady) &&
+               (e.IntegrationInPhase(v1alpha1.IntegrationPhaseBuildingContext) 
||
+                       
e.IntegrationInPhase(v1alpha1.IntegrationPhaseResolvingContext)) {
+               if t.ContainerImage {
+                       // trigger container image build
+                       e.Integration.Status.Phase = 
v1alpha1.IntegrationPhaseBuildImageSubmitted
+               } else {
+                       // trigger integration deploy
+                       e.Integration.Status.Phase = 
v1alpha1.IntegrationPhaseDeploying
+               }
        }
 
        if e.Integration != nil && e.Integration.Status.Phase == 
v1alpha1.IntegrationPhaseDeploying {

Reply via email to