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 2019/01/07 14:25:45 UTC

[camel-k] 08/13: Fix #237: stop reconciliation when reaching the desired state

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

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

commit 9aa4edc23d5d173d6a927ee2840bbe338eebfe94
Author: nferraro <ni...@gmail.com>
AuthorDate: Fri Jan 4 16:58:05 2019 +0100

    Fix #237: stop reconciliation when reaching the desired state
---
 pkg/controller/integration/integration_controller.go       |  9 +++++++++
 .../integrationcontext/integrationcontext_controller.go    | 14 +++++++++++---
 .../integrationplatform/integrationplatform_controller.go  |  9 +++++++++
 3 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/pkg/controller/integration/integration_controller.go b/pkg/controller/integration/integration_controller.go
index 34bf34a..ddbe9a7 100644
--- a/pkg/controller/integration/integration_controller.go
+++ b/pkg/controller/integration/integration_controller.go
@@ -119,6 +119,15 @@ func (r *ReconcileIntegration) Reconcile(request reconcile.Request) (reconcile.R
 		}
 	}
 
+	// Fetch the Integration again and check the state
+	if err = r.client.Get(ctx, request.NamespacedName, instance); err != nil {
+		return reconcile.Result{}, err
+	}
+
+	if instance.Status.Phase == camelv1alpha1.IntegrationPhaseRunning {
+		return reconcile.Result{}, nil
+	}
+	// Requeue
 	return reconcile.Result{
 		RequeueAfter: 5 * time.Second,
 	}, nil
diff --git a/pkg/controller/integrationcontext/integrationcontext_controller.go b/pkg/controller/integrationcontext/integrationcontext_controller.go
index 04c54d4..5eb0e46 100644
--- a/pkg/controller/integrationcontext/integrationcontext_controller.go
+++ b/pkg/controller/integrationcontext/integrationcontext_controller.go
@@ -2,13 +2,13 @@ package integrationcontext
 
 import (
 	"context"
-	"github.com/sirupsen/logrus"
 	"time"
 
 	camelv1alpha1 "github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
+	"github.com/apache/camel-k/pkg/client"
+	"github.com/sirupsen/logrus"
 	"k8s.io/apimachinery/pkg/api/errors"
 	"k8s.io/apimachinery/pkg/runtime"
-	"github.com/apache/camel-k/pkg/client"
 	"sigs.k8s.io/controller-runtime/pkg/controller"
 	"sigs.k8s.io/controller-runtime/pkg/handler"
 	"sigs.k8s.io/controller-runtime/pkg/manager"
@@ -102,8 +102,16 @@ func (r *ReconcileIntegrationContext) Reconcile(request reconcile.Request) (reco
 		}
 	}
 
+	// Fetch the IntegrationContext again and check the state
+	if err = r.client.Get(ctx, request.NamespacedName, instance); err != nil {
+		return reconcile.Result{}, err
+	}
+
+	if instance.Status.Phase == camelv1alpha1.IntegrationContextPhaseReady {
+		return reconcile.Result{}, nil
+	}
+	// Requeue
 	return reconcile.Result{
 		RequeueAfter: 5 * time.Second,
 	}, nil
-
 }
diff --git a/pkg/controller/integrationplatform/integrationplatform_controller.go b/pkg/controller/integrationplatform/integrationplatform_controller.go
index a5e2af2..2a943d4 100644
--- a/pkg/controller/integrationplatform/integrationplatform_controller.go
+++ b/pkg/controller/integrationplatform/integrationplatform_controller.go
@@ -101,6 +101,15 @@ func (r *ReconcileIntegrationPlatform) Reconcile(request reconcile.Request) (rec
 		}
 	}
 
+	// Fetch the IntegrationPlatform again and check the state
+	if err = r.client.Get(ctx, request.NamespacedName, instance); err != nil {
+		return reconcile.Result{}, err
+	}
+
+	if instance.Status.Phase == camelv1alpha1.IntegrationPlatformPhaseReady {
+		return reconcile.Result{}, nil
+	}
+	// Requeue
 	return reconcile.Result{
 		RequeueAfter: 5 * time.Second,
 	}, nil