Repository: redhat-developer/service-binding-operator
Pull request #55 (2019-07-08 06:26:22)

[ODC-1240] More Unit and E2E Testing
Adding more unit and E2E tests coverage to the project, and going back on previous PRs to make sure the scheme is adopted in the project. Previously, the operator has been making use of a special label and on the later scheme is replaced. Other changes are also part of this PR and described below.

### Bug-Fix in `Planner.searchCR`

This method was looking for a CR based on kind only, so if two objects would be under `Databases` kind, this operator would have no means to differentiate. Making changes to search for `BackingSelector.ResourceRef` and kind instead.

### Leader Election

In order to run end-to-end tests in OpenShift-CI, we've added `SERVICE_BINDING_OPERATOR_DISABLE_ELECTION` environment variable. The reason to disable leader election in this case is because OS-CI is already running in a Kubernetes cluster, and therefore Leader-Election is [triggered and failing](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/125).

During troubleshooting we've exported `POD_NAME`, and then it displayed information regarding the cluster is running against, and in this case is the same cluster than CI is running, [instead of the cluster created for CI](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/131).

### Scheme

Going back on the following PRs, to make sure the scheme is fully adopted in the operator and tests:

- https://github.com/redhat-developer/service-binding-operator/pull/44
- https://github.com/redhat-developer/service-binding-operator/pull/45
- https://github.com/redhat-developer/service-binding-operator/pull/49

Therefore, removing the use of special label `connects-to`, by fully supporting `spec.backingServiceSelector`.

### Makefile

Introducing `GOCACHE` variable, therefore on using `make` we can decide to use a shared cache, or in the local project. For instance:

``` bash
make test-unit GOCACHE=""
```

Adding `deploy` target, to run steps involved in getting the project ready to `make local`:

``` bash
make deploy
```

Adding `test` target, to run unit and integration test in a single command:

``` bash
make test
```

### Refactoring

The variable and method names regarding a Kubernetes Custom Resource were always using `crd`, regardless of being referring to a Custom Resource Definition on not, so this PR is reviewing the naming used in each case.


openshift-ci-robot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by:
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please assign **otaviof**
You can assign the PR to them by writing `/assign @otaviof` in a comment when ready.

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=redhat-developer%2Fservice-binding-operator).

<details open>
Needs approval from an approver in each of these files:

- **[OWNERS](https://github.com/redhat-developer/service-binding-operator/blob/master/OWNERS)**

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":["otaviof"]} -->
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/lint | 295bb818cede0dc9235f2de1ae44d05aa3baade5 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/116) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
otaviof: /retest
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/lint | a38fa34809218d290459d620b8535cf0e570e0fc | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/117) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
otaviof: /retest
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | 0df6ac9ecaec4e8c95f8524e5f4813b530d1cd68 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/108) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | b54401de50ca7683c23962d157340f93db32ba79 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/111) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | 187804d06f7892aeb946b76f0fb329a46b0ba4f2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/112) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | 848aff4843eef7c5c7ede0cf6da379499a841a8d | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/113) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
otaviof: /test e2e
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | 848aff4843eef7c5c7ede0cf6da379499a841a8d | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/114) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
otaviof: /test e2e
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | 27e4f9fd9b4be412bd7fe341c99044f165f23e3d | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/118) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | 848aff4843eef7c5c7ede0cf6da379499a841a8d | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/119) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | ff1ebea140dd033689b79acefb915dbfa9fe37d4 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/120) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
otaviof: /test e2e
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | ff1ebea140dd033689b79acefb915dbfa9fe37d4 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/121) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
akashshinde: /test e2e
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | ff1ebea140dd033689b79acefb915dbfa9fe37d4 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/123) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | e89b6c7f8d8cc655b8c2d55ac48de73ab4f8337c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/124) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
otaviof: /test e2e
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | e89b6c7f8d8cc655b8c2d55ac48de73ab4f8337c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/125) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | 997f34072ccf56513bbbe08c7899b30fba49e4e8 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/127) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | 997f34072ccf56513bbbe08c7899b30fba49e4e8 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/127) | `/test e2e`
ci/prow/lint | b94768c45ad8a926c43e434de7e1e17166afbff6 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/135) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/lint | b94768c45ad8a926c43e434de7e1e17166afbff6 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/135) | `/test lint`
ci/prow/e2e | b94768c45ad8a926c43e434de7e1e17166afbff6 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/128) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/lint | b94768c45ad8a926c43e434de7e1e17166afbff6 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/135) | `/test lint`
ci/prow/e2e | b94768c45ad8a926c43e434de7e1e17166afbff6 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/128) | `/test e2e`
ci/prow/images | b94768c45ad8a926c43e434de7e1e17166afbff6 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-images/103) | `/test images`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
baijum: /test e2e
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | b94768c45ad8a926c43e434de7e1e17166afbff6 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/128) | `/test e2e`
ci/prow/e2e-olm-ci | b09124c1d6153f50a8457ee2e0530c7e8426a8e9 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/29) | `/test e2e-olm-ci`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | b09124c1d6153f50a8457ee2e0530c7e8426a8e9 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/29) | `/test e2e-olm-ci`
ci/prow/e2e | b09124c1d6153f50a8457ee2e0530c7e8426a8e9 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/131) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | b09124c1d6153f50a8457ee2e0530c7e8426a8e9 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/131) | `/test e2e`
ci/prow/e2e-olm-ci | cda2700c9bf4c3fe4a4a2fc506ba036d7ea7ed6b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/33) | `/test e2e-olm-ci`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | cda2700c9bf4c3fe4a4a2fc506ba036d7ea7ed6b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/33) | `/test e2e-olm-ci`
ci/prow/e2e | cda2700c9bf4c3fe4a4a2fc506ba036d7ea7ed6b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/132) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e | cda2700c9bf4c3fe4a4a2fc506ba036d7ea7ed6b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/132) | `/test e2e`
ci/prow/e2e-olm-ci | 68a6c44f4066d1231fa1f290df6883bbfef4c897 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/34) | `/test e2e-olm-ci`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
otaviof: /test e2e
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | f1ffe2ccba0dd500fb8996a0f00943a3b7a3869f | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/38) | `/test e2e-olm-ci`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | f1ffe2ccba0dd500fb8996a0f00943a3b7a3869f | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/38) | `/test e2e-olm-ci`
ci/prow/lint | d3d56ac726eafa97b49022855dc585b926bddc2a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/146) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | f1ffe2ccba0dd500fb8996a0f00943a3b7a3869f | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/38) | `/test e2e-olm-ci`
ci/prow/lint | 5f0a3b1c5b31211c1f3b09298a3e639145aaf7db | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/148) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | f1ffe2ccba0dd500fb8996a0f00943a3b7a3869f | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/38) | `/test e2e-olm-ci`
ci/prow/lint | 5f0a3b1c5b31211c1f3b09298a3e639145aaf7db | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/148) | `/test lint`
ci/prow/e2e | 5f0a3b1c5b31211c1f3b09298a3e639145aaf7db | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/143) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | f1ffe2ccba0dd500fb8996a0f00943a3b7a3869f | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/38) | `/test e2e-olm-ci`
ci/prow/lint | 5f0a3b1c5b31211c1f3b09298a3e639145aaf7db | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/148) | `/test lint`
ci/prow/e2e | 5f0a3b1c5b31211c1f3b09298a3e639145aaf7db | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/143) | `/test e2e`
ci/prow/unit | c784386dac60df5a1a7db2ecce5b18f39c0d2b38 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-unit/132) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | f1ffe2ccba0dd500fb8996a0f00943a3b7a3869f | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/38) | `/test e2e-olm-ci`
ci/prow/e2e | 5f0a3b1c5b31211c1f3b09298a3e639145aaf7db | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/143) | `/test e2e`
ci/prow/unit | c784386dac60df5a1a7db2ecce5b18f39c0d2b38 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-unit/132) | `/test unit`
ci/prow/lint | c784386dac60df5a1a7db2ecce5b18f39c0d2b38 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/149) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | f1ffe2ccba0dd500fb8996a0f00943a3b7a3869f | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/38) | `/test e2e-olm-ci`
ci/prow/unit | c784386dac60df5a1a7db2ecce5b18f39c0d2b38 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-unit/132) | `/test unit`
ci/prow/lint | c784386dac60df5a1a7db2ecce5b18f39c0d2b38 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/149) | `/test lint`
ci/prow/e2e | c784386dac60df5a1a7db2ecce5b18f39c0d2b38 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/144) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | f1ffe2ccba0dd500fb8996a0f00943a3b7a3869f | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/38) | `/test e2e-olm-ci`
ci/prow/unit | c784386dac60df5a1a7db2ecce5b18f39c0d2b38 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-unit/132) | `/test unit`
ci/prow/e2e | c784386dac60df5a1a7db2ecce5b18f39c0d2b38 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/144) | `/test e2e`
ci/prow/lint | 94a9f039f0b7bb313f95f84afc0949b6c09e9b3d | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/150) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | f1ffe2ccba0dd500fb8996a0f00943a3b7a3869f | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/38) | `/test e2e-olm-ci`
ci/prow/e2e | c784386dac60df5a1a7db2ecce5b18f39c0d2b38 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/144) | `/test e2e`
ci/prow/lint | 94a9f039f0b7bb313f95f84afc0949b6c09e9b3d | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/150) | `/test lint`
ci/prow/unit | 94a9f039f0b7bb313f95f84afc0949b6c09e9b3d | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-unit/133) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | f1ffe2ccba0dd500fb8996a0f00943a3b7a3869f | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/38) | `/test e2e-olm-ci`
ci/prow/e2e | c784386dac60df5a1a7db2ecce5b18f39c0d2b38 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/144) | `/test e2e`
ci/prow/lint | 94a9f039f0b7bb313f95f84afc0949b6c09e9b3d | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/150) | `/test lint`
ci/prow/unit | fb3839e5ea95fcea55c755eaf6b6eac8bd7bf2e4 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-unit/134) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | f1ffe2ccba0dd500fb8996a0f00943a3b7a3869f | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/38) | `/test e2e-olm-ci`
ci/prow/e2e | c784386dac60df5a1a7db2ecce5b18f39c0d2b38 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/144) | `/test e2e`
ci/prow/unit | fb3839e5ea95fcea55c755eaf6b6eac8bd7bf2e4 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-unit/134) | `/test unit`
ci/prow/lint | fb3839e5ea95fcea55c755eaf6b6eac8bd7bf2e4 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/151) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
otaviof: /retest
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | f1ffe2ccba0dd500fb8996a0f00943a3b7a3869f | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/38) | `/test e2e-olm-ci`
ci/prow/e2e | c784386dac60df5a1a7db2ecce5b18f39c0d2b38 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/144) | `/test e2e`
ci/prow/unit | fb3839e5ea95fcea55c755eaf6b6eac8bd7bf2e4 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-unit/134) | `/test unit`
ci/prow/lint | fb3839e5ea95fcea55c755eaf6b6eac8bd7bf2e4 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/152) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | f1ffe2ccba0dd500fb8996a0f00943a3b7a3869f | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/38) | `/test e2e-olm-ci`
ci/prow/e2e | c784386dac60df5a1a7db2ecce5b18f39c0d2b38 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/144) | `/test e2e`
ci/prow/lint | fb3839e5ea95fcea55c755eaf6b6eac8bd7bf2e4 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/152) | `/test lint`
ci/prow/unit | fb3839e5ea95fcea55c755eaf6b6eac8bd7bf2e4 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-unit/135) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | f1ffe2ccba0dd500fb8996a0f00943a3b7a3869f | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/38) | `/test e2e-olm-ci`
ci/prow/e2e | c784386dac60df5a1a7db2ecce5b18f39c0d2b38 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e/144) | `/test e2e`
ci/prow/unit | fb3839e5ea95fcea55c755eaf6b6eac8bd7bf2e4 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-unit/135) | `/test unit`
ci/prow/lint | 2aabdb25a2f8efa83b28ed331af77082d8889fe9 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/154) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/lint | 2aabdb25a2f8efa83b28ed331af77082d8889fe9 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/154) | `/test lint`
ci/prow/e2e-olm-ci | 2aabdb25a2f8efa83b28ed331af77082d8889fe9 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/48) | `/test e2e-olm-ci`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | 2aabdb25a2f8efa83b28ed331af77082d8889fe9 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/48) | `/test e2e-olm-ci`
ci/prow/lint | e9fffb64827d38ec6c1bff222f5aaebd573de8d3 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/156) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/lint | e9fffb64827d38ec6c1bff222f5aaebd573de8d3 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/156) | `/test lint`
ci/prow/e2e-olm-ci | e9fffb64827d38ec6c1bff222f5aaebd573de8d3 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/50) | `/test e2e-olm-ci`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
baijum: @otaviof Please run `operator-sdk generate openapi` and commit the changes. (Probably a Makefile target can be added for the same.
baijum: @otaviof Should we add `TypeMeta` into the ServiceBindingRequest object?

```
diff --git a/test/mocks/mocks.go b/test/mocks/mocks.go
index f6936de..724f86a 100644
--- a/test/mocks/mocks.go
+++ b/test/mocks/mocks.go
@@ -137,6 +137,10 @@ func ServiceBindingRequestMock(
        ns, name, resourceRef string, matchLabels map[string]string,
 ) v1alpha1.ServiceBindingRequest {
        return v1alpha1.ServiceBindingRequest{
+               TypeMeta: metav1.TypeMeta{
+                       Kind:       OperatorKind,
+                       APIVersion: OperatorAPIVersion,
+               },
                ObjectMeta: metav1.ObjectMeta{
                        Namespace: ns,
                        Name:      name,
```

baijum: > v1alpha1.ServiceBindingRequest{
> +               TypeMeta: metav1.TypeMeta{
> +                       Kind:       OperatorKind,
> +                       APIVersion: OperatorAPIVersi

I will make an inline comment :-)
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | e9fffb64827d38ec6c1bff222f5aaebd573de8d3 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/50) | `/test e2e-olm-ci`
ci/prow/lint | a9bd0eb02020bb49f3c510918771b3df0753a85d | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/159) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | e9fffb64827d38ec6c1bff222f5aaebd573de8d3 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/50) | `/test e2e-olm-ci`
ci/prow/lint | 852df87fed5a11177f77b5dd780832e23542cd3e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/160) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | e9fffb64827d38ec6c1bff222f5aaebd573de8d3 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/50) | `/test e2e-olm-ci`
ci/prow/lint | 85320cc6e1e078297fbed9045e3c527bb1627c58 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/161) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | e9fffb64827d38ec6c1bff222f5aaebd573de8d3 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/50) | `/test e2e-olm-ci`
ci/prow/lint | f15f0e4aa073cad408e99bc02909fe4f632db9dd | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/162) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/lint | f15f0e4aa073cad408e99bc02909fe4f632db9dd | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-lint/162) | `/test lint`
ci/prow/e2e-olm-ci | f15f0e4aa073cad408e99bc02909fe4f632db9dd | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/56) | `/test e2e-olm-ci`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | 267418325656aa74adf9a27a7787e40491dd9d87 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/59) | `/test e2e-olm-ci`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
otaviof: /test e2e-olm-ci
baijum: /lgtm

@otaviof You can squash commits and write a commit message based on PR description.
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/e2e-olm-ci | 267418325656aa74adf9a27a7787e40491dd9d87 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/55/pull-ci-redhat-developer-service-binding-operator-master-e2e-olm-ci/60) | `/test e2e-olm-ci`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=55). [Your PR dashboard](https://prow.svc.ci.openshift.org/pr?query=is:pr+state:open+author:otaviof). Please help us cut down on flakes by [linking to](https://github.com/kubernetes/community/blob/master/contributors/devel/flaky-tests.md#filing-issues-for-flaky-tests) an [open issue](https://github.com/redhat-developer/service-binding-operator/issues?q=is:issue+is:open) when you hit one in your PR.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
otaviof: /test
otaviof: /retest
baijum: /approve
openshift-ci-robot: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/redhat-developer/service-binding-operator/pull/55#issuecomment-510472358" title="Approved">baijum</a>*

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=redhat-developer%2Fservice-binding-operator).

The pull request process is described [here](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process)

<details >
Needs approval from an approver in each of these files:

- ~~[OWNERS](https://github.com/redhat-developer/service-binding-operator/blob/master/OWNERS)~~ [baijum]

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":[]} -->

Patch:
diff --git a/Makefile b/Makefile
index 56051c6e..e482da00 100644
--- a/Makefile
+++ b/Makefile
@@ -86,6 +86,10 @@ GO_PACKAGE_ORG_NAME ?= $(shell basename $$(dirname $$PWD))
 GO_PACKAGE_REPO_NAME ?= $(shell basename $$PWD)
 GO_PACKAGE_PATH ?= github.com/${GO_PACKAGE_ORG_NAME}/${GO_PACKAGE_REPO_NAME}
 
+CGO_ENABLED ?= 0
+GO111MODULE ?= on
+GOCACHE ?= "$(shell echo ${PWD})/out/gocache"
+
 GIT_COMMIT_ID = $(shell git rev-parse --short HEAD)
 
 OPERATOR_VERSION ?= 0.0.10
@@ -93,14 +97,16 @@ OPERATOR_GROUP ?= ${GO_PACKAGE_ORG_NAME}
 OPERATOR_IMAGE ?= quay.io/${OPERATOR_GROUP}/${GO_PACKAGE_REPO_NAME}
 OPERATOR_TAG_SHORT ?= $(OPERATOR_VERSION)
 OPERATOR_TAG_LONG ?= $(OPERATOR_VERSION)-$(GIT_COMMIT_ID)
+
 QUAY_TOKEN ?= ""
 
 MANIFESTS_DIR ?= ./manifests
 MANIFESTS_TMP ?= ./tmp/manifests
 
+GOLANGCI_LINT_BIN=./out/golangci-lint
+
 ## -- Static code analysis (lint) targets --
 
-GOLANGCI_LINT_BIN=./out/golangci-lint
 .PHONY: lint
 ## Runs linters on Go code files and YAML files
 lint: setup-venv lint-go-code lint-yaml courier
@@ -117,7 +123,7 @@ lint-yaml: ${YAML_FILES}
 lint-go-code: $(GOLANGCI_LINT_BIN)
 	# This is required for OpenShift CI enviroment
 	# Ref: https://github.com/openshift/release/pull/3438#issuecomment-482053250
-	$(Q)GOCACHE=$(shell pwd)/out/gocache ./out/golangci-lint ${V_FLAG} run --deadline=30m
+	$(Q)GOCACHE=$(GOCACHE) ./out/golangci-lint ${V_FLAG} run --deadline=30m
 
 $(GOLANGCI_LINT_BIN):
 	$(Q)curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b ./out v1.17.1
@@ -150,48 +156,67 @@ get-test-namespace: out/test-namespace
 .PHONY: e2e-setup
 e2e-setup: e2e-cleanup
 	$(Q)kubectl create namespace $(TEST_NAMESPACE)
+	$(Q)kubectl --namespace $(TEST_NAMESPACE) apply -f ./test/third-party-crds/postgresql_v1alpha1_database_crd.yaml
 
 .PHONY: e2e-cleanup
 e2e-cleanup: get-test-namespace
-	$(Q)-kubectl delete namespace $(TEST_NAMESPACE) --timeout=10s --wait
+	$(Q)-kubectl delete namespace $(TEST_NAMESPACE) --timeout=45s --wait
 
 .PHONY: test-e2e
 ## Runs the e2e tests locally from test/e2e dir
 test-e2e: e2e-setup
 	$(info Running E2E test: $@)
-	$(Q)GO111MODULE=on operator-sdk test local ./test/e2e --namespace $(TEST_NAMESPACE) --up-local --go-test-flags "-v -timeout=15m"
+	$(Q)GO111MODULE=$(GO111MODULE) GOCACHE=$(GOCACHE) SERVICE_BINDING_OPERATOR_DISABLE_ELECTION=true \
+		operator-sdk --verbose test local ./test/e2e \
+			--debug \
+			--namespace $(TEST_NAMESPACE) \
+			--up-local \
+			--go-test-flags "-timeout=15m"
 
 .PHONY: test-unit
 ## Runs the unit tests
 test-unit:
 	$(info Running unit test: $@)
-	$(Q)GO111MODULE=on GOCACHE=$(shell pwd)/out/gocache go test $(shell GOCACHE=$(shell pwd)/out/gocache go list ./...|grep -v e2e) -v -mod vendor $(TEST_EXTRA_ARGS)
+	$(Q)GO111MODULE=$(GO111MODULE) GOCACHE=$(GOCACHE) \
+		go test $(shell GOCACHE="$(GOCACHE)" go list ./...|grep -v e2e) -v -mod vendor $(TEST_EXTRA_ARGS)
+
+.PHONY: test
+## Test: Runs unit and integration (e2e) tests
+test: test-unit test-e2e
 
 .PHONY: test-e2e-olm-ci
+## OLM-E2E: Adds the operator as a subscription, and run e2e tests without any setup.
 test-e2e-olm-ci:
-	$(Q)sed -e "s,REPLACE_IMAGE,registry.svc.ci.openshift.org/${OPENSHIFT_BUILD_NAMESPACE}/stable:service-binding-operator-registry," ./test/e2e/catalog_source.yaml | kubectl apply -f -
-	$(Q)kubectl apply -f ./test/e2e/subscription.yaml
+	$(Q)sed -e "s,REPLACE_IMAGE,registry.svc.ci.openshift.org/${OPENSHIFT_BUILD_NAMESPACE}/stable:service-binding-operator-registry," ./test/operator-hub/catalog_source.yaml | kubectl apply -f -
+	$(Q)kubectl apply -f ./test/operator-hub/subscription.yaml
 	$(eval DEPLOYED_NAMESPACE := openshift-operators)
 	$(Q)./hack/check-crds.sh
-	$(Q)operator-sdk test local ./test/e2e --no-setup --go-test-flags "-v -timeout=15m"
+	$(Q)operator-sdk --verbose test local ./test/e2e --no-setup --go-test-flags "-timeout=15m"
 
 ## -- Build Go binary and OCI image targets --
 
-.PHONY: build 
+.PHONY: build
 ## Build: compile the operator for Linux/AMD64.
 build: out/operator
 
 out/operator:
-	$(Q)CGO_ENABLED=0 GO111MODULE=on GOARCH=amd64 GOOS=linux go build ${V_FLAG} -o ./out/operator cmd/manager/main.go
+	$(Q)GOARCH=amd64 GOOS=linux go build ${V_FLAG} -o ./out/operator cmd/manager/main.go
 
 ## Build-Image: using operator-sdk to build a new image
 build-image:
-	$(Q)GO111MODULE=on operator-sdk build "$(OPERATOR_IMAGE):$(OPERATOR_TAG_LONG)"
+	$(Q)operator-sdk build "$(OPERATOR_IMAGE):$(OPERATOR_TAG_LONG)"
 
+## Generate-K8S: after modifying _types, generate Kubernetes scaffolding.
+generate-k8s:
+	$(Q)GOCACHE=$(GOCACHE) operator-sdk generate k8s
+
+## Generate-OpenAPI: after modifying _types, generate OpenAPI scaffolding.
+generate-openapi:
+	$(Q)GOCACHE=$(GOCACHE) operator-sdk generate openapi
 
 ## Vendor: 'go mod vendor' resets the vendor folder to what is defined in go.mod.
 vendor: go.mod go.sum
-	$(Q)GOCACHE=$(shell pwd)/out/gocache GO111MODULE=on go mod vendor ${V_FLAG}
+	$(Q)GOCACHE=$(GOCACHE) go mod vendor ${V_FLAG}
 
 ## Generate CSV: using oeprator-sdk generate cluster-service-version for current operator version
 generate-csv:
@@ -228,29 +253,29 @@ push-image: build-image
 ## -- Local deployment targets --
 
 .PHONY: local
-## Run operator locally
+## Local: Run operator locally
 local: deploy-clean deploy-rbac deploy-crds deploy-cr
 	$(Q)operator-sdk up local
 
 .PHONY: deploy-rbac
-## Setup service account and deploy RBAC
+## Deploy-RBAC: Setup service account and deploy RBAC
 deploy-rbac:
 	$(Q)kubectl create -f deploy/service_account.yaml
 	$(Q)kubectl create -f deploy/role.yaml
 	$(Q)kubectl create -f deploy/role_binding.yaml
 
 .PHONY: deploy-crds
-## Deploy CRD
+## Deploy-CRD: Deploy CRD
 deploy-crds:
 	$(Q)kubectl create -f deploy/crds/apps_v1alpha1_servicebindingrequest_crd.yaml
 
 .PHONY: deploy-cr
-## Deploy CRs
+## Deploy-CR: Deploy CRs
 deploy-cr:
 	$(Q)kubectl apply -f deploy/crds/apps_v1alpha1_servicebindingrequest_cr.yaml
 
 .PHONY: deploy-clean
-## Removing CRDs and CRs
+## Deploy-Clean: Removing CRDs and CRs
 deploy-clean:
 	$(Q)-kubectl delete -f deploy/crds/apps_v1alpha1_servicebindingrequest_cr.yaml
 	$(Q)-kubectl delete -f deploy/crds/apps_v1alpha1_servicebindingrequest_crd.yaml
@@ -259,6 +284,10 @@ deploy-clean:
 	$(Q)-kubectl delete -f deploy/role.yaml
 	$(Q)-kubectl delete -f deploy/service_account.yaml
 
+.PHONY: deploy
+## Deploy:
+deploy: deploy-rbac deploy-crds
+
 
 ## -- Cleanup targets --
 
diff --git a/cmd/manager/main.go b/cmd/manager/main.go
index 8d142230..a0818e2a 100644
--- a/cmd/manager/main.go
+++ b/cmd/manager/main.go
@@ -8,7 +8,7 @@ import (
 	"runtime"
 
 	// Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.
-	_ "k8s.io/client-go/plugin/pkg/client/auth"
+	osappsv1 "github.com/openshift/api/apps/v1"
 	"github.com/operator-framework/operator-sdk/pkg/k8sutil"
 	"github.com/operator-framework/operator-sdk/pkg/leader"
 	"github.com/operator-framework/operator-sdk/pkg/log/zap"
@@ -16,11 +16,11 @@ import (
 	"github.com/operator-framework/operator-sdk/pkg/restmapper"
 	sdkVersion "github.com/operator-framework/operator-sdk/version"
 	"github.com/spf13/pflag"
+	_ "k8s.io/client-go/plugin/pkg/client/auth"
 	"sigs.k8s.io/controller-runtime/pkg/client/config"
 	"sigs.k8s.io/controller-runtime/pkg/manager"
 	logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
 	"sigs.k8s.io/controller-runtime/pkg/runtime/signals"
-	osappsv1 "github.com/openshift/api/apps/v1"
 
 	"github.com/redhat-developer/service-binding-operator/pkg/apis"
 	"github.com/redhat-developer/service-binding-operator/pkg/controller"
@@ -39,25 +39,25 @@ func printVersion() {
 	log.Info(fmt.Sprintf("Version of operator-sdk: %v", sdkVersion.Version))
 }
 
+// getOperatorName based on environment variable OPERATOR_NAME, or returns the default name for
+// the operatator.
+func getOperatorName() string {
+	envName := os.Getenv("OPERATOR_NAME")
+	if envName != "" {
+		return envName
+	}
+	return "service-binding-operator"
+}
+
+// isLeaderElectionEnabled based on environment variable SERVICE_BINDING_OPERATOR_DISABLE_ELECTION.
+func isLeaderElectionEnabled() bool {
+	return os.Getenv("SERVICE_BINDING_OPERATOR_DISABLE_ELECTION") == ""
+}
+
 func main() {
-	// Add the zap logger flag set to the CLI. The flag set must
-	// be added before calling pflag.Parse().
 	pflag.CommandLine.AddFlagSet(zap.FlagSet())
-
-	// Add flags registered by imported packages (e.g. glog and
-	// controller-runtime)
 	pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
-
 	pflag.Parse()
-
-	// Use a zap logr.Logger implementation. If none of the zap
-	// flags are configured (or if the zap flag set is not being
-	// used), this defaults to a production zap logger.
-	//
-	// The logger instantiated here can be changed to any logger
-	// implementing the logr.Logger interface. This logger will
-	// be propagated through the whole operator, generating
-	// uniform and structured logs.
 	logf.SetLogger(zap.Logger())
 
 	printVersion()
@@ -71,17 +71,22 @@ func main() {
 	// Get a config to talk to the apiserver
 	cfg, err := config.GetConfig()
 	if err != nil {
-		log.Error(err, "")
+		log.Error(err, "Failed to acquire a configuration to talk to the API server")
 		os.Exit(1)
 	}
 
 	ctx := context.TODO()
 
-	// Become the leader before proceeding
-	err = leader.Become(ctx, "service-binding-operator-lock")
-	if err != nil {
-		log.Error(err, "")
-		os.Exit(1)
+	// FIXME: is there a way to tell k8s-client that is not running in-cluster?
+	if isLeaderElectionEnabled() {
+		// Become the leader before proceeding
+		err = leader.Become(ctx, fmt.Sprintf("%s-lock", getOperatorName()))
+		if err != nil {
+			log.Error(err, "Failed to become the leader")
+			os.Exit(1)
+		}
+	} else {
+		log.Info("Warning: Leader election is disabled")
 	}
 
 	// Create a new Cmd to provide shared dependencies and start components
@@ -91,7 +96,7 @@ func main() {
 		MetricsBindAddress: fmt.Sprintf("%s:%d", metricsHost, metricsPort),
 	})
 	if err != nil {
-		log.Error(err, "")
+		log.Error(err, "Error on creating a new manager instance")
 		os.Exit(1)
 	}
 
@@ -99,18 +104,18 @@ func main() {
 
 	// Setup Scheme for all resources
 	if err := apis.AddToScheme(mgr.GetScheme()); err != nil {
-		log.Error(err, "Error adding local operator scheme!")
+		log.Error(err, "Error adding local operator scheme")
 		os.Exit(1)
 	}
 
 	if err := osappsv1.AddToScheme(mgr.GetScheme()); err != nil {
-		log.Error(err, "Error on adding OS APIs to scheme!")
+		log.Error(err, "Error on adding OS APIs to scheme")
 		os.Exit(1)
 	}
 
 	// Setup all Controllers
 	if err := controller.AddToManager(mgr); err != nil {
-		log.Error(err, "")
+		log.Error(err, "Failed to setup the controller manager")
 		os.Exit(1)
 	}
 
diff --git a/deploy/crds/apps_v1alpha1_servicebindingrequest_cr.yaml b/deploy/crds/apps_v1alpha1_servicebindingrequest_cr.yaml
index df04b89f..6a2d62fe 100644
--- a/deploy/crds/apps_v1alpha1_servicebindingrequest_cr.yaml
+++ b/deploy/crds/apps_v1alpha1_servicebindingrequest_cr.yaml
@@ -1,12 +1,13 @@
+---
 apiVersion: apps.openshift.io/v1alpha1
 kind: ServiceBindingRequest
 metadata:
   name: example-servicebindingrequest
 spec:
   backingServiceSelector:
-    resourceKind: database.example.org
+    resourceRef: pg-instance
+    resourceName: database.example.org
     resourceVersion: v1alpha1
-    resourceRef: mysqldb
   applicationSelector:
     matchLabels:
       connects-to: postgres
diff --git a/deploy/crds/apps_v1alpha1_servicebindingrequest_crd.yaml b/deploy/crds/apps_v1alpha1_servicebindingrequest_crd.yaml
index 5e49d311..055151e6 100644
--- a/deploy/crds/apps_v1alpha1_servicebindingrequest_crd.yaml
+++ b/deploy/crds/apps_v1alpha1_servicebindingrequest_crd.yaml
@@ -34,7 +34,7 @@ spec:
                 connecting to the backing service operator. Example 1: \tapplicationSelector:
                 \t\tmatchLabels: \t\t\tconnects-to: postgres \t\t\tenvironment: stage
                 \t\tresourceKind: Deployment Example 2: \tapplicationSelector: \t\tresourceKind:
-                Deployment \t\tresourceType: my-app"
+                Deployment \t\tresourceName: my-app"
               properties:
                 matchLabels:
                   additionalProperties:
@@ -54,18 +54,18 @@ spec:
                 MySQL or CouchDB), messaging/queueing systems (such as RabbitMQ or
                 Beanstalkd), SMTP services for outbound email (such as Postfix), and
                 caching systems (such as Memcached).  Example 1: \tbackingServiceSelector:
-                \t\tresourceType: database.example.org      resourceRef: mysql-database
-                Example 2: \tbackingServiceSelector: \t\tresourceType: database.example.org
+                \t\tresourceName: database.example.org      resourceRef: mysql-database
+                Example 2: \tbackingServiceSelector: \t\tresourceName: database.example.org
                 \t\tresourceVersion: v1alpha1      resourceRef: mysql-database"
               properties:
-                resourceKind:
+                resourceName:
                   type: string
                 resourceRef:
                   type: string
                 resourceVersion:
                   type: string
               required:
-              - resourceKind
+              - resourceName
               - resourceVersion
               - resourceRef
               type: object
diff --git a/hack/check-crds.sh b/hack/check-crds.sh
index 82aaff52..b739f1ac 100755
--- a/hack/check-crds.sh
+++ b/hack/check-crds.sh
@@ -1,18 +1,26 @@
 #!/bin/bash
-function check_crds() {
-	local crd_name=$1
-	for i in {1..120}
-	do
-		kubectl get crds | grep $crd_name
-		if [ $? == 0 ]
-		then
-			echo "CRD exists: " $crd_name
-			return 0
-		fi
-		sleep 10s
-	done
-	echo "CRD doesn't exist: " $crd_name
-	exit 1
+
+function check_crds () {
+    local crd_name="$1"
+
+    for i in  {1..120} ; do
+        if ( kubectl get crds |grep ${crd_name} 2>&1 > /dev/null ) ; then
+            return 0
+        fi
+
+        sleep 3
+    done
+
+    return 1
 }
 
-check_crds servicebindingrequests.apps.openshift.io
+CRD_NAME="servicebindingrequests.apps.openshift.io"
+
+echo "# Searching for '${CRD_NAME}'..."
+
+if ! check_crds ${CRD_NAME} ; then
+    echo "CRD doesn't exist: ${crd_name}"
+    exit 1
+fi
+
+echo "CRD is found: ${crd_name}"
diff --git a/manifests/service-binding-operator.v0.0.10.clusterserviceversion.yaml b/manifests/service-binding-operator.v0.0.10.clusterserviceversion.yaml
index 58344b4e..6560e441 100644
--- a/manifests/service-binding-operator.v0.0.10.clusterserviceversion.yaml
+++ b/manifests/service-binding-operator.v0.0.10.clusterserviceversion.yaml
@@ -2,7 +2,7 @@ apiVersion: operators.coreos.com/v1alpha1
 kind: ClusterServiceVersion
 metadata:
   annotations:
-    alm-examples: '[{"apiVersion":"apps.openshift.io/v1alpha1","kind":"ServiceBindingRequest","metadata":{"name":"example-servicebindingrequest"},"spec":{"applicationSelector":{"matchLabels":{"connects-to":"postgres","environment":"production"},"resourceKind":"Deployment"},"backingSelector":{"resourceName":"database.example.org","resourceVersion":"v1alpha1"}}}]'
+    alm-examples: '[{"apiVersion":"apps.openshift.io/v1alpha1","kind":"ServiceBindingRequest","metadata":{"name":"example-servicebindingrequest"},"spec":{"applicationSelector":{"matchLabels":{"connects-to":"postgres","environment":"production"},"resourceKind":"Deployment"},"backingServiceSelector":{"resourceName":"database.example.org","resourceVersion":"v1alpha1"}}}]'
     capabilities: Basic Install
     containerImage: quay.io/redhat-developer/app-binding-operator:v0.0.10
     description: An operator to support binding capabilities between imported apps and operator backed services
diff --git a/openshift-ci/Dockerfile.registry.build b/openshift-ci/Dockerfile.registry.build
index 970c3ffb..d65d5c97 100644
--- a/openshift-ci/Dockerfile.registry.build
+++ b/openshift-ci/Dockerfile.registry.build
@@ -1,12 +1,13 @@
 FROM quay.io/openshift/origin-operator-registry:latest
 
 ARG version=0.0.10
-
-COPY manifests manifests
+RUN mkdir -p manifests/service-binding-operator/${version}
+COPY manifests/service-binding-operator.package.yaml manifests/service-binding-operator/
+COPY manifests/service-binding-operator*.crd.yaml manifests/service-binding-operator/${version}/
+COPY manifests/service-binding-operator*.clusterserviceversion.yaml manifests/service-binding-operator/${version}/
 
 USER root
-RUN rm manifests/*.package.yaml
-RUN sed -e "s,quay.io/redhat-developer/app-binding-operator,registry.svc.ci.openshift.org/${OPENSHIFT_BUILD_NAMESPACE}/stable:service-binding-operator," -i manifests/service-binding-operator.v${version}.clusterserviceversion.yaml
+RUN sed -e "s,quay.io/redhat-developer/app-binding-operator:v${version},registry.svc.ci.openshift.org/${OPENSHIFT_BUILD_NAMESPACE}/stable:service-binding-operator," -i manifests/service-binding-operator/${version}/service-binding-operator.v${version}.clusterserviceversion.yaml
 RUN initializer
 
 USER 1001
diff --git a/pkg/apis/apps/v1alpha1/servicebindingrequest_types.go b/pkg/apis/apps/v1alpha1/servicebindingrequest_types.go
index 7de3f487..66ba584a 100644
--- a/pkg/apis/apps/v1alpha1/servicebindingrequest_types.go
+++ b/pkg/apis/apps/v1alpha1/servicebindingrequest_types.go
@@ -4,13 +4,14 @@ import (
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 )
 
-// NOTE: json tags are required.  Any new fields you add must have json tags for the fields to be serialized.
+// Important: Run "operator-sdk generate k8s" to regenerate code after modifying this file
 
 // ServiceBindingRequestSpec defines the desired state of ServiceBindingRequest
 // +k8s:openapi-gen=true
 type ServiceBindingRequestSpec struct {
 	// Important: Run "operator-sdk generate k8s" to regenerate code after modifying this file
-	// Add custom validation using kubebuilder tags: https://book.kubebuilder.io/beyond_basics/generating_crd.html
+	// Add custom validation using kubebuilder tags:
+	// 	https://book.kubebuilder.io/beyond_basics/generating_crd.html
 
 	// BackingServiceSelector is used to identify the backing service operator.
 	//
@@ -23,13 +24,13 @@ type ServiceBindingRequestSpec struct {
 	//
 	// Example 1:
 	//	backingServiceSelector:
-	//		resourceKind: database.example.org
-	//      	resourceRef: mysql-database
+	//		resourceName: database.example.org
+	//      resourceRef: mysql-database
 	// Example 2:
 	//	backingServiceSelector:
-	//		resourceKind: database.example.org
+	//		resourceName: database.example.org
 	//		resourceVersion: v1alpha1
-	//      	resourceRef: mysql-database
+	//      resourceRef: mysql-database
 	BackingServiceSelector BackingServiceSelector `json:"backingServiceSelector"`
 
 	// ApplicationSelector is used to identify the application connecting to the
@@ -41,20 +42,18 @@ type ServiceBindingRequestSpec struct {
 	//			environment: stage
 	//		resourceKind: Deployment
 	// Example 2:
-	// (By default resourceKind is Deployment)
 	//	applicationSelector:
-	//		matchLabels:
-	//			connects-to: postgres
-	//			environment: stage
+	//		resourceKind: Deployment
+	//		resourceName: my-app
 	ApplicationSelector ApplicationSelector `json:"applicationSelector"`
 }
 
 // BackingServiceSelector defines the selector based on resource name, version, and resource kind
 // +k8s:openapi-gen=true
 type BackingServiceSelector struct {
-	ResourceKind    string `json:"resourceKind"`
+	ResourceName    string `json:"resourceName"`
 	ResourceVersion string `json:"resourceVersion"`
-	ResourceRef      string `json:"resourceRef"`
+	ResourceRef     string `json:"resourceRef"`
 }
 
 // ApplicationSelector defines the selector based on labels and resource kind
@@ -66,10 +65,7 @@ type ApplicationSelector struct {
 
 // ServiceBindingRequestStatus defines the observed state of ServiceBindingRequest
 // +k8s:openapi-gen=true
-type ServiceBindingRequestStatus struct {
-	// Important: Run "operator-sdk generate k8s" to regenerate code after modifying this file
-	// Add custom validation using kubebuilder tags: https://book.kubebuilder.io/beyond_basics/generating_crd.html
-}
+type ServiceBindingRequestStatus struct{}
 
 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
 
diff --git a/pkg/apis/apps/v1alpha1/zz_generated.openapi.go b/pkg/apis/apps/v1alpha1/zz_generated.openapi.go
index 50b604ec..4f43ef39 100644
--- a/pkg/apis/apps/v1alpha1/zz_generated.openapi.go
+++ b/pkg/apis/apps/v1alpha1/zz_generated.openapi.go
@@ -60,7 +60,7 @@ func schema_pkg_apis_apps_v1alpha1_BackingServiceSelector(ref common.ReferenceCa
 			SchemaProps: spec.SchemaProps{
 				Description: "BackingServiceSelector defines the selector based on resource name, version, and resource kind",
 				Properties: map[string]spec.Schema{
-					"resourceKind": {
+					"resourceName": {
 						SchemaProps: spec.SchemaProps{
 							Type:   []string{"string"},
 							Format: "",
@@ -79,7 +79,7 @@ func schema_pkg_apis_apps_v1alpha1_BackingServiceSelector(ref common.ReferenceCa
 						},
 					},
 				},
-				Required: []string{"resourceKind", "resourceVersion", "resourceRef"},
+				Required: []string{"resourceName", "resourceVersion", "resourceRef"},
 			},
 		},
 		Dependencies: []string{},
@@ -137,13 +137,13 @@ func schema_pkg_apis_apps_v1alpha1_ServiceBindingRequestSpec(ref common.Referenc
 				Properties: map[string]spec.Schema{
 					"backingServiceSelector": {
 						SchemaProps: spec.SchemaProps{
-							Description: "BackingServiceSelector is used to identify the backing service operator.\n\nRefer: https://12factor.net/backing-services A backing service is any service the app consumes over the network as part of its normal operation. Examples include datastores (such as MySQL or CouchDB), messaging/queueing systems (such as RabbitMQ or Beanstalkd), SMTP services for outbound email (such as Postfix), and caching systems (such as Memcached).\n\nExample 1:\n\tbackingServiceSelector:\n\t\tresourceType: database.example.org\n     resourceRef: mysql-database\nExample 2:\n\tbackingServiceSelector:\n\t\tresourceType: database.example.org\n\t\tresourceVersion: v1alpha1\n     resourceRef: mysql-database",
+							Description: "BackingServiceSelector is used to identify the backing service operator.\n\nRefer: https://12factor.net/backing-services A backing service is any service the app consumes over the network as part of its normal operation. Examples include datastores (such as MySQL or CouchDB), messaging/queueing systems (such as RabbitMQ or Beanstalkd), SMTP services for outbound email (such as Postfix), and caching systems (such as Memcached).\n\nExample 1:\n\tbackingServiceSelector:\n\t\tresourceName: database.example.org\n     resourceRef: mysql-database\nExample 2:\n\tbackingServiceSelector:\n\t\tresourceName: database.example.org\n\t\tresourceVersion: v1alpha1\n     resourceRef: mysql-database",
 							Ref:         ref("github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1.BackingServiceSelector"),
 						},
 					},
 					"applicationSelector": {
 						SchemaProps: spec.SchemaProps{
-							Description: "ApplicationSelector is used to identify the application connecting to the backing service operator. Example 1:\n\tapplicationSelector:\n\t\tmatchLabels:\n\t\t\tconnects-to: postgres\n\t\t\tenvironment: stage\n\t\tresourceKind: Deployment\nExample 2:\n\tapplicationSelector:\n\t\tresourceKind: Deployment\n\t\tresourceType: my-app",
+							Description: "ApplicationSelector is used to identify the application connecting to the backing service operator. Example 1:\n\tapplicationSelector:\n\t\tmatchLabels:\n\t\t\tconnects-to: postgres\n\t\t\tenvironment: stage\n\t\tresourceKind: Deployment\nExample 2:\n\tapplicationSelector:\n\t\tresourceKind: Deployment\n\t\tresourceName: my-app",
 							Ref:         ref("github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1.ApplicationSelector"),
 						},
 					},
diff --git a/pkg/controller/servicebindingrequest/planner.go b/pkg/controller/servicebindingrequest/planner.go
index 1031bc5f..b3a59790 100644
--- a/pkg/controller/servicebindingrequest/planner.go
+++ b/pkg/controller/servicebindingrequest/planner.go
@@ -8,9 +8,9 @@ import (
 	"github.com/go-logr/logr"
 	olmv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
 	extv1beta1 "k8s.io/api/extensions/v1beta1"
-	apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
 	"k8s.io/apimachinery/pkg/api/errors"
 	ustrv1 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+	"k8s.io/apimachinery/pkg/types"
 	"sigs.k8s.io/controller-runtime/pkg/client"
 	logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
 
@@ -32,32 +32,20 @@ type Plan struct {
 	Ns             string                      // namespace name
 	Name           string                      // plan name, same than ServiceBindingRequest
 	CRDDescription *olmv1alpha1.CRDDescription // custom resource definition description
-	CRD            *ustrv1.Unstructured        // custom resource definition
-}
-
-const (
-	connectsToLabel = "connects-to"
-)
-
-// extractConnectTo inspect ServiceBindingRequest to extract connects-to value.
-func (p *Planner) extractConnectsTo() string {
-	value, exists := p.sbr.Spec.ApplicationSelector.MatchLabels[connectsToLabel]
-	if !exists {
-		return ""
-	}
-	return value
+	CR             *ustrv1.Unstructured        // custom resource object
 }
 
 // searchCRDDescription based on BackingServiceSelector instance, find a CustomResourceDefinitionDescription
 // to return, otherwise creating a not-found error.
 func (p *Planner) searchCRDDescription() (*olmv1alpha1.CRDDescription, error) {
-	var backingServiceSelector = p.sbr.Spec.BackingServiceSelector
-	var logger = p.logger.WithValues(
-		"BackingServiceSelector.ResourceKind", backingServiceSelector.ResourceKind,
-		"BackingServiceSelector.ResourceVersion", backingServiceSelector.ResourceVersion,
-	)
+	var resourceName = strings.ToLower(
+		fmt.Sprintf(".%s", p.sbr.Spec.BackingServiceSelector.ResourceName))
+	var resourceVersion = strings.ToLower(p.sbr.Spec.BackingServiceSelector.ResourceVersion)
 	var err error
 
+	logger := p.logger.WithValues(
+		"BackingServiceSelector.ResourceName", resourceName,
+		"BackingServiceSelector.ResourceVersion", resourceVersion)
 	logger.Info("Looking for a CSV based on backing-selector")
 	csvList := &olmv1alpha1.ClusterServiceVersionList{}
 
@@ -78,10 +66,11 @@ func (p *Planner) searchCRDDescription() (*olmv1alpha1.CRDDescription, error) {
 			)
 			logger.Info("Inspecting CustomResourceDefinitionDescription object...")
 
-			if !strings.HasSuffix(crd.Name, backingServiceSelector.ResourceKind) {
+			// checking for suffix since is expected to have object type as prefix
+			if !strings.HasSuffix(strings.ToLower(crd.Name), resourceName) {
 				continue
 			}
-			if crd.Version != "" && backingServiceSelector.ResourceVersion != crd.Version {
+			if crd.Version != "" && resourceVersion != strings.ToLower(crd.Version) {
 				continue
 			}
 
@@ -94,62 +83,45 @@ func (p *Planner) searchCRDDescription() (*olmv1alpha1.CRDDescription, error) {
 	return nil, errors.NewNotFound(extv1beta1.Resource("CustomResourceDefinition"), "")
 }
 
-// searchCRD based on a CustomResourceDefinitionDescription and name, search for the object.
-func (p *Planner) searchCRD(
-	kind, name string,
-) (*ustrv1.Unstructured, error) {
-	var backingServiceSelector = p.sbr.Spec.BackingServiceSelector
+// searchCR based on a CustomResourceDefinitionDescription and name, search for the object.
+func (p *Planner) searchCR(kind string) (*ustrv1.Unstructured, error) {
+	var resourceRef = p.sbr.Spec.BackingServiceSelector.ResourceRef
+	var apiVersion = fmt.Sprintf("%s/%s",
+		p.sbr.Spec.BackingServiceSelector.ResourceName,
+		p.sbr.Spec.BackingServiceSelector.ResourceVersion)
+	var err error
 
-	apiVersion := fmt.Sprintf("%s/%s", backingServiceSelector.ResourceKind, backingServiceSelector.ResourceVersion)
-	obj := map[string]interface{}{"kind": kind, "apiVersion": apiVersion}
-	objList := &ustrv1.UnstructuredList{Object: obj}
+	p.logger.WithValues("CR.Name", resourceRef, "CR.Kind", kind, "CR.APIVersion", apiVersion).
+		Info("Searching for CR instance...")
 
-	logger := p.logger.WithValues(
-		"CustomResourceDefinition.Kind", name,
-		"CustomResourceDefinition.Name", name,
-		"CRDDescription.APIVersion", apiVersion,
-	)
-	logger.Info("Searching for CRD instance...")
+	cr := ustrv1.Unstructured{Object: map[string]interface{}{
+		"kind":       kind,
+		"apiVersion": apiVersion,
+	}}
+	namespacedName := types.NamespacedName{Namespace: p.ns, Name: resourceRef}
 
-	err := p.client.List(p.ctx, &client.ListOptions{Namespace: p.ns}, objList)
-	if err != nil {
+	if err = p.client.Get(p.ctx, namespacedName, &cr); err != nil {
 		return nil, err
 	}
 
-	// TODO: find a way to load the object directory, without having to loop a list;
-	for _, item := range objList.Items {
-		if name == item.GetName() {
-			logger.Info("CustomResourceDefintion found!")
-			return &item, nil
-		}
-	}
-
-	logger.Info("Warning: not able to find the CustomResourceDefinition!")
-	return nil, errors.NewNotFound(apiextv1beta1.Resource("CustomResourceDefinition"), name)
+	return &cr, nil
 }
 
 // Plan by retrieving the necessary resources related to binding a service backend.
 func (p *Planner) Plan() (*Plan, error) {
-	// extracting label conects-to, it shows the CRD name we are looking for
-	connectsToValue := p.extractConnectsTo()
-	if connectsToValue == "" {
-		return nil, fmt.Errorf("unable to find label '%s' in service-binding-request '%s'",
-			connectsToValue, p.sbr.GetName())
-	}
-
 	// find the CRD description object
 	crdDescription, err := p.searchCRDDescription()
 	if err != nil {
 		return nil, err
 	}
 
-	// retrieve the CRD based on kind, api-version and name
-	crd, err := p.searchCRD(crdDescription.Kind, connectsToValue)
+	// retrieve the CR based on kind, api-version and name
+	cr, err := p.searchCR(crdDescription.Kind)
 	if err != nil {
 		return nil, err
 	}
 
-	return &Plan{Ns: p.ns, Name: p.sbr.GetName(), CRDDescription: crdDescription, CRD: crd}, nil
+	return &Plan{Ns: p.ns, Name: p.sbr.GetName(), CRDDescription: crdDescription, CR: cr}, nil
 }
 
 // NewPlanner instantiate Planner type.
diff --git a/pkg/controller/servicebindingrequest/reconciler.go b/pkg/controller/servicebindingrequest/reconciler.go
index e21f9abd..b21f9041 100644
--- a/pkg/controller/servicebindingrequest/reconciler.go
+++ b/pkg/controller/servicebindingrequest/reconciler.go
@@ -13,7 +13,7 @@ import (
 	"sigs.k8s.io/controller-runtime/pkg/reconcile"
 	logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
 
-	v1alpha1 "github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1"
+	"github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1"
 )
 
 // Reconciler reconciles a ServiceBindingRequest object
diff --git a/pkg/controller/servicebindingrequest/retriever.go b/pkg/controller/servicebindingrequest/retriever.go
index 5bce12dd..9dd866bc 100644
--- a/pkg/controller/servicebindingrequest/retriever.go
+++ b/pkg/controller/servicebindingrequest/retriever.go
@@ -28,20 +28,16 @@ const (
 	secretPrefix  = "urn:alm:descriptor:servicebindingrequest:env:object:secret"
 )
 
-// getCRDKey retrieve key in section from CRD object, part of the "plan" instance.
-func (r *Retriever) getCRDKey(section string, key string) (string, error) {
-	obj := r.plan.CRD.Object
-	objName := r.plan.CRD.GetName()
-	logger := r.logger.WithValues(
-		"read.CRD.Name", objName,
-		"read.CRD.section", section,
-		"read.CRD.key", key,
-	)
-	logger.Info("Reading CRD attributes...")
+// getCRKey retrieve key in section from CR object, part of the "plan" instance.
+func (r *Retriever) getCRKey(section string, key string) (string, error) {
+	obj := r.plan.CR.Object
+	objName := r.plan.CR.GetName()
+	logger := r.logger.WithValues("CR.Name", objName, "CR.section", section, "CR.key", key)
+	logger.Info("Reading CR attributes...")
 
 	sectionMap, exists := obj[section]
 	if !exists {
-		return "", fmt.Errorf("Can't find '%s' section in CRD named '%s'", section, objName)
+		return "", fmt.Errorf("Can't find '%s' section in CR named '%s'", section, objName)
 	}
 
 	value, exists := sectionMap.(map[string]interface{})[key]
@@ -50,17 +46,17 @@ func (r *Retriever) getCRDKey(section string, key string) (string, error) {
 			key, section, objName)
 	}
 
-	logger.Info("CRD attribute is found!")
+	logger.Info("CR attribute is found!")
 	// making sure we always return a string representation
 	return fmt.Sprintf("%v", value), nil
 }
 
-// read attributes from CRD, where place means which top level key name contains the "path" actual
-// value, and parsing x-descriptors in order to either directly read CRD data, or read items from
+// read attributes from CR, where place means which top level key name contains the "path" actual
+// value, and parsing x-descriptors in order to either directly read CR data, or read items from
 // a secret.
 func (r *Retriever) read(place, path string, xDescriptors []string) error {
 	logger := r.logger.WithValues(
-		"CRD.Section", place,
+		"CR.Section", place,
 		"CRDDescription.Path", path,
 		"CRDDescription.XDescriptors", xDescriptors,
 	)
@@ -72,7 +68,7 @@ func (r *Retriever) read(place, path string, xDescriptors []string) error {
 	for _, xDescriptor := range xDescriptors {
 		logger = logger.WithValues("CRDDescription.xDescriptor", xDescriptor)
 		logger.Info("Inspecting xDescriptor...")
-		pathValue, err := r.getCRDKey(place, path)
+		pathValue, err := r.getCRKey(place, path)
 		if err != nil {
 			return err
 		}
@@ -128,7 +124,7 @@ func (r *Retriever) readSecret(name string, items []string) error {
 func (r *Retriever) store(key string, value []byte) {
 	key = strings.ReplaceAll(key, ":", "_")
 	key = strings.ReplaceAll(key, ".", "_")
-	key = fmt.Sprintf("%s_%s_%s", bindingPrefix, r.plan.CRD.GetKind(), key)
+	key = fmt.Sprintf("%s_%s_%s", bindingPrefix, r.plan.CR.GetKind(), key)
 	key = strings.ToUpper(key)
 	r.data[key] = value
 }


Test patch:
diff --git a/pkg/controller/servicebindingrequest/controller_test.go b/pkg/controller/servicebindingrequest/controller_test.go
deleted file mode 100644
index 34588b68..00000000
--- a/pkg/controller/servicebindingrequest/controller_test.go
+++ /dev/null
@@ -1,538 +0,0 @@
-package servicebindingrequest
-
-import (
-	"context"
-	"testing"
-
-	osappsv1 "github.com/openshift/api/apps/v1"
-	olmv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
-	appsv1 "k8s.io/api/apps/v1"
-	corev1 "k8s.io/api/core/v1"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/runtime"
-	"k8s.io/apimachinery/pkg/types"
-	"k8s.io/client-go/kubernetes/scheme"
-	"sigs.k8s.io/controller-runtime/pkg/client/fake"
-	"sigs.k8s.io/controller-runtime/pkg/reconcile"
-
-	v1alpha1 "github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1"
-)
-
-func TestServiceBindingRequestController(t *testing.T) {
-	var (
-		backingOperatorName = "postgresql-operator.v0.1.0"
-		name                = "postgres"
-		deploymentName      = "my-app"
-		namespace           = "default"
-	)
-	sbr := &v1alpha1.ServiceBindingRequest{
-		ObjectMeta: metav1.ObjectMeta{
-			Name:      name,
-			Namespace: namespace,
-		},
-		Spec: v1alpha1.ServiceBindingRequestSpec{
-			BackingServiceSelector: v1alpha1.BackingServiceSelector{
-				ResourceKind: "specialdb.example.org",
-			},
-			ApplicationSelector: v1alpha1.ApplicationSelector{
-				MatchLabels: map[string]string{
-					"connects-to": "postgres",
-					"environment": "production",
-				},
-			},
-		},
-	}
-
-	// Register operator types with the runtime scheme.
-	s := scheme.Scheme
-	s.AddKnownTypes(v1alpha1.SchemeGroupVersion, sbr)
-	// Add CSV scheme
-	if err := olmv1alpha1.AddToScheme(s); err != nil {
-		t.Fatalf("Unable to add CSV scheme: (%v)", err)
-	}
-
-	csv := &olmv1alpha1.ClusterServiceVersion{
-		ObjectMeta: metav1.ObjectMeta{
-			Name:      backingOperatorName,
-			Namespace: namespace,
-		},
-		Spec: olmv1alpha1.ClusterServiceVersionSpec{
-			CustomResourceDefinitions: olmv1alpha1.CustomResourceDefinitions{
-				Owned: []olmv1alpha1.CRDDescription{
-					{
-						Name: "specialdb.example.org",
-						SpecDescriptors: []olmv1alpha1.SpecDescriptor{
-							{
-								XDescriptors: []string{"urn:alm:descriptor:servicebindingrequest:secret:password", "aaa:ccc:aa"},
-							},
-						},
-					},
-					{
-						Name: "specialdb.example.org",
-						SpecDescriptors: []olmv1alpha1.SpecDescriptor{
-							{
-								XDescriptors: []string{"urn:alm:descriptor:servicebindingrequest:configmap:username", "aaa:ccc:aa"},
-							},
-						},
-					},
-				},
-			},
-		},
-	}
-
-	s.AddKnownTypes(olmv1alpha1.SchemeGroupVersion, csv)
-
-	t.Run("Deployment", func(t *testing.T) {
-
-		// Add Deployment scheme
-		if err := appsv1.AddToScheme(s); err != nil {
-			t.Fatalf("Unable to add Deployment scheme: (%v)", err)
-		}
-
-		dp := &appsv1.Deployment{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      deploymentName,
-				Namespace: namespace,
-				Labels: map[string]string{
-					"connects-to": "postgres",
-					"environment": "production",
-				},
-			},
-			Spec: appsv1.DeploymentSpec{
-				Template: corev1.PodTemplateSpec{
-					Spec: corev1.PodSpec{
-						Containers: []corev1.Container{
-							{Name: "app"},
-						},
-					},
-				},
-			},
-		}
-
-		s.AddKnownTypes(appsv1.SchemeGroupVersion, dp)
-
-		// Objects to track in the fake client.
-		objs := []runtime.Object{sbr, csv, dp}
-
-		cl := fake.NewFakeClient(objs...)
-
-		// Create a ReconcileServiceBindingRequest object with the scheme and fake client.
-		r := &Reconciler{client: cl, scheme: s}
-
-		// Mock request to simulate Reconcile() being called on an event for a
-		// watched resource .
-		req := reconcile.Request{
-			NamespacedName: types.NamespacedName{
-				Name:      name,
-				Namespace: namespace,
-			},
-		}
-
-		res, err := r.Reconcile(req)
-		if err != nil {
-			t.Fatalf("reconcile: (%v)", err)
-		}
-
-		// Check the result of reconciliation to make sure it has the desired state.
-		if !res.Requeue {
-			t.Error("reconcile did not requeue request as expected")
-		}
-
-		dpOut := &appsv1.Deployment{}
-		nn := types.NamespacedName{
-			Name:      deploymentName,
-			Namespace: namespace,
-		}
-		err = r.client.Get(context.TODO(), nn, dpOut)
-		if err != nil {
-			t.Fatalf("get deployment: (%v)", err)
-		}
-		n := dpOut.Spec.Template.Spec.Containers[0].Env[0].Name
-		if n != "POSTGRES_PASSWORD" {
-			t.Errorf("Environment name not matching: %s", n)
-		}
-		n2 := dpOut.Spec.Template.Spec.Containers[0].Env[1].Name
-		if n2 != "POSTGRES_USERNAME" {
-			t.Errorf("Environment name not matching: %s", n2)
-		}
-	})
-
-	t.Run("DeploymentConfig", func(t *testing.T) {
-
-		// Add DeploymentConfig scheme
-		if err := osappsv1.AddToScheme(s); err != nil {
-			t.Fatalf("Unable to add DeploymentConfig scheme: (%v)", err)
-		}
-
-		dp := &osappsv1.DeploymentConfig{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      deploymentName,
-				Namespace: namespace,
-				Labels: map[string]string{
-					"connects-to": "postgres",
-					"environment": "production",
-				},
-			},
-			Spec: osappsv1.DeploymentConfigSpec{
-				Template: &corev1.PodTemplateSpec{
-					Spec: corev1.PodSpec{
-						Containers: []corev1.Container{
-							{Name: "app"},
-						},
-					},
-				},
-			},
-		}
-
-		s.AddKnownTypes(osappsv1.SchemeGroupVersion, dp)
-
-		sbr.Spec.ApplicationSelector.ResourceKind = "DeploymentConfig"
-		// Objects to track in the fake client.
-		objs := []runtime.Object{sbr, csv, dp}
-
-		cl := fake.NewFakeClient(objs...)
-
-		// Create a ReconcileServiceBindingRequest object with the scheme and fake client.
-		r := &Reconciler{client: cl, scheme: s}
-
-		// Mock request to simulate Reconcile() being called on an event for a
-		// watched resource .
-		req := reconcile.Request{
-			NamespacedName: types.NamespacedName{
-				Name:      name,
-				Namespace: namespace,
-			},
-		}
-
-		res, err := r.Reconcile(req)
-		if err != nil {
-			t.Fatalf("reconcile: (%v)", err)
-		}
-
-		// Check the result of reconciliation to make sure it has the desired state.
-		if !res.Requeue {
-			t.Error("reconcile did not requeue request as expected")
-		}
-
-		dpOut := &osappsv1.DeploymentConfig{}
-		nn := types.NamespacedName{
-			Name:      deploymentName,
-			Namespace: namespace,
-		}
-		err = r.client.Get(context.TODO(), nn, dpOut)
-		if err != nil {
-			t.Fatalf("get deployment: (%v)", err)
-		}
-		n := dpOut.Spec.Template.Spec.Containers[0].Env[0].Name
-		if n != "POSTGRES_PASSWORD" {
-			t.Errorf("Environment name not matching: %s", n)
-		}
-		n2 := dpOut.Spec.Template.Spec.Containers[0].Env[1].Name
-		if n2 != "POSTGRES_USERNAME" {
-			t.Errorf("Environment name not matching: %s", n2)
-		}
-	})
-
-	t.Run("StatefulSet", func(t *testing.T) {
-
-		// Add StatefulSet scheme
-		if err := appsv1.AddToScheme(s); err != nil {
-			t.Fatalf("Unable to add StatefulSet scheme: (%v)", err)
-		}
-
-		dp := &appsv1.StatefulSet{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      deploymentName,
-				Namespace: namespace,
-				Labels: map[string]string{
-					"connects-to": "postgres",
-					"environment": "production",
-				},
-			},
-			Spec: appsv1.StatefulSetSpec{
-				Template: corev1.PodTemplateSpec{
-					Spec: corev1.PodSpec{
-						Containers: []corev1.Container{
-							{Name: "app"},
-						},
-					},
-				},
-			},
-		}
-
-		s.AddKnownTypes(appsv1.SchemeGroupVersion, dp)
-
-		sbr.Spec.ApplicationSelector.ResourceKind = "StatefulSet"
-		// Objects to track in the fake client.
-		objs := []runtime.Object{sbr, csv, dp}
-
-		cl := fake.NewFakeClient(objs...)
-
-		// Create a ReconcileServiceBindingRequest object with the scheme and fake client.
-		r := &Reconciler{client: cl, scheme: s}
-
-		// Mock request to simulate Reconcile() being called on an event for a
-		// watched resource .
-		req := reconcile.Request{
-			NamespacedName: types.NamespacedName{
-				Name:      name,
-				Namespace: namespace,
-			},
-		}
-
-		res, err := r.Reconcile(req)
-		if err != nil {
-			t.Fatalf("reconcile: (%v)", err)
-		}
-
-		// Check the result of reconciliation to make sure it has the desired state.
-		if !res.Requeue {
-			t.Error("reconcile did not requeue request as expected")
-		}
-
-		dpOut := &appsv1.StatefulSet{}
-		nn := types.NamespacedName{
-			Name:      deploymentName,
-			Namespace: namespace,
-		}
-		err = r.client.Get(context.TODO(), nn, dpOut)
-		if err != nil {
-			t.Fatalf("get deployment: (%v)", err)
-		}
-		n := dpOut.Spec.Template.Spec.Containers[0].Env[0].Name
-		if n != "POSTGRES_PASSWORD" {
-			t.Errorf("Environment name not matching: %s", n)
-		}
-		n2 := dpOut.Spec.Template.Spec.Containers[0].Env[1].Name
-		if n2 != "POSTGRES_USERNAME" {
-			t.Errorf("Environment name not matching: %s", n2)
-		}
-	})
-
-	t.Run("DaemonSet", func(t *testing.T) {
-
-		// Add DaemonSet scheme
-		if err := appsv1.AddToScheme(s); err != nil {
-			t.Fatalf("Unable to add DaemonSet scheme: (%v)", err)
-		}
-
-		dp := &appsv1.DaemonSet{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      deploymentName,
-				Namespace: namespace,
-				Labels: map[string]string{
-					"connects-to": "postgres",
-					"environment": "production",
-				},
-			},
-			Spec: appsv1.DaemonSetSpec{
-				Template: corev1.PodTemplateSpec{
-					Spec: corev1.PodSpec{
-						Containers: []corev1.Container{
-							{Name: "app"},
-						},
-					},
-				},
-			},
-		}
-
-		s.AddKnownTypes(appsv1.SchemeGroupVersion, dp)
-
-		sbr.Spec.ApplicationSelector.ResourceKind = "DaemonSet"
-		// Objects to track in the fake client.
-		objs := []runtime.Object{sbr, csv, dp}
-
-		cl := fake.NewFakeClient(objs...)
-
-		// Create a ReconcileServiceBindingRequest object with the scheme and fake client.
-		r := &Reconciler{client: cl, scheme: s}
-
-		// Mock request to simulate Reconcile() being called on an event for a
-		// watched resource .
-		req := reconcile.Request{
-			NamespacedName: types.NamespacedName{
-				Name:      name,
-				Namespace: namespace,
-			},
-		}
-
-		res, err := r.Reconcile(req)
-		if err != nil {
-			t.Fatalf("reconcile: (%v)", err)
-		}
-
-		// Check the result of reconciliation to make sure it has the desired state.
-		if !res.Requeue {
-			t.Error("reconcile did not requeue request as expected")
-		}
-
-		dpOut := &appsv1.DaemonSet{}
-		nn := types.NamespacedName{
-			Name:      deploymentName,
-			Namespace: namespace,
-		}
-		err = r.client.Get(context.TODO(), nn, dpOut)
-		if err != nil {
-			t.Fatalf("get deployment: (%v)", err)
-		}
-		n := dpOut.Spec.Template.Spec.Containers[0].Env[0].Name
-		if n != "POSTGRES_PASSWORD" {
-			t.Errorf("Environment name not matching: %s", n)
-		}
-		n2 := dpOut.Spec.Template.Spec.Containers[0].Env[1].Name
-		if n2 != "POSTGRES_USERNAME" {
-			t.Errorf("Environment name not matching: %s", n2)
-		}
-	})
-
-}
-
-func TestCornerCasesServiceBindingRequestController(t *testing.T) {
-	var (
-		backingOperatorName = "postgresql-operator.v0.1.0"
-		name                = "postgres"
-		deploymentName      = "my-app"
-		namespace           = "default"
-	)
-	sbr := &v1alpha1.ServiceBindingRequest{
-		ObjectMeta: metav1.ObjectMeta{
-			Name:      name,
-			Namespace: namespace,
-		},
-		Spec: v1alpha1.ServiceBindingRequestSpec{
-			BackingServiceSelector: v1alpha1.BackingServiceSelector{
-				ResourceKind:    "specialdb.example.org",
-				ResourceVersion: "v1apha1",
-			},
-			ApplicationSelector: v1alpha1.ApplicationSelector{
-				MatchLabels: map[string]string{
-					"connects-to": "postgres",
-					"environment": "production",
-				},
-			},
-		},
-	}
-
-	// Register operator types with the runtime scheme.
-	s := scheme.Scheme
-	s.AddKnownTypes(v1alpha1.SchemeGroupVersion, sbr)
-
-	t.Run("object not added to client", func(t *testing.T) {
-		// Objects to track in the fake client.
-		objs := []runtime.Object{}
-
-		cl := fake.NewFakeClient(objs...)
-
-		// Create a ReconcileServiceBindingRequest object with the scheme and fake client.
-		r := &Reconciler{client: cl, scheme: s}
-
-		// Mock request to simulate Reconcile() being called on an event for a
-		// watched resource .
-		req := reconcile.Request{
-			NamespacedName: types.NamespacedName{
-				Name:      name,
-				Namespace: namespace,
-			},
-		}
-
-		res, err := r.Reconcile(req)
-		if err != nil {
-			t.Fatalf("reconcile: (%v)", err)
-		}
-
-		// Check the result of reconciliation to make sure it has the desired state.
-		if res.Requeue {
-			t.Error("reconcile did not requeue request as expected")
-		}
-	})
-	t.Run("match version", func(t *testing.T) {
-		// Add CSV scheme
-		if err := olmv1alpha1.AddToScheme(s); err != nil {
-			t.Fatalf("Unable to add CSV scheme: (%v)", err)
-		}
-
-		csv := &olmv1alpha1.ClusterServiceVersion{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      backingOperatorName,
-				Namespace: namespace,
-			},
-			Spec: olmv1alpha1.ClusterServiceVersionSpec{
-				CustomResourceDefinitions: olmv1alpha1.CustomResourceDefinitions{
-					Owned: []olmv1alpha1.CRDDescription{
-						{
-							Name: "specialdb.example.org",
-							SpecDescriptors: []olmv1alpha1.SpecDescriptor{
-								{
-									XDescriptors: []string{"urn:alm:descriptor:servicebindingrequest:secret:password", "aaa:ccc:aa"},
-								},
-							},
-						},
-						{
-							Name: "specialdb.example.org",
-							SpecDescriptors: []olmv1alpha1.SpecDescriptor{
-								{
-									XDescriptors: []string{"urn:alm:descriptor:servicebindingrequest:configmap:username", "aaa:ccc:aa"},
-								},
-							},
-						},
-					},
-				},
-			},
-		}
-
-		s.AddKnownTypes(olmv1alpha1.SchemeGroupVersion, csv)
-		t.Run("Deployment", func(t *testing.T) {
-
-			// Add Deployment scheme
-			if err := appsv1.AddToScheme(s); err != nil {
-				t.Fatalf("Unable to add Deployment scheme: (%v)", err)
-			}
-
-			dp := &appsv1.Deployment{
-				ObjectMeta: metav1.ObjectMeta{
-					Name:      deploymentName,
-					Namespace: namespace,
-					Labels: map[string]string{
-						"connects-to": "postgres",
-						"environment": "production",
-					},
-				},
-				Spec: appsv1.DeploymentSpec{
-					Template: corev1.PodTemplateSpec{
-						Spec: corev1.PodSpec{
-							Containers: []corev1.Container{
-								{Name: "app"},
-							},
-						},
-					},
-				},
-			}
-
-			s.AddKnownTypes(appsv1.SchemeGroupVersion, dp)
-
-			// Objects to track in the fake client.
-			objs := []runtime.Object{sbr, csv, dp}
-
-			cl := fake.NewFakeClient(objs...)
-
-			// Create a ReconcileServiceBindingRequest object with the scheme and fake client.
-			r := &Reconciler{client: cl, scheme: s}
-
-			// Mock request to simulate Reconcile() being called on an event for a
-			// watched resource .
-			req := reconcile.Request{
-				NamespacedName: types.NamespacedName{
-					Name:      name,
-					Namespace: namespace,
-				},
-			}
-
-			_, err := r.Reconcile(req)
-			if err == nil {
-				t.Fatalf("reconcile worked without version match")
-			}
-
-		})
-
-	})
-}
diff --git a/pkg/controller/servicebindingrequest/planner_test.go b/pkg/controller/servicebindingrequest/planner_test.go
new file mode 100644
index 00000000..a006a948
--- /dev/null
+++ b/pkg/controller/servicebindingrequest/planner_test.go
@@ -0,0 +1,75 @@
+package servicebindingrequest
+
+import (
+	"context"
+	"testing"
+
+	pgapis "github.com/baijum/postgresql-operator/pkg/apis"
+	pgv1alpha1 "github.com/baijum/postgresql-operator/pkg/apis/postgresql/v1alpha1"
+	olmv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+	"k8s.io/apimachinery/pkg/runtime"
+	"k8s.io/client-go/kubernetes/scheme"
+	"sigs.k8s.io/controller-runtime/pkg/client/fake"
+	logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
+
+	"github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1"
+	"github.com/redhat-developer/service-binding-operator/test/mocks"
+)
+
+var planner *Planner
+
+func TestPlannerNew(t *testing.T) {
+	logf.SetLogger(logf.ZapLogger(true))
+
+	ns := "testing"
+	resourceRef := "db-testing"
+	s := scheme.Scheme
+
+	sbr := mocks.ServiceBindingRequestMock(ns, "binding-request", resourceRef, map[string]string{
+		"connects-to": "database",
+		"environment": "planner",
+	})
+	s.AddKnownTypes(v1alpha1.SchemeGroupVersion, &sbr)
+
+	require.Nil(t, olmv1alpha1.AddToScheme(s))
+	csvList := mocks.ClusterServiceVersionListMock(ns, "cluster-service-version-list")
+	s.AddKnownTypes(olmv1alpha1.SchemeGroupVersion, &csvList)
+
+	require.Nil(t, pgapis.AddToScheme(s))
+	crList := mocks.DatabaseCRListMock(ns, resourceRef)
+	s.AddKnownTypes(pgv1alpha1.SchemeGroupVersion, &crList)
+
+	objs := []runtime.Object{&sbr, &csvList, &crList}
+	fakeClient := fake.NewFakeClientWithScheme(s, objs...)
+
+	planner = NewPlanner(context.TODO(), fakeClient, ns, &sbr)
+	require.NotNil(t, planner)
+}
+
+func TestPlannerSearchCRDDescription(t *testing.T) {
+	TestPlannerNew(t)
+	crdDescription, err := planner.searchCRDDescription()
+
+	assert.Nil(t, err)
+	assert.NotNil(t, crdDescription)
+}
+
+func TestPlannerSearchCR(t *testing.T) {
+	cr, err := planner.searchCR("Database")
+
+	assert.Nil(t, err)
+	assert.NotNil(t, cr)
+}
+
+func TestPlannerPlan(t *testing.T) {
+	plan, err := planner.Plan()
+
+	assert.Nil(t, err)
+	assert.NotNil(t, plan)
+	assert.NotNil(t, plan.CRDDescription)
+	assert.NotNil(t, plan.CR)
+	assert.Equal(t, "testing", plan.Ns)
+	assert.Equal(t, "binding-request", plan.Name)
+}
diff --git a/pkg/controller/servicebindingrequest/reconciler_test.go b/pkg/controller/servicebindingrequest/reconciler_test.go
new file mode 100644
index 00000000..d2eb58a6
--- /dev/null
+++ b/pkg/controller/servicebindingrequest/reconciler_test.go
@@ -0,0 +1,88 @@
+package servicebindingrequest
+
+import (
+	"context"
+	"testing"
+
+	pgapis "github.com/baijum/postgresql-operator/pkg/apis"
+	pgv1alpha1 "github.com/baijum/postgresql-operator/pkg/apis/postgresql/v1alpha1"
+	olmv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+	extv1beta1 "k8s.io/api/extensions/v1beta1"
+	"k8s.io/apimachinery/pkg/runtime"
+	"k8s.io/apimachinery/pkg/types"
+	"k8s.io/client-go/kubernetes/scheme"
+	"sigs.k8s.io/controller-runtime/pkg/client"
+	"sigs.k8s.io/controller-runtime/pkg/client/fake"
+	"sigs.k8s.io/controller-runtime/pkg/reconcile"
+	logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
+
+	"github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1"
+	"github.com/redhat-developer/service-binding-operator/test/mocks"
+)
+
+const (
+	reconcilerNs   = "testing"
+	reconcilerName = "binding-request"
+)
+
+var reconciler *Reconciler
+var reconcilerFakeClient client.Client
+
+// TestReconcilerNew this method acts as a "new" call would, but in this scenario bootstraping the
+// types and requirements to test Reconcile.
+func TestReconcilerNew(t *testing.T) {
+	logf.SetLogger(logf.ZapLogger(true))
+
+	s := scheme.Scheme
+	resourceRef := "db-testing"
+	matchLabels := map[string]string{
+		"connects-to": "database",
+		"environment": "planner",
+	}
+
+	sbr := mocks.ServiceBindingRequestMock(reconcilerNs, reconcilerName, resourceRef, matchLabels)
+	s.AddKnownTypes(v1alpha1.SchemeGroupVersion, &sbr)
+
+	require.Nil(t, olmv1alpha1.AddToScheme(s))
+	csvList := mocks.ClusterServiceVersionListMock(reconcilerNs, "cluster-service-version-list")
+	s.AddKnownTypes(olmv1alpha1.SchemeGroupVersion, &csvList)
+
+	require.Nil(t, pgapis.AddToScheme(s))
+	crList := mocks.DatabaseCRListMock(reconcilerNs, resourceRef)
+	s.AddKnownTypes(pgv1alpha1.SchemeGroupVersion, &crList)
+
+	dbSecret := mocks.SecretMock(reconcilerNs, "db-credentials")
+
+	require.Nil(t, extv1beta1.AddToScheme(s))
+	d := mocks.DeploymentMock(reconcilerNs, reconcilerName, matchLabels)
+	s.AddKnownTypes(extv1beta1.SchemeGroupVersion, &d)
+
+	objs := []runtime.Object{&sbr, &csvList, &crList, &dbSecret, &d}
+	reconcilerFakeClient = fake.NewFakeClientWithScheme(s, objs...)
+	reconciler = &Reconciler{client: reconcilerFakeClient, scheme: s}
+}
+
+func TestReconcilerReconcile(t *testing.T) {
+	req := reconcile.Request{
+		NamespacedName: types.NamespacedName{
+			Namespace: reconcilerNs,
+			Name:      reconcilerName,
+		},
+	}
+
+	res, err := reconciler.Reconcile(req)
+	assert.Nil(t, err)
+	assert.False(t, res.Requeue)
+
+	namespacedName := types.NamespacedName{Namespace: reconcilerNs, Name: reconcilerName}
+	d := extv1beta1.Deployment{}
+	require.Nil(t, reconcilerFakeClient.Get(context.TODO(), namespacedName, &d))
+
+	containers := d.Spec.Template.Spec.Containers
+	assert.Equal(t, 1, len(containers))
+	assert.Equal(t, 1, len(containers[0].EnvFrom))
+	assert.NotNil(t, containers[0].EnvFrom[0].SecretRef)
+	assert.Equal(t, reconcilerName, containers[0].EnvFrom[0].SecretRef.Name)
+}
diff --git a/pkg/controller/servicebindingrequest/retriever_test.go b/pkg/controller/servicebindingrequest/retriever_test.go
index 17b6fecd..5c4341d5 100644
--- a/pkg/controller/servicebindingrequest/retriever_test.go
+++ b/pkg/controller/servicebindingrequest/retriever_test.go
@@ -4,12 +4,12 @@ import (
 	"context"
 	"testing"
 
-	"github.com/stretchr/testify/require"
-
 	"github.com/stretchr/testify/assert"
-	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+	"github.com/stretchr/testify/require"
+	ustrv1 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/runtime"
 	"sigs.k8s.io/controller-runtime/pkg/client/fake"
+	logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
 
 	"github.com/redhat-developer/service-binding-operator/test/mocks"
 )
@@ -17,20 +17,22 @@ import (
 var retriever *Retriever
 
 func TestRetrieverNew(t *testing.T) {
+	logf.SetLogger(logf.ZapLogger(true))
+
 	ns := "testing"
-	crdName := "db-testing"
+	crName := "db-testing"
 
 	crdDescription := mocks.CRDDescriptionMock()
-	crd := mocks.DatabaseCRDMock(ns, crdName)
+	cr := mocks.DatabaseCRMock(ns, crName)
 
-	genericCRDObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&crd)
+	genericCR, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&cr)
 	require.Nil(t, err)
 
 	plan := &Plan{
 		Ns:             ns,
 		Name:           "retriever",
 		CRDDescription: &crdDescription,
-		CRD:            &unstructured.Unstructured{Object: genericCRDObj},
+		CR:             &ustrv1.Unstructured{Object: genericCR},
 	}
 
 	dbSecret := mocks.SecretMock(ns, "db-credentials")
@@ -41,8 +43,8 @@ func TestRetrieverNew(t *testing.T) {
 	require.NotNil(t, retriever)
 }
 
-func TestRetrieverGetCRDKey(t *testing.T) {
-	imageName, err := retriever.getCRDKey("spec", "imageName")
+func TestRetrieverGetCRKey(t *testing.T) {
+	imageName, err := retriever.getCRKey("spec", "imageName")
 	assert.Nil(t, err)
 	assert.Equal(t, "postgres", imageName)
 }
diff --git a/test/e2e/servicebindingrequest_test.go b/test/e2e/servicebindingrequest_test.go
index 2fcb2db0..9e24b0e2 100644
--- a/test/e2e/servicebindingrequest_test.go
+++ b/test/e2e/servicebindingrequest_test.go
@@ -2,62 +2,48 @@ package e2e
 
 import (
 	"context"
-	"encoding/json"
-	"fmt"
 	"testing"
 	"time"
 
 	pgsqlapis "github.com/baijum/postgresql-operator/pkg/apis"
-	pgsql "github.com/baijum/postgresql-operator/pkg/apis/postgresql/v1alpha1"
-	olm "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
-	olminstall "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/install"
+	pgv1alpha1 "github.com/baijum/postgresql-operator/pkg/apis/postgresql/v1alpha1"
+	olmv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
 	framework "github.com/operator-framework/operator-sdk/pkg/test"
 	"github.com/operator-framework/operator-sdk/pkg/test/e2eutil"
 	"github.com/stretchr/testify/assert"
-	appsv1 "k8s.io/api/apps/v1"
+	"github.com/stretchr/testify/require"
 	corev1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/api/errors"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/apimachinery/pkg/types"
+	logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
 
 	"github.com/redhat-developer/service-binding-operator/pkg/apis"
-	v1alpha1 "github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1"
+	"github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1"
+	"github.com/redhat-developer/service-binding-operator/test/mocks"
 )
 
 var (
-	retryInterval      = time.Second * 5
-	timeout            = time.Second * 120
-	cleanupTimeout     = time.Second * 5
-	replicas           = 1
-	operatorKind       = "ServiceBindingRequest"
-	operatorAPIVersion = "apps.openshift.io/v1alpha1"
+	retryInterval  = time.Second * 5
+	timeout        = time.Second * 120
+	cleanupTimeout = time.Second * 5
 )
 
 // TestAddSchemesToFramework starting point of the test, it declare the CRDs that will be using
 // during end-to-end tests.
 func TestAddSchemesToFramework(t *testing.T) {
-	serviceBindingRequestList := &v1alpha1.ServiceBindingRequestList{
-		Items: []v1alpha1.ServiceBindingRequest{{}},
-	}
-
-	t.Log("Adding ServiceBindingRequest scheme to cluster...")
-	err := framework.AddToFrameworkScheme(apis.AddToScheme, serviceBindingRequestList)
-	assert.Nil(t, err)
-
-	clusterServiceVersionListObj := &olm.ClusterServiceVersionList{
-		Items: []olm.ClusterServiceVersion{{}},
-	}
+	logf.SetLogger(logf.ZapLogger(true))
 
-	t.Log("Adding ClusterServiceVersion scheme to cluster...")
-	err = framework.AddToFrameworkScheme(olm.AddToScheme, clusterServiceVersionListObj)
-	assert.Nil(t, err)
+	t.Log("Adding ServiceBindingRequestList scheme to cluster...")
+	sbrlist := v1alpha1.ServiceBindingRequestList{}
+	require.Nil(t, framework.AddToFrameworkScheme(apis.AddToScheme, &sbrlist))
 
-	databaseListObj := &pgsql.DatabaseList{
-		Items: []pgsql.Database{{}},
-	}
+	t.Log("Adding ClusterServiceVersionList scheme to cluster...")
+	csvList := olmv1alpha1.ClusterServiceVersionList{}
+	require.Nil(t, framework.AddToFrameworkScheme(olmv1alpha1.AddToScheme, &csvList))
 
-	t.Log("Adding Database scheme to cluster...")
-	err = framework.AddToFrameworkScheme(pgsqlapis.AddToScheme, databaseListObj)
-	assert.Nil(t, err)
+	t.Log("Adding DatabaseList scheme to cluster...")
+	dbList := pgv1alpha1.DatabaseList{}
+	require.Nil(t, framework.AddToFrameworkScheme(pgsqlapis.AddToScheme, &dbList))
 
 	t.Run("end-to-end", func(t *testing.T) {
 		t.Run("scenario-1", ServiceBindingRequest)
@@ -66,193 +52,134 @@ func TestAddSchemesToFramework(t *testing.T) {
 
 // cleanUpOptions using global variables to create the object.
 func cleanUpOptions(ctx *framework.TestCtx) *framework.CleanupOptions {
-	return nil
-	/*
-	   return &framework.CleanupOptions{
-	       TestContext:   ctx,
-	       Timeout:       cleanupTimeout,
-	       RetryInterval: time.Duration(time.Second * retryInterval),
-	   }
-	*/
-}
-
-// ServiceBindingRequest bootstrap method to initialize cluster resources and setup a testing
-// namespace, after bootstrap operator related tests method is called out.
-func ServiceBindingRequest(t *testing.T) {
-	t.Log("Creating a new test context...")
-	ctx := framework.NewTestCtx(t)
-	defer ctx.Cleanup()
-
-	t.Log("Initializing cluster resources...")
-
-	err := ctx.InitializeClusterResources(&framework.CleanupOptions{
+	return &framework.CleanupOptions{
 		TestContext:   ctx,
 		Timeout:       cleanupTimeout,
 		RetryInterval: time.Duration(time.Second * retryInterval),
-	})
+	}
+}
+
+// bootstrapNamespace execute scaffolding to have a new cluster initialized, and acquire a test
+// namespace, the namespace name is returned and framework global variables are returned.
+func bootstrapNamespace(t *testing.T, ctx *framework.TestCtx) (string, *framework.Framework) {
+	t.Log("Initializing cluster resources...")
+	err := ctx.InitializeClusterResources(cleanUpOptions(ctx))
 	if err != nil {
-		if !errors.IsAlreadyExists(err) {
-			t.Fatalf("Failed to setup cluster resources: '%s'", err)
-		}
+		t.Logf("Cluster resources initialization error: '%s'", err)
+		require.True(t, errors.IsAlreadyExists(err), "failed to setup cluster resources")
 	}
 
 	// namespace name is informed on command-line or defined dinamically
 	ns, err := ctx.GetNamespace()
-	assert.Nil(t, err)
-
+	require.Nil(t, err)
 	t.Logf("Using namespace '%s' for testing...", ns)
-	f := framework.Global
-	err = e2eutil.WaitForOperatorDeployment(
-		t, f.KubeClient, ns, "service-binding-operator", replicas, retryInterval, timeout)
-	assert.Nil(t, err)
 
-	// populating cluster with mocked CRDs
-	mockedObjects(t, ns, f, ctx)
-	// executing testing steps on operator
-	serviceBindingRequestTest(t, ns, f, ctx)
+	f := framework.Global
+	return ns, f
 }
 
-// mockedObjects creates all required CRDs in the cluster, using common values to link them as
-// service-binding-operator expects.
-func mockedObjects(t *testing.T, ns string, f *framework.Framework, ctx *framework.TestCtx) {
-	todoCtx := context.TODO()
-
-	crdName := "postgresql.baiju.dev"
-	crdVersion := "v1alpha1"
-	crdKind := "Database"
-	secretName := "e2e-secret"
-
-	labelConnectTo := "postgresql"
-	labelEnvironment := "e2e"
+// ServiceBindingRequest bootstrap method to initialize cluster resources and setup a testing
+// namespace, after bootstrap operator related tests method is called out.
+func ServiceBindingRequest(t *testing.T) {
+	t.Log("Creating a new test context...")
+	ctx := framework.NewTestCtx(t)
+	defer ctx.Cleanup()
 
-	strategy := olminstall.StrategyDetailsDeployment{
-		DeploymentSpecs: []olminstall.StrategyDeploymentSpec{{
-			Name: "deployment",
-			Spec: appsv1.DeploymentSpec{},
-		}},
-	}
+	ns, f := bootstrapNamespace(t, ctx)
 
-	strategyJSON, err := json.Marshal(strategy)
-	assert.Nil(t, err)
-
-	clusterServiceVersionObj := olm.ClusterServiceVersion{
-		TypeMeta: metav1.TypeMeta{
-			Kind:       "ClusterServiceVersion",
-			APIVersion: "operators.coreos.com/v1alpha1",
-		},
-		ObjectMeta: metav1.ObjectMeta{
-			Name:      "e2e-cluster-service-version",
-			Namespace: ns,
-		},
-		Spec: olm.ClusterServiceVersionSpec{
-			DisplayName: "e2e database csv",
-			InstallStrategy: olm.NamedInstallStrategy{
-				StrategyName:    "deployment",
-				StrategySpecRaw: strategyJSON,
-			},
-			CustomResourceDefinitions: olm.CustomResourceDefinitions{
-				Owned: []olm.CRDDescription{{
-					Name:        crdName,
-					DisplayName: crdKind,
-					Description: "e2e csv based on postgresql-operator",
-					Kind:        crdKind,
-					Version:     crdVersion,
-					StatusDescriptors: []olm.StatusDescriptor{{
-						DisplayName: "DB Password Credentials",
-						Description: "Database credentials secret",
-						Path:        "dbCredentials",
-						XDescriptors: []string{
-							"urn:alm:descriptor:io.kubernetes:Secret",
-							"urn:alm:descriptor:io.servicebindingrequest:secret:user",
-							"urn:alm:descriptor:io.servicebindingrequest:secret:password",
-						},
-					}},
-				}},
-			},
-		},
-	}
+	// executing testing steps on operator
+	serviceBindingRequestTest(t, ctx, f, ns)
+}
 
-	t.Log("Creating ClusterServiceVersion object...")
-	// err = f.Client.Create(todoCtx, &clusterServiceVersionObj, cleanUpOptions(ctx))
-	_ = f.Client.Create(todoCtx, &clusterServiceVersionObj, cleanUpOptions(ctx))
-	// assert.Nil(t, err)
-
-	pgDatabaseObj := pgsql.Database{
-		TypeMeta: metav1.TypeMeta{
-			Kind:       crdKind,
-			APIVersion: fmt.Sprintf("%s/%s", crdName, crdVersion),
-		},
-		ObjectMeta: metav1.ObjectMeta{
-			Name:      labelConnectTo,
-			Namespace: ns,
-		},
-		Spec: pgsql.DatabaseSpec{
-			Image:     "database/image",
-			ImageName: "database",
-		},
-	}
+// serviceBindingRequestTest executes the actual end-to-end testing, simulating the components and
+// expecting for changes caused by the operator.
+func serviceBindingRequestTest(t *testing.T, ctx *framework.TestCtx, f *framework.Framework, ns string) {
+	todoCtx := context.TODO()
 
-	t.Log("Creating a database CRD object...")
-	// err = f.Client.Create(todoCtx, &pgDatabaseObj, cleanUpOptions(ctx))
-	_ = f.Client.Create(todoCtx, &pgDatabaseObj, nil)
-	// assert.Nil(t, err)
-
-	/*
-	   t.Log("Adding db-credentials to status...")
-	   pgDatabaseObj.Status.DBCredentials = secretName
-	   err = f.Client.Status().Update(todoCtx, &pgDatabaseObj)
-	   assert.Nil(t, err)
-	*/
-
-	secretObj := corev1.Secret{
-		TypeMeta: metav1.TypeMeta{
-			Kind:       "Secret",
-			APIVersion: "v1",
-		},
-		ObjectMeta: metav1.ObjectMeta{
-			Name:      secretName,
-			Namespace: ns,
-		},
-		Data: map[string][]byte{
-			"user":     []byte("user"),
-			"password": []byte("password"),
-		},
+	name := "e2e-service-binding-request"
+	resourceRef := "e2e-db-testing"
+	secretName := "e2e-db-credentials"
+	appName := "e2e-application"
+	matchLabels := map[string]string{
+		"connects-to": "database",
+		"environment": "e2e",
 	}
 
-	t.Log("Creating secret object...")
-	// err = f.Client.Create(todoCtx, &secretObj, cleanUpOptions(ctx))
-	_ = f.Client.Create(todoCtx, &secretObj, cleanUpOptions(ctx))
-	// assert.Nil(t, err)
-
-	serviceBindingRequestObj := v1alpha1.ServiceBindingRequest{
-		TypeMeta: metav1.TypeMeta{
-			Kind:       operatorKind,
-			APIVersion: operatorAPIVersion,
-		},
-		ObjectMeta: metav1.ObjectMeta{
-			Name:      "e2e-service-binding-request",
-			Namespace: ns,
-		},
-		Spec: v1alpha1.ServiceBindingRequestSpec{
-			BackingServiceSelector: v1alpha1.BackingServiceSelector{
-				ResourceKind:    crdName,
-				ResourceVersion: crdVersion,
-			},
-			ApplicationSelector: v1alpha1.ApplicationSelector{
-				MatchLabels: map[string]string{
-					"connects-to": labelConnectTo,
-					"environment": labelEnvironment,
-				},
-			},
-		},
+	t.Log("Starting end-to-end tests for operator!")
+
+	t.Log("Creating ClusterServiceVersion mock object...")
+	csv := mocks.ClusterServiceVersionMock(ns, "cluster-service-version")
+	require.Nil(t, f.Client.Create(todoCtx, &csv, cleanUpOptions(ctx)))
+
+	t.Log("Creating Database mock object...")
+	db := mocks.DatabaseCRMock(ns, resourceRef)
+	require.Nil(t, f.Client.Create(todoCtx, &db, cleanUpOptions(ctx)))
+
+	t.Log("Updating Database status, adding 'DBCredentials'")
+	require.Nil(t, f.Client.Get(todoCtx, types.NamespacedName{Namespace: ns, Name: resourceRef}, &db))
+	db.Status.DBCredentials = secretName
+	require.Nil(t, f.Client.Status().Update(todoCtx, &db))
+
+	t.Log("Creating Database credentials secret mock object...")
+	dbSecret := mocks.SecretMock(ns, secretName)
+	require.Nil(t, f.Client.Create(todoCtx, &dbSecret, cleanUpOptions(ctx)))
+
+	t.Log("Creating Deployment mock object...")
+	d := mocks.DeploymentMock(ns, appName, matchLabels)
+	require.Nil(t, f.Client.Create(todoCtx, &d, cleanUpOptions(ctx)))
+
+	// waiting for application deployment to reach one replica
+	t.Log("Waiting for application deployment reach one replica...")
+	require.Nil(t, e2eutil.WaitForDeployment(t, f.KubeClient, ns, appName, 1, retryInterval, timeout))
+
+	// retrieveing deployment, to inspect it's generation
+	t.Logf("Reading application deployment, extrating generation from '%s'", appName)
+	require.Nil(t, f.Client.Get(todoCtx, types.NamespacedName{Namespace: ns, Name: appName}, &d))
+
+	// creating service-binding-request, which will trigger actions in the controller
+	t.Log("Creating ServiceBindingRequest mock object...")
+	sbr := mocks.ServiceBindingRequestMock(ns, name, resourceRef, matchLabels)
+	// making sure object does not exist before testing
+	_ = f.Client.Delete(todoCtx, &sbr)
+	require.Nil(t, f.Client.Create(todoCtx, &sbr, cleanUpOptions(ctx)))
+
+	// waiting again for deployment
+	t.Log("Waiting for application deployment reach one replica, again...")
+	require.Nil(t, e2eutil.WaitForDeployment(t, f.KubeClient, ns, appName, 1, retryInterval, timeout))
+
+	// retrieveing deployment again until new generation or timeout
+	for attempts := 0; attempts < 10; attempts++ {
+		t.Logf("Reading application deployment '%s' ('%d')", appName, attempts)
+		require.Nil(t, f.Client.Get(todoCtx, types.NamespacedName{Namespace: ns, Name: appName}, &d))
+
+		generation := d.GetGeneration()
+		t.Logf("Deployment generation: '%d'", generation)
+		if generation > 1 {
+			break
+		}
+		time.Sleep(time.Second * 3)
 	}
 
-	t.Log("Creating ServiceBindingRequest object...")
-	// err = f.Client.Create(todoCtx, &serviceBindingRequestObj, cleanUpOptions(ctx))
-	_ = f.Client.Create(todoCtx, &serviceBindingRequestObj, cleanUpOptions(ctx))
-	// assert.Nil(t, err)
-}
-
-func serviceBindingRequestTest(t *testing.T, ns string, f *framework.Framework, ctx *framework.TestCtx) {
-	t.Log("Starting end-to-end tests for operator...")
+	// making sure envFrom is added to the container
+	t.Logf("Inspecting '%s' searching for 'envFrom'...", appName)
+	containers := d.Spec.Template.Spec.Containers
+	require.Equal(t, 1, len(containers))
+	require.Equal(t, 1, len(containers[0].EnvFrom))
+	assert.NotNil(t, containers[0].EnvFrom[0].SecretRef)
+	assert.Equal(t, name, containers[0].EnvFrom[0].SecretRef.Name)
+
+	// checking intermediary secret
+	t.Logf("Checking intermediary secret '%s'...", name)
+	sbrSecret := corev1.Secret{}
+	require.Nil(t, f.Client.Get(todoCtx, types.NamespacedName{Namespace: ns, Name: name}, &sbrSecret))
+	assert.Contains(t, sbrSecret.Data, "SERVICE_BINDING_DATABASE_SECRET_USER")
+	assert.Equal(t, []byte("user"), sbrSecret.Data["SERVICE_BINDING_DATABASE_SECRET_USER"])
+	assert.Contains(t, sbrSecret.Data, "SERVICE_BINDING_DATABASE_SECRET_PASSWORD")
+	assert.Equal(t, []byte("password"), sbrSecret.Data["SERVICE_BINDING_DATABASE_SECRET_PASSWORD"])
+
+	// cleaning up
+	t.Log("Cleaning all up!")
+	_ = f.Client.Delete(todoCtx, &sbr)
+	_ = f.Client.Delete(todoCtx, &sbrSecret)
+	_ = f.Client.Delete(todoCtx, &d)
 }
diff --git a/test/mocks/mocks.go b/test/mocks/mocks.go
index 9046c148..f6936de7 100644
--- a/test/mocks/mocks.go
+++ b/test/mocks/mocks.go
@@ -4,19 +4,24 @@ import (
 	"encoding/json"
 	"fmt"
 
-	dbv1alpha1 "github.com/baijum/postgresql-operator/pkg/apis/postgresql/v1alpha1"
+	pgv1alpha1 "github.com/baijum/postgresql-operator/pkg/apis/postgresql/v1alpha1"
 	olmv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
 	olminstall "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/install"
 	appsv1 "k8s.io/api/apps/v1"
 	corev1 "k8s.io/api/core/v1"
+	extv1beta1 "k8s.io/api/extensions/v1beta1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
+	v1alpha1 "github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1"
 )
 
-// names employed in mocks
+// resource details employed in mocks
 const (
-	CRDName    = "postgresql.baiju.dev"
-	CRDVersion = "v1alpha1"
-	CRDKind    = "Database"
+	CRDName            = "postgresql.baiju.dev"
+	CRDVersion         = "v1alpha1"
+	CRDKind            = "Database"
+	OperatorKind       = "ServiceBindingRequest"
+	OperatorAPIVersion = "apps.openshift.io/v1alpha1"
 )
 
 // ClusterServiceVersionMock based on PostgreSQL operator.
@@ -31,10 +36,6 @@ func ClusterServiceVersionMock(ns, name string) olmv1alpha1.ClusterServiceVersio
 	strategyJSON, _ := json.Marshal(strategy)
 
 	return olmv1alpha1.ClusterServiceVersion{
-		TypeMeta: metav1.TypeMeta{
-			Kind:       "ClusterServiceVersion",
-			APIVersion: "operators.coreos.com/v1alpha1",
-		},
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: ns,
 			Name:      name,
@@ -52,11 +53,18 @@ func ClusterServiceVersionMock(ns, name string) olmv1alpha1.ClusterServiceVersio
 	}
 }
 
+// ClusterServiceVersionListMock returns a list with a single CSV object inside, reusing mock.
+func ClusterServiceVersionListMock(ns, name string) olmv1alpha1.ClusterServiceVersionList {
+	return olmv1alpha1.ClusterServiceVersionList{
+		Items: []olmv1alpha1.ClusterServiceVersion{ClusterServiceVersionMock(ns, name)},
+	}
+}
+
 // CRDDescriptionMock based on PostgreSQL operator, returning a mock that defines database
 // credentials entry with OLM descriptors.
 func CRDDescriptionMock() olmv1alpha1.CRDDescription {
 	return olmv1alpha1.CRDDescription{
-		Name:        CRDName,
+		Name:        fmt.Sprintf("%s.%s", CRDKind, CRDName),
 		DisplayName: CRDKind,
 		Description: "mock-crd-description",
 		Kind:        CRDKind,
@@ -80,9 +88,11 @@ func CRDDescriptionMock() olmv1alpha1.CRDDescription {
 	}
 }
 
-// DatabaseCRDMock based on PostgreSQL operator, returning a instantiated object
-func DatabaseCRDMock(ns, name string) dbv1alpha1.Database {
-	return dbv1alpha1.Database{
+// DatabaseCRMock based on PostgreSQL operator, returning a instantiated object.
+func DatabaseCRMock(ns, name string) pgv1alpha1.Database {
+	return pgv1alpha1.Database{
+		// usually TypeMeta should not be explicitly defined in mocked objects, however, on using
+		// it via *unstructured.Unstructured it could not find this CR without it.
 		TypeMeta: metav1.TypeMeta{
 			Kind:       CRDKind,
 			APIVersion: fmt.Sprintf("%s/%s", CRDName, CRDVersion),
@@ -91,23 +101,26 @@ func DatabaseCRDMock(ns, name string) dbv1alpha1.Database {
 			Namespace: ns,
 			Name:      name,
 		},
-		Spec: dbv1alpha1.DatabaseSpec{
+		Spec: pgv1alpha1.DatabaseSpec{
 			Image:     "docker.io/postgres:latest",
 			ImageName: "postgres",
 		},
-		Status: dbv1alpha1.DatabaseStatus{
+		Status: pgv1alpha1.DatabaseStatus{
 			DBCredentials: "db-credentials",
 		},
 	}
 }
 
+// DatabaseCRListMock returns a list with a single database CR inside, reusing existing mock.
+func DatabaseCRListMock(ns, name string) pgv1alpha1.DatabaseList {
+	return pgv1alpha1.DatabaseList{
+		Items: []pgv1alpha1.Database{DatabaseCRMock(ns, name)},
+	}
+}
+
 // SecretMock returns a Secret based on PostgreSQL operator usage.
 func SecretMock(ns, name string) corev1.Secret {
 	return corev1.Secret{
-		TypeMeta: metav1.TypeMeta{
-			Kind:       "Secret",
-			APIVersion: "v1",
-		},
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: ns,
 			Name:      name,
@@ -118,3 +131,56 @@ func SecretMock(ns, name string) corev1.Secret {
 		},
 	}
 }
+
+// ServiceBindingRequestMock return a binding-request mock of informed name and match labels.
+func ServiceBindingRequestMock(
+	ns, name, resourceRef string, matchLabels map[string]string,
+) v1alpha1.ServiceBindingRequest {
+	return v1alpha1.ServiceBindingRequest{
+		ObjectMeta: metav1.ObjectMeta{
+			Namespace: ns,
+			Name:      name,
+		},
+		Spec: v1alpha1.ServiceBindingRequestSpec{
+			BackingServiceSelector: v1alpha1.BackingServiceSelector{
+				ResourceName:    CRDName,
+				ResourceVersion: CRDVersion,
+				ResourceRef:     resourceRef,
+			},
+			ApplicationSelector: v1alpha1.ApplicationSelector{
+				ResourceKind: "Deployment",
+				MatchLabels:  matchLabels,
+			},
+		},
+	}
+}
+
+// DeploymentMock creates a mocked Deployment object of busybox.
+func DeploymentMock(ns, name string, matchLabels map[string]string) extv1beta1.Deployment {
+	return extv1beta1.Deployment{
+		ObjectMeta: metav1.ObjectMeta{
+			Namespace: ns,
+			Name:      name,
+			Labels:    matchLabels,
+		},
+		Spec: extv1beta1.DeploymentSpec{
+			Selector: &metav1.LabelSelector{
+				MatchLabels: matchLabels,
+			},
+			Template: corev1.PodTemplateSpec{
+				ObjectMeta: metav1.ObjectMeta{
+					Namespace: ns,
+					Name:      name,
+					Labels:    matchLabels,
+				},
+				Spec: corev1.PodSpec{
+					Containers: []corev1.Container{{
+						Name:    "busybox",
+						Image:   "busybox:latest",
+						Command: []string{"sleep", "3600"},
+					}},
+				},
+			},
+		},
+	}
+}
diff --git a/test/operator-hub/subscription.yaml b/test/operator-hub/subscription.yaml
index 0064ecda..fad05470 100644
--- a/test/operator-hub/subscription.yaml
+++ b/test/operator-hub/subscription.yaml
@@ -5,7 +5,7 @@ metadata:
   name: my-service-binding
   namespace: openshift-operators
 spec:
-  channel: alpha
+  channel: dev
   name: service-binding
   source: my-catalog
   sourceNamespace: openshift-operator-lifecycle-manager
diff --git a/test/third-party-crds/postgresql_v1alpha1_database_crd.yaml b/test/third-party-crds/postgresql_v1alpha1_database_crd.yaml
new file mode 100644
index 00000000..eae666e3
--- /dev/null
+++ b/test/third-party-crds/postgresql_v1alpha1_database_crd.yaml
@@ -0,0 +1,38 @@
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: databases.postgresql.baiju.dev
+spec:
+  group: postgresql.baiju.dev
+  names:
+    kind: Database
+    listKind: DatabaseList
+    plural: databases
+    singular: database
+    shortNames:
+      - db
+  scope: Namespaced
+  subresources:
+    status: {}
+  validation:
+    openAPIV3Schema:
+      properties:
+        apiVersion:
+          description: 'APIVersion defines the versioned schema of this
+            representation of an object. Servers should convert recognized
+            schemas to the latest internal value, and may reject unrecognized
+            values.'
+          type: string
+        kind:
+          description: 'Kind is a string value representing the REST resource
+            this object represents. Servers may infer this from the endpoint the
+            client submits requests to.'
+          type: string
+        metadata:
+          type: object
+        spec:
+          type: object
+        status:
+          type: object
+  version: v1alpha1