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.ferr...@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

Reply via email to