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 e4e5127bd849b6e26fbe410263ee129d7900d7cf Author: John Poth <[email protected]> AuthorDate: Fri Jan 29 15:29:52 2021 +0100 fix: use checkPermission to check if ServiceBinding is installed, allow ServiceBinding trait on all profiles (#1445) --- .../integration/integration_controller.go | 27 ++++++++-------------- pkg/trait/service_binding.go | 6 ----- 2 files changed, 9 insertions(+), 24 deletions(-) diff --git a/pkg/controller/integration/integration_controller.go b/pkg/controller/integration/integration_controller.go index 6294d67..bb94174 100644 --- a/pkg/controller/integration/integration_controller.go +++ b/pkg/controller/integration/integration_controller.go @@ -23,7 +23,6 @@ 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" @@ -43,9 +42,10 @@ import ( camelevent "github.com/apache/camel-k/pkg/event" "github.com/apache/camel-k/pkg/platform" "github.com/apache/camel-k/pkg/util/digest" + "github.com/apache/camel-k/pkg/util/kubernetes" "github.com/apache/camel-k/pkg/util/log" "github.com/apache/camel-k/pkg/util/monitoring" - sb "github.com/redhat-developer/service-binding-operator/pkg/apis/operators/v1alpha1" + sb "github.com/redhat-developer/service-binding-operator/pkg/apis/operators/v1alpha1" ) // Add creates a new Integration Controller and adds it to the Manager. The Manager will set fields on the Controller @@ -219,7 +219,13 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error { return err } - if IsServiceBindingOperatorInstalled(mgr) { + if client, err := client.FromManager(mgr); err != nil { + log.Error(err, "cannot check permissions for watching ServiceBindings") + } else if ok, err := kubernetes.CheckPermission(context.TODO(), client, "operators.coreos.com", "ServiceBinding", "", "", "create"); err != nil { + log.Error(err, "cannot check permissions for watching ServiceBindings") + } else if !ok { + log.Info("ServiceBinding monitoring is disabled, install Service Binding Operator before camel-k if needed") + } else { // Watch ServiceBindings created err = c.Watch(&source.Kind{Type: &sb.ServiceBinding{}}, &handler.EnqueueRequestForOwner{ OwnerType: &v1.Integration{}, @@ -228,8 +234,6 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error { if err != nil { return err } - } else { - log.Infof("ServiceBinding monitoring is disabled, install Service Binding Operator before camel-k if needed") } return nil } @@ -341,16 +345,3 @@ 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 -} diff --git a/pkg/trait/service_binding.go b/pkg/trait/service_binding.go index 131d2c5..1b313a5 100644 --- a/pkg/trait/service_binding.go +++ b/pkg/trait/service_binding.go @@ -45,12 +45,6 @@ func newServiceBindingTrait() Trait { } } -// IsAllowedInProfile overrides default -func (t *serviceBindingTrait) IsAllowedInProfile(profile v1.TraitProfile) bool { - return profile == v1.TraitProfileKubernetes || - profile == v1.TraitProfileOpenShift -} - func (t *serviceBindingTrait) Configure(e *Environment) (bool, error) { if t.Enabled != nil && !*t.Enabled { return false, nil
