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 2021/02/09 12:32:03 UTC

[camel-k] 02/06: Do not watch ServiceBindings if Service Binding Operator is not installed (#1445)

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 d85129a0775a382f7b633f8775b5d83af2a9538c
Author: John Poth <po...@gmail.com>
AuthorDate: Thu Jan 28 10:30:38 2021 +0100

    Do not watch ServiceBindings if Service Binding Operator is not installed (#1445)
---
 .../integration/integration_controller.go          | 33 ++++++++++++++++------
 1 file changed, 25 insertions(+), 8 deletions(-)

diff --git a/pkg/controller/integration/integration_controller.go b/pkg/controller/integration/integration_controller.go
index 012a20c..6294d67 100644
--- a/pkg/controller/integration/integration_controller.go
+++ b/pkg/controller/integration/integration_controller.go
@@ -23,6 +23,7 @@ import (
 	appsv1 "k8s.io/api/apps/v1"
 	"k8s.io/api/batch/v1beta1"
 	k8serrors "k8s.io/apimachinery/pkg/api/errors"
+	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/runtime"
 	"k8s.io/apimachinery/pkg/runtime/schema"
 	"k8s.io/apimachinery/pkg/types"
@@ -218,15 +219,18 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
 		return err
 	}
 
-	// Watch ServiceBindings created
-	err = c.Watch(&source.Kind{Type: &sb.ServiceBinding{}}, &handler.EnqueueRequestForOwner{
-		OwnerType:    &v1.Integration{},
-		IsController: true,
-	})
-	if err != nil {
-		return err
+	if IsServiceBindingOperatorInstalled(mgr) {
+		// Watch ServiceBindings created
+		err = c.Watch(&source.Kind{Type: &sb.ServiceBinding{}}, &handler.EnqueueRequestForOwner{
+			OwnerType:    &v1.Integration{},
+			IsController: true,
+		})
+		if err != nil {
+			return err
+		}
+	} else {
+		log.Infof("ServiceBinding monitoring is disabled, install Service Binding Operator before camel-k if needed")
 	}
-
 	return nil
 }
 
@@ -337,3 +341,16 @@ func (r *reconcileIntegration) update(ctx context.Context, base *v1.Integration,
 
 	return reconcile.Result{}, err
 }
+
+func IsServiceBindingOperatorInstalled(mgr manager.Manager) bool {
+	u := &unstructured.Unstructured{}
+	u.SetGroupVersionKind(schema.GroupVersionKind{
+		Group:   "apiextensions.k8s.io",
+		Kind:    "CustomResourceDefinition",
+		Version: "v1beta1",
+	})
+	err := mgr.GetClient().Get(context.Background(), k8sclient.ObjectKey{
+		Name: "servicebindings.operators.coreos.com",
+	}, u)
+	return err == nil
+}