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

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

commit 58b91415ca5745ae2f733d714449ed6ceb634730
Author: Antonin Stefanutti <[email protected]>
AuthorDate: Wed Mar 3 10:25:54 2021 +0100

    chore: Upgrade controller-runtime to version 0.7.2
---
 addons/master/master.go                            |   5 +-
 e2e/common/traits/pdb_test.go                      |   6 +-
 e2e/support/test_support.go                        |  68 ++++++-------
 go.mod                                             |   8 +-
 go.sum                                             |  33 ++++--
 pkg/builder/s2i/publisher.go                       |   8 +-
 pkg/cmd/install.go                                 |   2 +-
 pkg/cmd/operator/operator.go                       |   2 +-
 pkg/cmd/run.go                                     |  18 +---
 pkg/controller/build/build_controller.go           |  21 ++--
 .../integration/integration_controller.go          | 112 +++++++++++----------
 .../integrationkit/integrationkit_controller.go    |  58 +++++------
 .../integrationplatform_controller.go              |  39 +++----
 pkg/controller/kamelet/kamelet_controller.go       |  39 +++----
 .../kameletbinding/kamelet_binding_controller.go   |  39 +++----
 pkg/install/cluster.go                             |  19 ++--
 pkg/install/common.go                              |  33 +++---
 pkg/install/kamelets.go                            |  30 +++---
 pkg/install/operator.go                            |   3 +-
 pkg/install/secret.go                              |   7 +-
 pkg/platform/defaults.go                           |  19 ++--
 pkg/trait/deployer.go                              |  18 ++--
 pkg/trait/trait_types.go                           |   7 +-
 pkg/util/knative/knative.go                        |  42 ++++----
 pkg/util/kubernetes/collection.go                  |  18 ++--
 pkg/util/kubernetes/loader.go                      |  17 +++-
 pkg/util/kubernetes/replace.go                     |  33 ++----
 pkg/util/kubernetes/wait.go                        |  15 ++-
 pkg/util/monitoring/controller.go                  |   9 +-
 pkg/util/patch/patch.go                            |   5 +-
 30 files changed, 351 insertions(+), 382 deletions(-)

diff --git a/addons/master/master.go b/addons/master/master.go
index 01e90e5..5bcdd19 100644
--- a/addons/master/master.go
+++ b/addons/master/master.go
@@ -22,6 +22,8 @@ import (
        "fmt"
        "strings"
 
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
+
        v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
        "github.com/apache/camel-k/pkg/metadata"
        "github.com/apache/camel-k/pkg/resources"
@@ -29,7 +31,6 @@ import (
        "github.com/apache/camel-k/pkg/util"
        "github.com/apache/camel-k/pkg/util/kubernetes"
        "github.com/apache/camel-k/pkg/util/uri"
-       "k8s.io/apimachinery/pkg/runtime"
 )
 
 // The Master trait allows to configure the integration to automatically 
leverage Kubernetes resources for doing
@@ -256,7 +257,7 @@ func findAdditionalDependencies(e *trait.Environment, meta 
metadata.IntegrationM
        return dependencies
 }
 
-func loadResource(e *trait.Environment, name string, params interface{}) 
(runtime.Object, error) {
+func loadResource(e *trait.Environment, name string, params interface{}) 
(ctrl.Object, error) {
        data, err := 
resources.TemplateResource(fmt.Sprintf("/addons/master/%s", name), params)
        if err != nil {
                return nil, err
diff --git a/e2e/common/traits/pdb_test.go b/e2e/common/traits/pdb_test.go
index d154289..591e90f 100644
--- a/e2e/common/traits/pdb_test.go
+++ b/e2e/common/traits/pdb_test.go
@@ -155,11 +155,7 @@ func podDisruptionBudget(ns string, name string) func() 
*policy.PodDisruptionBud
                                Name:      name,
                        },
                }
-               key, err := client.ObjectKeyFromObject(&pdb)
-               if err != nil {
-                       panic(err)
-               }
-               err = TestClient().Get(TestContext, key, &pdb)
+               err := TestClient().Get(TestContext, 
client.ObjectKeyFromObject(&pdb), &pdb)
                if err != nil && errors.IsNotFound(err) {
                        return nil
                } else if err != nil {
diff --git a/e2e/support/test_support.go b/e2e/support/test_support.go
index f9250ca..4ed9ea5 100644
--- a/e2e/support/test_support.go
+++ b/e2e/support/test_support.go
@@ -44,9 +44,8 @@ import (
        rbacv1 "k8s.io/api/rbac/v1"
        k8serrors "k8s.io/apimachinery/pkg/api/errors"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-       "k8s.io/apimachinery/pkg/runtime"
 
-       k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
        eventing "knative.dev/eventing/pkg/apis/eventing/v1beta1"
        messaging "knative.dev/eventing/pkg/apis/messaging/v1beta1"
@@ -280,8 +279,8 @@ func IntegrationPods(ns string, name string) func() 
[]corev1.Pod {
                        },
                }
                err := TestClient().List(TestContext, &lst,
-                       k8sclient.InNamespace(ns),
-                       k8sclient.MatchingLabels{
+                       ctrl.InNamespace(ns),
+                       ctrl.MatchingLabels{
                                v1.IntegrationLabel: name,
                        })
                if err != nil {
@@ -328,7 +327,7 @@ func IntegrationCondition(ns string, name string, 
conditionType v1.IntegrationCo
 func ConfigMap(ns string, name string) func() *corev1.ConfigMap {
        return func() *corev1.ConfigMap {
                cm := corev1.ConfigMap{}
-               key := k8sclient.ObjectKey{
+               key := ctrl.ObjectKey{
                        Namespace: ns,
                        Name:      name,
                }
@@ -345,7 +344,7 @@ func ConfigMap(ns string, name string) func() 
*corev1.ConfigMap {
 func Service(ns string, name string) func() *corev1.Service {
        return func() *corev1.Service {
                svc := corev1.Service{}
-               key := k8sclient.ObjectKey{
+               key := ctrl.ObjectKey{
                        Namespace: ns,
                        Name:      name,
                }
@@ -362,7 +361,7 @@ func Service(ns string, name string) func() *corev1.Service 
{
 func Route(ns string, name string) func() *routev1.Route {
        return func() *routev1.Route {
                route := routev1.Route{}
-               key := k8sclient.ObjectKey{
+               key := ctrl.ObjectKey{
                        Namespace: ns,
                        Name:      name,
                }
@@ -385,8 +384,8 @@ func IntegrationCronJob(ns string, name string) func() 
*v1beta1.CronJob {
                        },
                }
                err := TestClient().List(TestContext, &lst,
-                       k8sclient.InNamespace(ns),
-                       k8sclient.MatchingLabels{
+                       ctrl.InNamespace(ns),
+                       ctrl.MatchingLabels{
                                "camel.apache.org/integration": name,
                        })
                if err != nil {
@@ -402,7 +401,7 @@ func IntegrationCronJob(ns string, name string) func() 
*v1beta1.CronJob {
 func Integration(ns string, name string) func() *v1.Integration {
        return func() *v1.Integration {
                it := v1.NewIntegration(ns, name)
-               key := k8sclient.ObjectKey{
+               key := ctrl.ObjectKey{
                        Namespace: ns,
                        Name:      name,
                }
@@ -495,7 +494,7 @@ func ScaleIntegration(ns string, name string, replicas 
int32) error {
 func Kits(ns string) func() []v1.IntegrationKit {
        return func() []v1.IntegrationKit {
                lst := v1.NewIntegrationKitList()
-               if err := TestClient().List(TestContext, &lst, 
k8sclient.InNamespace(ns)); err != nil {
+               if err := TestClient().List(TestContext, &lst, 
ctrl.InNamespace(ns)); err != nil {
                        panic(err)
                }
                return lst.Items
@@ -559,7 +558,7 @@ func Configmap(ns string, name string) func() 
*corev1.ConfigMap {
                                Name:      name,
                        },
                }
-               key := k8sclient.ObjectKey{
+               key := ctrl.ObjectKey{
                        Namespace: ns,
                        Name:      name,
                }
@@ -585,7 +584,7 @@ func KnativeService(ns string, name string) func() 
*servingv1.Service {
                                Name:      name,
                        },
                }
-               key := k8sclient.ObjectKey{
+               key := ctrl.ObjectKey{
                        Namespace: ns,
                        Name:      name,
                }
@@ -611,7 +610,7 @@ func Deployment(ns string, name string) func() 
*appsv1.Deployment {
                                Name:      name,
                        },
                }
-               key := k8sclient.ObjectKey{
+               key := ctrl.ObjectKey{
                        Namespace: ns,
                        Name:      name,
                }
@@ -628,7 +627,7 @@ func Deployment(ns string, name string) func() 
*appsv1.Deployment {
 func Build(ns string, name string) func() *v1.Build {
        return func() *v1.Build {
                build := v1.NewBuild(ns, name)
-               key := k8sclient.ObjectKey{
+               key := ctrl.ObjectKey{
                        Namespace: ns,
                        Name:      name,
                }
@@ -645,7 +644,7 @@ func Build(ns string, name string) func() *v1.Build {
 func Platform(ns string) func() *v1.IntegrationPlatform {
        return func() *v1.IntegrationPlatform {
                lst := v1.NewIntegrationPlatformList()
-               if err := TestClient().List(TestContext, &lst, 
k8sclient.InNamespace(ns)); err != nil {
+               if err := TestClient().List(TestContext, &lst, 
ctrl.InNamespace(ns)); err != nil {
                        panic(err)
                }
                if len(lst.Items) == 0 {
@@ -722,8 +721,8 @@ func OperatorPod(ns string) func() *corev1.Pod {
                        },
                }
                err := TestClient().List(TestContext, &lst,
-                       k8sclient.InNamespace(ns),
-                       k8sclient.MatchingLabels{
+                       ctrl.InNamespace(ns),
+                       ctrl.MatchingLabels{
                                "camel.apache.org/component": "operator",
                        })
                if err != nil {
@@ -739,7 +738,7 @@ func OperatorPod(ns string) func() *corev1.Pod {
 func OperatorTryPodForceKill(ns string, timeSeconds int) {
        pod := OperatorPod(ns)()
        if pod != nil {
-               if err := TestClient().Delete(TestContext, pod, 
k8sclient.GracePeriodSeconds(timeSeconds)); err != nil {
+               if err := TestClient().Delete(TestContext, pod, 
ctrl.GracePeriodSeconds(timeSeconds)); err != nil {
                        log.Error(err, "cannot forcefully kill the pod")
                }
        }
@@ -752,7 +751,7 @@ func ScaleOperator(ns string, replicas int32) func() error {
                        return err
                }
                operator.Spec.Replicas = &replicas
-               _, err = 
TestClient().AppsV1().Deployments(ns).Update(TestContext,operator, 
metav1.UpdateOptions{})
+               _, err = 
TestClient().AppsV1().Deployments(ns).Update(TestContext, operator, 
metav1.UpdateOptions{})
                if err != nil {
                        return err
                }
@@ -774,8 +773,8 @@ func Role(ns string) func() *rbacv1.Role {
                        },
                }
                err := TestClient().List(TestContext, &lst,
-                       k8sclient.InNamespace(ns),
-                       k8sclient.MatchingLabels{
+                       ctrl.InNamespace(ns),
+                       ctrl.MatchingLabels{
                                "app": "camel-k",
                        })
                if err != nil {
@@ -797,8 +796,8 @@ func RoleBinding(ns string) func() *rbacv1.RoleBinding {
                        },
                }
                err := TestClient().List(TestContext, &lst,
-                       k8sclient.InNamespace(ns),
-                       k8sclient.MatchingLabels{
+                       ctrl.InNamespace(ns),
+                       ctrl.MatchingLabels{
                                "app": "camel-k",
                        })
                if err != nil {
@@ -820,8 +819,8 @@ func ServiceAccount(ns, name string) func() 
*corev1.ServiceAccount {
                        },
                }
                err := TestClient().List(TestContext, &lst,
-                       k8sclient.InNamespace(ns),
-                       k8sclient.MatchingLabels{
+                       ctrl.InNamespace(ns),
+                       ctrl.MatchingLabels{
                                "app": "camel-k",
                        })
                if err != nil {
@@ -1035,7 +1034,7 @@ func NumPods(ns string) func() int {
                                APIVersion: v1.SchemeGroupVersion.String(),
                        },
                }
-               if err := TestClient().List(TestContext, &lst, 
k8sclient.InNamespace(ns)); err != nil && k8serrors.IsUnauthorized(err) {
+               if err := TestClient().List(TestContext, &lst, 
ctrl.InNamespace(ns)); err != nil && k8serrors.IsUnauthorized(err) {
                        return 0
                } else if err != nil {
                        log.Error(err, "Error while listing the pods")
@@ -1101,10 +1100,7 @@ func DeleteKnativeBroker(ns metav1.Object) {
                        Name: ns.GetName(),
                },
        }
-       nsKey, err := k8sclient.ObjectKeyFromObject(&nsRef)
-       if err != nil {
-               panic(err)
-       }
+       nsKey := ctrl.ObjectKeyFromObject(&nsRef)
        if err := TestClient().Get(TestContext, nsKey, &nsRef); err != nil {
                panic(err)
        }
@@ -1128,7 +1124,7 @@ func DeleteKnativeBroker(ns metav1.Object) {
        }
 }
 
-func DeleteTestNamespace(t *testing.T, ns metav1.Object) {
+func DeleteTestNamespace(t *testing.T, ns ctrl.Object) {
        var oc bool
        var err error
        if oc, err = openshift.IsOpenShift(TestClient()); err != nil {
@@ -1147,7 +1143,7 @@ func DeleteTestNamespace(t *testing.T, ns metav1.Object) {
                        t.Logf("Warning: cannot delete test project %q", 
prj.Name)
                }
        } else {
-               if err := TestClient().Delete(TestContext, 
ns.(runtime.Object)); err != nil {
+               if err := TestClient().Delete(TestContext, ns); err != nil {
                        t.Logf("Warning: cannot delete test namespace %q", 
ns.GetName())
                }
        }
@@ -1163,10 +1159,10 @@ func DeleteTestNamespace(t *testing.T, ns 
metav1.Object) {
        }
 }
 
-func NewTestNamespace(injectKnativeBroker bool) metav1.Object {
+func NewTestNamespace(injectKnativeBroker bool) ctrl.Object {
        var err error
        var oc bool
-       var obj runtime.Object
+       var obj ctrl.Object
 
        brokerLabel := "eventing.knative.dev/injection"
        name := "test-" + uuid.New().String()
@@ -1222,5 +1218,5 @@ func NewTestNamespace(injectKnativeBroker bool) 
metav1.Object {
                        }
                }
        }
-       return obj.(metav1.Object)
+       return obj
 }
diff --git a/go.mod b/go.mod
index d2c31e8..a8ded7a 100644
--- a/go.mod
+++ b/go.mod
@@ -37,7 +37,7 @@ require (
        github.com/spf13/cobra v1.0.0
        github.com/spf13/pflag v1.0.5
        github.com/spf13/viper v1.6.2
-       github.com/stoewer/go-strcase v1.0.2
+       github.com/stoewer/go-strcase v1.2.0
        github.com/stretchr/testify v1.6.1
        go.uber.org/multierr v1.5.0
        golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
@@ -51,13 +51,9 @@ require (
        knative.dev/eventing v0.18.0
        knative.dev/pkg v0.0.0-20200922164940-4bf40ad82aab
        knative.dev/serving v0.18.0
-       sigs.k8s.io/controller-runtime v0.6.4
+       sigs.k8s.io/controller-runtime v0.7.2
 )
 
-// To be removed when upgrading to controller-runtime 0.7+
-// See: https://github.com/kubernetes-sigs/controller-runtime/pull/1238
-replace sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.6.3
-
 replace (
        github.com/Azure/go-autorest => github.com/Azure/go-autorest 
v13.3.2+incompatible // Required by client-go Azure plugin
        k8s.io/client-go => k8s.io/client-go v0.19.8
diff --git a/go.sum b/go.sum
index f398a4a..899c3e1 100644
--- a/go.sum
+++ b/go.sum
@@ -259,8 +259,6 @@ github.com/cloudevents/sdk-go/v2 v2.0.0/go.mod 
h1:3CTrpB4+u7Iaj6fd7E2Xvm5IxMdRoa
 github.com/cloudevents/sdk-go/v2 v2.2.0/go.mod 
h1:3CTrpB4+u7Iaj6fd7E2Xvm5IxMdRoaAhqaRVnOr2rCU=
 github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod 
h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
 github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod 
h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
-github.com/container-tools/spectrum v0.3.2 
h1:KQz70RWAzITzaPx+qPsiGkrF0uGmFJfKak2yOqJyPKQ=
-github.com/container-tools/spectrum v0.3.2/go.mod 
h1:hsogRHNfGQLysCyDiGT4SAioTS8LGLbyC4b0Ep2Iw+o=
 github.com/container-tools/spectrum v0.3.4 
h1:ykSzjjIbmwy/dQKyaTRNf69gqSx5rB/XwjuYhOspJSY=
 github.com/container-tools/spectrum v0.3.4/go.mod 
h1:hsogRHNfGQLysCyDiGT4SAioTS8LGLbyC4b0Ep2Iw+o=
 github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod 
h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko=
@@ -415,6 +413,7 @@ github.com/go-logr/logr v0.3.0/go.mod 
h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTg
 github.com/go-logr/zapr v0.1.0/go.mod 
h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk=
 github.com/go-logr/zapr v0.1.1 h1:qXBXPDdNncunGs7XeEpsJt8wCjYBygluzfdLO0G5baE=
 github.com/go-logr/zapr v0.1.1/go.mod 
h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk=
+github.com/go-logr/zapr v0.2.0/go.mod 
h1:qhKdvif7YF5GI9NWEpyxTSSBdGmzkNguibrdCNVPunU=
 github.com/go-logr/zapr v0.3.0 h1:iyiCRZ29uPmbO7mWIjOEiYMXrTxZWTyK4tCatLyGpUY=
 github.com/go-logr/zapr v0.3.0/go.mod 
h1:qhKdvif7YF5GI9NWEpyxTSSBdGmzkNguibrdCNVPunU=
 github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod 
h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI=
@@ -511,6 +510,7 @@ github.com/golang/gddo 
v0.0.0-20190419222130-af0f2af80721/go.mod h1:xEhNfoBDX1hz
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b 
h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod 
h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
 github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod 
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod 
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef 
h1:veQD95Isof8w9/WXiA+pa3tz3fJXkt5B7QaRBrM62gk=
 github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod 
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod 
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -626,6 +626,8 @@ github.com/googleapis/gnostic v0.4.0 
h1:BXDUo8p/DaxC+4FJY/SSx3gvnx9C1VdHNgaUkiEL
 github.com/googleapis/gnostic v0.4.0/go.mod 
h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU=
 github.com/googleapis/gnostic v0.4.1 
h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyycI+I=
 github.com/googleapis/gnostic v0.4.1/go.mod 
h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg=
+github.com/googleapis/gnostic v0.5.1 
h1:A8Yhf6EtqTv9RMsU6MQTyrtV1TjWlR6xU9BsZIwuTCM=
+github.com/googleapis/gnostic v0.5.1/go.mod 
h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
 github.com/gophercloud/gophercloud v0.1.0/go.mod 
h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 
h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod 
h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
@@ -693,6 +695,7 @@ github.com/hpcloud/tail v1.0.0/go.mod 
h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO
 github.com/huandu/xstrings v1.2.0/go.mod 
h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4=
 github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod 
h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
 github.com/imdario/mergo v0.3.5/go.mod 
h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
+github.com/imdario/mergo v0.3.6/go.mod 
h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
 github.com/imdario/mergo v0.3.7 h1:Y+UAYTZ7gDEuOfhxKWy+dvb5dRQ6rJjFSdX2HZY1/gI=
 github.com/imdario/mergo v0.3.7/go.mod 
h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
 github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ=
@@ -1122,6 +1125,7 @@ github.com/spf13/jwalterweatherman v1.1.0/go.mod 
h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0
 github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod 
h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
 github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod 
h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
 github.com/spf13/pflag v1.0.1/go.mod 
h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
+github.com/spf13/pflag v1.0.2/go.mod 
h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
 github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
 github.com/spf13/pflag v1.0.3/go.mod 
h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
 github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
@@ -1133,8 +1137,8 @@ github.com/spf13/viper v1.6.2 
h1:7aKfF+e8/k68gda3LOjo5RxiUqddoFxVq4BKBPrxk5E=
 github.com/spf13/viper v1.6.2/go.mod 
h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k=
 github.com/sqs/goreturns v0.0.0-20181028201513-538ac6014518/go.mod 
h1:CKI4AZ4XmGV240rTHfO0hfE83S6/a3/Q1siZJ/vXf7A=
 github.com/src-d/gcfg v1.4.0/go.mod 
h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI=
-github.com/stoewer/go-strcase v1.0.2 
h1:l3iQ2FPu8+36ars/7syO1dQAkjwMCb1IE3J+Th0ohfE=
-github.com/stoewer/go-strcase v1.0.2/go.mod 
h1:eLfe5bL3qbL7ep/KafHzthxejrOF5J3xmt03uL5tzek=
+github.com/stoewer/go-strcase v1.2.0 
h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU=
+github.com/stoewer/go-strcase v1.2.0/go.mod 
h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
 github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod 
h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
 github.com/streadway/quantile v0.0.0-20150917103942-b0c588724d25/go.mod 
h1:lbP8tGiBjZ5YWIc2fzuRpTaz0b/53vT6PEs3QuAWzuU=
 github.com/stretchr/objx v0.1.0/go.mod 
h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -1232,6 +1236,8 @@ go.uber.org/atomic v1.5.1/go.mod 
h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
 go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk=
 go.uber.org/atomic v1.6.0/go.mod 
h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
 go.uber.org/automaxprocs v1.3.0/go.mod 
h1:9CWT6lKIep8U41DDaPiH6eFscnTyjfTANNQNx6LrIcA=
+go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0=
+go.uber.org/goleak v1.1.10/go.mod 
h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
 go.uber.org/multierr v0.0.0-20180122172545-ddea229ff1df/go.mod 
h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
 go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI=
 go.uber.org/multierr v1.1.0/go.mod 
h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
@@ -1441,6 +1447,7 @@ golang.org/x/sys 
v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190912141932-bc967efca4b8/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1539,6 +1546,7 @@ golang.org/x/tools 
v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtn
 golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191030203535-5e247c9ad0a0/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191112005509-a3f652f18032/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
@@ -1816,6 +1824,8 @@ gopkg.in/yaml.v3 v3.0.0-20191026110619-0b21df46bc1d 
h1:LCPbGQ34PMrwad11aMZ+dbz5S
 gopkg.in/yaml.v3 v3.0.0-20191026110619-0b21df46bc1d/go.mod 
h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c 
h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod 
h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 
h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod 
h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gotest.tools v2.2.0+incompatible 
h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
 gotest.tools v2.2.0+incompatible/go.mod 
h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
 gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
@@ -1934,6 +1944,7 @@ k8s.io/component-base v0.18.4/go.mod 
h1:7jr/Ef5PGmKwQhyAz/pjByxJbC58mhKAhiaDu0vX
 k8s.io/component-base v0.18.6/go.mod 
h1:knSVsibPR5K6EW2XOjEHik6sdU5nCvKMrzMt2D4In14=
 k8s.io/component-base v0.18.8/go.mod 
h1:00frPRDas29rx58pPCxNkhUfPbwajlyyvu8ruNgSErU=
 k8s.io/component-base v0.19.2/go.mod 
h1:g5LrsiTiabMLZ40AR6Hl45f088DevyGY+cCE2agEIVo=
+k8s.io/component-base v0.19.8 h1:z5NvhzEjdjTwXWF2qMdozKXbUCEm9HXGGNp51buf4HA=
 k8s.io/component-base v0.19.8/go.mod 
h1:cvHAT4oGxKsfcnnm0hMp3JkEMxAt5s6le943V796FXM=
 k8s.io/csi-translation-lib v0.17.0/go.mod 
h1:HEF7MEz7pOLJCnxabi45IPkhSsE/KmxPQksuCrHKWls=
 k8s.io/csi-translation-lib v0.17.4/go.mod 
h1:CsxmjwxEI0tTNMzffIAcgR9lX4wOh6AKHdxQrT7L0oo=
@@ -1951,6 +1962,7 @@ k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod 
h1:ezvh/TsK7cY6rbqRK0oQQ8
 k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod 
h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
 k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
 k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
+k8s.io/klog v0.3.3/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
 k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
 k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
 k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
@@ -1994,6 +2006,8 @@ k8s.io/utils v0.0.0-20200603063816-c1c6865ac451 
h1:v8ud2Up6QK1lNOKFgiIVrZdMg7Mpm
 k8s.io/utils v0.0.0-20200603063816-c1c6865ac451/go.mod 
h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
 k8s.io/utils v0.0.0-20200729134348-d5654de09c73 
h1:uJmqzgNWG7XyClnU/mLPBWwfKKF1K8Hf8whTseBgJcg=
 k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod 
h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
+k8s.io/utils v0.0.0-20200912215256-4140de9c8800 
h1:9ZNvfPvVIEsp/T1ez4GQuzCcCTEQWhovSofhqR73A6g=
+k8s.io/utils v0.0.0-20200912215256-4140de9c8800/go.mod 
h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
 knative.dev/caching v0.0.0-20190719140829-2032732871ff/go.mod 
h1:dHXFU6CGlLlbzaWc32g80cR92iuBSpsslDNBWI8C7eg=
 knative.dev/caching v0.0.0-20200116200605-67bca2c83dfa/go.mod 
h1:dHXFU6CGlLlbzaWc32g80cR92iuBSpsslDNBWI8C7eg=
 knative.dev/caching v0.0.0-20200922173540-a6b8bbd6999a/go.mod 
h1:P624eQ2AZLjwPBRuSqlnkWjRYoVeGdZ/uGXPrYP/USk=
@@ -2038,8 +2052,14 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client 
v0.0.9/go.mod h1:dzAXnQb
 sigs.k8s.io/boskos v0.0.0-20200526191642-45fc818e2d00/go.mod 
h1:L1ubP7d1CCMSQSjKiZv6dGbh7b4kfoG+dFPj8cfYDnI=
 sigs.k8s.io/boskos v0.0.0-20200617235605-f289ba6555ba/go.mod 
h1:ZO5RV+VxJS9mb6DvZ1yAjywoyq/wQ8b0vDoZxcIA5kE=
 sigs.k8s.io/boskos v0.0.0-20200729174948-794df80db9c9/go.mod 
h1:ZO5RV+VxJS9mb6DvZ1yAjywoyq/wQ8b0vDoZxcIA5kE=
-sigs.k8s.io/controller-runtime v0.6.3 
h1:SBbr+inLPEKhvlJtrvDcwIpm+uhDvp63Bl72xYJtoOE=
-sigs.k8s.io/controller-runtime v0.6.3/go.mod 
h1:WlZNXcM0++oyaQt4B7C2lEE5JYRs8vJUzRP4N4JpdAY=
+sigs.k8s.io/controller-runtime v0.3.0/go.mod 
h1:Cw6PkEg0Sa7dAYovGT4R0tRkGhHXpYijwNxYhAnAZZk=
+sigs.k8s.io/controller-runtime v0.5.0/go.mod 
h1:REiJzC7Y00U+2YkMbT8wxgrsX5USpXKGhb2sCtAXiT8=
+sigs.k8s.io/controller-runtime v0.5.4/go.mod 
h1:JZUwSMVbxDupo0lTJSSFP5pimEyxGynROImSsqIOx1A=
+sigs.k8s.io/controller-runtime v0.6.0/go.mod 
h1:CpYf5pdNY/B352A1TFLAS2JVSlnGQ5O2cftPHndTroo=
+sigs.k8s.io/controller-runtime v0.6.1/go.mod 
h1:XRYBPdbf5XJu9kpS84VJiZ7h/u1hF3gEORz0efEja7A=
+sigs.k8s.io/controller-runtime v0.6.4/go.mod 
h1:WlZNXcM0++oyaQt4B7C2lEE5JYRs8vJUzRP4N4JpdAY=
+sigs.k8s.io/controller-runtime v0.7.2 
h1:gD2JZp0bBLLuvSRYVNvox+bRCz1UUUxKDjPUCb56Ukk=
+sigs.k8s.io/controller-runtime v0.7.2/go.mod 
h1:pJ3YBrJiAqMAZKi6UVGuE98ZrroV1p+pIhoHsMm9wdU=
 sigs.k8s.io/controller-tools v0.3.0/go.mod 
h1:enhtKGfxZD1GFEoMgP8Fdbu+uKQ/cq1/WGJhdVChfvI=
 sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod 
h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU=
 sigs.k8s.io/structured-merge-diff v0.0.0-20190302045857-e85c7b244fd2/go.mod 
h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
@@ -2056,6 +2076,7 @@ sigs.k8s.io/structured-merge-diff/v3 
v3.0.1-0.20200706213357-43c19bbb7fba h1:AAb
 sigs.k8s.io/structured-merge-diff/v3 
v3.0.1-0.20200706213357-43c19bbb7fba/go.mod 
h1:V06abazjHneE37ZdSY/UUwPVgcJMKI/jU5XGUjgIKoc=
 sigs.k8s.io/structured-merge-diff/v4 v4.0.1 
h1:YXTMot5Qz/X1iBRJhAt+vI+HVttY0WkSqqhKxQ0xVbA=
 sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod 
h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
+sigs.k8s.io/testing_frameworks v0.1.1/go.mod 
h1:VVBKrHmJ6Ekkfz284YKhQePcdycOzNH9qL6ht1zEr/U=
 sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs=
 sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
 sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
diff --git a/pkg/builder/s2i/publisher.go b/pkg/builder/s2i/publisher.go
index d6a40a3..cdeda0d 100644
--- a/pkg/builder/s2i/publisher.go
+++ b/pkg/builder/s2i/publisher.go
@@ -29,7 +29,7 @@ import (
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        "k8s.io/apimachinery/pkg/util/json"
 
-       k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
        buildv1 "github.com/openshift/api/build/v1"
        imagev1 "github.com/openshift/api/image/v1"
@@ -175,11 +175,7 @@ func publisher(ctx *builder.Context) error {
                return err
        }
 
-       key, err := k8sclient.ObjectKeyFromObject(&is)
-       if err != nil {
-               return err
-       }
-       err = ctx.Client.Get(ctx.C, key, &is)
+       err = ctx.Client.Get(ctx.C, ctrl.ObjectKeyFromObject(&is), &is)
        if err != nil {
                return err
        }
diff --git a/pkg/cmd/install.go b/pkg/cmd/install.go
index 4252c75..9728ffc 100644
--- a/pkg/cmd/install.go
+++ b/pkg/cmd/install.go
@@ -370,7 +370,7 @@ func (o *installCmdOptions) install(cobraCmd 
*cobra.Command, _ []string) error {
                }
 
                // Always create a platform in the namespace where the operator 
is located
-               err = install.RuntimeObjectOrCollect(o.Context, c, namespace, 
collection, o.Force, platform)
+               err = install.ObjectOrCollect(o.Context, c, namespace, 
collection, o.Force, platform)
                if err != nil {
                        return err
                }
diff --git a/pkg/cmd/operator/operator.go b/pkg/cmd/operator/operator.go
index fb4a7c2..39253a0 100644
--- a/pkg/cmd/operator/operator.go
+++ b/pkg/cmd/operator/operator.go
@@ -27,7 +27,6 @@ import (
        "strconv"
        "time"
 
-       "github.com/apache/camel-k/pkg/platform"
        corev1 "k8s.io/api/core/v1"
        typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
        "k8s.io/client-go/tools/record"
@@ -45,6 +44,7 @@ import (
        "github.com/apache/camel-k/pkg/client"
        "github.com/apache/camel-k/pkg/controller"
        "github.com/apache/camel-k/pkg/install"
+       "github.com/apache/camel-k/pkg/platform"
        "github.com/apache/camel-k/pkg/util/defaults"
        "github.com/apache/camel-k/pkg/util/kubernetes"
 )
diff --git a/pkg/cmd/run.go b/pkg/cmd/run.go
index 87e3ac8..bf6ad39 100644
--- a/pkg/cmd/run.go
+++ b/pkg/cmd/run.go
@@ -39,7 +39,7 @@ import (
        corev1 "k8s.io/api/core/v1"
        k8serrors "k8s.io/apimachinery/pkg/api/errors"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-       k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
        v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
        "github.com/apache/camel-k/pkg/client"
@@ -302,12 +302,7 @@ func (o *runCmdOptions) run(cmd *cobra.Command, args 
[]string) error {
 
                        // The integration watch timed out so recreate it using 
the latest integration resource version
                        clone := integration.DeepCopy()
-                       var key k8sclient.ObjectKey
-                       key, err = k8sclient.ObjectKeyFromObject(clone)
-                       if err != nil {
-                               return err
-                       }
-                       err = c.Get(o.Context, key, clone)
+                       err = c.Get(o.Context, ctrl.ObjectKeyFromObject(clone), 
clone)
                        if err != nil {
                                return err
                        }
@@ -429,7 +424,7 @@ func (o *runCmdOptions) createIntegration(c client.Client, 
sources []string, cat
        return o.updateIntegrationCode(c, sources, catalog)
 }
 
-//nolint: gocyclo
+// nolint: gocyclo
 func (o *runCmdOptions) updateIntegrationCode(c client.Client, sources 
[]string, catalog *trait.Catalog) (*v1.Integration, error) {
        namespace := o.Namespace
 
@@ -590,12 +585,7 @@ func (o *runCmdOptions) updateIntegrationCode(c 
client.Client, sources []string,
        if err != nil && k8serrors.IsAlreadyExists(err) {
                existed = true
                clone := integration.DeepCopy()
-               var key k8sclient.ObjectKey
-               key, err = k8sclient.ObjectKeyFromObject(clone)
-               if err != nil {
-                       return nil, err
-               }
-               err = c.Get(o.Context, key, clone)
+               err = c.Get(o.Context, ctrl.ObjectKeyFromObject(clone), clone)
                if err != nil {
                        return nil, err
                }
diff --git a/pkg/controller/build/build_controller.go 
b/pkg/controller/build/build_controller.go
index b77e23c..341c909 100644
--- a/pkg/controller/build/build_controller.go
+++ b/pkg/controller/build/build_controller.go
@@ -25,10 +25,10 @@ import (
        corev1 "k8s.io/api/core/v1"
        "k8s.io/apimachinery/pkg/api/errors"
        "k8s.io/apimachinery/pkg/runtime"
+       "k8s.io/apimachinery/pkg/runtime/schema"
        "k8s.io/client-go/tools/record"
 
-       "k8s.io/apimachinery/pkg/runtime/schema"
-       k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
        "sigs.k8s.io/controller-runtime/pkg/controller"
        "sigs.k8s.io/controller-runtime/pkg/event"
        "sigs.k8s.io/controller-runtime/pkg/handler"
@@ -82,7 +82,8 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
        }
 
        // Watch for changes to primary resource Build
-       err = c.Watch(&source.Kind{Type: &v1.Build{}}, 
&handler.EnqueueRequestForObject{},
+       err = c.Watch(&source.Kind{Type: &v1.Build{}},
+               &handler.EnqueueRequestForObject{},
                predicate.Funcs{
                        UpdateFunc: func(e event.UpdateEvent) bool {
                                oldBuild := e.ObjectOld.(*v1.Build)
@@ -93,7 +94,8 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
                                return oldBuild.Generation != 
newBuild.Generation ||
                                        oldBuild.Status.Phase != 
newBuild.Status.Phase
                        },
-               })
+               },
+       )
        if err != nil {
                return err
        }
@@ -112,7 +114,8 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error 
{
                                // as it's used to transition the builds from 
one phase to another
                                return oldPod.Status.Phase != 
newPod.Status.Phase
                        },
-               })
+               },
+       )
        if err != nil {
                return err
        }
@@ -129,7 +132,7 @@ type reconcileBuild struct {
        client client.Client
        // Non-caching client to be used whenever caching may cause race 
conditions,
        // like in the builds scheduling critical section
-       reader   k8sclient.Reader
+       reader   ctrl.Reader
        scheme   *runtime.Scheme
        builder  builder.Builder
        routines sync.Map
@@ -141,12 +144,10 @@ type reconcileBuild struct {
 // Note:
 // The Controller will requeue the Request to be processed again if the 
returned error is non-nil or
 // Result.Requeue is true, otherwise upon completion it will remove the work 
from the queue.
-func (r *reconcileBuild) Reconcile(request reconcile.Request) 
(reconcile.Result, error) {
+func (r *reconcileBuild) Reconcile(ctx context.Context, request 
reconcile.Request) (reconcile.Result, error) {
        rlog := Log.WithValues("request-namespace", request.Namespace, 
"request-name", request.Name)
        rlog.Info("Reconciling Build")
 
-       ctx := context.TODO()
-
        // Make sure the operator is allowed to act on namespace
        if ok, err := platform.IsOperatorAllowedOnNamespace(ctx, r.client, 
request.Namespace); err != nil {
                return reconcile.Result{}, err
@@ -265,7 +266,7 @@ func (r *reconcileBuild) Reconcile(request 
reconcile.Request) (reconcile.Result,
 }
 
 func (r *reconcileBuild) update(ctx context.Context, base *v1.Build, target 
*v1.Build) (reconcile.Result, error) {
-       err := r.client.Status().Patch(ctx, target, k8sclient.MergeFrom(base))
+       err := r.client.Status().Patch(ctx, target, ctrl.MergeFrom(base))
 
        return reconcile.Result{}, err
 }
diff --git a/pkg/controller/integration/integration_controller.go 
b/pkg/controller/integration/integration_controller.go
index abe0d90..ff8c8ed 100644
--- a/pkg/controller/integration/integration_controller.go
+++ b/pkg/controller/integration/integration_controller.go
@@ -28,7 +28,7 @@ import (
        "k8s.io/apimachinery/pkg/types"
        "k8s.io/client-go/tools/record"
 
-       k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
        "sigs.k8s.io/controller-runtime/pkg/controller"
        "sigs.k8s.io/controller-runtime/pkg/event"
        "sigs.k8s.io/controller-runtime/pkg/handler"
@@ -76,29 +76,32 @@ func newReconciler(mgr manager.Manager, c client.Client) 
reconcile.Reconciler {
 }
 
 // add adds a new Controller to mgr with r as the reconcile.Reconciler
-func add(mgr manager.Manager, r reconcile.Reconciler, c client.Client) error {
+func add(mgr manager.Manager, r reconcile.Reconciler, cl client.Client) error {
        // Create a new controller
-       ctrl, err := controller.New("integration-controller", mgr, 
controller.Options{Reconciler: r})
+       c, err := controller.New("integration-controller", mgr, 
controller.Options{Reconciler: r})
        if err != nil {
                return err
        }
 
        // Watch for changes to primary resource Integration
-       err = ctrl.Watch(&source.Kind{Type: &v1.Integration{}}, 
&handler.EnqueueRequestForObject{}, predicate.Funcs{
-               UpdateFunc: func(e event.UpdateEvent) bool {
-                       oldIntegration := e.ObjectOld.(*v1.Integration)
-                       newIntegration := e.ObjectNew.(*v1.Integration)
-                       // Ignore updates to the integration status in which 
case metadata.Generation does not change,
-                       // or except when the integration phase changes as it's 
used to transition from one phase
-                       // to another
-                       return oldIntegration.Generation != 
newIntegration.Generation ||
-                               oldIntegration.Status.Phase != 
newIntegration.Status.Phase
+       err = c.Watch(&source.Kind{Type: &v1.Integration{}},
+               &handler.EnqueueRequestForObject{},
+               predicate.Funcs{
+                       UpdateFunc: func(e event.UpdateEvent) bool {
+                               oldIntegration := e.ObjectOld.(*v1.Integration)
+                               newIntegration := e.ObjectNew.(*v1.Integration)
+                               // Ignore updates to the integration status in 
which case metadata.Generation does not change,
+                               // or except when the integration phase changes 
as it's used to transition from one phase
+                               // to another
+                               return oldIntegration.Generation != 
newIntegration.Generation ||
+                                       oldIntegration.Status.Phase != 
newIntegration.Status.Phase
+                       },
+                       DeleteFunc: func(e event.DeleteEvent) bool {
+                               // Evaluates to false if the object has been 
confirmed deleted
+                               return !e.DeleteStateUnknown
+                       },
                },
-               DeleteFunc: func(e event.DeleteEvent) bool {
-                       // Evaluates to false if the object has been confirmed 
deleted
-                       return !e.DeleteStateUnknown
-               },
-       })
+       )
        if err != nil {
                return err
        }
@@ -106,18 +109,18 @@ func add(mgr manager.Manager, r reconcile.Reconciler, c 
client.Client) error {
        // Watch for IntegrationKit phase transitioning to ready or error and
        // enqueue requests for any integrations that are in phase waiting for
        // kit
-       err = ctrl.Watch(&source.Kind{Type: &v1.IntegrationKit{}}, 
&handler.EnqueueRequestsFromMapFunc{
-               ToRequests: handler.ToRequestsFunc(func(a handler.MapObject) 
[]reconcile.Request {
-                       kit := a.Object.(*v1.IntegrationKit)
+       err = c.Watch(&source.Kind{Type: &v1.IntegrationKit{}},
+               handler.EnqueueRequestsFromMapFunc(func(a ctrl.Object) 
[]reconcile.Request {
+                       kit := a.(*v1.IntegrationKit)
                        var requests []reconcile.Request
 
                        if kit.Status.Phase == v1.IntegrationKitPhaseReady || 
kit.Status.Phase == v1.IntegrationKitPhaseError {
                                list := &v1.IntegrationList{}
 
                                // Do global search in case of global operator 
(it may be using a global platform)
-                               var opts []k8sclient.ListOption
+                               var opts []ctrl.ListOption
                                if !platform.IsCurrentOperatorGlobal() {
-                                       opts = append(opts, 
k8sclient.InNamespace(kit.Namespace))
+                                       opts = append(opts, 
ctrl.InNamespace(kit.Namespace))
                                }
 
                                if err := mgr.GetClient().List(context.TODO(), 
list, opts...); err != nil {
@@ -141,35 +144,35 @@ func add(mgr manager.Manager, r reconcile.Reconciler, c 
client.Client) error {
 
                        return requests
                }),
-       })
+       )
        if err != nil {
                return err
        }
 
        // Watch for IntegrationPlatform phase transitioning to ready and 
enqueue
        // requests for any integrations that are in phase waiting for platform
-       err = ctrl.Watch(&source.Kind{Type: &v1.IntegrationPlatform{}}, 
&handler.EnqueueRequestsFromMapFunc{
-               ToRequests: handler.ToRequestsFunc(func(a handler.MapObject) 
[]reconcile.Request {
-                       pl := a.Object.(*v1.IntegrationPlatform)
+       err = c.Watch(&source.Kind{Type: &v1.IntegrationPlatform{}},
+               handler.EnqueueRequestsFromMapFunc(func(a ctrl.Object) 
[]reconcile.Request {
+                       p := a.(*v1.IntegrationPlatform)
                        var requests []reconcile.Request
 
-                       if pl.Status.Phase == v1.IntegrationPlatformPhaseReady {
+                       if p.Status.Phase == v1.IntegrationPlatformPhaseReady {
                                list := &v1.IntegrationList{}
 
                                // Do global search in case of global operator 
(it may be using a global platform)
-                               var opts []k8sclient.ListOption
+                               var opts []ctrl.ListOption
                                if !platform.IsCurrentOperatorGlobal() {
-                                       opts = append(opts, 
k8sclient.InNamespace(pl.Namespace))
+                                       opts = append(opts, 
ctrl.InNamespace(p.Namespace))
                                }
 
                                if err := mgr.GetClient().List(context.TODO(), 
list, opts...); err != nil {
-                                       log.Error(err, "Failed to retrieve 
integration list")
+                                       log.Error(err, "Failed to list 
integrations")
                                        return requests
                                }
 
                                for _, integration := range list.Items {
                                        if integration.Status.Phase == 
v1.IntegrationPhaseWaitingForPlatform {
-                                               log.Infof("Platform %s ready, 
wake-up integration: %s", pl.Name, integration.Name)
+                                               log.Infof("Platform %s ready, 
wake-up integration: %s", p.Name, integration.Name)
                                                requests = append(requests, 
reconcile.Request{
                                                        NamespacedName: 
types.NamespacedName{
                                                                Namespace: 
integration.Namespace,
@@ -182,7 +185,7 @@ func add(mgr manager.Manager, r reconcile.Reconciler, c 
client.Client) error {
 
                        return requests
                }),
-       })
+       )
        if err != nil {
                return err
        }
@@ -191,9 +194,9 @@ func add(mgr manager.Manager, r reconcile.Reconciler, c 
client.Client) error {
        // the EnqueueRequestForOwner handler as the owner depends on the 
deployment strategy,
        // either regular deployment or Knative service. In any case, the 
integration is not the
        // direct owner of the ReplicaSet.
-       err = ctrl.Watch(&source.Kind{Type: &appsv1.ReplicaSet{}}, 
&handler.EnqueueRequestsFromMapFunc{
-               ToRequests: handler.ToRequestsFunc(func(a handler.MapObject) 
[]reconcile.Request {
-                       rs := a.Object.(*appsv1.ReplicaSet)
+       err = c.Watch(&source.Kind{Type: &appsv1.ReplicaSet{}},
+               handler.EnqueueRequestsFromMapFunc(func(a ctrl.Object) 
[]reconcile.Request {
+                       rs := a.(*appsv1.ReplicaSet)
                        var requests []reconcile.Request
 
                        labels := rs.GetLabels()
@@ -209,23 +212,24 @@ func add(mgr manager.Manager, r reconcile.Reconciler, c 
client.Client) error {
 
                        return requests
                }),
-       }, predicate.Funcs{
-               UpdateFunc: func(e event.UpdateEvent) bool {
-                       oldReplicaSet := e.ObjectOld.(*appsv1.ReplicaSet)
-                       newReplicaSet := e.ObjectNew.(*appsv1.ReplicaSet)
-                       // Ignore updates to the ReplicaSet other than the 
replicas ones,
-                       // that are used to reconcile the integration replicas.
-                       return oldReplicaSet.Status.Replicas != 
newReplicaSet.Status.Replicas ||
-                               oldReplicaSet.Status.ReadyReplicas != 
newReplicaSet.Status.ReadyReplicas ||
-                               oldReplicaSet.Status.AvailableReplicas != 
newReplicaSet.Status.AvailableReplicas
+               predicate.Funcs{
+                       UpdateFunc: func(e event.UpdateEvent) bool {
+                               oldReplicaSet := 
e.ObjectOld.(*appsv1.ReplicaSet)
+                               newReplicaSet := 
e.ObjectNew.(*appsv1.ReplicaSet)
+                               // Ignore updates to the ReplicaSet other than 
the replicas ones,
+                               // that are used to reconcile the integration 
replicas.
+                               return oldReplicaSet.Status.Replicas != 
newReplicaSet.Status.Replicas ||
+                                       oldReplicaSet.Status.ReadyReplicas != 
newReplicaSet.Status.ReadyReplicas ||
+                                       oldReplicaSet.Status.AvailableReplicas 
!= newReplicaSet.Status.AvailableReplicas
+                       },
                },
-       })
+       )
        if err != nil {
                return err
        }
 
        // Watch cronjob to update the ready condition
-       err = ctrl.Watch(&source.Kind{Type: &v1beta1.CronJob{}}, 
&handler.EnqueueRequestForOwner{
+       err = c.Watch(&source.Kind{Type: &v1beta1.CronJob{}}, 
&handler.EnqueueRequestForOwner{
                OwnerType:    &v1.Integration{},
                IsController: false,
        })
@@ -234,17 +238,17 @@ func add(mgr manager.Manager, r reconcile.Reconciler, c 
client.Client) error {
        }
 
        // Check the ServiceBinding CRD is present
-       if ok, err := kubernetes.IsAPIResourceInstalled(c, 
sb.GroupVersion.String(), sb.GroupVersionKind.Kind); err != nil {
+       if ok, err := kubernetes.IsAPIResourceInstalled(cl, 
sb.GroupVersion.String(), sb.GroupVersionKind.Kind); err != nil {
                return err
        } else if !ok {
                log.Info("Service binding is disabled, install the Service 
Binding Operator if needed")
-       } else if ok, err := kubernetes.CheckPermission(context.TODO(), c, 
sb.GroupVersion.Group, sb.GroupVersionResource.Resource, 
platform.GetOperatorWatchNamespace(), "", "create"); err != nil {
+       } else if ok, err := kubernetes.CheckPermission(context.TODO(), cl, 
sb.GroupVersion.Group, sb.GroupVersionResource.Resource, 
platform.GetOperatorWatchNamespace(), "", "create"); err != nil {
                return err
        } else if !ok {
                log.Info("Service binding is disabled, the operator is not 
granted permission to create ServiceBindings!")
        } else {
                // Watch ServiceBindings and enqueue owning Integrations
-               err = ctrl.Watch(&source.Kind{Type: &sb.ServiceBinding{}}, 
&handler.EnqueueRequestForOwner{
+               err = c.Watch(&source.Kind{Type: &sb.ServiceBinding{}}, 
&handler.EnqueueRequestForOwner{
                        OwnerType:    &v1.Integration{},
                        IsController: true,
                })
@@ -271,12 +275,10 @@ type reconcileIntegration struct {
 // Note:
 // The Controller will requeue the Request to be processed again if the 
returned error is non-nil or
 // Result.Requeue is true, otherwise upon completion it will remove the work 
from the queue.
-func (r *reconcileIntegration) Reconcile(request reconcile.Request) 
(reconcile.Result, error) {
+func (r *reconcileIntegration) Reconcile(ctx context.Context, request 
reconcile.Request) (reconcile.Result, error) {
        rlog := Log.WithValues("request-namespace", request.Namespace, 
"request-name", request.Name)
        rlog.Info("Reconciling Integration")
 
-       ctx := context.TODO()
-
        // Make sure the operator is allowed to act on namespace
        if ok, err := platform.IsOperatorAllowedOnNamespace(ctx, r.client, 
request.Namespace); err != nil {
                return reconcile.Result{}, err
@@ -352,14 +354,14 @@ func (r *reconcileIntegration) Reconcile(request 
reconcile.Request) (reconcile.R
 }
 
 func (r *reconcileIntegration) update(ctx context.Context, base 
*v1.Integration, target *v1.Integration) (reconcile.Result, error) {
-       dgst, err := digest.ComputeForIntegration(target)
+       d, err := digest.ComputeForIntegration(target)
        if err != nil {
                return reconcile.Result{}, err
        }
 
-       target.Status.Digest = dgst
+       target.Status.Digest = d
 
-       err = r.client.Status().Patch(ctx, target, k8sclient.MergeFrom(base))
+       err = r.client.Status().Patch(ctx, target, ctrl.MergeFrom(base))
 
        return reconcile.Result{}, err
 }
diff --git a/pkg/controller/integrationkit/integrationkit_controller.go 
b/pkg/controller/integrationkit/integrationkit_controller.go
index ac38555..3714c52 100644
--- a/pkg/controller/integrationkit/integrationkit_controller.go
+++ b/pkg/controller/integrationkit/integrationkit_controller.go
@@ -26,7 +26,7 @@ import (
        "k8s.io/apimachinery/pkg/types"
        "k8s.io/client-go/tools/record"
 
-       k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
        "sigs.k8s.io/controller-runtime/pkg/controller"
        "sigs.k8s.io/controller-runtime/pkg/event"
        "sigs.k8s.io/controller-runtime/pkg/handler"
@@ -79,21 +79,24 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error 
{
        }
 
        // Watch for changes to primary resource IntegrationKit
-       err = c.Watch(&source.Kind{Type: &v1.IntegrationKit{}}, 
&handler.EnqueueRequestForObject{}, predicate.Funcs{
-               UpdateFunc: func(e event.UpdateEvent) bool {
-                       oldIntegrationKit := e.ObjectOld.(*v1.IntegrationKit)
-                       newIntegrationKit := e.ObjectNew.(*v1.IntegrationKit)
-                       // Ignore updates to the integration kit status in 
which case metadata.Generation
-                       // does not change, or except when the integration kit 
phase changes as it's used
-                       // to transition from one phase to another
-                       return oldIntegrationKit.Generation != 
newIntegrationKit.Generation ||
-                               oldIntegrationKit.Status.Phase != 
newIntegrationKit.Status.Phase
-               },
-               DeleteFunc: func(e event.DeleteEvent) bool {
-                       // Evaluates to false if the object has been confirmed 
deleted
-                       return !e.DeleteStateUnknown
+       err = c.Watch(&source.Kind{Type: &v1.IntegrationKit{}},
+               &handler.EnqueueRequestForObject{},
+               predicate.Funcs{
+                       UpdateFunc: func(e event.UpdateEvent) bool {
+                               oldIntegrationKit := 
e.ObjectOld.(*v1.IntegrationKit)
+                               newIntegrationKit := 
e.ObjectNew.(*v1.IntegrationKit)
+                               // Ignore updates to the integration kit status 
in which case metadata.Generation
+                               // does not change, or except when the 
integration kit phase changes as it's used
+                               // to transition from one phase to another
+                               return oldIntegrationKit.Generation != 
newIntegrationKit.Generation ||
+                                       oldIntegrationKit.Status.Phase != 
newIntegrationKit.Status.Phase
+                       },
+                       DeleteFunc: func(e event.DeleteEvent) bool {
+                               // Evaluates to false if the object has been 
confirmed deleted
+                               return !e.DeleteStateUnknown
+                       },
                },
-       })
+       )
        if err != nil {
                return err
        }
@@ -113,29 +116,30 @@ func add(mgr manager.Manager, r reconcile.Reconciler) 
error {
                                // to another during the image build
                                return oldBuild.Status.Phase != 
newBuild.Status.Phase
                        },
-               })
+               },
+       )
        if err != nil {
                return err
        }
 
        // Watch for IntegrationPlatform phase transitioning to ready and 
enqueue
        // requests for any integration kits that are in phase waiting for 
platform
-       err = c.Watch(&source.Kind{Type: &v1.IntegrationPlatform{}}, 
&handler.EnqueueRequestsFromMapFunc{
-               ToRequests: handler.ToRequestsFunc(func(a handler.MapObject) 
[]reconcile.Request {
-                       platform := a.Object.(*v1.IntegrationPlatform)
+       err = c.Watch(&source.Kind{Type: &v1.IntegrationPlatform{}},
+               handler.EnqueueRequestsFromMapFunc(func(a ctrl.Object) 
[]reconcile.Request {
+                       p := a.(*v1.IntegrationPlatform)
                        var requests []reconcile.Request
 
-                       if platform.Status.Phase == 
v1.IntegrationPlatformPhaseReady {
+                       if p.Status.Phase == v1.IntegrationPlatformPhaseReady {
                                list := &v1.IntegrationKitList{}
 
-                               if err := mgr.GetClient().List(context.TODO(), 
list, k8sclient.InNamespace(platform.Namespace)); err != nil {
-                                       log.Error(err, "Failed to retrieve 
integrationkit list")
+                               if err := mgr.GetClient().List(context.TODO(), 
list, ctrl.InNamespace(p.Namespace)); err != nil {
+                                       log.Error(err, "Failed to list 
integration kits")
                                        return requests
                                }
 
                                for _, kit := range list.Items {
                                        if kit.Status.Phase == 
v1.IntegrationKitPhaseWaitingForPlatform {
-                                               log.Infof("Platform %s ready, 
wake-up integrationkit: %s", platform.Name, kit.Name)
+                                               log.Infof("Platform %s ready, 
wake-up integration kit: %s", p.Name, kit.Name)
                                                requests = append(requests, 
reconcile.Request{
                                                        NamespacedName: 
types.NamespacedName{
                                                                Namespace: 
kit.Namespace,
@@ -148,7 +152,7 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error 
{
 
                        return requests
                }),
-       })
+       )
        if err != nil {
                return err
        }
@@ -172,12 +176,10 @@ type reconcileIntegrationKit struct {
 // Note:
 // The Controller will requeue the Request to be processed again if the 
returned error is non-nil or
 // Result.Requeue is true, otherwise upon completion it will remove the work 
from the queue.
-func (r *reconcileIntegrationKit) Reconcile(request reconcile.Request) 
(reconcile.Result, error) {
+func (r *reconcileIntegrationKit) Reconcile(ctx context.Context, request 
reconcile.Request) (reconcile.Result, error) {
        rlog := Log.WithValues("request-namespace", request.Namespace, 
"request-name", request.Name)
        rlog.Info("Reconciling IntegrationKit")
 
-       ctx := context.TODO()
-
        // Make sure the operator is allowed to act on namespace
        if ok, err := platform.IsOperatorAllowedOnNamespace(ctx, r.client, 
request.Namespace); err != nil {
                return reconcile.Result{}, err
@@ -284,7 +286,7 @@ func (r *reconcileIntegrationKit) update(ctx 
context.Context, base *v1.Integrati
 
        target.Status.Digest = dgst
 
-       err = r.client.Status().Patch(ctx, target, k8sclient.MergeFrom(base))
+       err = r.client.Status().Patch(ctx, target, ctrl.MergeFrom(base))
 
        return reconcile.Result{}, err
 }
diff --git 
a/pkg/controller/integrationplatform/integrationplatform_controller.go 
b/pkg/controller/integrationplatform/integrationplatform_controller.go
index 71a8711..5fa590e 100644
--- a/pkg/controller/integrationplatform/integrationplatform_controller.go
+++ b/pkg/controller/integrationplatform/integrationplatform_controller.go
@@ -26,7 +26,7 @@ import (
        "k8s.io/apimachinery/pkg/runtime/schema"
        "k8s.io/client-go/tools/record"
 
-       k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
        "sigs.k8s.io/controller-runtime/pkg/controller"
        "sigs.k8s.io/controller-runtime/pkg/event"
        "sigs.k8s.io/controller-runtime/pkg/handler"
@@ -77,21 +77,24 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error 
{
        }
 
        // Watch for changes to primary resource IntegrationPlatform
-       err = c.Watch(&source.Kind{Type: &v1.IntegrationPlatform{}}, 
&handler.EnqueueRequestForObject{}, predicate.Funcs{
-               UpdateFunc: func(e event.UpdateEvent) bool {
-                       oldIntegrationPlatform := 
e.ObjectOld.(*v1.IntegrationPlatform)
-                       newIntegrationPlatform := 
e.ObjectNew.(*v1.IntegrationPlatform)
-                       // Ignore updates to the integration platform status in 
which case metadata.Generation
-                       // does not change, or except when the integration 
platform phase changes as it's used
-                       // to transition from one phase to another
-                       return oldIntegrationPlatform.Generation != 
newIntegrationPlatform.Generation ||
-                               oldIntegrationPlatform.Status.Phase != 
newIntegrationPlatform.Status.Phase
+       err = c.Watch(&source.Kind{Type: &v1.IntegrationPlatform{}},
+               &handler.EnqueueRequestForObject{},
+               predicate.Funcs{
+                       UpdateFunc: func(e event.UpdateEvent) bool {
+                               oldIntegrationPlatform := 
e.ObjectOld.(*v1.IntegrationPlatform)
+                               newIntegrationPlatform := 
e.ObjectNew.(*v1.IntegrationPlatform)
+                               // Ignore updates to the integration platform 
status in which case metadata.Generation
+                               // does not change, or except when the 
integration platform phase changes as it's used
+                               // to transition from one phase to another
+                               return oldIntegrationPlatform.Generation != 
newIntegrationPlatform.Generation ||
+                                       oldIntegrationPlatform.Status.Phase != 
newIntegrationPlatform.Status.Phase
+                       },
+                       DeleteFunc: func(e event.DeleteEvent) bool {
+                               // Evaluates to false if the object has been 
confirmed deleted
+                               return !e.DeleteStateUnknown
+                       },
                },
-               DeleteFunc: func(e event.DeleteEvent) bool {
-                       // Evaluates to false if the object has been confirmed 
deleted
-                       return !e.DeleteStateUnknown
-               },
-       })
+       )
        if err != nil {
                return err
        }
@@ -115,12 +118,10 @@ type reconcileIntegrationPlatform struct {
 // Note:
 // The Controller will requeue the Request to be processed again if the 
returned error is non-nil or
 // Result.Requeue is true, otherwise upon completion it will remove the work 
from the queue.
-func (r *reconcileIntegrationPlatform) Reconcile(request reconcile.Request) 
(reconcile.Result, error) {
+func (r *reconcileIntegrationPlatform) Reconcile(ctx context.Context, request 
reconcile.Request) (reconcile.Result, error) {
        rlog := Log.WithValues("request-namespace", request.Namespace, 
"request-name", request.Name)
        rlog.Info("Reconciling IntegrationPlatform")
 
-       ctx := context.TODO()
-
        // Make sure the operator is allowed to act on namespace
        if ok, err := platform.IsOperatorAllowedOnNamespace(ctx, r.client, 
request.Namespace); err != nil {
                return reconcile.Result{}, err
@@ -174,7 +175,7 @@ func (r *reconcileIntegrationPlatform) Reconcile(request 
reconcile.Request) (rec
                        }
 
                        if target != nil {
-                               if err := r.client.Status().Patch(ctx, target, 
k8sclient.MergeFrom(&instance)); err != nil {
+                               if err := r.client.Status().Patch(ctx, target, 
ctrl.MergeFrom(&instance)); err != nil {
                                        
camelevent.NotifyIntegrationPlatformError(ctx, r.client, r.recorder, &instance, 
target, err)
                                        return reconcile.Result{}, err
                                }
diff --git a/pkg/controller/kamelet/kamelet_controller.go 
b/pkg/controller/kamelet/kamelet_controller.go
index a9acf50..84729df 100644
--- a/pkg/controller/kamelet/kamelet_controller.go
+++ b/pkg/controller/kamelet/kamelet_controller.go
@@ -26,7 +26,7 @@ import (
        "k8s.io/apimachinery/pkg/runtime/schema"
        "k8s.io/client-go/tools/record"
 
-       k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
        "sigs.k8s.io/controller-runtime/pkg/controller"
        "sigs.k8s.io/controller-runtime/pkg/event"
        "sigs.k8s.io/controller-runtime/pkg/handler"
@@ -77,21 +77,24 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error 
{
        }
 
        // Watch for changes to primary resource Kamelet
-       err = c.Watch(&source.Kind{Type: &v1alpha1.Kamelet{}}, 
&handler.EnqueueRequestForObject{}, predicate.Funcs{
-               UpdateFunc: func(e event.UpdateEvent) bool {
-                       oldKamelet := e.ObjectOld.(*v1alpha1.Kamelet)
-                       newKamelet := e.ObjectNew.(*v1alpha1.Kamelet)
-                       // Ignore updates to the kamelet status in which case 
metadata.Generation
-                       // does not change, or except when the kamelet phase 
changes as it's used
-                       // to transition from one phase to another
-                       return oldKamelet.Generation != newKamelet.Generation ||
-                               oldKamelet.Status.Phase != 
newKamelet.Status.Phase
+       err = c.Watch(&source.Kind{Type: &v1alpha1.Kamelet{}},
+               &handler.EnqueueRequestForObject{},
+               predicate.Funcs{
+                       UpdateFunc: func(e event.UpdateEvent) bool {
+                               oldKamelet := e.ObjectOld.(*v1alpha1.Kamelet)
+                               newKamelet := e.ObjectNew.(*v1alpha1.Kamelet)
+                               // Ignore updates to the kamelet status in 
which case metadata.Generation
+                               // does not change, or except when the kamelet 
phase changes as it's used
+                               // to transition from one phase to another
+                               return oldKamelet.Generation != 
newKamelet.Generation ||
+                                       oldKamelet.Status.Phase != 
newKamelet.Status.Phase
+                       },
+                       DeleteFunc: func(e event.DeleteEvent) bool {
+                               // Evaluates to false if the object has been 
confirmed deleted
+                               return !e.DeleteStateUnknown
+                       },
                },
-               DeleteFunc: func(e event.DeleteEvent) bool {
-                       // Evaluates to false if the object has been confirmed 
deleted
-                       return !e.DeleteStateUnknown
-               },
-       })
+       )
        if err != nil {
                return err
        }
@@ -115,12 +118,10 @@ type reconcileKamelet struct {
 // Note:
 // The Controller will requeue the Request to be processed again if the 
returned error is non-nil or
 // Result.Requeue is true, otherwise upon completion it will remove the work 
from the queue.
-func (r *reconcileKamelet) Reconcile(request reconcile.Request) 
(reconcile.Result, error) {
+func (r *reconcileKamelet) Reconcile(ctx context.Context, request 
reconcile.Request) (reconcile.Result, error) {
        rlog := Log.WithValues("request-namespace", request.Namespace, 
"request-name", request.Name)
        rlog.Info("Reconciling Kamelet")
 
-       ctx := context.TODO()
-
        // Make sure the operator is allowed to act on namespace
        if ok, err := platform.IsOperatorAllowedOnNamespace(ctx, r.client, 
request.Namespace); err != nil {
                return reconcile.Result{}, err
@@ -172,7 +173,7 @@ func (r *reconcileKamelet) Reconcile(request 
reconcile.Request) (reconcile.Resul
                        }
 
                        if target != nil {
-                               if err := r.client.Status().Patch(ctx, target, 
k8sclient.MergeFrom(&instance)); err != nil {
+                               if err := r.client.Status().Patch(ctx, target, 
ctrl.MergeFrom(&instance)); err != nil {
                                        camelevent.NotifyKameletError(ctx, 
r.client, r.recorder, &instance, target, err)
                                        return reconcile.Result{}, err
                                }
diff --git a/pkg/controller/kameletbinding/kamelet_binding_controller.go 
b/pkg/controller/kameletbinding/kamelet_binding_controller.go
index ffde023..ff23f65 100644
--- a/pkg/controller/kameletbinding/kamelet_binding_controller.go
+++ b/pkg/controller/kameletbinding/kamelet_binding_controller.go
@@ -26,7 +26,7 @@ import (
        "k8s.io/apimachinery/pkg/runtime/schema"
        "k8s.io/client-go/tools/record"
 
-       k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
        "sigs.k8s.io/controller-runtime/pkg/controller"
        "sigs.k8s.io/controller-runtime/pkg/event"
        "sigs.k8s.io/controller-runtime/pkg/handler"
@@ -76,21 +76,24 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error 
{
        }
 
        // Watch for changes to primary resource KameletBinding
-       err = c.Watch(&source.Kind{Type: &v1alpha1.KameletBinding{}}, 
&handler.EnqueueRequestForObject{}, predicate.Funcs{
-               UpdateFunc: func(e event.UpdateEvent) bool {
-                       oldKameletBinding := 
e.ObjectOld.(*v1alpha1.KameletBinding)
-                       newKameletBinding := 
e.ObjectNew.(*v1alpha1.KameletBinding)
-                       // Ignore updates to the kameletBinding status in which 
case metadata.Generation
-                       // does not change, or except when the kameletBinding 
phase changes as it's used
-                       // to transition from one phase to another
-                       return oldKameletBinding.Generation != 
newKameletBinding.Generation ||
-                               oldKameletBinding.Status.Phase != 
newKameletBinding.Status.Phase
+       err = c.Watch(&source.Kind{Type: &v1alpha1.KameletBinding{}},
+               &handler.EnqueueRequestForObject{},
+               predicate.Funcs{
+                       UpdateFunc: func(e event.UpdateEvent) bool {
+                               oldKameletBinding := 
e.ObjectOld.(*v1alpha1.KameletBinding)
+                               newKameletBinding := 
e.ObjectNew.(*v1alpha1.KameletBinding)
+                               // Ignore updates to the kameletBinding status 
in which case metadata.Generation
+                               // does not change, or except when the 
kameletBinding phase changes as it's used
+                               // to transition from one phase to another
+                               return oldKameletBinding.Generation != 
newKameletBinding.Generation ||
+                                       oldKameletBinding.Status.Phase != 
newKameletBinding.Status.Phase
+                       },
+                       DeleteFunc: func(e event.DeleteEvent) bool {
+                               // Evaluates to false if the object has been 
confirmed deleted
+                               return !e.DeleteStateUnknown
+                       },
                },
-               DeleteFunc: func(e event.DeleteEvent) bool {
-                       // Evaluates to false if the object has been confirmed 
deleted
-                       return !e.DeleteStateUnknown
-               },
-       })
+       )
        if err != nil {
                return err
        }
@@ -123,12 +126,10 @@ type ReconcileKameletBinding struct {
 // Note:
 // The Controller will requeue the Request to be processed again if the 
returned error is non-nil or
 // Result.Requeue is true, otherwise upon completion it will remove the work 
from the queue.
-func (r *ReconcileKameletBinding) Reconcile(request reconcile.Request) 
(reconcile.Result, error) {
+func (r *ReconcileKameletBinding) Reconcile(ctx context.Context, request 
reconcile.Request) (reconcile.Result, error) {
        rlog := Log.WithValues("request-namespace", request.Namespace, 
"request-name", request.Name)
        rlog.Info("Reconciling KameletBinding")
 
-       ctx := context.TODO()
-
        // Make sure the operator is allowed to act on namespace
        if ok, err := platform.IsOperatorAllowedOnNamespace(ctx, r.client, 
request.Namespace); err != nil {
                return reconcile.Result{}, err
@@ -180,7 +181,7 @@ func (r *ReconcileKameletBinding) Reconcile(request 
reconcile.Request) (reconcil
                        }
 
                        if target != nil {
-                               if err := r.client.Status().Patch(ctx, target, 
k8sclient.MergeFrom(&instance)); err != nil {
+                               if err := r.client.Status().Patch(ctx, target, 
ctrl.MergeFrom(&instance)); err != nil {
                                        
camelevent.NotifyKameletBindingError(ctx, r.client, r.recorder, &instance, 
target, err)
                                        return reconcile.Result{}, err
                                }
diff --git a/pkg/install/cluster.go b/pkg/install/cluster.go
index 401ff8f..442877c 100644
--- a/pkg/install/cluster.go
+++ b/pkg/install/cluster.go
@@ -25,14 +25,13 @@ import (
        "time"
 
        rbacv1 "k8s.io/api/rbac/v1"
-       k8serrors "k8s.io/apimachinery/pkg/api/errors"
-       metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-       "k8s.io/apimachinery/pkg/runtime"
-       k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
-
        "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
        apiextensionsv1 
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
        apiextensionsv1beta1 
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
+       k8serrors "k8s.io/apimachinery/pkg/api/errors"
+       metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
        "github.com/apache/camel-k/pkg/client"
        "github.com/apache/camel-k/pkg/resources"
@@ -68,7 +67,7 @@ func SetupClusterWideResourcesOrCollect(ctx context.Context, 
clientProvider clie
                        return err
                }
        }
-       downgradeToCRDv1beta1 := func(object runtime.Object) runtime.Object {
+       downgradeToCRDv1beta1 := func(object ctrl.Object) ctrl.Object {
                if !isApiExtensionsV1 {
                        v1Crd := 
object.(*apiextensionsv1.CustomResourceDefinition)
                        v1beta1Crd := 
&apiextensionsv1beta1.CustomResourceDefinition{}
@@ -284,12 +283,8 @@ func isClusterRoleInstalled(ctx context.Context, c 
client.Client, name string) (
        return isResourceInstalled(ctx, c, &clusterRole)
 }
 
-func isResourceInstalled(ctx context.Context, c client.Client, object 
runtime.Object) (bool, error) {
-       key, err := k8sclient.ObjectKeyFromObject(object)
-       if err != nil {
-               return false, err
-       }
-       err = c.Get(ctx, key, object)
+func isResourceInstalled(ctx context.Context, c client.Client, object 
ctrl.Object) (bool, error) {
+       err := c.Get(ctx, ctrl.ObjectKeyFromObject(object), object)
        if err != nil && k8serrors.IsNotFound(err) {
                return false, nil
        } else if err != nil {
diff --git a/pkg/install/common.go b/pkg/install/common.go
index 2abcda6..345d112 100644
--- a/pkg/install/common.go
+++ b/pkg/install/common.go
@@ -21,23 +21,23 @@ import (
        "context"
        "strings"
 
-       "github.com/apache/camel-k/pkg/resources"
+       "k8s.io/apimachinery/pkg/api/errors"
+       k8s "k8s.io/client-go/kubernetes"
+
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
+
        v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
        "github.com/apache/camel-k/pkg/client"
+       "github.com/apache/camel-k/pkg/resources"
        "github.com/apache/camel-k/pkg/util/kubernetes"
        "github.com/apache/camel-k/pkg/util/openshift"
-       kube "k8s.io/client-go/kubernetes"
-
-       "k8s.io/apimachinery/pkg/api/errors"
-       metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-       "k8s.io/apimachinery/pkg/runtime"
 )
 
 // ResourceCustomizer can be used to inject code that changes the objects 
before they are created
-type ResourceCustomizer func(object runtime.Object) runtime.Object
+type ResourceCustomizer func(object ctrl.Object) ctrl.Object
 
 // IdentityResourceCustomizer is a ResourceCustomizer that does nothing
-var IdentityResourceCustomizer = func(object runtime.Object) runtime.Object {
+var IdentityResourceCustomizer = func(object ctrl.Object) ctrl.Object {
        return object
 }
 
@@ -62,7 +62,6 @@ func Resource(ctx context.Context, c client.Client, namespace 
string, force bool
        return ResourceOrCollect(ctx, c, namespace, nil, force, customizer, 
name)
 }
 
-// ResourceOrCollect --
 func ResourceOrCollect(ctx context.Context, c client.Client, namespace string, 
collection *kubernetes.Collection,
        force bool, customizer ResourceCustomizer, name string) error {
        obj, err := kubernetes.LoadResourceFromYaml(c.GetScheme(), 
resources.ResourceAsString(name))
@@ -70,25 +69,17 @@ func ResourceOrCollect(ctx context.Context, c 
client.Client, namespace string, c
                return err
        }
 
-       return RuntimeObjectOrCollect(ctx, c, namespace, collection, force, 
customizer(obj))
+       return ObjectOrCollect(ctx, c, namespace, collection, force, 
customizer(obj))
 }
 
-// RuntimeObject installs a single runtime object
-func RuntimeObject(ctx context.Context, c client.Client, namespace string, 
force bool, obj runtime.Object) error {
-       return RuntimeObjectOrCollect(ctx, c, namespace, nil, force, obj)
-}
-
-// RuntimeObjectOrCollect --
-func RuntimeObjectOrCollect(ctx context.Context, c client.Client, namespace 
string, collection *kubernetes.Collection, force bool, obj runtime.Object) 
error {
+func ObjectOrCollect(ctx context.Context, c client.Client, namespace string, 
collection *kubernetes.Collection, force bool, obj ctrl.Object) error {
        if collection != nil {
                // Adding to the collection before setting the namespace
                collection.Add(obj)
                return nil
        }
 
-       if metaObject, ok := obj.(metav1.Object); ok {
-               metaObject.SetNamespace(namespace)
-       }
+       obj.SetNamespace(namespace)
 
        if obj.GetObjectKind().GroupVersionKind().Kind == 
"PersistentVolumeClaim" {
                if err := c.Create(ctx, obj); err != nil && 
!errors.IsAlreadyExists(err) {
@@ -115,7 +106,7 @@ func RuntimeObjectOrCollect(ctx context.Context, c 
client.Client, namespace stri
        return c.Create(ctx, obj)
 }
 
-func isOpenShift(c kube.Interface, clusterType string) (bool, error) {
+func isOpenShift(c k8s.Interface, clusterType string) (bool, error) {
        var res bool
        var err error
        if clusterType != "" {
diff --git a/pkg/install/kamelets.go b/pkg/install/kamelets.go
index d6871a7..9825836 100644
--- a/pkg/install/kamelets.go
+++ b/pkg/install/kamelets.go
@@ -23,11 +23,12 @@ import (
        "strings"
 
        "github.com/pkg/errors"
+
        k8serrors "k8s.io/apimachinery/pkg/api/errors"
-       metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-       "k8s.io/apimachinery/pkg/runtime"
        "k8s.io/apimachinery/pkg/types"
 
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
+
        "github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
        "github.com/apache/camel-k/pkg/client"
        "github.com/apache/camel-k/pkg/resources"
@@ -66,27 +67,24 @@ func KameletCatalog(ctx context.Context, c client.Client, 
namespace string) erro
                        }
 
                        if existing == nil || 
existing.Annotations[kamelVersionAnnotation] != defaults.Version {
-                               err := Resource(ctx, c, namespace, true, 
func(object runtime.Object) runtime.Object {
-                                       if o, ok := object.(metav1.Object); ok {
-                                               if o.GetAnnotations() == nil {
-                                                       
o.SetAnnotations(make(map[string]string))
-                                               }
-                                               
o.GetAnnotations()[kamelVersionAnnotation] = defaults.Version
-
-                                               if o.GetLabels() == nil {
-                                                       
o.SetLabels(make(map[string]string))
-                                               }
-                                               
o.GetLabels()[kameletBundledLabel] = "true"
-                                               
o.GetLabels()[kameletReadOnlyLabel] = "true"
+                               err := Resource(ctx, c, namespace, true, func(o 
ctrl.Object) ctrl.Object {
+                                       if o.GetAnnotations() == nil {
+                                               
o.SetAnnotations(make(map[string]string))
                                        }
-                                       return object
+                                       
o.GetAnnotations()[kamelVersionAnnotation] = defaults.Version
+
+                                       if o.GetLabels() == nil {
+                                               
o.SetLabels(make(map[string]string))
+                                       }
+                                       o.GetLabels()[kameletBundledLabel] = 
"true"
+                                       o.GetLabels()[kameletReadOnlyLabel] = 
"true"
+                                       return o
                                }, path.Join(kameletDir, res))
 
                                if err != nil {
                                        return errors.Wrapf(err, "could not 
create resource %q", res)
                                }
                        }
-
                }
        }
 
diff --git a/pkg/install/operator.go b/pkg/install/operator.go
index 1187332..145c310 100644
--- a/pkg/install/operator.go
+++ b/pkg/install/operator.go
@@ -31,7 +31,6 @@ import (
        k8serrors "k8s.io/apimachinery/pkg/api/errors"
        "k8s.io/apimachinery/pkg/api/meta"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-       "k8s.io/apimachinery/pkg/runtime"
        "k8s.io/apimachinery/pkg/util/intstr"
 
        ctrl "sigs.k8s.io/controller-runtime/pkg/client"
@@ -70,7 +69,7 @@ type OperatorMonitoringConfiguration struct {
 
 // OperatorOrCollect installs the operator resources or adds them to the 
collector if present
 func OperatorOrCollect(ctx context.Context, c client.Client, cfg 
OperatorConfiguration, collection *kubernetes.Collection, force bool) error {
-       customizer := func(o runtime.Object) runtime.Object {
+       customizer := func(o ctrl.Object) ctrl.Object {
                if cfg.CustomImage != "" {
                        if d, ok := o.(*appsv1.Deployment); ok {
                                if d.Labels["camel.apache.org/component"] == 
"operator" {
diff --git a/pkg/install/secret.go b/pkg/install/secret.go
index 1020ad7..6d403bf 100644
--- a/pkg/install/secret.go
+++ b/pkg/install/secret.go
@@ -21,11 +21,12 @@ import (
        "context"
        "io/ioutil"
 
+       v1 "k8s.io/api/core/v1"
+       metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
        "github.com/apache/camel-k/pkg/client"
        "github.com/apache/camel-k/pkg/util/kubernetes"
        "github.com/apache/camel-k/pkg/util/registry"
-       v1 "k8s.io/api/core/v1"
-       metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 )
 
 const registrySecretName = "camel-k-registry-secret"
@@ -70,7 +71,7 @@ func registrySecretFromDataOrCollect(ctx context.Context, c 
client.Client, names
                },
        }
 
-       if err := RuntimeObjectOrCollect(ctx, c, namespace, collection, force, 
&registrySecret); err != nil {
+       if err := ObjectOrCollect(ctx, c, namespace, collection, force, 
&registrySecret); err != nil {
                return "", err
        }
        return registrySecretName, nil
diff --git a/pkg/platform/defaults.go b/pkg/platform/defaults.go
index c4f1382..22cab53 100644
--- a/pkg/platform/defaults.go
+++ b/pkg/platform/defaults.go
@@ -23,8 +23,6 @@ import (
        "strings"
        "time"
 
-       "github.com/apache/camel-k/pkg/kamelet/repository"
-       "github.com/apache/camel-k/pkg/util/patch"
        "github.com/pkg/errors"
 
        corev1 "k8s.io/api/core/v1"
@@ -33,15 +31,17 @@ import (
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        "k8s.io/apimachinery/pkg/types"
 
-       k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
        v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
        "github.com/apache/camel-k/pkg/client"
        "github.com/apache/camel-k/pkg/install"
+       "github.com/apache/camel-k/pkg/kamelet/repository"
        "github.com/apache/camel-k/pkg/util/defaults"
        "github.com/apache/camel-k/pkg/util/log"
        "github.com/apache/camel-k/pkg/util/maven"
        "github.com/apache/camel-k/pkg/util/openshift"
+       "github.com/apache/camel-k/pkg/util/patch"
 )
 
 // BuilderServiceAccount --
@@ -293,13 +293,8 @@ func createDefaultMavenSettingsConfigMap(ctx 
context.Context, client client.Clie
        if err != nil && !k8serrors.IsAlreadyExists(err) {
                return err
        } else if k8serrors.IsAlreadyExists(err) {
-               key, err := k8sclient.ObjectKeyFromObject(cm)
-               if err != nil {
-                       return err
-               }
-
-               cmCopy := cm.DeepCopyObject()
-               err = client.Get(ctx, key, cmCopy)
+               cmCopy := cm.DeepCopyObject().(ctrl.Object)
+               err = client.Get(ctx, ctrl.ObjectKeyFromObject(cm), cmCopy)
                if err != nil {
                        return err
                }
@@ -308,7 +303,7 @@ func createDefaultMavenSettingsConfigMap(ctx 
context.Context, client client.Clie
                if err != nil {
                        return err
                } else if len(p) != 0 {
-                       err = client.Patch(ctx, cm, 
k8sclient.RawPatch(types.MergePatchType, p))
+                       err = client.Patch(ctx, cm, 
ctrl.RawPatch(types.MergePatchType, p))
                        if err != nil {
                                return errors.Wrap(err, "error during patch 
resource")
                        }
@@ -339,7 +334,7 @@ func createServiceCaBundleConfigMap(ctx context.Context, 
client client.Client, p
 
 func createBuilderServiceAccount(ctx context.Context, client client.Client, p 
*v1.IntegrationPlatform) error {
        sa := corev1.ServiceAccount{}
-       key := k8sclient.ObjectKey{
+       key := ctrl.ObjectKey{
                Name:      BuilderServiceAccount,
                Namespace: p.Namespace,
        }
diff --git a/pkg/trait/deployer.go b/pkg/trait/deployer.go
index a9a11d7..f8a895a 100644
--- a/pkg/trait/deployer.go
+++ b/pkg/trait/deployer.go
@@ -23,10 +23,9 @@ import (
        "github.com/pkg/errors"
 
        k8serrors "k8s.io/apimachinery/pkg/api/errors"
-       "k8s.io/apimachinery/pkg/runtime"
        "k8s.io/apimachinery/pkg/types"
 
-       "sigs.k8s.io/controller-runtime/pkg/client"
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
        v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
        "github.com/apache/camel-k/pkg/util/patch"
@@ -109,30 +108,27 @@ func (t *deployerTrait) Apply(e *Environment) error {
        return nil
 }
 
-func (t *deployerTrait) serverSideApply(env *Environment, resource 
runtime.Object) error {
+func (t *deployerTrait) serverSideApply(env *Environment, resource 
ctrl.Object) error {
        target, err := patch.PositiveApplyPatch(resource)
        if err != nil {
                return err
        }
-       err = env.Client.Patch(env.C, target, client.Apply, 
client.ForceOwnership, client.FieldOwner("camel-k-operator"))
+       err = env.Client.Patch(env.C, target, ctrl.Apply, ctrl.ForceOwnership, 
ctrl.FieldOwner("camel-k-operator"))
        if err != nil {
                return errors.Wrapf(err, "error during apply resource: %v", 
resource)
        }
        return nil
 }
 
-func (t *deployerTrait) clientSideApply(env *Environment, resource 
runtime.Object) error {
+func (t *deployerTrait) clientSideApply(env *Environment, resource 
ctrl.Object) error {
        err := env.Client.Create(env.C, resource)
        if err == nil {
                return nil
        } else if !k8serrors.IsAlreadyExists(err) {
                return errors.Wrapf(err, "error during create resource: %v", 
resource)
        }
-       key, err := client.ObjectKeyFromObject(resource)
-       if err != nil {
-               return err
-       }
-       object := resource.DeepCopyObject()
+       key := ctrl.ObjectKeyFromObject(resource)
+       object := resource.DeepCopyObject().(ctrl.Object)
        err = env.Client.Get(env.C, key, object)
        if err != nil {
                return err
@@ -144,7 +140,7 @@ func (t *deployerTrait) clientSideApply(env *Environment, 
resource runtime.Objec
                // Avoid triggering a patch request for nothing
                return nil
        }
-       err = env.Client.Patch(env.C, resource, 
client.RawPatch(types.MergePatchType, p))
+       err = env.Client.Patch(env.C, resource, 
ctrl.RawPatch(types.MergePatchType, p))
        if err != nil {
                return errors.Wrapf(err, "error during patch resource: %v", 
resource)
        }
diff --git a/pkg/trait/trait_types.go b/pkg/trait/trait_types.go
index 29a7914..89c205f 100644
--- a/pkg/trait/trait_types.go
+++ b/pkg/trait/trait_types.go
@@ -29,9 +29,10 @@ import (
        "k8s.io/api/batch/v1beta1"
        corev1 "k8s.io/api/core/v1"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-       "k8s.io/apimachinery/pkg/runtime"
        serving "knative.dev/serving/pkg/apis/serving/v1"
 
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
+
        v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
        "github.com/apache/camel-k/pkg/client"
        "github.com/apache/camel-k/pkg/platform"
@@ -393,9 +394,9 @@ func (e *Environment) computeApplicationProperties() 
*corev1.ConfigMap {
        return nil
 }
 
-func (e *Environment) computeConfigMaps() []runtime.Object {
+func (e *Environment) computeConfigMaps() []ctrl.Object {
        sources := e.Integration.Sources()
-       maps := make([]runtime.Object, 0, len(sources)+1)
+       maps := make([]ctrl.Object, 0, len(sources)+1)
 
        // combine properties of integration with kit, integration
        // properties have the priority
diff --git a/pkg/util/knative/knative.go b/pkg/util/knative/knative.go
index 4f506ea..182f566 100644
--- a/pkg/util/knative/knative.go
+++ b/pkg/util/knative/knative.go
@@ -22,14 +22,14 @@ import (
        "fmt"
        "net/url"
 
-       "github.com/apache/camel-k/pkg/client"
-       kubernetesutils "github.com/apache/camel-k/pkg/util/kubernetes"
        corev1 "k8s.io/api/core/v1"
        k8serrors "k8s.io/apimachinery/pkg/api/errors"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
-       "k8s.io/apimachinery/pkg/runtime"
        "k8s.io/apimachinery/pkg/runtime/schema"
+
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
+
        eventing "knative.dev/eventing/pkg/apis/eventing/v1beta1"
        messaging "knative.dev/eventing/pkg/apis/messaging/v1beta1"
        sources "knative.dev/eventing/pkg/apis/sources/v1alpha2"
@@ -38,12 +38,14 @@ import (
        duckv1alpha1 "knative.dev/pkg/apis/duck/v1alpha1"
        "knative.dev/pkg/tracker"
        serving "knative.dev/serving/pkg/apis/serving/v1"
-       controller "sigs.k8s.io/controller-runtime/pkg/client"
+
+       "github.com/apache/camel-k/pkg/client"
+       util "github.com/apache/camel-k/pkg/util/kubernetes"
 )
 
 // CreateSubscription ---
-func CreateSubscription(channelReference corev1.ObjectReference, serviceName 
string) runtime.Object {
-       subs := messaging.Subscription{
+func CreateSubscription(channelReference corev1.ObjectReference, serviceName 
string) *messaging.Subscription {
+       return &messaging.Subscription{
                TypeMeta: metav1.TypeMeta{
                        APIVersion: messaging.SchemeGroupVersion.String(),
                        Kind:       "Subscription",
@@ -67,20 +69,18 @@ func CreateSubscription(channelReference 
corev1.ObjectReference, serviceName str
                        },
                },
        }
-
-       return &subs
 }
 
 // CreateTrigger ---
-func CreateTrigger(brokerReference corev1.ObjectReference, serviceName string, 
eventType string) runtime.Object {
-       subs := eventing.Trigger{
+func CreateTrigger(brokerReference corev1.ObjectReference, serviceName string, 
eventType string) *eventing.Trigger {
+       return &eventing.Trigger{
                TypeMeta: metav1.TypeMeta{
                        APIVersion: eventing.SchemeGroupVersion.String(),
                        Kind:       "Trigger",
                },
                ObjectMeta: metav1.ObjectMeta{
                        Namespace: brokerReference.Namespace,
-                       Name:      brokerReference.Name + "-" + serviceName + 
"-" + kubernetesutils.SanitizeLabel(eventType),
+                       Name:      brokerReference.Name + "-" + serviceName + 
"-" + util.SanitizeLabel(eventType),
                },
                Spec: eventing.TriggerSpec{
                        Filter: &eventing.TriggerFilter{
@@ -98,12 +98,11 @@ func CreateTrigger(brokerReference corev1.ObjectReference, 
serviceName string, e
                        },
                },
        }
-       return &subs
 }
 
 // CreateSinkBinding ---
-func CreateSinkBinding(source corev1.ObjectReference, target 
corev1.ObjectReference) runtime.Object {
-       binding := sources.SinkBinding{
+func CreateSinkBinding(source corev1.ObjectReference, target 
corev1.ObjectReference) *sources.SinkBinding {
+       return &sources.SinkBinding{
                TypeMeta: metav1.TypeMeta{
                        APIVersion: sources.SchemeGroupVersion.String(),
                        Kind:       "SinkBinding",
@@ -131,8 +130,6 @@ func CreateSinkBinding(source corev1.ObjectReference, 
target corev1.ObjectRefere
                        },
                },
        }
-
-       return &binding
 }
 
 // GetAddressableReference looks up the resource among all given types and 
returns an object reference to it
@@ -142,8 +139,8 @@ func GetAddressableReference(ctx context.Context, c 
client.Client,
        for _, ref := range possibleReferences {
                sink := ref.DeepCopy()
                sink.Namespace = namespace
-               _, err := GetSinkURI(ctx, c, sink, namespace)
-               if err != nil && (k8serrors.IsNotFound(err) || 
kubernetesutils.IsUnknownAPIError(err)) {
+               _, err := getSinkURI(ctx, c, sink, namespace)
+               if err != nil && (k8serrors.IsNotFound(err) || 
util.IsUnknownAPIError(err)) {
                        continue
                } else if err != nil {
                        return nil, err
@@ -156,25 +153,24 @@ func GetAddressableReference(ctx context.Context, c 
client.Client,
 
 // GetSinkURL returns the sink as *url.URL
 func GetSinkURL(ctx context.Context, c client.Client, sink 
*corev1.ObjectReference, namespace string) (*url.URL, error) {
-       res, err := GetSinkURI(ctx, c, sink, namespace)
+       res, err := getSinkURI(ctx, c, sink, namespace)
        if err != nil {
                return nil, err
        }
        return url.Parse(res)
 }
 
-// GetSinkURI retrieves the sink URI from the object referenced by the given
-// ObjectReference.
+// getSinkURI retrieves the sink URI from the object referenced by the given 
ObjectReference.
 //
 // Method taken from 
https://github.com/knative/eventing-contrib/blob/master/pkg/controller/sinks/sinks.go
-func GetSinkURI(ctx context.Context, c client.Client, sink 
*corev1.ObjectReference, namespace string) (string, error) {
+func getSinkURI(ctx context.Context, c client.Client, sink 
*corev1.ObjectReference, namespace string) (string, error) {
        if sink == nil {
                return "", fmt.Errorf("sink ref is nil")
        }
 
        u := &unstructured.Unstructured{}
        u.SetGroupVersionKind(sink.GroupVersionKind())
-       err := c.Get(ctx, controller.ObjectKey{Namespace: namespace, Name: 
sink.Name}, u)
+       err := c.Get(ctx, ctrl.ObjectKey{Namespace: namespace, Name: 
sink.Name}, u)
        if err != nil {
                return "", err
        }
diff --git a/pkg/util/kubernetes/collection.go 
b/pkg/util/kubernetes/collection.go
index 4643e2f..9442e6c 100644
--- a/pkg/util/kubernetes/collection.go
+++ b/pkg/util/kubernetes/collection.go
@@ -24,6 +24,8 @@ import (
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        "k8s.io/apimachinery/pkg/runtime"
 
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
+
        eventing "knative.dev/eventing/pkg/apis/eventing/v1beta1"
        serving "knative.dev/serving/pkg/apis/serving/v1"
 
@@ -36,13 +38,13 @@ import (
 
 // A Collection is a container of Kubernetes resources
 type Collection struct {
-       items []runtime.Object
+       items []ctrl.Object
 }
 
 // NewCollection creates a new empty collection
-func NewCollection(objects ...runtime.Object) *Collection {
+func NewCollection(objects ...ctrl.Object) *Collection {
        collection := Collection{
-               items: make([]runtime.Object, 0, len(objects)),
+               items: make([]ctrl.Object, 0, len(objects)),
        }
 
        collection.items = append(collection.items, objects...)
@@ -56,7 +58,7 @@ func (c *Collection) Size() int {
 }
 
 // Items returns all resources belonging to the collection
-func (c *Collection) Items() []runtime.Object {
+func (c *Collection) Items() []ctrl.Object {
        return c.items
 }
 
@@ -79,21 +81,21 @@ func (c *Collection) AsKubernetesList() *corev1.List {
 }
 
 // Add adds a resource to the collection
-func (c *Collection) Add(resource runtime.Object) {
+func (c *Collection) Add(resource ctrl.Object) {
        if resource != nil {
                c.items = append(c.items, resource)
        }
 }
 
 // AddFirst adds a resource to the head of the collection
-func (c *Collection) AddFirst(resource runtime.Object) {
+func (c *Collection) AddFirst(resource ctrl.Object) {
        if resource != nil {
-               c.items = append([]runtime.Object{resource}, c.items...)
+               c.items = append([]ctrl.Object{resource}, c.items...)
        }
 }
 
 // AddAll adds all resources to the collection
-func (c *Collection) AddAll(resource []runtime.Object) {
+func (c *Collection) AddAll(resource []ctrl.Object) {
        c.items = append(c.items, resource...)
 }
 
diff --git a/pkg/util/kubernetes/loader.go b/pkg/util/kubernetes/loader.go
index aba9700..3221849 100644
--- a/pkg/util/kubernetes/loader.go
+++ b/pkg/util/kubernetes/loader.go
@@ -25,10 +25,12 @@ import (
        "k8s.io/apimachinery/pkg/runtime"
        "k8s.io/apimachinery/pkg/runtime/serializer"
        "k8s.io/apimachinery/pkg/util/yaml"
+
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 )
 
 // LoadResourceFromYaml loads a k8s resource from a yaml definition
-func LoadResourceFromYaml(scheme *runtime.Scheme, data string) 
(runtime.Object, error) {
+func LoadResourceFromYaml(scheme *runtime.Scheme, data string) (ctrl.Object, 
error) {
        source := []byte(data)
        jsonSource, err := yaml.ToJSON(source)
        if err != nil {
@@ -39,7 +41,15 @@ func LoadResourceFromYaml(scheme *runtime.Scheme, data 
string) (runtime.Object,
        if err != nil {
                return nil, err
        }
-       return RuntimeObjectFromUnstructured(scheme, &u)
+       ro, err := runtimeObjectFromUnstructured(scheme, &u)
+       if err != nil {
+               return nil, err
+       }
+       if o, ok := ro.(ctrl.Object); !ok {
+               return nil, err
+       } else {
+               return o, nil
+       }
 }
 
 // LoadRawResourceFromYaml loads a k8s resource from a yaml definition without 
making assumptions on the underlying type
@@ -58,8 +68,7 @@ func LoadRawResourceFromYaml(data string) (runtime.Object, 
error) {
        }, nil
 }
 
-// RuntimeObjectFromUnstructured converts an unstructured to a runtime object
-func RuntimeObjectFromUnstructured(scheme *runtime.Scheme, u 
*unstructured.Unstructured) (runtime.Object, error) {
+func runtimeObjectFromUnstructured(scheme *runtime.Scheme, u 
*unstructured.Unstructured) (runtime.Object, error) {
        gvk := u.GroupVersionKind()
        codecs := serializer.NewCodecFactory(scheme)
        decoder := codecs.UniversalDecoder(gvk.GroupVersion())
diff --git a/pkg/util/kubernetes/replace.go b/pkg/util/kubernetes/replace.go
index a9f045d..45ea33f 100644
--- a/pkg/util/kubernetes/replace.go
+++ b/pkg/util/kubernetes/replace.go
@@ -24,10 +24,9 @@ import (
 
        corev1 "k8s.io/api/core/v1"
        k8serrors "k8s.io/apimachinery/pkg/api/errors"
-       metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        "k8s.io/apimachinery/pkg/runtime"
 
-       k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
        serving "knative.dev/serving/pkg/apis/serving/v1"
 
@@ -37,16 +36,11 @@ import (
 )
 
 // ReplaceResource allows to completely replace a resource on Kubernetes, 
taking care of immutable fields and resource versions
-func ReplaceResource(ctx context.Context, c client.Client, res runtime.Object) 
error {
+func ReplaceResource(ctx context.Context, c client.Client, res ctrl.Object) 
error {
        err := c.Create(ctx, res)
        if err != nil && k8serrors.IsAlreadyExists(err) {
-               existing := res.DeepCopyObject()
-               var key k8sclient.ObjectKey
-               key, err = k8sclient.ObjectKeyFromObject(existing)
-               if err != nil {
-                       return err
-               }
-               err = c.Get(ctx, key, existing)
+               existing := res.DeepCopyObject().(ctrl.Object)
+               err = c.Get(ctx, ctrl.ObjectKeyFromObject(existing), existing)
                if err != nil {
                        return err
                }
@@ -63,12 +57,8 @@ func ReplaceResource(ctx context.Context, c client.Client, 
res runtime.Object) e
        return nil
 }
 
-func mapRequiredMeta(from runtime.Object, to runtime.Object) {
-       if fromC, ok := from.(metav1.Object); ok {
-               if toC, ok := to.(metav1.Object); ok {
-                       toC.SetResourceVersion(fromC.GetResourceVersion())
-               }
-       }
+func mapRequiredMeta(from ctrl.Object, to ctrl.Object) {
+       to.SetResourceVersion(from.GetResourceVersion())
 }
 
 func mapRequiredServiceData(from runtime.Object, to runtime.Object) {
@@ -119,16 +109,9 @@ func mapRequiredKnativeServiceV1Data(from runtime.Object, 
to runtime.Object) {
        }
 }
 
-func findResourceDetails(res runtime.Object) string {
+func findResourceDetails(res ctrl.Object) string {
        if res == nil {
                return "nil resource"
        }
-       if meta, ok := res.(metav1.Object); ok {
-               name := meta.GetName()
-               if ty, ok := res.(metav1.Type); ok {
-                       return ty.GetKind() + " " + name
-               }
-               return "resource " + name
-       }
-       return "unnamed resource"
+       return res.GetObjectKind().GroupVersionKind().String() + " " + 
res.GetName()
 }
diff --git a/pkg/util/kubernetes/wait.go b/pkg/util/kubernetes/wait.go
index 5c6129b..b5a49f8 100644
--- a/pkg/util/kubernetes/wait.go
+++ b/pkg/util/kubernetes/wait.go
@@ -21,12 +21,13 @@ import (
        "context"
        "time"
 
-       "github.com/apache/camel-k/pkg/client"
        "github.com/pkg/errors"
-       "k8s.io/apimachinery/pkg/runtime"
 
        k8serrors "k8s.io/apimachinery/pkg/api/errors"
-       k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
+
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
+
+       "github.com/apache/camel-k/pkg/client"
 )
 
 // ResourceRetrieveFunction --
@@ -39,13 +40,9 @@ const (
        sleepTime = 400 * time.Millisecond
 )
 
-// WaitCondition --
-func WaitCondition(ctx context.Context, c client.Client, obj runtime.Object, 
condition ResourceCheckFunction, maxDuration time.Duration) error {
+func WaitCondition(ctx context.Context, c client.Client, obj ctrl.Object, 
condition ResourceCheckFunction, maxDuration time.Duration) error {
        start := time.Now()
-       key, err := k8sclient.ObjectKeyFromObject(obj)
-       if err != nil {
-               return err
-       }
+       key := ctrl.ObjectKeyFromObject(obj)
        for start.Add(maxDuration).After(time.Now()) {
                err := c.Get(ctx, key, obj)
                if err != nil {
diff --git a/pkg/util/monitoring/controller.go 
b/pkg/util/monitoring/controller.go
index c9c3136..c488478 100644
--- a/pkg/util/monitoring/controller.go
+++ b/pkg/util/monitoring/controller.go
@@ -18,6 +18,7 @@ limitations under the License.
 package monitoring
 
 import (
+       "context"
        "time"
 
        "k8s.io/apimachinery/pkg/runtime/schema"
@@ -57,17 +58,17 @@ type instrumentedReconciler struct {
 
 var _ reconcile.Reconciler = &instrumentedReconciler{}
 
-func NewInstrumentedReconciler(reconciler reconcile.Reconciler, gvk 
schema.GroupVersionKind) reconcile.Reconciler {
+func NewInstrumentedReconciler(rec reconcile.Reconciler, gvk 
schema.GroupVersionKind) reconcile.Reconciler {
        return &instrumentedReconciler{
-               reconciler: reconciler,
+               reconciler: rec,
                gvk:        gvk,
        }
 }
 
-func (r *instrumentedReconciler) Reconcile(request reconcile.Request) 
(reconcile.Result, error) {
+func (r *instrumentedReconciler) Reconcile(ctx context.Context, request 
reconcile.Request) (reconcile.Result, error) {
        timer := NewTimer()
 
-       res, err := r.reconciler.Reconcile(request)
+       res, err := r.reconciler.Reconcile(ctx, request)
 
        labels := prometheus.Labels{
                namespaceLabel: request.Namespace,
diff --git a/pkg/util/patch/patch.go b/pkg/util/patch/patch.go
index 09c4265..76d1cec 100644
--- a/pkg/util/patch/patch.go
+++ b/pkg/util/patch/patch.go
@@ -23,9 +23,10 @@ import (
        jsonpatch "github.com/evanphx/json-patch"
 
        "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
-
        "k8s.io/apimachinery/pkg/runtime"
        "k8s.io/apimachinery/pkg/util/json"
+
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 )
 
 func PositiveMergePatch(source runtime.Object, target runtime.Object) ([]byte, 
error) {
@@ -64,7 +65,7 @@ func PositiveMergePatch(source runtime.Object, target 
runtime.Object) ([]byte, e
        return json.Marshal(positivePatch)
 }
 
-func PositiveApplyPatch(source runtime.Object) (runtime.Object, error) {
+func PositiveApplyPatch(source runtime.Object) (ctrl.Object, error) {
        sourceJSON, err := json.Marshal(source)
        if err != nil {
                return nil, err

Reply via email to