Repository: redhat-developer/service-binding-operator
Pull request #124 (2019-08-15 08:57:30)

Add a Binder which uses a dynamic client to CRUD deployment objects
* Introducing Kubernetes dynamic API client;
* Making generic support for application formats in `Binder` (new component); 
* refactoring code and tests to reduce code-duplication, introducing `test/mocks/fake.go`;
* Refactoring `Planner` to only use dynamic client;
* Removing `wait.go` to use native approach based on `RequeueAfter`;

### Using `resource` in `ApplicationSelector`

Updating CR to have `resource` instead of `kind` in `ApplicationSelector`. Therefore `Binder` would not have to guess anything anymore. For instance, please consider the following example:

``` yaml
---
apiVersion: apps.openshift.io/v1alpha1
kind: ServiceBindingRequest
metadata:
  name: example-servicebindingrequest
spec:
  [...]
  applicationSelector:
    matchLabels:
      connects-to: postgres
      environment: production
    group: apps
    version: v1
    resource: deployments
```

### Next Steps

Migrate all components to rely in the dynamic client and remove previous client references.

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"]} -->
codecov[bot]: # [Codecov](https://codecov.io/gh/redhat-developer/service-binding-operator/pull/124?src=pr&el=h1) Report
> Merging [#124](https://codecov.io/gh/redhat-developer/service-binding-operator/pull/124?src=pr&el=desc) into [master](https://codecov.io/gh/redhat-developer/service-binding-operator/commit/ef7841ca4200262719f7bac3876948d760e6b351?src=pr&el=desc) will **decrease** coverage by `0.77%`.
> The diff coverage is `0%`.

[![Impacted file tree graph](https://codecov.io/gh/redhat-developer/service-binding-operator/pull/124/graphs/tree.svg?width=650&token=CICBeVWlrC&height=150&src=pr)](https://codecov.io/gh/redhat-developer/service-binding-operator/pull/124?src=pr&el=tree)

```diff
@@            Coverage Diff            @@
##           master    #124      +/-   ##
=========================================
- Coverage   56.48%   55.7%   -0.78%     
=========================================
  Files           6       6              
  Lines         432     438       +6     
=========================================
  Hits          244     244              
- Misses        157     163       +6     
  Partials       31      31
```


| [Impacted Files](https://codecov.io/gh/redhat-developer/service-binding-operator/pull/124?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/controller/servicebindingrequest/reconciler.go](https://codecov.io/gh/redhat-developer/service-binding-operator/pull/124/diff?src=pr&el=tree#diff-cGtnL2NvbnRyb2xsZXIvc2VydmljZWJpbmRpbmdyZXF1ZXN0L3JlY29uY2lsZXIuZ28=) | `39.7% <ø> (ø)` | :arrow_up: |
| [pkg/controller/servicebindingrequest/controller.go](https://codecov.io/gh/redhat-developer/service-binding-operator/pull/124/diff?src=pr&el=tree#diff-cGtnL2NvbnRyb2xsZXIvc2VydmljZWJpbmRpbmdyZXF1ZXN0L2NvbnRyb2xsZXIuZ28=) | `0% <0%> (ø)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/redhat-developer/service-binding-operator/pull/124?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/redhat-developer/service-binding-operator/pull/124?src=pr&el=footer). Last update [ef7841c...635d0ca](https://codecov.io/gh/redhat-developer/service-binding-operator/pull/124?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

sbose78: After adding a `watch` on the secret

```
secretResource := schema.GroupVersionResource{corev1.GroupName, corev1.SchemeGroupVersion.Version, "Secret"}
secretClient := r.dynClient.Resource(secretResource).Namespace(r.plan.Ns)
secretWatcher, err := secretClient.Watch(metav1.ListOptions{Watch: true, FieldSelector: fmt.Sprintf("metadata.name=%s", name)})
ch := secretWatcher.ResultChan()
for event := range ch {
	_, ok := event.Object.(*corev1.Secret)
	if !ok {
	    logger.Error("could not figure out what triggered this event")
	}
}
// add something to the queue
```

I'm curious, what do you plan on doing here?  :)
- would you be calling r.reconcile(..) directly after getting the object into this..
- would you be causing a dirty update to the ServiceBindingRequest CR to force a reconcile..
- would you be using the workqueue api directly?
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

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

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 963933edf9b272ecb54d24a0986b27b76deaeee2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/335) | `/test lint`
ci/prow/unit | 963933edf9b272ecb54d24a0986b27b76deaeee2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/316) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 963933edf9b272ecb54d24a0986b27b76deaeee2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/335) | `/test lint`
ci/prow/unit | 963933edf9b272ecb54d24a0986b27b76deaeee2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/316) | `/test unit`
ci/prow/images | 963933edf9b272ecb54d24a0986b27b76deaeee2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/298) | `/test images`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 963933edf9b272ecb54d24a0986b27b76deaeee2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/335) | `/test lint`
ci/prow/unit | 963933edf9b272ecb54d24a0986b27b76deaeee2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/316) | `/test unit`
ci/prow/images | 963933edf9b272ecb54d24a0986b27b76deaeee2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/298) | `/test images`
ci/prow/e2e | 963933edf9b272ecb54d24a0986b27b76deaeee2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/346) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/unit | 963933edf9b272ecb54d24a0986b27b76deaeee2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/316) | `/test unit`
ci/prow/images | 963933edf9b272ecb54d24a0986b27b76deaeee2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/298) | `/test images`
ci/prow/e2e | 963933edf9b272ecb54d24a0986b27b76deaeee2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/346) | `/test e2e`
ci/prow/lint | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/336) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/images | 963933edf9b272ecb54d24a0986b27b76deaeee2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/298) | `/test images`
ci/prow/e2e | 963933edf9b272ecb54d24a0986b27b76deaeee2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/346) | `/test e2e`
ci/prow/lint | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/336) | `/test lint`
ci/prow/unit | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/317) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 963933edf9b272ecb54d24a0986b27b76deaeee2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/346) | `/test e2e`
ci/prow/lint | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/336) | `/test lint`
ci/prow/unit | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/317) | `/test unit`
ci/prow/images | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/299) | `/test images`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/336) | `/test lint`
ci/prow/unit | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/317) | `/test unit`
ci/prow/images | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/299) | `/test images`
ci/prow/e2e | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/347) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/336) | `/test lint`
ci/prow/unit | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/317) | `/test unit`
ci/prow/e2e | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/347) | `/test e2e`
ci/prow/images | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/300) | `/test images`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/unit | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/317) | `/test unit`
ci/prow/e2e | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/347) | `/test e2e`
ci/prow/images | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/300) | `/test images`
ci/prow/lint | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/337) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 8254b8d21bc6fa1938e20c6eeb1b88d14cfaf132 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/347) | `/test e2e`
ci/prow/images | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/300) | `/test images`
ci/prow/lint | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/337) | `/test lint`
ci/prow/unit | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/318) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/images | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/300) | `/test images`
ci/prow/lint | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/337) | `/test lint`
ci/prow/unit | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/318) | `/test unit`
ci/prow/e2e | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/348) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/images | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/300) | `/test images`
ci/prow/unit | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/318) | `/test unit`
ci/prow/e2e | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/348) | `/test e2e`
ci/prow/lint | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/338) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/images | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/300) | `/test images`
ci/prow/unit | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/318) | `/test unit`
ci/prow/lint | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/338) | `/test lint`
ci/prow/e2e | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/349) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/images | 579dbcd9dad5349d6d47472b66e6e59d2f2a266a | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/300) | `/test images`
ci/prow/lint | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/338) | `/test lint`
ci/prow/e2e | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/349) | `/test e2e`
ci/prow/unit | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/319) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/338) | `/test lint`
ci/prow/e2e | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/349) | `/test e2e`
ci/prow/unit | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/319) | `/test unit`
ci/prow/images | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/301) | `/test images`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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: PR needs rebase.

<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.
</details>
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/lint | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/338) | `/test lint`
ci/prow/e2e | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/349) | `/test e2e`
ci/prow/images | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/301) | `/test images`
ci/prow/unit | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/320) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/349) | `/test e2e`
ci/prow/images | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/301) | `/test images`
ci/prow/unit | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/320) | `/test unit`
ci/prow/lint | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/339) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | f4dc78861917552f7caf1cf71232a9dbba192ade | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/349) | `/test e2e`
ci/prow/unit | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/320) | `/test unit`
ci/prow/lint | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/339) | `/test lint`
ci/prow/images | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/302) | `/test images`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/unit | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/320) | `/test unit`
ci/prow/lint | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/339) | `/test lint`
ci/prow/images | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/302) | `/test images`
ci/prow/e2e | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/350) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 -->
sbose78: Wondering how to ensure we don't keep adding watches - because we aren't keeping a track of the initial watch being added.
openshift-ci-robot: @otaviof: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/unit | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/320) | `/test unit`
ci/prow/images | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/302) | `/test images`
ci/prow/e2e | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/350) | `/test e2e`
ci/prow/lint | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/343) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/images | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/302) | `/test images`
ci/prow/e2e | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/350) | `/test e2e`
ci/prow/lint | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/343) | `/test lint`
ci/prow/unit | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/324) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/images | 874d719cb05c2a6270479b205a4b7b646b81a7e2 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/302) | `/test images`
ci/prow/lint | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/343) | `/test lint`
ci/prow/unit | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/324) | `/test unit`
ci/prow/e2e | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/354) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/343) | `/test lint`
ci/prow/unit | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/324) | `/test unit`
ci/prow/e2e | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/354) | `/test e2e`
ci/prow/images | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/306) | `/test images`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/343) | `/test lint`
ci/prow/e2e | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/354) | `/test e2e`
ci/prow/images | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/306) | `/test images`
ci/prow/unit | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/325) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/354) | `/test e2e`
ci/prow/images | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/306) | `/test images`
ci/prow/unit | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/325) | `/test unit`
ci/prow/lint | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/344) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 88d29b5544cb5ea3f251382dc23068b9ed075eaa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/354) | `/test e2e`
ci/prow/unit | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/325) | `/test unit`
ci/prow/lint | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/344) | `/test lint`
ci/prow/images | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/307) | `/test images`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/unit | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/325) | `/test unit`
ci/prow/lint | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/344) | `/test lint`
ci/prow/images | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/307) | `/test images`
ci/prow/e2e | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/355) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/unit | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/325) | `/test unit`
ci/prow/lint | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/344) | `/test lint`
ci/prow/images | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/307) | `/test images`
ci/prow/e2e | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/359) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/344) | `/test lint`
ci/prow/images | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/307) | `/test images`
ci/prow/e2e | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/359) | `/test e2e`
ci/prow/unit | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/329) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | db286ae904b8ab2a072c0f7c8411cbec1b84815c | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/344) | `/test lint`
ci/prow/e2e | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/359) | `/test e2e`
ci/prow/unit | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/329) | `/test unit`
ci/prow/images | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/311) | `/test images`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/359) | `/test e2e`
ci/prow/unit | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/329) | `/test unit`
ci/prow/images | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/311) | `/test images`
ci/prow/lint | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/348) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/359) | `/test e2e`
ci/prow/images | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/311) | `/test images`
ci/prow/lint | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/348) | `/test lint`
ci/prow/unit | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/330) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/images | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/311) | `/test images`
ci/prow/lint | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/348) | `/test lint`
ci/prow/unit | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/330) | `/test unit`
ci/prow/e2e | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/360) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 9bc2aa5e12f6b73a43fbc09e864599df2bfa881e | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/348) | `/test lint`
ci/prow/unit | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/330) | `/test unit`
ci/prow/e2e | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/360) | `/test e2e`
ci/prow/images | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/312) | `/test images`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/unit | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/330) | `/test unit`
ci/prow/e2e | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/360) | `/test e2e`
ci/prow/images | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/312) | `/test images`
ci/prow/lint | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/349) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/unit | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/330) | `/test unit`
ci/prow/images | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/312) | `/test images`
ci/prow/lint | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/349) | `/test lint`
ci/prow/e2e | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/361) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/images | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/312) | `/test images`
ci/prow/lint | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/349) | `/test lint`
ci/prow/e2e | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/361) | `/test e2e`
ci/prow/unit | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/331) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/349) | `/test lint`
ci/prow/e2e | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/361) | `/test e2e`
ci/prow/unit | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/331) | `/test unit`
ci/prow/images | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/313) | `/test images`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/361) | `/test e2e`
ci/prow/unit | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/331) | `/test unit`
ci/prow/images | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/313) | `/test images`
ci/prow/lint | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/350) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/361) | `/test e2e`
ci/prow/unit | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/331) | `/test unit`
ci/prow/lint | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/350) | `/test lint`
ci/prow/images | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/314) | `/test images`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/361) | `/test e2e`
ci/prow/lint | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/350) | `/test lint`
ci/prow/images | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/314) | `/test images`
ci/prow/unit | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/332) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/350) | `/test lint`
ci/prow/images | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/314) | `/test images`
ci/prow/unit | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/332) | `/test unit`
ci/prow/e2e | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/362) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/images | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/314) | `/test images`
ci/prow/unit | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/332) | `/test unit`
ci/prow/e2e | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/362) | `/test e2e`
ci/prow/lint | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/351) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/images | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/314) | `/test images`
ci/prow/e2e | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/362) | `/test e2e`
ci/prow/lint | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/351) | `/test lint`
ci/prow/unit | 293ca9eb6fa5102c00987c0de12a9defd4fd3230 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/333) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/images | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/314) | `/test images`
ci/prow/lint | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/351) | `/test lint`
ci/prow/unit | 293ca9eb6fa5102c00987c0de12a9defd4fd3230 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/333) | `/test unit`
ci/prow/e2e | 293ca9eb6fa5102c00987c0de12a9defd4fd3230 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/363) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 6fd915ad58b43164d3ad2bc871a228929217ed7b | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/351) | `/test lint`
ci/prow/unit | 293ca9eb6fa5102c00987c0de12a9defd4fd3230 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/333) | `/test unit`
ci/prow/e2e | 293ca9eb6fa5102c00987c0de12a9defd4fd3230 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/363) | `/test e2e`
ci/prow/images | 293ca9eb6fa5102c00987c0de12a9defd4fd3230 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/315) | `/test images`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/unit | 293ca9eb6fa5102c00987c0de12a9defd4fd3230 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/333) | `/test unit`
ci/prow/e2e | 293ca9eb6fa5102c00987c0de12a9defd4fd3230 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/363) | `/test e2e`
ci/prow/images | 293ca9eb6fa5102c00987c0de12a9defd4fd3230 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-images/315) | `/test images`
ci/prow/lint | 293ca9eb6fa5102c00987c0de12a9defd4fd3230 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/352) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 0a01b0baa24a7e9a849c2280eaa54e7c2c71f8aa | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/364) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/lint | 72e97b982b4ea3e153173986c45bb4fe1d874cef | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/355) | `/test lint`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 72e97b982b4ea3e153173986c45bb4fe1d874cef | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-lint/355) | `/test lint`
ci/prow/unit | 72e97b982b4ea3e153173986c45bb4fe1d874cef | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/336) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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/unit | 49a145d330336dfa659d0bab531bc7d6d49e3337 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-unit/338) | `/test unit`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 unit
openshift-ci-robot: @otaviof: The following test **failed**, say `/retest` to rerun them all:

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

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 | 8a02f9fc2d24e19ad2b39fa424871468d46e9126 | [link](https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/124/pull-ci-redhat-developer-service-binding-operator-master-e2e/370) | `/test e2e`

[Full PR test history](https://prow.svc.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=124). [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 -->
sbose78: Why do we have the requirement of Group Version Resource while looking up deploymentConfig / deployments ?

```

// search objects based in Kind/APIVersion, which contain the labels defined in ApplicationSelector.
func (b *Binder) search() (*ustrv1.UnstructuredList, error) {
	ns := b.sbr.GetNamespace()
	gvr := schema.GroupVersionResource{
		Group:    b.sbr.Spec.ApplicationSelector.Group,
		Version:  b.sbr.Spec.ApplicationSelector.Version,
		Resource: b.sbr.Spec.ApplicationSelector.Resource,
	}
	matchLabels := b.sbr.Spec.ApplicationSelector.MatchLabels
	opts := metav1.ListOptions{
		LabelSelector: labels.Set(matchLabels).String(),
	}

	return b.dynClient.Resource(gvr).Namespace(ns).List(opts)
}
```

but for looking up CRs, we do use Group,Version & Kind ?
```
func (p *Planner) searchCR(kind string) (*ustrv1.Unstructured, error) {
	bss := p.sbr.Spec.BackingServiceSelector
	gvk := schema.GroupVersionKind{Group: bss.Group, Version: bss.Version, Kind: bss.Kind}
	gvr, _ := meta.UnsafeGuessKindToResource(gvk)
	opts := metav1.GetOptions{}

	logger := p.logger.WithValues("CR.GVK", gvk.String(), "CR.GVR", gvr.String())
	logger.Info("Searching for CR instance...")

	cr, err := p.client.Resource(gvr).Namespace(p.sbr.GetNamespace()).Get(bss.ResourceRef, opts)
```


Can we use GVR in both places ( ie ApplicationSelector & BackingServiceSelector in the API )  ? 
sbose78: OK, we should not use `UnsafeGuessKindToResource` https://github.com/kubernetes/apimachinery/blob/master/pkg/api/meta/restmapper.go#L123
sbose78: Ah because the csv has a `Kind`. Damn :)

```
customresourcedefinitions:
    owned:
    - name: apicuritos.apicur.io
      version: v1alpha1
      kind: Apicurito
      displayName: Apicurito CRD
      description: CRD for Apicurito
```
sbose78: @pmacik 

So, this is how the minimal set of fields look like :


```
apiVersion: apps.openshift.io/v1alpha1
kind: ServiceBindingRequest
metadata:
  name: binding-request
  namespace: sbose
spec:
  applicationSelector:
    matchLabels:
      connects-to: postgres
      environment: demo
    group: apps.openshift.io
    version: v1
    resource: deploymentconfigs
  backingServiceSelector:
    group: postgresql.baiju.dev
    kind: Database
    version: v1alpha1
    resourceRef: demo-database
```
sbose78: /lgtm
sbose78: Tested end to end by doing a 

1. `make local`
2. Import app
3. Created a Database CR
3. Created a ServiceBindingRequest
```
apiVersion: apps.openshift.io/v1alpha1
kind: ServiceBindingRequest
metadata:
  name: binding-request
  namespace: sbose
spec:
  applicationSelector:
    matchLabels:
      connects-to: postgres
      environment: demo
    group: apps.openshift.io
    version: v1
    resource: deploymentconfigs
  envVarPrefix: "shoubhik"
  backingServiceSelector:
    group: postgresql.baiju.dev
    kind: Database
    version: v1alpha1
    resourceRef: demo-database
 ```
And verified that 
1. Secret was created with
2. Binding request secret was part of DC

sbose78: /lgtm
sbose78: /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/124#issuecomment-522737077" title="Approved">sbose78</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)~~ [sbose78]

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/deploy/crds/apps_v1alpha1_servicebindingrequest_cr.yaml b/deploy/crds/apps_v1alpha1_servicebindingrequest_cr.yaml
index b5076f37..6afad764 100644
--- a/deploy/crds/apps_v1alpha1_servicebindingrequest_cr.yaml
+++ b/deploy/crds/apps_v1alpha1_servicebindingrequest_cr.yaml
@@ -15,5 +15,5 @@ spec:
       connects-to: postgres
       environment: production
     group: apps
-    kind: Deployment
     version: v1
+    resource: deployments
diff --git a/deploy/crds/apps_v1alpha1_servicebindingrequest_crd.yaml b/deploy/crds/apps_v1alpha1_servicebindingrequest_crd.yaml
index eb08e20a..950e45c9 100644
--- a/deploy/crds/apps_v1alpha1_servicebindingrequest_crd.yaml
+++ b/deploy/crds/apps_v1alpha1_servicebindingrequest_crd.yaml
@@ -30,38 +30,27 @@ spec:
         spec:
           properties:
             applicationSelector:
-              description: "ApplicationSelector is used to identify the application
-                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\tmatchLabels:
-                \t\t\tconnects-to: postgres \t\t\tenvironment: stage"
+              description: ApplicationSelector is used to identify the application
+                connecting to the backing service operator.
               properties:
                 group:
                   type: string
-                kind:
-                  type: string
                 matchLabels:
                   additionalProperties:
                     type: string
                   type: object
+                resource:
+                  type: string
                 version:
                   type: string
               required:
               - matchLabels
               - version
-              - kind
+              - resource
               type: object
             backingServiceSelector:
-              description: "BackingServiceSelector is used to identify the backing
-                service operator.  Refer: 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).  Example 1: \tbackingServiceSelector:
-                \t\tresourceKind: databases.example.org      resourceRef: mysql-database
-                Example 2: \tbackingServiceSelector: \t\tresourceKind: databases.example.org
-                \t\tresourceVersion: v1alpha1      resourceRef: mysql-database"
+              description: BackingServiceSelector is used to identify the backing
+                service operator.
               properties:
                 group:
                   type: string
@@ -96,7 +85,6 @@ spec:
               type: array
             bindingStatus:
               description: BindingStatus is the status of the service binding request.
-                Possible values are Success, Failure, InProgress.
               type: string
             secret:
               description: Secret is the name of the intermediate secret
diff --git a/go.sum b/go.sum
index 60022339..969e61d6 100644
--- a/go.sum
+++ b/go.sum
@@ -312,9 +312,6 @@ github.com/operator-framework/operator-lifecycle-manager v3.11.0+incompatible h1
 github.com/operator-framework/operator-lifecycle-manager v3.11.0+incompatible/go.mod h1:Ma5ZXd4S1vmMyewWlF7aO8CZiokR7Sd8dhSfkGkNU4U=
 github.com/operator-framework/operator-registry v1.0.1/go.mod h1:1xEdZjjUg2hPEd52LG3YQ0jtwiwEGdm98S1TH5P4RAA=
 github.com/operator-framework/operator-registry v1.0.4/go.mod h1:hve6YwcjM2nGVlscLtNsp9sIIBkNZo6jlJgzWw7vP9s=
-github.com/operator-framework/operator-sdk v0.8.1 h1:TDnWWkYpYuuo53ftRVEsAj0xy7IutkpiUlTsHqNeyiU=
-github.com/operator-framework/operator-sdk v0.8.1/go.mod h1:iVyukRkam5JZa8AnjYf+/G3rk7JI1+M6GsU0sq0B9NA=
-github.com/operator-framework/operator-sdk v0.8.2-0.20190522220659-031d71ef8154/go.mod h1:iVyukRkam5JZa8AnjYf+/G3rk7JI1+M6GsU0sq0B9NA=
 github.com/operator-framework/operator-sdk v0.10.0 h1:k2yovBNxaya06yIkJ1e6lNsqiWjhS32G+d2LUdjuu/E=
 github.com/operator-framework/operator-sdk v0.10.0/go.mod h1:7eW7ldXmvenehIMVdO2zCdERf/828Mrftq4u7GS0I68=
 github.com/pborman/uuid v0.0.0-20180906182336-adf5a7427709 h1:zNBQb37RGLmJybyMcs983HfUfpkw9OTFD9tbBfAViHE=
diff --git a/pkg/apis/apps/v1alpha1/servicebindingrequest_types.go b/pkg/apis/apps/v1alpha1/servicebindingrequest_types.go
index 24a9a5c3..12a4fab4 100644
--- a/pkg/apis/apps/v1alpha1/servicebindingrequest_types.go
+++ b/pkg/apis/apps/v1alpha1/servicebindingrequest_types.go
@@ -21,76 +21,40 @@ type ServiceBindingRequestSpec struct {
 	EnvVarPrefix string `json:"envVarPrefix,omitempty"`
 
 	// BackingServiceSelector is used to identify the backing service operator.
-	//
-	// Refer: 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).
-	//
-	// Example 1:
-	//	backingServiceSelector:
-	//		resourceKind: databases.example.org
-	//      resourceRef: mysql-database
-	// Example 2:
-	//	backingServiceSelector:
-	//		resourceKind: databases.example.org
-	//		resourceVersion: v1alpha1
-	//      resourceRef: mysql-database
 	BackingServiceSelector BackingServiceSelector `json:"backingServiceSelector"`
 
 	// ApplicationSelector is used to identify the application connecting to the
 	// backing service operator.
-	// Example 1:
-	//	applicationSelector:
-	//		matchLabels:
-	//			connects-to: postgres
-	//			environment: stage
-	//		resourceKind: Deployment
-	// Example 2:
-	//	applicationSelector:
-	//		matchLabels:
-	//			connects-to: postgres
-	//			environment: stage
 	ApplicationSelector ApplicationSelector `json:"applicationSelector"`
 }
 
+// ServiceBindingRequestStatus defines the observed state of ServiceBindingRequest
+// +k8s:openapi-gen=true
+type ServiceBindingRequestStatus struct {
+	// BindingStatus is the status of the service binding request.
+	BindingStatus string `json:"bindingStatus,omitempty"`
+	// Secret is the name of the intermediate secret
+	Secret string `json:"secret,omitempty"`
+	// ApplicationObjects contains all the application objects filtered by label
+	ApplicationObjects []string `json:"applicationObjects,omitempty"`
+}
+
 // BackingServiceSelector defines the selector based on resource name, version, and resource kind
 // +k8s:openapi-gen=true
 type BackingServiceSelector struct {
-	Group       *string `json:"group,omitempty"`
-	Version     string  `json:"version"`
-	Kind        string  `json:"kind"`
-	ResourceRef string  `json:"resourceRef"`
+	Group       string `json:"group,omitempty"`
+	Version     string `json:"version"`
+	Kind        string `json:"kind"`
+	ResourceRef string `json:"resourceRef"`
 }
 
-// ApplicationSelector defines the selector based on labels and resource kind
+// ApplicationSelector defines the selector based on labels and GVR
 // +k8s:openapi-gen=true
 type ApplicationSelector struct {
 	MatchLabels map[string]string `json:"matchLabels"`
-	Group       *string           `json:"group,omitempty"`
+	Group       string            `json:"group,omitempty"`
 	Version     string            `json:"version"`
-	Kind        string            `json:"kind"`
-}
-
-type BindingStatus string
-
-const (
-	BindingSuccess    BindingStatus = "success"
-	BindingInProgress BindingStatus = "inProgress"
-	BindingFail       BindingStatus = "fail"
-)
-
-// ServiceBindingRequestStatus defines the observed state of ServiceBindingRequest
-// +k8s:openapi-gen=true
-type ServiceBindingRequestStatus struct {
-	// BindingStatus is the status of the service binding request. Possible values are Success, Failure, InProgress.
-	BindingStatus BindingStatus `json:"bindingStatus,omitempty"`
-	// Secret is the name of the intermediate secret
-	Secret string `json:"secret,omitempty"`
-	// ApplicationObjects contains all the application objects filtered by label
-	ApplicationObjects []string `json:"applicationObjects,omitempty"`
+	Resource    string            `json:"resource"`
 }
 
 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
@@ -112,7 +76,8 @@ type ServiceBindingRequest struct {
 type ServiceBindingRequestList struct {
 	metav1.TypeMeta `json:",inline"`
 	metav1.ListMeta `json:"metadata,omitempty"`
-	Items           []ServiceBindingRequest `json:"items"`
+
+	Items []ServiceBindingRequest `json:"items"`
 }
 
 func init() {
diff --git a/pkg/apis/apps/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/apps/v1alpha1/zz_generated.deepcopy.go
index eeb7eb4f..2223085a 100644
--- a/pkg/apis/apps/v1alpha1/zz_generated.deepcopy.go
+++ b/pkg/apis/apps/v1alpha1/zz_generated.deepcopy.go
@@ -18,11 +18,6 @@ func (in *ApplicationSelector) DeepCopyInto(out *ApplicationSelector) {
 			(*out)[key] = val
 		}
 	}
-	if in.Group != nil {
-		in, out := &in.Group, &out.Group
-		*out = new(string)
-		**out = **in
-	}
 	return
 }
 
@@ -39,11 +34,6 @@ func (in *ApplicationSelector) DeepCopy() *ApplicationSelector {
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *BackingServiceSelector) DeepCopyInto(out *BackingServiceSelector) {
 	*out = *in
-	if in.Group != nil {
-		in, out := &in.Group, &out.Group
-		*out = new(string)
-		**out = **in
-	}
 	return
 }
 
@@ -121,7 +111,7 @@ func (in *ServiceBindingRequestList) DeepCopyObject() runtime.Object {
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *ServiceBindingRequestSpec) DeepCopyInto(out *ServiceBindingRequestSpec) {
 	*out = *in
-	in.BackingServiceSelector.DeepCopyInto(&out.BackingServiceSelector)
+	out.BackingServiceSelector = in.BackingServiceSelector
 	in.ApplicationSelector.DeepCopyInto(&out.ApplicationSelector)
 	return
 }
diff --git a/pkg/apis/apps/v1alpha1/zz_generated.openapi.go b/pkg/apis/apps/v1alpha1/zz_generated.openapi.go
index 414b337d..239e5367 100644
--- a/pkg/apis/apps/v1alpha1/zz_generated.openapi.go
+++ b/pkg/apis/apps/v1alpha1/zz_generated.openapi.go
@@ -11,11 +11,11 @@ import (
 
 func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition {
 	return map[string]common.OpenAPIDefinition{
-		"./pkg/apis/apps/v1alpha1.ApplicationSelector":         schema_pkg_apis_apps_v1alpha1_ApplicationSelector(ref),
-		"./pkg/apis/apps/v1alpha1.BackingServiceSelector":      schema_pkg_apis_apps_v1alpha1_BackingServiceSelector(ref),
-		"./pkg/apis/apps/v1alpha1.ServiceBindingRequest":       schema_pkg_apis_apps_v1alpha1_ServiceBindingRequest(ref),
-		"./pkg/apis/apps/v1alpha1.ServiceBindingRequestSpec":   schema_pkg_apis_apps_v1alpha1_ServiceBindingRequestSpec(ref),
-		"./pkg/apis/apps/v1alpha1.ServiceBindingRequestStatus": schema_pkg_apis_apps_v1alpha1_ServiceBindingRequestStatus(ref),
+		"github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1.ApplicationSelector":         schema_pkg_apis_apps_v1alpha1_ApplicationSelector(ref),
+		"github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1.BackingServiceSelector":      schema_pkg_apis_apps_v1alpha1_BackingServiceSelector(ref),
+		"github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1.ServiceBindingRequest":       schema_pkg_apis_apps_v1alpha1_ServiceBindingRequest(ref),
+		"github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1.ServiceBindingRequestSpec":   schema_pkg_apis_apps_v1alpha1_ServiceBindingRequestSpec(ref),
+		"github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1.ServiceBindingRequestStatus": schema_pkg_apis_apps_v1alpha1_ServiceBindingRequestStatus(ref),
 	}
 }
 
@@ -50,14 +50,14 @@ func schema_pkg_apis_apps_v1alpha1_ApplicationSelector(ref common.ReferenceCallb
 							Format: "",
 						},
 					},
-					"kind": {
+					"resource": {
 						SchemaProps: spec.SchemaProps{
 							Type:   []string{"string"},
 							Format: "",
 						},
 					},
 				},
-				Required: []string{"matchLabels", "version", "kind"},
+				Required: []string{"matchLabels", "version", "resource"},
 			},
 		},
 		Dependencies: []string{},
@@ -129,19 +129,19 @@ func schema_pkg_apis_apps_v1alpha1_ServiceBindingRequest(ref common.ReferenceCal
 					},
 					"spec": {
 						SchemaProps: spec.SchemaProps{
-							Ref: ref("./pkg/apis/apps/v1alpha1.ServiceBindingRequestSpec"),
+							Ref: ref("github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1.ServiceBindingRequestSpec"),
 						},
 					},
 					"status": {
 						SchemaProps: spec.SchemaProps{
-							Ref: ref("./pkg/apis/apps/v1alpha1.ServiceBindingRequestStatus"),
+							Ref: ref("github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1.ServiceBindingRequestStatus"),
 						},
 					},
 				},
 			},
 		},
 		Dependencies: []string{
-			"./pkg/apis/apps/v1alpha1.ServiceBindingRequestSpec", "./pkg/apis/apps/v1alpha1.ServiceBindingRequestStatus", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"},
+			"github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1.ServiceBindingRequestSpec", "github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1.ServiceBindingRequestStatus", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"},
 	}
 }
 
@@ -167,14 +167,14 @@ func schema_pkg_apis_apps_v1alpha1_ServiceBindingRequestSpec(ref common.Referenc
 					},
 					"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\tresourceKind: databases.example.org\n     resourceRef: mysql-database\nExample 2:\n\tbackingServiceSelector:\n\t\tresourceKind: databases.example.org\n\t\tresourceVersion: v1alpha1\n     resourceRef: mysql-database",
-							Ref:         ref("./pkg/apis/apps/v1alpha1.BackingServiceSelector"),
+							Description: "BackingServiceSelector is used to identify the backing service operator.",
+							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\tmatchLabels:\n\t\t\tconnects-to: postgres\n\t\t\tenvironment: stage",
-							Ref:         ref("./pkg/apis/apps/v1alpha1.ApplicationSelector"),
+							Description: "ApplicationSelector is used to identify the application connecting to the backing service operator.",
+							Ref:         ref("github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1.ApplicationSelector"),
 						},
 					},
 				},
@@ -182,7 +182,7 @@ func schema_pkg_apis_apps_v1alpha1_ServiceBindingRequestSpec(ref common.Referenc
 			},
 		},
 		Dependencies: []string{
-			"./pkg/apis/apps/v1alpha1.ApplicationSelector", "./pkg/apis/apps/v1alpha1.BackingServiceSelector"},
+			"github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1.ApplicationSelector", "github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1.BackingServiceSelector"},
 	}
 }
 
@@ -194,7 +194,7 @@ func schema_pkg_apis_apps_v1alpha1_ServiceBindingRequestStatus(ref common.Refere
 				Properties: map[string]spec.Schema{
 					"bindingStatus": {
 						SchemaProps: spec.SchemaProps{
-							Description: "BindingStatus is the status of the service binding request. Possible values are Success, Failure, InProgress.",
+							Description: "BindingStatus is the status of the service binding request.",
 							Type:        []string{"string"},
 							Format:      "",
 						},
diff --git a/pkg/controller/servicebindingrequest/binder.go b/pkg/controller/servicebindingrequest/binder.go
new file mode 100644
index 00000000..695a9dfc
--- /dev/null
+++ b/pkg/controller/servicebindingrequest/binder.go
@@ -0,0 +1,280 @@
+package servicebindingrequest
+
+import (
+	"context"
+	"fmt"
+
+	"github.com/go-logr/logr"
+	corev1 "k8s.io/api/core/v1"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	ustrv1 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+	"k8s.io/apimachinery/pkg/labels"
+	"k8s.io/apimachinery/pkg/runtime"
+	"k8s.io/apimachinery/pkg/runtime/schema"
+	"k8s.io/client-go/dynamic"
+	"sigs.k8s.io/controller-runtime/pkg/client"
+	logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
+
+	v1alpha1 "github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1"
+)
+
+// Binder executes the "binding" act of updating different application kinds to use intermediary
+// secret. Those secrets should be offered as environment variables.
+type Binder struct {
+	ctx        context.Context                 // request context
+	client     client.Client                   // kubernetes API client
+	dynClient  dynamic.Interface               // kubernetes dynamic api client
+	sbr        *v1alpha1.ServiceBindingRequest // instantiated service binding request
+	volumeKeys []string                        // list of key names used in volume mounts
+	logger     logr.Logger                     // logger instance
+}
+
+// search objects based in Kind/APIVersion, which contain the labels defined in ApplicationSelector.
+func (b *Binder) search() (*ustrv1.UnstructuredList, error) {
+	ns := b.sbr.GetNamespace()
+	gvr := schema.GroupVersionResource{
+		Group:    b.sbr.Spec.ApplicationSelector.Group,
+		Version:  b.sbr.Spec.ApplicationSelector.Version,
+		Resource: b.sbr.Spec.ApplicationSelector.Resource,
+	}
+	matchLabels := b.sbr.Spec.ApplicationSelector.MatchLabels
+	opts := metav1.ListOptions{
+		LabelSelector: labels.Set(matchLabels).String(),
+	}
+
+	return b.dynClient.Resource(gvr).Namespace(ns).List(opts)
+}
+
+// updateSpecVolumes execute the inspection and update "volumes" entries in informed spec.
+func (b *Binder) updateSpecVolumes(
+	logger logr.Logger,
+	obj *ustrv1.Unstructured,
+) (*ustrv1.Unstructured, error) {
+	volumesPath := []string{"spec", "template", "spec", "volumes"}
+	logger = logger.WithValues("Volumes.NestedPath", volumesPath)
+
+	logger.Info("Reading volumes definitions...")
+	volumes, _, err := ustrv1.NestedSlice(obj.Object, volumesPath...)
+	if err != nil {
+		return nil, err
+	}
+	logger.WithValues("Volumes", len(volumes)).Info("Amount of volumes in spec.")
+
+	volumes, err = b.updateVolumes(logger, volumes)
+	if err != nil {
+		return nil, err
+	}
+	if err = ustrv1.SetNestedSlice(obj.Object, volumes, volumesPath...); err != nil {
+		return nil, err
+	}
+
+	return obj, nil
+}
+
+// updateVolumes inspect informed list assuming as []corev1.Volume, and if binding volume is already
+// defined just return the same list, otherwise, appending the binding volume.
+func (b *Binder) updateVolumes(logger logr.Logger, volumes []interface{}) ([]interface{}, error) {
+	name := b.sbr.GetName()
+
+	logger.Info("Checking if binding volume is already defined...")
+	for _, v := range volumes {
+		volume := v.(corev1.Volume)
+		if name == volume.Name {
+			logger.Info("Volume is already defined!")
+			return volumes, nil
+		}
+	}
+
+	items := []corev1.KeyToPath{}
+	for _, k := range b.volumeKeys {
+		items = append(items, corev1.KeyToPath{Key: k, Path: k})
+	}
+
+	logger.WithValues("Items", items).Info("Appending new volume with items.")
+	bindVolume := corev1.Volume{
+		Name: name,
+		VolumeSource: corev1.VolumeSource{
+			Secret: &corev1.SecretVolumeSource{
+				SecretName: name,
+				Items:      items,
+			},
+		},
+	}
+
+	// making sure tranforming it back to unstructured before returning
+	u, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&bindVolume)
+	if err != nil {
+		return nil, err
+	}
+	return append(volumes, u), nil
+}
+
+// updateSpecContainers extract containers from object, and trigger update.
+func (b *Binder) updateSpecContainers(
+	logger logr.Logger,
+	obj *ustrv1.Unstructured,
+) (*ustrv1.Unstructured, error) {
+	containersPath := []string{"spec", "template", "spec", "containers"}
+	logger = logger.WithValues("Containers.NestedPath", containersPath)
+
+	containers, found, err := ustrv1.NestedSlice(obj.Object, containersPath...)
+	if err != nil {
+		return nil, err
+	}
+	if !found {
+		err = fmt.Errorf("unable to find '%#v' in object kind '%s'",
+			containersPath, obj.GetKind())
+		logger.Error(err, "is this definition supported by this operator?")
+		return nil, err
+	}
+
+	if containers, err = b.updateContainers(logger, containers); err != nil {
+		return nil, err
+	}
+	if err = ustrv1.SetNestedSlice(obj.Object, containers, containersPath...); err != nil {
+		return nil, err
+	}
+	return obj, nil
+}
+
+// updateContainers execute the update command per container found.
+func (b *Binder) updateContainers(
+	logger logr.Logger,
+	containers []interface{},
+) ([]interface{}, error) {
+	var err error
+
+	for i, container := range containers {
+		logger := logger.WithValues("Obj.Container.Number", i)
+		logger.Info("Inspecting container...")
+
+		containers[i], err = b.updateContainer(container)
+		if err != nil {
+			logger.Error(err, "during container update.")
+			return nil, err
+		}
+	}
+
+	return containers, nil
+}
+
+// appendEnvFrom based on secret name and list of EnvFromSource instances, making sure secret is
+// part of the list or appended.
+func (b *Binder) appendEnvFrom(envList []corev1.EnvFromSource, secret string) []corev1.EnvFromSource {
+	for _, env := range envList {
+		if env.SecretRef.Name == secret {
+			b.logger.Info("Directive 'envFrom' is already present!")
+			// secret name is already referenced
+			return envList
+		}
+	}
+
+	b.logger.Info("Adding 'envFrom' directive...")
+	return append(envList, corev1.EnvFromSource{
+		SecretRef: &corev1.SecretEnvSource{
+			LocalObjectReference: corev1.LocalObjectReference{
+				Name: secret,
+			},
+		},
+	})
+}
+
+// updateContainer execute the update of a single container.
+func (b *Binder) updateContainer(container interface{}) (map[string]interface{}, error) {
+	c := corev1.Container{}
+	u := container.(map[string]interface{})
+	err := runtime.DefaultUnstructuredConverter.FromUnstructured(u, &c)
+	if err != nil {
+		return nil, err
+	}
+	// effectively binding the application with intermediary secret
+	c.EnvFrom = b.appendEnvFrom(c.EnvFrom, b.sbr.GetName())
+	if len(b.volumeKeys) > 0 {
+		// and adding volume mount entries
+		c.VolumeMounts = b.appendVolumeMounts(c.VolumeMounts)
+	}
+	return runtime.DefaultUnstructuredConverter.ToUnstructured(&c)
+}
+
+// appendVolumeMounts append the binding volume in the template level.
+func (b *Binder) appendVolumeMounts(volumeMounts []corev1.VolumeMount) []corev1.VolumeMount {
+	name := b.sbr.GetName()
+	mountPath := b.sbr.Spec.MountPathPrefix
+	if mountPath == "" {
+		mountPath = "/var/data"
+	}
+
+	for _, v := range volumeMounts {
+		if name == v.Name {
+			return volumeMounts
+		}
+	}
+
+	return append(volumeMounts, corev1.VolumeMount{
+		Name:      name,
+		MountPath: mountPath,
+	})
+}
+
+// update the list of objects informed as unstructured, looking for "containers" entry. This method
+// loops over each container to inspect "envFrom" and append the intermediary secret, having the same
+// name than original ServiceBindingRequest.
+func (b *Binder) update(objList *ustrv1.UnstructuredList) ([]string, error) {
+	var updatedObjectNames []string
+
+	for _, obj := range objList.Items {
+		name := obj.GetName()
+		logger := b.logger.WithValues("Obj.Name", name, "Obj.Kind", obj.GetKind())
+		logger.Info("Inspecting object...")
+
+		updatedObj, err := b.updateSpecContainers(logger, &obj)
+		if err != nil {
+			return nil, err
+		}
+
+		if len(b.volumeKeys) > 0 {
+			updatedObj, err = b.updateSpecVolumes(logger, &obj)
+			if err != nil {
+				return nil, err
+			}
+		}
+
+		logger.Info("Updating object...")
+		if err := b.client.Update(b.ctx, updatedObj); err != nil {
+			return nil, err
+		}
+
+		// recording object as updated
+		updatedObjectNames = append(updatedObjectNames, name)
+	}
+
+	return updatedObjectNames, nil
+}
+
+// Bind resources to intermediary secret, by searching informed ResourceKind containing the labels
+// in ApplicationSelector, and then updating spec.
+func (b *Binder) Bind() ([]string, error) {
+	objList, err := b.search()
+	if err != nil {
+		return nil, err
+	}
+	return b.update(objList)
+}
+
+// NewBinder returns a new Binder instance.
+func NewBinder(
+	ctx context.Context,
+	client client.Client,
+	dynClient dynamic.Interface,
+	sbr *v1alpha1.ServiceBindingRequest,
+	volumeKeys []string,
+) *Binder {
+	return &Binder{
+		ctx:        ctx,
+		client:     client,
+		dynClient:  dynClient,
+		sbr:        sbr,
+		volumeKeys: volumeKeys,
+		logger:     logf.Log.WithName("binder"),
+	}
+}
diff --git a/pkg/controller/servicebindingrequest/common.go b/pkg/controller/servicebindingrequest/common.go
index 18d346e7..d6e344f2 100644
--- a/pkg/controller/servicebindingrequest/common.go
+++ b/pkg/controller/servicebindingrequest/common.go
@@ -1,21 +1,31 @@
 package servicebindingrequest
 
 import (
+	"time"
+
 	"k8s.io/apimachinery/pkg/api/errors"
 	"sigs.k8s.io/controller-runtime/pkg/reconcile"
 )
 
 // RequeueOnNotFound inspect error, if not-found then returns Requeue, otherwise expose the error.
-func RequeueOnNotFound(err error) (reconcile.Result, error) {
+func RequeueOnNotFound(err error, requeueAfter int64) (reconcile.Result, error) {
 	if errors.IsNotFound(err) {
-		return Requeue()
+		return Requeue(nil, requeueAfter)
 	}
+	return Requeue(err, requeueAfter)
+}
+
+// RequeueError simply requeue exposing the error.
+func RequeueError(err error) (reconcile.Result, error) {
 	return reconcile.Result{Requeue: true}, err
 }
 
 // Requeue based on empty result and no error informed upstream, request will be requeued.
-func Requeue() (reconcile.Result, error) {
-	return reconcile.Result{Requeue: true}, nil
+func Requeue(err error, requeueAfter int64) (reconcile.Result, error) {
+	return reconcile.Result{
+		RequeueAfter: time.Duration(requeueAfter) * time.Second,
+		Requeue:      true,
+	}, err
 }
 
 // Done when no error is informed and request is not set for requeue.
diff --git a/pkg/controller/servicebindingrequest/controller.go b/pkg/controller/servicebindingrequest/controller.go
index fcf01934..719dd59f 100644
--- a/pkg/controller/servicebindingrequest/controller.go
+++ b/pkg/controller/servicebindingrequest/controller.go
@@ -1,6 +1,7 @@
 package servicebindingrequest
 
 import (
+	"k8s.io/client-go/dynamic"
 	"sigs.k8s.io/controller-runtime/pkg/controller"
 	"sigs.k8s.io/controller-runtime/pkg/event"
 	"sigs.k8s.io/controller-runtime/pkg/handler"
@@ -15,12 +16,20 @@ import (
 // Add creates a new ServiceBindingRequest Controller and adds it to the Manager. The Manager will
 // set fields on the Controller and Start it when the Manager is Started.
 func Add(mgr manager.Manager) error {
-	return add(mgr, newReconciler(mgr))
+	r, err := newReconciler(mgr)
+	if err != nil {
+		return err
+	}
+	return add(mgr, r)
 }
 
 // newReconciler returns a new reconcile.Reconciler
-func newReconciler(mgr manager.Manager) reconcile.Reconciler {
-	return &Reconciler{client: mgr.GetClient(), scheme: mgr.GetScheme()}
+func newReconciler(mgr manager.Manager) (reconcile.Reconciler, error) {
+	dynClient, err := dynamic.NewForConfig(mgr.GetConfig())
+	if err != nil {
+		return nil, err
+	}
+	return &Reconciler{client: mgr.GetClient(), dynClient: dynClient, scheme: mgr.GetScheme()}, nil
 }
 
 // add adds a new Controller to mgr with r as the reconcile.Reconciler
@@ -43,7 +52,7 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
 	}
 
 	// Watch for changes to primary resource ServiceBindingRequest
-	err = c.Watch(&source.Kind{Type: &v1alpha1.ServiceBindingRequest{}}, &handler.EnqueueRequestForObject{},pred)
+	err = c.Watch(&source.Kind{Type: &v1alpha1.ServiceBindingRequest{}}, &handler.EnqueueRequestForObject{}, pred)
 	if err != nil {
 		return err
 	}
diff --git a/pkg/controller/servicebindingrequest/planner.go b/pkg/controller/servicebindingrequest/planner.go
new file mode 100644
index 00000000..b06a0020
--- /dev/null
+++ b/pkg/controller/servicebindingrequest/planner.go
@@ -0,0 +1,177 @@
+package servicebindingrequest
+
+import (
+	"context"
+	"strings"
+
+	"github.com/go-logr/logr"
+	olmv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
+	"k8s.io/apimachinery/pkg/api/errors"
+	"k8s.io/apimachinery/pkg/api/meta"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	ustrv1 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+	"k8s.io/apimachinery/pkg/runtime"
+	"k8s.io/apimachinery/pkg/runtime/schema"
+	"k8s.io/client-go/dynamic"
+	logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
+
+	v1alpha1 "github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1"
+)
+
+// Planner plans resources needed to bind a given backend service, using OperatorLifecycleManager
+// standards and CustomResourceDefinitionDescription data to understand which attributes are needed.
+type Planner struct {
+	ctx    context.Context                 // request context
+	client dynamic.Interface               // kubernetes dynamic api client
+	sbr    *v1alpha1.ServiceBindingRequest // instantiated service binding request
+	logger logr.Logger                     // logger instance
+}
+
+// Plan outcome, after executing planner.
+type Plan struct {
+	Ns             string                      // namespace name
+	Name           string                      // plan name, same than ServiceBindingRequest
+	CRDDescription *olmv1alpha1.CRDDescription // custom resource definition description
+	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) {
+	csvResourceName := "clusterserviceversions"
+	ns := p.sbr.GetNamespace()
+	gvr := schema.GroupVersionResource{
+		Group:    olmv1alpha1.GroupName,
+		Version:  olmv1alpha1.GroupVersion,
+		Resource: csvResourceName,
+	}
+
+	logger := p.logger.WithValues(
+		"CSV.Group", gvr.Group,
+		"CSV.Version", gvr.Version,
+		"CSV.Resource", gvr.Resource,
+		"CSV.Namespace", ns,
+	)
+	logger.Info("Searching for ClusterServiceVersion...")
+
+	// FIXME: usually the CSV resources are in the "openshift-operator-lifecycle-manager" namespace;
+	uList, err := p.client.Resource(gvr).Namespace(ns).List(metav1.ListOptions{})
+	if err != nil {
+		logger.Error(err, "during search for CSV")
+		return nil, err
+	}
+	logger.WithValues("CSV.List", len(uList.Items)).Info("CSV resources found...")
+
+	for _, u := range uList.Items {
+		logger = logger.WithValues("CSV.Name", u.GetName(), "CSV.APIVersion", u.GetAPIVersion())
+
+		logger.Info("Converting unstructured back to original resource type...")
+		csv := olmv1alpha1.ClusterServiceVersion{}
+		err = runtime.DefaultUnstructuredConverter.FromUnstructured(u.Object, &csv)
+		if err != nil {
+			logger.Error(err, "during unstructured conversion to CSV list object")
+			return nil, err
+		}
+
+		logger.Info("Searching for CRDDescription matching BackingServiceSelector...")
+		crdDescription := p.extractCRDDescription(logger, &csv)
+		if crdDescription != nil {
+			return crdDescription, nil
+		}
+	}
+
+	p.logger.Info("Warning: not able to find a CRD description!")
+	return nil, errors.NewNotFound(olmv1alpha1.Resource(csvResourceName), "")
+}
+
+// extractCRDDescription auxiliary method to identify the CRD-Description object the
+// BackingServiceSelector is looking for, otherwise returns nil.
+func (p *Planner) extractCRDDescription(
+	logger logr.Logger,
+	csv *olmv1alpha1.ClusterServiceVersion,
+) *olmv1alpha1.CRDDescription {
+	bss := p.sbr.Spec.BackingServiceSelector
+	logger = logger.WithValues(
+		"BackingServiceSelector.Group", bss.Group,
+		"BackingServiceSelector.Version", bss.Version,
+		"BackingServiceSelector.Kind", bss.Kind,
+	)
+
+	for _, crd := range csv.Spec.CustomResourceDefinitions.Owned {
+		logger = logger.WithValues(
+			"CRDDescription.Name", crd.Name,
+			"CRDDescription.Version", crd.Version,
+			"CRDDescription.Kind", crd.Kind,
+		)
+		logger.Info("Inspecting CustomResourceDefinitionDescription object...")
+
+		// checking for suffix since is expected to have object type as prefix
+		if !strings.EqualFold(strings.ToLower(crd.Kind), strings.ToLower(bss.Kind)) {
+			continue
+		}
+		if crd.Version != "" && strings.ToLower(bss.Version) != strings.ToLower(crd.Version) {
+			continue
+		}
+
+		logger.Info("CRD matches BackingServiceSelector!")
+		return &crd
+	}
+
+	return nil
+}
+
+// searchCR based on a CustomResourceDefinitionDescription and name, search for the object.
+func (p *Planner) searchCR(kind string) (*ustrv1.Unstructured, error) {
+	bss := p.sbr.Spec.BackingServiceSelector
+	gvk := schema.GroupVersionKind{Group: bss.Group, Version: bss.Version, Kind: bss.Kind}
+	gvr, _ := meta.UnsafeGuessKindToResource(gvk)
+	opts := metav1.GetOptions{}
+
+	logger := p.logger.WithValues("CR.GVK", gvk.String(), "CR.GVR", gvr.String())
+	logger.Info("Searching for CR instance...")
+
+	cr, err := p.client.Resource(gvr).Namespace(p.sbr.GetNamespace()).Get(bss.ResourceRef, opts)
+	if err != nil {
+		logger.Error(err, "during reading CR")
+		return nil, err
+	}
+
+	logger.WithValues("CR.Name", cr.GetName()).Info("Found target CR!")
+	return cr, nil
+}
+
+// Plan by retrieving the necessary resources related to binding a service backend.
+func (p *Planner) Plan() (*Plan, error) {
+	// find the CRD description object
+	crdDescription, err := p.searchCRDDescription()
+	if err != nil {
+		return nil, err
+	}
+
+	// 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.sbr.GetNamespace(),
+		Name:           p.sbr.GetName(),
+		CRDDescription: crdDescription,
+		CR:             cr,
+	}, nil
+}
+
+// NewPlanner instantiate Planner type.
+func NewPlanner(
+	ctx context.Context,
+	client dynamic.Interface,
+	sbr *v1alpha1.ServiceBindingRequest,
+) *Planner {
+	return &Planner{
+		ctx:    ctx,
+		client: client,
+		sbr:    sbr,
+		logger: logf.Log.WithName("plan"),
+	}
+}
diff --git a/pkg/controller/servicebindingrequest/planner/planner.go b/pkg/controller/servicebindingrequest/planner/planner.go
deleted file mode 100644
index 6e17938e..00000000
--- a/pkg/controller/servicebindingrequest/planner/planner.go
+++ /dev/null
@@ -1,141 +0,0 @@
-package planner
-
-import (
-	"context"
-	"fmt"
-	"strings"
-
-	"github.com/redhat-developer/service-binding-operator/pkg/resourcepoll"
-
-	"github.com/go-logr/logr"
-	olmv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
-	extv1beta1 "k8s.io/api/extensions/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"
-
-	v1alpha1 "github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1"
-)
-
-// Planner plans resources needed to bind a given backend service, using OperatorLifecycleManager
-// standards and CustomResourceDefinitionDescription data to understand which attributes are needed.
-type Planner struct {
-	ctx    context.Context                 // request context
-	client client.Client                   // Kubernetes API client
-	ns     string                          // namespace name
-	sbr    *v1alpha1.ServiceBindingRequest // instantiated service binding request
-	logger logr.Logger                     // logger instance
-}
-
-// Plan outcome, after executing planner.
-type Plan struct {
-	Ns             string                      // namespace name
-	Name           string                      // plan name, same than ServiceBindingRequest
-	CRDDescription *olmv1alpha1.CRDDescription // custom resource definition description
-	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 resourceKind = strings.ToLower(p.sbr.Spec.BackingServiceSelector.Kind)
-	var resourceVersion = strings.ToLower(p.sbr.Spec.BackingServiceSelector.Version)
-	var err error
-
-	logger := p.logger.WithValues(
-		"BackingServiceSelector.ResourceKind", resourceKind,
-		"BackingServiceSelector.ResourceVersion", resourceVersion)
-	logger.Info("Looking for a CSV based on backing-selector")
-	csvList := &olmv1alpha1.ClusterServiceVersionList{}
-
-	// list of cluster service version in the namespace matching backing-selector
-	if err = p.client.List(p.ctx, &client.ListOptions{Namespace: p.ns}, csvList); err != nil {
-		return nil, err
-	}
-
-	for _, csv := range csvList.Items {
-		logger = logger.WithValues("ClusterServiceVersion.Name", csv.Name)
-		logger.Info("Inspecting CSV...")
-
-		for _, crd := range csv.Spec.CustomResourceDefinitions.Owned {
-			logger = logger.WithValues(
-				"CRDDescription.Name", crd.Name,
-				"CRDDescription.Version", crd.Version,
-				"CRDDescription.Kind", crd.Kind,
-			)
-			logger.Info("Inspecting CustomResourceDefinitionDescription object...")
-
-			// checking for suffix since is expected to have object type as prefix
-			if !strings.EqualFold(strings.ToLower(crd.Kind), resourceKind) {
-				continue
-			}
-			if crd.Version != "" && resourceVersion != strings.ToLower(crd.Version) {
-				continue
-			}
-
-			logger.Info("CRD matches backing-selector!")
-			return &crd, nil
-		}
-	}
-
-	p.logger.Info("Warning: not able to find a CRD description!")
-	return nil, errors.NewNotFound(extv1beta1.Resource("CustomResourceDefinition"), "")
-}
-
-// 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.Group, p.sbr.Spec.BackingServiceSelector.Version)
-	var err error
-
-	p.logger.WithValues("CR.Name", resourceRef, "CR.Kind", kind, "CR.APIVersion", apiVersion).
-		Info("Searching for CR instance...")
-
-	cr := ustrv1.Unstructured{Object: map[string]interface{}{
-		"kind":       kind,
-		"apiVersion": apiVersion,
-	}}
-	namespacedName := types.NamespacedName{Namespace: p.ns, Name: resourceRef}
-
-	err = resourcepoll.WaitUntilResourceFound(p.client, namespacedName, &cr)
-	if err != nil {
-		return nil, err
-	}
-	if err = p.client.Get(p.ctx, namespacedName, &cr); err != nil {
-		return nil, err
-	}
-
-	return &cr, nil
-}
-
-// Plan by retrieving the necessary resources related to binding a service backend.
-func (p *Planner) Plan() (*Plan, error) {
-	// find the CRD description object
-	crdDescription, err := p.searchCRDDescription()
-	if err != nil {
-		return nil, err
-	}
-
-	// 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, CR: cr}, nil
-}
-
-// NewPlanner instantiate Planner type.
-func NewPlanner(
-	ctx context.Context, client client.Client, ns string, sbr *v1alpha1.ServiceBindingRequest,
-) *Planner {
-	return &Planner{
-		ctx:    ctx,
-		client: client,
-		ns:     ns,
-		sbr:    sbr,
-		logger: logf.Log.WithName("plan"),
-	}
-}
diff --git a/pkg/controller/servicebindingrequest/reconciler.go b/pkg/controller/servicebindingrequest/reconciler.go
index 765610f3..a84acab2 100644
--- a/pkg/controller/servicebindingrequest/reconciler.go
+++ b/pkg/controller/servicebindingrequest/reconciler.go
@@ -2,89 +2,66 @@ package servicebindingrequest
 
 import (
 	"context"
-	"strings"
 
-	"github.com/redhat-developer/service-binding-operator/pkg/resourcepoll"
-
-	osappsv1 "github.com/openshift/api/apps/v1"
-	corev1 "k8s.io/api/core/v1"
-	extv1beta1 "k8s.io/api/extensions/v1beta1"
-	"k8s.io/apimachinery/pkg/labels"
 	"k8s.io/apimachinery/pkg/runtime"
+	"k8s.io/client-go/dynamic"
 	"sigs.k8s.io/controller-runtime/pkg/client"
 	"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/pkg/controller/servicebindingrequest/planner"
 )
 
 // Reconciler reconciles a ServiceBindingRequest object
 type Reconciler struct {
-	client client.Client   // kubernetes api client
-	scheme *runtime.Scheme // api scheme
+	client    client.Client     // kubernetes api client
+	dynClient dynamic.Interface // kubernetes dynamic api client
+	scheme    *runtime.Scheme   // api scheme
 }
 
-// appendEnvFrom based on secret name and list of EnvFromSource instances, making sure secret is
-// part of the list or appended.
-func (r *Reconciler) appendEnvFrom(envList []corev1.EnvFromSource, secret string) []corev1.EnvFromSource {
-	for _, env := range envList {
-		if env.SecretRef.Name == secret {
-			// secret name is already referenced
-			return envList
-		}
-	}
+const (
+	// binding is in progress
+	bindingInProgress = "inProgress"
+	// binding has succeeded
+	bindingSuccess = "success"
+	// binding has failed
+	bindingFail = "fail"
+	// time in seconds to wait before requeuing requests
+	requeueAfter int64 = 45
+)
 
-	return append(envList, corev1.EnvFromSource{
-		SecretRef: &corev1.SecretEnvSource{
-			LocalObjectReference: corev1.LocalObjectReference{
-				Name: secret,
-			},
-		},
-	})
-}
+// setSecretName update the CR status field to "in progress", and setting secret name.
+func (r *Reconciler) setSecretName(
+	ctx context.Context,
+	instance *v1alpha1.ServiceBindingRequest,
+	name string,
+) error {
+	instance.Status.BindingStatus = bindingInProgress
+	instance.Status.Secret = name
+	return r.client.Status().Update(ctx, instance)
 
-// appendVolumeMounts append volume mounts pointing to volumes created using secret
-func (r *Reconciler) appendVolumeMounts(vmList []corev1.VolumeMount, volumeName, mountPath string) []corev1.VolumeMount {
-	for _, vm := range vmList {
-		if vm.Name == volumeName {
-			// volume name already referenced
-			return vmList
-		}
-	}
-
-	return append(vmList, corev1.VolumeMount{
-		Name:      volumeName,
-		MountPath: mountPath,
-	})
 }
 
-// appendVolumes append volumes
-func (r *Reconciler) appendVolumes(volumeList []corev1.Volume, data map[string][]byte, volumeKeys []string, volumeName, secretName string) []corev1.Volume {
-	for _, vm := range volumeList {
-		if vm.Name == volumeName {
-			// volume name already referenced
-			return volumeList
-		}
-	}
-
-	items := []corev1.KeyToPath{}
-	for _, k := range volumeKeys {
-		items = append(items, corev1.KeyToPath{
-			Key:  k,
-			Path: k,
-		})
-	}
+// setStatus update the CR status field.
+func (r *Reconciler) setStatus(
+	ctx context.Context,
+	instance *v1alpha1.ServiceBindingRequest,
+	status string,
+) error {
+	instance.Status.BindingStatus = status
+	return r.client.Status().Update(ctx, instance)
+}
 
-	return append(volumeList, corev1.Volume{
-		Name: volumeName,
-		VolumeSource: corev1.VolumeSource{
-			Secret: &corev1.SecretVolumeSource{
-				SecretName: secretName,
-				Items:      items,
-			},
-		},
-	})
+// setApplicationObjects set the ApplicationObject status field, and also set the overall status as
+// success, since it was able to bind applications.
+func (r *Reconciler) setApplicationObjects(
+	ctx context.Context,
+	instance *v1alpha1.ServiceBindingRequest,
+	objs []string,
+) error {
+	instance.Status.BindingStatus = bindingSuccess
+	instance.Status.ApplicationObjects = objs
+	return r.client.Status().Update(ctx, instance)
 }
 
 // Reconcile a ServiceBindingRequest by the following steps:
@@ -93,257 +70,78 @@ func (r *Reconciler) appendVolumes(volumeList []corev1.Volume, data map[string][
 // 2. Using OperatorLifecycleManager standards, identifying which items are intersting for binding
 //    by parsing CustomResourceDefinitionDescripton object;
 // 3. Search and read contents identified in previous step, creating an intermediary secret to hold
-//    data formatted as environment variables key/value.
+//    data formatted as environment variables key/value;
 // 4. Search applications that are interested to bind with given service, by inspecting labels. The
-//    Deployment (and other kinds) will be updated in PodTeamplate level updating `envFrom` entry
-// 	  to load intermediary secret;
+//    Deployment (and other kinds) will be updated in "spec" level.
 func (r *Reconciler) Reconcile(request reconcile.Request) (reconcile.Result, error) {
 	ctx := context.TODO()
-	logger := logf.Log.WithValues("Request.Namespace", request.Namespace, "Request.Name", request.Name)
-	logger.Info("Reconciling ServiceBindingRequest")
+	logger := logf.Log.WithValues(
+		"Request.Namespace", request.Namespace,
+		"Request.Name", request.Name,
+	)
+	logger.Info("Reconciling ServiceBindingRequest...")
 
-	// Fetch the ServiceBindingRequest instance
+	// fetch the ServiceBindingRequest instance
 	instance := &v1alpha1.ServiceBindingRequest{}
 	err := r.client.Get(ctx, request.NamespacedName, instance)
 	if err != nil {
-		// Update Status
-		r.setBindingInProgressStatus(instance)
-		err = r.client.Status().Update(context.TODO(), instance)
-		if err != nil {
-			return reconcile.Result{}, err
-		}
-		return RequeueOnNotFound(err)
+		logger.Error(err, "On retrieving service-binding-request instance.")
+		return RequeueOnNotFound(err, 0)
 	}
 
-	logger.WithValues("ServiceBindingRequest.Name", instance.Name).
-		Info("Found service binding request to inspect")
+	logger = logger.WithValues("ServiceBindingRequest.Name", instance.Name)
+	logger.Info("Found service binding request to inspect")
 
-	// Set secret name
-	r.setSecretStatus(instance)
-	err = r.client.Status().Update(context.TODO(), instance)
-	if err != nil {
-		return reconcile.Result{}, err
+	if err = r.setStatus(ctx, instance, bindingInProgress); err != nil {
+		logger.Error(err, "On updating service-binding-request status.")
+		return RequeueError(err)
 	}
 
-	plnr := planner.NewPlanner(ctx, r.client, request.Namespace, instance)
-	plan, err := plnr.Plan()
+	//
+	// Planing changes
+	//
+
+	logger.Info("Creating a plan based on OLM and CRD.")
+	planner := NewPlanner(ctx, r.dynClient, instance)
+	plan, err := planner.Plan()
 	if err != nil {
-		// Update Status
-		r.setBindingInProgressStatus(instance)
-		err = r.client.Status().Update(context.TODO(), instance)
-		if err != nil {
-			return reconcile.Result{}, err
-		}
-		return RequeueOnNotFound(err)
+		_ = r.setStatus(ctx, instance, bindingFail)
+		logger.Error(err, "On creating a plan to bind applications.")
+		return RequeueOnNotFound(err, requeueAfter)
 	}
 
+	//
+	// Retrieving data
+	//
+
+	logger.Info("Retrieving data to create intermediate secret.")
 	retriever := NewRetriever(ctx, r.client, plan, instance.Spec.EnvVarPrefix)
 	if err = retriever.Retrieve(); err != nil {
-		// Update Status
-		r.setBindingInProgressStatus(instance)
-		err = r.client.Status().Update(context.TODO(), instance)
-		if err != nil {
-			return reconcile.Result{}, err
-		}
-		return RequeueOnNotFound(err)
+		_ = r.setStatus(ctx, instance, bindingFail)
+		logger.Error(err, "On retrieving binding data.")
+		return RequeueOnNotFound(err, requeueAfter)
+	}
+
+	if err = r.setSecretName(ctx, instance, plan.Name); err != nil {
+		logger.Error(err, "On updating service-binding-request status.")
+		return RequeueError(err)
 	}
 
 	//
 	// Updating applications to use intermediary secret
 	//
 
-	// TODO: very long block that needs to be extracted;
-	logger = logger.WithValues("MatchLabels", instance.Spec.ApplicationSelector.MatchLabels)
-	logger.Info("Searching applications to receive intermediary secret bind...")
-
-	resourceKind := strings.ToLower(instance.Spec.ApplicationSelector.Kind)
-	searchByLabelsOpts := client.ListOptions{
-		Namespace:     request.Namespace,
-		LabelSelector: labels.SelectorFromSet(instance.Spec.ApplicationSelector.MatchLabels),
+	logger.Info("Binding applications with intermediary secret.")
+	binder := NewBinder(ctx, r.client, r.dynClient, instance, retriever.volumeKeys)
+	if updatedObjectNames, err := binder.Bind(); err != nil {
+		_ = r.setStatus(ctx, instance, bindingFail)
+		logger.Error(err, "On binding application.")
+		return RequeueOnNotFound(err, requeueAfter)
+	} else if err = r.setApplicationObjects(ctx, instance, updatedObjectNames); err != nil {
+		logger.Error(err, "On updating application objects status field.")
+		return RequeueError(err)
 	}
 
-	// FIXME: find a way to DRY this block, and then add statefulsets and other kinds back again;
-	switch resourceKind {
-	case "deploymentconfig":
-		logger.Info("Searching DeploymentConfig objects matching labels")
-
-		deploymentConfigListObj := &osappsv1.DeploymentConfigList{}
-		err = resourcepoll.WaitUntilResourcesFound(r.client, &searchByLabelsOpts, deploymentConfigListObj)
-		if err != nil {
-			return RequeueOnNotFound(err)
-		}
-		err = r.client.List(ctx, &searchByLabelsOpts, deploymentConfigListObj)
-		if err != nil {
-			// Update Status
-			r.setBindingInProgressStatus(instance)
-			err = r.client.Status().Update(context.TODO(), instance)
-			if err != nil {
-				return reconcile.Result{}, err
-			}
-			return RequeueOnNotFound(err)
-		}
-
-		if len(deploymentConfigListObj.Items) == 0 {
-			logger.Info("No DeploymentConfig objects found, requeueing request!")
-			// Update Status
-			r.setBindingInProgressStatus(instance)
-			err = r.client.Status().Update(context.TODO(), instance)
-			if err != nil {
-				return reconcile.Result{}, err
-			}
-			return Requeue()
-		}
-
-		for _, deploymentConfigObj := range deploymentConfigListObj.Items {
-			logger.WithValues("DeploymentConfig.Name", deploymentConfigObj.GetName()).
-				Info("Inspecting DeploymentConfig object...")
-
-			// Update ApplicationObjects Status
-			if len(instance.Status.ApplicationObjects) >= 1 {
-				for _, v := range instance.Status.ApplicationObjects {
-					if v == deploymentConfigObj.GetName() {
-						break
-					}
-					r.setApplicationObjectsStatus(instance, deploymentConfigObj.GetName())
-					err = r.client.Status().Update(context.TODO(), instance)
-					if err != nil {
-						return reconcile.Result{}, err
-					}
-				}
-			} else {
-				r.setApplicationObjectsStatus(instance, deploymentConfigObj.GetName())
-				err = r.client.Status().Update(context.TODO(), instance)
-				if err != nil {
-					return reconcile.Result{}, err
-				}
-			}
-			for i, c := range deploymentConfigObj.Spec.Template.Spec.Containers {
-				if len(retriever.data) > 0 {
-					logger.Info("Adding EnvFrom to container")
-					deploymentConfigObj.Spec.Template.Spec.Containers[i].EnvFrom = r.appendEnvFrom(
-						c.EnvFrom, instance.GetName())
-				}
-				if len(retriever.volumeKeys) > 0 {
-					logger.Info("Adding VolumeMounts to container")
-					mountPath := "/var/data"
-					if instance.Spec.MountPathPrefix != "" {
-						mountPath = instance.Spec.MountPathPrefix
-					}
-					deploymentConfigObj.Spec.Template.Spec.Containers[i].VolumeMounts = r.appendVolumeMounts(
-						c.VolumeMounts, instance.GetName(), mountPath)
-					logger.Info("Adding Volumes to pod")
-					deploymentConfigObj.Spec.Template.Spec.Volumes = r.appendVolumes(
-						deploymentConfigObj.Spec.Template.Spec.Volumes, retriever.data, retriever.volumeKeys, instance.GetName(), instance.GetName())
-				}
-			}
-			logger.Info("Updating DeploymentConfig object")
-			err = r.client.Update(ctx, &deploymentConfigObj)
-			if err != nil {
-				logger.Error(err, "Error on updating object!")
-				// Update Status
-				r.setBindingFailStatus(instance)
-				err = r.client.Status().Update(context.TODO(), instance)
-				if err != nil {
-					return reconcile.Result{}, err
-				}
-				return reconcile.Result{}, err
-			}
-		}
-	default:
-		logger.Info("Searching Deployment objects matching labels")
-
-		deploymentListObj := &extv1beta1.DeploymentList{}
-		err = resourcepoll.WaitUntilResourcesFound(r.client, &searchByLabelsOpts, deploymentListObj)
-		if err != nil {
-			return RequeueOnNotFound(err)
-		}
-		err = r.client.List(ctx, &searchByLabelsOpts, deploymentListObj)
-		if err != nil {
-			// Update Status
-			r.setBindingInProgressStatus(instance)
-			err = r.client.Status().Update(context.TODO(), instance)
-			if err != nil {
-				return reconcile.Result{}, err
-			}
-			return RequeueOnNotFound(err)
-		}
-
-		if len(deploymentListObj.Items) == 0 {
-			logger.Info("No Deployment objects found, requeueing request!")
-			// Update Status
-			r.setBindingInProgressStatus(instance)
-			err = r.client.Status().Update(context.TODO(), instance)
-			if err != nil {
-				return reconcile.Result{}, err
-			}
-			return Requeue()
-		}
-
-		for _, deploymentObj := range deploymentListObj.Items {
-			logger = logger.WithValues("Deployment.Name", deploymentObj.GetName())
-			logger.Info("Inspecting Deploymen object...")
-
-			// Update ApplicationObjects Status
-			if len(instance.Status.ApplicationObjects) >= 1 {
-				for _, v := range instance.Status.ApplicationObjects {
-					if v == deploymentObj.GetName() {
-						break
-					}
-					r.setApplicationObjectsStatus(instance, deploymentObj.GetName())
-					err = r.client.Status().Update(context.TODO(), instance)
-					if err != nil {
-						return reconcile.Result{}, err
-					}
-				}
-			} else {
-				r.setApplicationObjectsStatus(instance, deploymentObj.GetName())
-				err = r.client.Status().Update(context.TODO(), instance)
-				if err != nil {
-					return reconcile.Result{}, err
-				}
-			}
-			for i, c := range deploymentObj.Spec.Template.Spec.Containers {
-				if len(retriever.data) > 0 {
-					logger.Info("Adding EnvFrom to container")
-					deploymentObj.Spec.Template.Spec.Containers[i].EnvFrom = r.appendEnvFrom(
-						c.EnvFrom, instance.GetName())
-				}
-				if len(retriever.volumeKeys) > 0 {
-					logger.Info("Adding VolumeMounts to container")
-					mountPath := "/var/data"
-					if instance.Spec.MountPathPrefix != "" {
-						mountPath = instance.Spec.MountPathPrefix
-					}
-					deploymentObj.Spec.Template.Spec.Containers[i].VolumeMounts = r.appendVolumeMounts(
-						c.VolumeMounts, instance.GetName(), mountPath)
-					logger.Info("Adding Volumes to pod")
-					deploymentObj.Spec.Template.Spec.Volumes = r.appendVolumes(
-						deploymentObj.Spec.Template.Spec.Volumes, retriever.data, retriever.volumeKeys, instance.GetName(), instance.GetName())
-				}
-
-			}
-
-			logger.Info("Updating Deployment object")
-			err = r.client.Update(ctx, &deploymentObj)
-			if err != nil {
-				// Update Status
-				r.setBindingFailStatus(instance)
-				err = r.client.Status().Update(context.TODO(), instance)
-				if err != nil {
-					return reconcile.Result{}, err
-				}
-				logger.Error(err, "Error on updating object!")
-				return reconcile.Result{}, err
-			}
-		}
-	}
-
-	// Update Status
-	r.setBindingSuccessStatus(instance)
-	err = r.client.Status().Update(context.TODO(), instance)
-	if err != nil {
-		return reconcile.Result{}, err
-	}
 	logger.Info("All done!")
 	return Done()
 }
diff --git a/pkg/controller/servicebindingrequest/retriever.go b/pkg/controller/servicebindingrequest/retriever.go
index 3225bade..26d52629 100644
--- a/pkg/controller/servicebindingrequest/retriever.go
+++ b/pkg/controller/servicebindingrequest/retriever.go
@@ -6,7 +6,6 @@ import (
 	"strings"
 
 	"github.com/go-logr/logr"
-	"github.com/redhat-developer/service-binding-operator/pkg/controller/servicebindingrequest/planner"
 	corev1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/api/errors"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -19,7 +18,7 @@ import (
 type Retriever struct {
 	ctx           context.Context   // request context
 	client        client.Client     // Kubernetes API client
-	plan          *planner.Plan     // plan instance
+	plan          *Plan             // plan instance
 	logger        logr.Logger       // logger instance
 	data          map[string][]byte // data retrieved
 	volumeKeys    []string
@@ -230,7 +229,7 @@ func (r *Retriever) Retrieve() error {
 }
 
 // NewRetriever instantiate a new retriever instance.
-func NewRetriever(ctx context.Context, client client.Client, plan *planner.Plan, bindingPrefix string) *Retriever {
+func NewRetriever(ctx context.Context, client client.Client, plan *Plan, bindingPrefix string) *Retriever {
 	return &Retriever{
 		ctx:           ctx,
 		client:        client,
diff --git a/pkg/controller/servicebindingrequest/status.go b/pkg/controller/servicebindingrequest/status.go
deleted file mode 100644
index 7f177979..00000000
--- a/pkg/controller/servicebindingrequest/status.go
+++ /dev/null
@@ -1,25 +0,0 @@
-package servicebindingrequest
-
-import (
-	"github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1"
-)
-
-func (r *Reconciler) setBindingSuccessStatus(sbr *v1alpha1.ServiceBindingRequest) {
-	sbr.Status.BindingStatus = v1alpha1.BindingSuccess
-}
-
-func (r *Reconciler) setBindingInProgressStatus(sbr *v1alpha1.ServiceBindingRequest) {
-	sbr.Status.BindingStatus = v1alpha1.BindingInProgress
-}
-
-func (r *Reconciler) setBindingFailStatus(sbr *v1alpha1.ServiceBindingRequest) {
-	sbr.Status.BindingStatus = v1alpha1.BindingFail
-}
-
-func (r *Reconciler) setSecretStatus(sbr *v1alpha1.ServiceBindingRequest) {
-	sbr.Status.Secret = sbr.GetName()
-}
-
-func (r *Reconciler) setApplicationObjectsStatus(sbr *v1alpha1.ServiceBindingRequest, object string) {
-	sbr.Status.ApplicationObjects = append(sbr.Status.ApplicationObjects, object)
-}
diff --git a/pkg/resourcepoll/wait.go b/pkg/resourcepoll/wait.go
deleted file mode 100644
index 16ad2c11..00000000
--- a/pkg/resourcepoll/wait.go
+++ /dev/null
@@ -1,42 +0,0 @@
-package resourcepoll
-
-import (
-	"context"
-	"fmt"
-	"k8s.io/apimachinery/pkg/runtime"
-	"k8s.io/apimachinery/pkg/types"
-	"k8s.io/apimachinery/pkg/util/wait"
-	"sigs.k8s.io/controller-runtime/pkg/client"
-	"time"
-)
-
-
-func WaitUntilResourceFound(client client.Client, nsd types.NamespacedName, typ runtime.Object) error {
-	var err error
-	count := 0
-	err = wait.Poll(time.Second * 5, time.Minute*5, func() (bool, error) {
-		count++
-		fmt.Printf("\nRetry count: %+d", count)
-		err = client.Get(context.TODO(), nsd, typ)
-		if err != nil {
-			return false, err
-		}
-		return true, nil
-	})
-	return err
-}
-
-func WaitUntilResourcesFound(client client.Client, options *client.ListOptions, typ runtime.Object) error {
-	var err error
-	count := 0
-	err = wait.Poll(time.Second*5, time.Minute*5, func() (bool, error) {
-		count++
-		fmt.Printf("\nRetry count: %+d", count)
-		err = client.List(context.TODO(), options, typ)
-		if err != nil {
-			return false, err
-		}
-		return true, nil
-	})
-	return err
-}
diff --git a/vendor/k8s.io/client-go/dynamic/fake/simple.go b/vendor/k8s.io/client-go/dynamic/fake/simple.go
new file mode 100644
index 00000000..eec3cfbc
--- /dev/null
+++ b/vendor/k8s.io/client-go/dynamic/fake/simple.go
@@ -0,0 +1,369 @@
+/*
+Copyright 2018 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package fake
+
+import (
+	"strings"
+
+	"k8s.io/apimachinery/pkg/api/meta"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+	"k8s.io/apimachinery/pkg/labels"
+	"k8s.io/apimachinery/pkg/runtime"
+	"k8s.io/apimachinery/pkg/runtime/schema"
+	"k8s.io/apimachinery/pkg/runtime/serializer"
+	"k8s.io/apimachinery/pkg/types"
+	"k8s.io/apimachinery/pkg/watch"
+	"k8s.io/client-go/dynamic"
+	"k8s.io/client-go/testing"
+)
+
+func NewSimpleDynamicClient(scheme *runtime.Scheme, objects ...runtime.Object) *FakeDynamicClient {
+	// In order to use List with this client, you have to have the v1.List registered in your scheme. Neat thing though
+	// it does NOT have to be the *same* list
+	scheme.AddKnownTypeWithName(schema.GroupVersionKind{Group: "fake-dynamic-client-group", Version: "v1", Kind: "List"}, &unstructured.UnstructuredList{})
+
+	codecs := serializer.NewCodecFactory(scheme)
+	o := testing.NewObjectTracker(scheme, codecs.UniversalDecoder())
+	for _, obj := range objects {
+		if err := o.Add(obj); err != nil {
+			panic(err)
+		}
+	}
+
+	cs := &FakeDynamicClient{scheme: scheme}
+	cs.AddReactor("*", "*", testing.ObjectReaction(o))
+	cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
+		gvr := action.GetResource()
+		ns := action.GetNamespace()
+		watch, err := o.Watch(gvr, ns)
+		if err != nil {
+			return false, nil, err
+		}
+		return true, watch, nil
+	})
+
+	return cs
+}
+
+// Clientset implements clientset.Interface. Meant to be embedded into a
+// struct to get a default implementation. This makes faking out just the method
+// you want to test easier.
+type FakeDynamicClient struct {
+	testing.Fake
+	scheme *runtime.Scheme
+}
+
+type dynamicResourceClient struct {
+	client    *FakeDynamicClient
+	namespace string
+	resource  schema.GroupVersionResource
+}
+
+var _ dynamic.Interface = &FakeDynamicClient{}
+
+func (c *FakeDynamicClient) Resource(resource schema.GroupVersionResource) dynamic.NamespaceableResourceInterface {
+	return &dynamicResourceClient{client: c, resource: resource}
+}
+
+func (c *dynamicResourceClient) Namespace(ns string) dynamic.ResourceInterface {
+	ret := *c
+	ret.namespace = ns
+	return &ret
+}
+
+func (c *dynamicResourceClient) Create(obj *unstructured.Unstructured, opts metav1.CreateOptions, subresources ...string) (*unstructured.Unstructured, error) {
+	var uncastRet runtime.Object
+	var err error
+	switch {
+	case len(c.namespace) == 0 && len(subresources) == 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewRootCreateAction(c.resource, obj), obj)
+
+	case len(c.namespace) == 0 && len(subresources) > 0:
+		accessor, err := meta.Accessor(obj)
+		if err != nil {
+			return nil, err
+		}
+		name := accessor.GetName()
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewRootCreateSubresourceAction(c.resource, name, strings.Join(subresources, "/"), obj), obj)
+
+	case len(c.namespace) > 0 && len(subresources) == 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewCreateAction(c.resource, c.namespace, obj), obj)
+
+	case len(c.namespace) > 0 && len(subresources) > 0:
+		accessor, err := meta.Accessor(obj)
+		if err != nil {
+			return nil, err
+		}
+		name := accessor.GetName()
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewCreateSubresourceAction(c.resource, name, strings.Join(subresources, "/"), c.namespace, obj), obj)
+
+	}
+
+	if err != nil {
+		return nil, err
+	}
+	if uncastRet == nil {
+		return nil, err
+	}
+
+	ret := &unstructured.Unstructured{}
+	if err := c.client.scheme.Convert(uncastRet, ret, nil); err != nil {
+		return nil, err
+	}
+	return ret, err
+}
+
+func (c *dynamicResourceClient) Update(obj *unstructured.Unstructured, opts metav1.UpdateOptions, subresources ...string) (*unstructured.Unstructured, error) {
+	var uncastRet runtime.Object
+	var err error
+	switch {
+	case len(c.namespace) == 0 && len(subresources) == 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewRootUpdateAction(c.resource, obj), obj)
+
+	case len(c.namespace) == 0 && len(subresources) > 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewRootUpdateSubresourceAction(c.resource, strings.Join(subresources, "/"), obj), obj)
+
+	case len(c.namespace) > 0 && len(subresources) == 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewUpdateAction(c.resource, c.namespace, obj), obj)
+
+	case len(c.namespace) > 0 && len(subresources) > 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewUpdateSubresourceAction(c.resource, strings.Join(subresources, "/"), c.namespace, obj), obj)
+
+	}
+
+	if err != nil {
+		return nil, err
+	}
+	if uncastRet == nil {
+		return nil, err
+	}
+
+	ret := &unstructured.Unstructured{}
+	if err := c.client.scheme.Convert(uncastRet, ret, nil); err != nil {
+		return nil, err
+	}
+	return ret, err
+}
+
+func (c *dynamicResourceClient) UpdateStatus(obj *unstructured.Unstructured, opts metav1.UpdateOptions) (*unstructured.Unstructured, error) {
+	var uncastRet runtime.Object
+	var err error
+	switch {
+	case len(c.namespace) == 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewRootUpdateSubresourceAction(c.resource, "status", obj), obj)
+
+	case len(c.namespace) > 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewUpdateSubresourceAction(c.resource, "status", c.namespace, obj), obj)
+
+	}
+
+	if err != nil {
+		return nil, err
+	}
+	if uncastRet == nil {
+		return nil, err
+	}
+
+	ret := &unstructured.Unstructured{}
+	if err := c.client.scheme.Convert(uncastRet, ret, nil); err != nil {
+		return nil, err
+	}
+	return ret, err
+}
+
+func (c *dynamicResourceClient) Delete(name string, opts *metav1.DeleteOptions, subresources ...string) error {
+	var err error
+	switch {
+	case len(c.namespace) == 0 && len(subresources) == 0:
+		_, err = c.client.Fake.
+			Invokes(testing.NewRootDeleteAction(c.resource, name), &metav1.Status{Status: "dynamic delete fail"})
+
+	case len(c.namespace) == 0 && len(subresources) > 0:
+		_, err = c.client.Fake.
+			Invokes(testing.NewRootDeleteSubresourceAction(c.resource, strings.Join(subresources, "/"), name), &metav1.Status{Status: "dynamic delete fail"})
+
+	case len(c.namespace) > 0 && len(subresources) == 0:
+		_, err = c.client.Fake.
+			Invokes(testing.NewDeleteAction(c.resource, c.namespace, name), &metav1.Status{Status: "dynamic delete fail"})
+
+	case len(c.namespace) > 0 && len(subresources) > 0:
+		_, err = c.client.Fake.
+			Invokes(testing.NewDeleteSubresourceAction(c.resource, strings.Join(subresources, "/"), c.namespace, name), &metav1.Status{Status: "dynamic delete fail"})
+	}
+
+	return err
+}
+
+func (c *dynamicResourceClient) DeleteCollection(opts *metav1.DeleteOptions, listOptions metav1.ListOptions) error {
+	var err error
+	switch {
+	case len(c.namespace) == 0:
+		action := testing.NewRootDeleteCollectionAction(c.resource, listOptions)
+		_, err = c.client.Fake.Invokes(action, &metav1.Status{Status: "dynamic deletecollection fail"})
+
+	case len(c.namespace) > 0:
+		action := testing.NewDeleteCollectionAction(c.resource, c.namespace, listOptions)
+		_, err = c.client.Fake.Invokes(action, &metav1.Status{Status: "dynamic deletecollection fail"})
+
+	}
+
+	return err
+}
+
+func (c *dynamicResourceClient) Get(name string, opts metav1.GetOptions, subresources ...string) (*unstructured.Unstructured, error) {
+	var uncastRet runtime.Object
+	var err error
+	switch {
+	case len(c.namespace) == 0 && len(subresources) == 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewRootGetAction(c.resource, name), &metav1.Status{Status: "dynamic get fail"})
+
+	case len(c.namespace) == 0 && len(subresources) > 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewRootGetSubresourceAction(c.resource, strings.Join(subresources, "/"), name), &metav1.Status{Status: "dynamic get fail"})
+
+	case len(c.namespace) > 0 && len(subresources) == 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewGetAction(c.resource, c.namespace, name), &metav1.Status{Status: "dynamic get fail"})
+
+	case len(c.namespace) > 0 && len(subresources) > 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewGetSubresourceAction(c.resource, c.namespace, strings.Join(subresources, "/"), name), &metav1.Status{Status: "dynamic get fail"})
+	}
+
+	if err != nil {
+		return nil, err
+	}
+	if uncastRet == nil {
+		return nil, err
+	}
+
+	ret := &unstructured.Unstructured{}
+	if err := c.client.scheme.Convert(uncastRet, ret, nil); err != nil {
+		return nil, err
+	}
+	return ret, err
+}
+
+func (c *dynamicResourceClient) List(opts metav1.ListOptions) (*unstructured.UnstructuredList, error) {
+	var obj runtime.Object
+	var err error
+	switch {
+	case len(c.namespace) == 0:
+		obj, err = c.client.Fake.
+			Invokes(testing.NewRootListAction(c.resource, schema.GroupVersionKind{Group: "fake-dynamic-client-group", Version: "v1", Kind: "" /*List is appended by the tracker automatically*/}, opts), &metav1.Status{Status: "dynamic list fail"})
+
+	case len(c.namespace) > 0:
+		obj, err = c.client.Fake.
+			Invokes(testing.NewListAction(c.resource, schema.GroupVersionKind{Group: "fake-dynamic-client-group", Version: "v1", Kind: "" /*List is appended by the tracker automatically*/}, c.namespace, opts), &metav1.Status{Status: "dynamic list fail"})
+
+	}
+
+	if obj == nil {
+		return nil, err
+	}
+
+	label, _, _ := testing.ExtractFromListOptions(opts)
+	if label == nil {
+		label = labels.Everything()
+	}
+
+	retUnstructured := &unstructured.Unstructured{}
+	if err := c.client.scheme.Convert(obj, retUnstructured, nil); err != nil {
+		return nil, err
+	}
+	entireList, err := retUnstructured.ToList()
+	if err != nil {
+		return nil, err
+	}
+
+	list := &unstructured.UnstructuredList{}
+	for i := range entireList.Items {
+		item := &entireList.Items[i]
+		metadata, err := meta.Accessor(item)
+		if err != nil {
+			return nil, err
+		}
+		if label.Matches(labels.Set(metadata.GetLabels())) {
+			list.Items = append(list.Items, *item)
+		}
+	}
+	return list, nil
+}
+
+func (c *dynamicResourceClient) Watch(opts metav1.ListOptions) (watch.Interface, error) {
+	switch {
+	case len(c.namespace) == 0:
+		return c.client.Fake.
+			InvokesWatch(testing.NewRootWatchAction(c.resource, opts))
+
+	case len(c.namespace) > 0:
+		return c.client.Fake.
+			InvokesWatch(testing.NewWatchAction(c.resource, c.namespace, opts))
+
+	}
+
+	panic("math broke")
+}
+
+// TODO: opts are currently ignored.
+func (c *dynamicResourceClient) Patch(name string, pt types.PatchType, data []byte, opts metav1.UpdateOptions, subresources ...string) (*unstructured.Unstructured, error) {
+	var uncastRet runtime.Object
+	var err error
+	switch {
+	case len(c.namespace) == 0 && len(subresources) == 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewRootPatchAction(c.resource, name, pt, data), &metav1.Status{Status: "dynamic patch fail"})
+
+	case len(c.namespace) == 0 && len(subresources) > 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewRootPatchSubresourceAction(c.resource, name, pt, data, subresources...), &metav1.Status{Status: "dynamic patch fail"})
+
+	case len(c.namespace) > 0 && len(subresources) == 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewPatchAction(c.resource, c.namespace, name, pt, data), &metav1.Status{Status: "dynamic patch fail"})
+
+	case len(c.namespace) > 0 && len(subresources) > 0:
+		uncastRet, err = c.client.Fake.
+			Invokes(testing.NewPatchSubresourceAction(c.resource, c.namespace, name, pt, data, subresources...), &metav1.Status{Status: "dynamic patch fail"})
+
+	}
+
+	if err != nil {
+		return nil, err
+	}
+	if uncastRet == nil {
+		return nil, err
+	}
+
+	ret := &unstructured.Unstructured{}
+	if err := c.client.scheme.Convert(uncastRet, ret, nil); err != nil {
+		return nil, err
+	}
+	return ret, err
+}
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 0b6d1e1e..9331df12 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -18,8 +18,8 @@ github.com/PuerkitoBio/urlesc
 # github.com/appscode/jsonpatch v0.0.0-20190108182946-7c0e3b262f30
 github.com/appscode/jsonpatch
 # github.com/baijum/postgresql-operator v0.0.0-20190701114131-f72b43994f54
-github.com/baijum/postgresql-operator/pkg/apis/postgresql/v1alpha1
 github.com/baijum/postgresql-operator/pkg/apis
+github.com/baijum/postgresql-operator/pkg/apis/postgresql/v1alpha1
 # github.com/beorn7/perks v1.0.0
 github.com/beorn7/perks/quantile
 # github.com/census-instrumentation/opencensus-proto v0.2.0
@@ -196,8 +196,8 @@ github.com/spf13/cobra
 # github.com/spf13/pflag v1.0.3
 github.com/spf13/pflag
 # github.com/stretchr/testify v1.3.0
-github.com/stretchr/testify/assert
 github.com/stretchr/testify/require
+github.com/stretchr/testify/assert
 # go.opencensus.io v0.20.0
 go.opencensus.io/plugin/ochttp
 go.opencensus.io/plugin/ochttp/propagation/tracecontext
@@ -324,13 +324,13 @@ gopkg.in/inf.v0
 gopkg.in/yaml.v2
 # k8s.io/api v0.0.0-20190612125737-db0771252981 => k8s.io/api v0.0.0-20181213150558-05914d821849
 k8s.io/api/core/v1
-k8s.io/api/extensions/v1beta1
 k8s.io/api/apps/v1
+k8s.io/api/extensions/v1beta1
 k8s.io/api/rbac/v1
-k8s.io/api/apps/v1beta1
 k8s.io/api/rbac/v1beta1
 k8s.io/api/admissionregistration/v1alpha1
 k8s.io/api/admissionregistration/v1beta1
+k8s.io/api/apps/v1beta1
 k8s.io/api/apps/v1beta2
 k8s.io/api/auditregistration/v1alpha1
 k8s.io/api/authentication/v1
@@ -368,9 +368,9 @@ k8s.io/apimachinery/pkg/runtime
 k8s.io/apimachinery/pkg/apis/meta/v1
 k8s.io/apimachinery/pkg/runtime/schema
 k8s.io/apimachinery/pkg/api/errors
+k8s.io/apimachinery/pkg/apis/meta/v1/unstructured
 k8s.io/apimachinery/pkg/labels
 k8s.io/apimachinery/pkg/types
-k8s.io/apimachinery/pkg/apis/meta/v1/unstructured
 k8s.io/apimachinery/pkg/util/wait
 k8s.io/apimachinery/pkg/runtime/serializer
 k8s.io/apimachinery/pkg/watch
@@ -390,10 +390,10 @@ k8s.io/apimachinery/pkg/fields
 k8s.io/apimachinery/pkg/selection
 k8s.io/apimachinery/pkg/util/validation/field
 k8s.io/apimachinery/pkg/util/validation
+k8s.io/apimachinery/pkg/runtime/serializer/versioning
 k8s.io/apimachinery/pkg/version
 k8s.io/apimachinery/pkg/runtime/serializer/protobuf
 k8s.io/apimachinery/pkg/runtime/serializer/recognizer
-k8s.io/apimachinery/pkg/runtime/serializer/versioning
 k8s.io/apimachinery/pkg/util/cache
 k8s.io/apimachinery/pkg/util/clock
 k8s.io/apimachinery/pkg/util/diff
@@ -409,10 +409,11 @@ k8s.io/apimachinery/third_party/forked/golang/json
 # k8s.io/client-go v11.0.0+incompatible => k8s.io/client-go v0.0.0-20181213151034-8d9ed539ba31
 k8s.io/client-go/plugin/pkg/client/auth
 k8s.io/client-go/rest
-k8s.io/client-go/discovery
 k8s.io/client-go/dynamic
-k8s.io/client-go/kubernetes
+k8s.io/client-go/dynamic/fake
 k8s.io/client-go/kubernetes/scheme
+k8s.io/client-go/discovery
+k8s.io/client-go/kubernetes
 k8s.io/client-go/tools/cache
 k8s.io/client-go/restmapper
 k8s.io/client-go/plugin/pkg/client/auth/azure
@@ -432,6 +433,7 @@ k8s.io/client-go/tools/leaderelection
 k8s.io/client-go/tools/leaderelection/resourcelock
 k8s.io/client-go/tools/record
 k8s.io/client-go/util/workqueue
+k8s.io/client-go/testing
 k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1
 k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1
 k8s.io/client-go/kubernetes/typed/apps/v1
@@ -477,7 +479,6 @@ k8s.io/client-go/tools/auth
 k8s.io/client-go/tools/clientcmd/api/latest
 k8s.io/client-go/util/homedir
 k8s.io/client-go/tools/reference
-k8s.io/client-go/testing
 k8s.io/client-go/discovery/cached
 k8s.io/client-go/third_party/forked/golang/template
 k8s.io/client-go/tools/clientcmd/api/v1
@@ -537,6 +538,7 @@ sigs.k8s.io/controller-runtime/pkg/handler
 sigs.k8s.io/controller-runtime/pkg/predicate
 sigs.k8s.io/controller-runtime/pkg/reconcile
 sigs.k8s.io/controller-runtime/pkg/source
+sigs.k8s.io/controller-runtime/pkg/client/fake
 sigs.k8s.io/controller-runtime/pkg/cache
 sigs.k8s.io/controller-runtime/pkg/client/apiutil
 sigs.k8s.io/controller-runtime/pkg/internal/recorder
@@ -548,7 +550,6 @@ sigs.k8s.io/controller-runtime/pkg/webhook/admission
 sigs.k8s.io/controller-runtime/pkg/webhook/admission/types
 sigs.k8s.io/controller-runtime/pkg/internal/controller
 sigs.k8s.io/controller-runtime/pkg/source/internal
-sigs.k8s.io/controller-runtime/pkg/client/fake
 sigs.k8s.io/controller-runtime/pkg/cache/internal
 sigs.k8s.io/controller-runtime/pkg/patch
 sigs.k8s.io/controller-runtime/pkg/webhook/internal/metrics


Test patch:
diff --git a/pkg/controller/servicebindingrequest/binder_test.go b/pkg/controller/servicebindingrequest/binder_test.go
new file mode 100644
index 00000000..f007d6ba
--- /dev/null
+++ b/pkg/controller/servicebindingrequest/binder_test.go
@@ -0,0 +1,54 @@
+package servicebindingrequest
+
+import (
+	"context"
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+	logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
+
+	"github.com/redhat-developer/service-binding-operator/test/mocks"
+)
+
+func init() {
+	logf.SetLogger(logf.ZapLogger(true))
+}
+
+func TestBinderNew(t *testing.T) {
+	ns := "binder"
+	name := "service-binding-request"
+	matchLabels := map[string]string{
+		"connects-to": "database",
+		"environment": "binder",
+	}
+
+	f := mocks.NewFake(t, ns)
+	sbr := f.AddMockedServiceBindingRequest(name, "ref", matchLabels)
+	f.AddMockedUnstructuredDeployment("ref", matchLabels)
+
+	binder := NewBinder(
+		context.TODO(),
+		f.FakeClient(),
+		f.FakeDynClient(),
+		sbr,
+		[]string{},
+	)
+
+	require.NotNil(t, binder)
+
+	t.Run("search", func(t *testing.T) {
+		list, err := binder.search()
+		assert.Nil(t, err)
+		assert.Equal(t, 1, len(list.Items))
+	})
+
+	t.Run("appendEnvFrom", func(t *testing.T) {
+		secretName := "secret"
+		d := mocks.DeploymentMock("binder", "binder", map[string]string{})
+		list := binder.appendEnvFrom(d.Spec.Template.Spec.Containers[0].EnvFrom, secretName)
+
+		assert.Equal(t, 1, len(list))
+		assert.Equal(t, secretName, list[0].SecretRef.Name)
+	})
+}
diff --git a/pkg/controller/servicebindingrequest/planner/planner_test.go b/pkg/controller/servicebindingrequest/planner/planner_test.go
deleted file mode 100644
index e6ec4eaf..00000000
--- a/pkg/controller/servicebindingrequest/planner/planner_test.go
+++ /dev/null
@@ -1,75 +0,0 @@
-package planner
-
-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/planner_test.go b/pkg/controller/servicebindingrequest/planner_test.go
new file mode 100644
index 00000000..7b16ac70
--- /dev/null
+++ b/pkg/controller/servicebindingrequest/planner_test.go
@@ -0,0 +1,61 @@
+package servicebindingrequest
+
+import (
+	"context"
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+	logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
+
+	"github.com/redhat-developer/service-binding-operator/test/mocks"
+)
+
+var planner *Planner
+
+func init() {
+	logf.SetLogger(logf.ZapLogger(true))
+}
+
+func TestPlannerNew(t *testing.T) {
+	ns := "planner"
+	name := "service-binding-request"
+	resourceRef := "db-testing"
+	matchLabels := map[string]string{
+		"connects-to": "database",
+		"environment": "planner",
+	}
+
+	f := mocks.NewFake(t, ns)
+	sbr := f.AddMockedServiceBindingRequest(name, resourceRef, matchLabels)
+	f.AddMockedUnstructuredCSV("cluster-service-version")
+	f.AddMockedDatabaseCRList(resourceRef)
+
+	planner = NewPlanner(context.TODO(), f.FakeDynClient(), sbr)
+	require.NotNil(t, planner)
+
+	t.Run("searchCRDDescription", func(t *testing.T) {
+		crdDescription, err := planner.searchCRDDescription()
+
+		assert.Nil(t, err)
+		assert.NotNil(t, crdDescription)
+	})
+
+	t.Run("searchCR", func(t *testing.T) {
+		cr, err := planner.searchCR("Database")
+
+		assert.Nil(t, err)
+		assert.NotNil(t, cr)
+	})
+
+	t.Run("plan", func(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, ns, plan.Ns)
+		assert.Equal(t, name, plan.Name)
+	})
+}
diff --git a/pkg/controller/servicebindingrequest/reconciler_test.go b/pkg/controller/servicebindingrequest/reconciler_test.go
index b7b89aa7..80bcd54e 100644
--- a/pkg/controller/servicebindingrequest/reconciler_test.go
+++ b/pkg/controller/servicebindingrequest/reconciler_test.go
@@ -4,17 +4,10 @@ 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"
+	appsv1 "k8s.io/api/apps/v1"
 	"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"
 
@@ -27,135 +20,100 @@ const (
 	reconcilerName = "binding-request"
 )
 
-// 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) {
+func init() {
 	logf.SetLogger(logf.ZapLogger(true))
-	var reconciler *Reconciler
-	var reconcilerFakeClient client.Client
+}
 
-	s := scheme.Scheme
-	resourceRef := "db-testing"
+// reconcileRequest creates a reconcile.Request object using global variables.
+func reconcileRequest() reconcile.Request {
+	return reconcile.Request{
+		NamespacedName: types.NamespacedName{
+			Namespace: reconcilerNs,
+			Name:      reconcilerName,
+		},
+	}
+}
+
+// TestReconcilerReconcileUsingSecret test the reconciliation process using a secret, expected to be
+// the regular approach.
+func TestReconcilerReconcileUsingSecret(t *testing.T) {
+	ctx := context.TODO()
+	resourceRef := "test-using-secret"
 	matchLabels := map[string]string{
 		"connects-to": "database",
-		"environment": "planner",
+		"environment": "reconciler",
 	}
 
-	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)
+	f := mocks.NewFake(t, reconcilerNs)
+	f.AddMockedServiceBindingRequest(reconcilerName, resourceRef, matchLabels)
+	f.AddMockedUnstructuredCSV("cluster-service-version-list")
+	f.AddMockedDatabaseCRList(resourceRef)
+	f.AddMockedUnstructuredDeployment(reconcilerName, matchLabels)
+	f.AddMockedSecret("db-credentials")
 
-	require.Nil(t, pgapis.AddToScheme(s))
-	crList := mocks.DatabaseCRListMock(reconcilerNs, resourceRef)
-	s.AddKnownTypes(pgv1alpha1.SchemeGroupVersion, &crList)
+	fakeClient := f.FakeClient()
+	reconciler := &Reconciler{client: fakeClient, dynClient: f.FakeDynClient(), scheme: f.S}
 
-	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}
-
-	t.Run("reconcile", func(t *testing.T) {
-		req := reconcile.Request{
-			NamespacedName: types.NamespacedName{
-				Namespace: reconcilerNs,
-				Name:      reconcilerName,
-			},
-		}
-
-		res, err := reconciler.Reconcile(req)
+	t.Run("reconcile-using-secret", func(t *testing.T) {
+		res, err := reconciler.Reconcile(reconcileRequest())
 		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))
+		d := appsv1.Deployment{}
+		require.Nil(t, fakeClient.Get(ctx, namespacedName, &d))
 
 		containers := d.Spec.Template.Spec.Containers
-		assert.Equal(t, 1, len(containers))
-		assert.Equal(t, 1, len(containers[0].EnvFrom))
+		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, reconcilerName, containers[0].EnvFrom[0].SecretRef.Name)
 
 		sbrOutput := v1alpha1.ServiceBindingRequest{}
-		require.Nil(t, reconcilerFakeClient.Get(context.TODO(), namespacedName, &sbrOutput))
-		require.Equal(t, v1alpha1.BindingSuccess, sbrOutput.Status.BindingStatus)
+		require.Nil(t, fakeClient.Get(ctx, namespacedName, &sbrOutput))
+		require.Equal(t, "success", sbrOutput.Status.BindingStatus)
 		require.Equal(t, reconcilerName, sbrOutput.Status.Secret)
-		require.Equal(t, reconcilerName, sbrOutput.Status.ApplicationObjects[0])
-	})
 
+		require.Equal(t, 1, len(sbrOutput.Status.ApplicationObjects))
+		assert.Equal(t, reconcilerName, sbrOutput.Status.ApplicationObjects[0])
+	})
 }
 
-// TestReconcilerVolumeMount method acts as a "new" call would, but in this scenario bootstraping the
-// types and requirements to test Reconcile.
-func TestReconcilerVolumeMount(t *testing.T) {
-	logf.SetLogger(logf.ZapLogger(true))
-	var reconciler *Reconciler
-	var reconcilerFakeClient client.Client
-
-	s := scheme.Scheme
-	resourceRef := "db-testing"
+func TestReconcilerReconcileUsingVolumes(t *testing.T) {
+	ctx := context.TODO()
+	resourceRef := "test-using-volumes"
 	matchLabels := map[string]string{
 		"connects-to": "database",
-		"environment": "planner",
+		"environment": "reconciler",
 	}
 
-	sbr := mocks.ServiceBindingRequestMock(reconcilerNs, reconcilerName, resourceRef, matchLabels)
-	s.AddKnownTypes(v1alpha1.SchemeGroupVersion, &sbr)
-
-	require.Nil(t, olmv1alpha1.AddToScheme(s))
-	csvList := mocks.ClusterServiceVersionListVolumeMountMock(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)
+	f := mocks.NewFake(t, reconcilerNs)
+	f.AddMockedServiceBindingRequest(reconcilerName, resourceRef, matchLabels)
+	f.AddMockedUnstructuredCSVWithVolumeMount("cluster-service-version-list")
+	f.AddMockedDatabaseCRList(resourceRef)
+	f.AddMockedUnstructuredDeployment(reconcilerName, matchLabels)
+	f.AddMockedSecret("db-credentials")
 
-	dbSecret := mocks.SecretMock(reconcilerNs, "db-credentials")
+	fakeClient := f.FakeClient()
+	reconciler := &Reconciler{client: fakeClient, dynClient: f.FakeDynClient(), scheme: f.S}
 
-	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}
-
-	t.Run("reconcile", func(t *testing.T) {
-		req := reconcile.Request{
-			NamespacedName: types.NamespacedName{
-				Namespace: reconcilerNs,
-				Name:      reconcilerName,
-			},
-		}
-
-		res, err := reconciler.Reconcile(req)
+	t.Run("reconcile-using-volume", func(t *testing.T) {
+		res, err := reconciler.Reconcile(reconcileRequest())
 		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))
+		d := appsv1.Deployment{}
+		require.Nil(t, fakeClient.Get(ctx, 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)
 
-		assert.Equal(t, 1, len(containers[0].VolumeMounts))
+		require.Equal(t, 1, len(containers[0].VolumeMounts))
 		assert.Equal(t, "/var/redhat", containers[0].VolumeMounts[0].MountPath)
 		assert.Equal(t, reconcilerName, containers[0].VolumeMounts[0].Name)
 
 		volumes := d.Spec.Template.Spec.Volumes
-		assert.Equal(t, 1, len(volumes))
+		require.Equal(t, 1, len(volumes))
 		assert.Equal(t, reconcilerName, volumes[0].Name)
 		assert.Equal(t, reconcilerName, volumes[0].VolumeSource.Secret.SecretName)
 	})
diff --git a/pkg/controller/servicebindingrequest/retriever_test.go b/pkg/controller/servicebindingrequest/retriever_test.go
index ddffc379..53d0447a 100644
--- a/pkg/controller/servicebindingrequest/retriever_test.go
+++ b/pkg/controller/servicebindingrequest/retriever_test.go
@@ -11,7 +11,6 @@ import (
 	"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/controller/servicebindingrequest/planner"
 	"github.com/redhat-developer/service-binding-operator/test/mocks"
 )
 
@@ -28,7 +27,7 @@ func TestRetriever(t *testing.T) {
 	genericCR, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&cr)
 	require.Nil(t, err)
 
-	plan := &planner.Plan{
+	plan := &Plan{
 		Ns:             ns,
 		Name:           "retriever",
 		CRDDescription: &crdDescription,
@@ -36,7 +35,7 @@ func TestRetriever(t *testing.T) {
 	}
 
 	dbSecret := mocks.SecretMock(ns, "db-credentials")
-	objs := []runtime.Object{&dbSecret}
+	objs := []runtime.Object{dbSecret}
 	fakeClient := fake.NewFakeClient(objs...)
 
 	retriever = NewRetriever(context.TODO(), fakeClient, plan, "SERVICE_BINDING")
@@ -102,6 +101,7 @@ func TestRetriever(t *testing.T) {
 		err := retriever.saveDataOnSecret()
 		assert.Nil(t, err)
 	})
+
 	t.Run("empty prefix", func(t *testing.T) {
 		retriever = NewRetriever(context.TODO(), fakeClient, plan, "")
 		require.NotNil(t, retriever)
@@ -128,7 +128,7 @@ func TestRetrieverNestedCRDKey(t *testing.T) {
 	genericCR, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&cr)
 	require.Nil(t, err)
 
-	plan := &planner.Plan{
+	plan := &Plan{
 		Ns:             ns,
 		Name:           "retriever",
 		CRDDescription: &crdDescription,
@@ -136,7 +136,7 @@ func TestRetrieverNestedCRDKey(t *testing.T) {
 	}
 
 	dbSecret := mocks.SecretMock(ns, "db-credentials")
-	objs := []runtime.Object{&dbSecret}
+	objs := []runtime.Object{dbSecret}
 	fakeClient := fake.NewFakeClient(objs...)
 
 	retriever = NewRetriever(context.TODO(), fakeClient, plan, "SERVICE_BINDING")
@@ -172,10 +172,10 @@ func TestConfigMapRetriever(t *testing.T) {
 
 	cr := mocks.DatabaseConfigMapMock(ns, crName)
 
-	genericCR, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&cr)
+	genericCR, err := runtime.DefaultUnstructuredConverter.ToUnstructured(cr)
 	require.Nil(t, err)
 
-	plan := &planner.Plan{
+	plan := &Plan{
 		Ns:             ns,
 		Name:           "retriever",
 		CRDDescription: &crdDescription,
diff --git a/test/e2e/servicebindingrequest_test.go b/test/e2e/servicebindingrequest_test.go
index 633a205d..e1a40195 100644
--- a/test/e2e/servicebindingrequest_test.go
+++ b/test/e2e/servicebindingrequest_test.go
@@ -122,7 +122,7 @@ func serviceBindingRequestTest(t *testing.T, ctx *framework.TestCtx, f *framewor
 
 	t.Log("Creating Database credentials secret mock object...")
 	dbSecret := mocks.SecretMock(ns, secretName)
-	require.Nil(t, f.Client.Create(todoCtx, &dbSecret, cleanUpOptions(ctx)))
+	require.Nil(t, f.Client.Create(todoCtx, dbSecret, cleanUpOptions(ctx)))
 
 	t.Log("Creating Deployment mock object...")
 	d := mocks.DeploymentMock(ns, appName, matchLabels)
@@ -140,8 +140,8 @@ func serviceBindingRequestTest(t *testing.T, ctx *framework.TestCtx, f *framewor
 	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)))
+	_ = 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...")
@@ -179,7 +179,7 @@ func serviceBindingRequestTest(t *testing.T, ctx *framework.TestCtx, f *framewor
 
 	// cleaning up
 	t.Log("Cleaning all up!")
-	_ = f.Client.Delete(todoCtx, &sbr)
+	_ = f.Client.Delete(todoCtx, sbr)
 	_ = f.Client.Delete(todoCtx, &sbrSecret)
 	_ = f.Client.Delete(todoCtx, &d)
 }
diff --git a/test/mocks/README.md b/test/mocks/README.md
new file mode 100644
index 00000000..43cc62f6
--- /dev/null
+++ b/test/mocks/README.md
@@ -0,0 +1,44 @@
+# Kubernetes API Mocks
+
+This folder contains all mocks and machinery to interact with a fake Kubernetes API.
+
+## Usage
+
+### 1. Instantiate Fake
+
+Inside a testing function, instantiate `Fake` by sharing the test context `t` and namespace name:
+
+``` go
+import "github.com/redhat-developer/service-binding-operator/test/mocks"
+
+f := mocks.NewFake(t, "namespace")
+```
+
+### 2. Add Mocked Objects
+
+Add mocked objects are you need.
+
+``` go
+f.AddMockedSecret("db-credentials")
+```
+
+### 3. Instantiate API Clients
+
+Instantiate a fake API client, with:
+
+``` go
+fakeClient := f.FakeClient()
+fakeDynamicClient := f.FakeDynClient()
+```
+
+## Unstructured List vs. Typed Resource
+
+As you may notice, in [`mocks.go`](./mocks.go) we have methods returning typed Kubernetes objects,
+and sometimes returning `unstructured.Unstructured`. That happens because when using `List` with the
+dynamic client, it fails on parsing objects inside:
+
+```
+item[0]: can't assign or convert v1alpha1.ClusterServiceVersion into unstructured.Unstructured
+```
+
+However, using `Unstructured` it does not fail during testing.
diff --git a/test/mocks/fake.go b/test/mocks/fake.go
new file mode 100644
index 00000000..bcf2efc6
--- /dev/null
+++ b/test/mocks/fake.go
@@ -0,0 +1,104 @@
+package mocks
+
+import (
+	"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/require"
+	appsv1 "k8s.io/api/apps/v1"
+	"k8s.io/apimachinery/pkg/runtime"
+	"k8s.io/client-go/dynamic"
+	fakedynamic "k8s.io/client-go/dynamic/fake"
+	"k8s.io/client-go/kubernetes/scheme"
+	"sigs.k8s.io/controller-runtime/pkg/client"
+	"sigs.k8s.io/controller-runtime/pkg/client/fake"
+
+	v1alpha1 "github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1"
+)
+
+// Fake defines all the elements to fake a kubernetes api client.
+type Fake struct {
+	t    *testing.T       // testing instance
+	ns   string           // namespace
+	S    *runtime.Scheme  // runtime client scheme
+	objs []runtime.Object // all fake objects
+}
+
+// AddMockedServiceBindingRequest add mocked object from ServiceBindingRequestMock.
+func (f *Fake) AddMockedServiceBindingRequest(name, ref string, matchLabels map[string]string) *v1alpha1.ServiceBindingRequest {
+	f.S.AddKnownTypes(v1alpha1.SchemeGroupVersion, &v1alpha1.ServiceBindingRequest{})
+	sbr := ServiceBindingRequestMock(f.ns, name, ref, matchLabels)
+	f.objs = append(f.objs, sbr)
+	return sbr
+}
+
+// AddMockedUnstructuredCSV add mocked unstructured CSV.
+func (f *Fake) AddMockedUnstructuredCSV(name string) {
+	require.Nil(f.t, olmv1alpha1.AddToScheme(f.S))
+	csv, err := UnstructuredClusterServiceVersionMock(f.ns, name)
+	require.Nil(f.t, err)
+	f.S.AddKnownTypes(olmv1alpha1.SchemeGroupVersion, &olmv1alpha1.ClusterServiceVersion{})
+	f.objs = append(f.objs, csv)
+}
+
+// AddMockedCSVList add mocked object from ClusterServiceVersionListMock.
+func (f *Fake) AddMockedCSVList(name string) {
+	require.Nil(f.t, olmv1alpha1.AddToScheme(f.S))
+	f.S.AddKnownTypes(olmv1alpha1.SchemeGroupVersion, &olmv1alpha1.ClusterServiceVersion{})
+	f.objs = append(f.objs, ClusterServiceVersionListMock(f.ns, name))
+}
+
+// AddMockedCSVWithVolumeMountList add mocked object from ClusterServiceVersionListVolumeMountMock.
+func (f *Fake) AddMockedCSVWithVolumeMountList(name string) {
+	require.Nil(f.t, olmv1alpha1.AddToScheme(f.S))
+	f.S.AddKnownTypes(olmv1alpha1.SchemeGroupVersion, &olmv1alpha1.ClusterServiceVersion{})
+	f.objs = append(f.objs, ClusterServiceVersionListVolumeMountMock(f.ns, name))
+}
+
+// AddMockedUnstructuredCSVWithVolumeMount same than AddMockedCSVWithVolumeMountList but using
+// unstructured object.
+func (f *Fake) AddMockedUnstructuredCSVWithVolumeMount(name string) {
+	require.Nil(f.t, olmv1alpha1.AddToScheme(f.S))
+	csv, err := UnstructuredClusterServiceVersionVolumeMountMock(f.ns, name)
+	require.Nil(f.t, err)
+	f.S.AddKnownTypes(olmv1alpha1.SchemeGroupVersion, &olmv1alpha1.ClusterServiceVersion{})
+	f.objs = append(f.objs, csv)
+}
+
+// AddMockedDatabaseCRList add mocked object from DatabaseCRListMock.
+func (f *Fake) AddMockedDatabaseCRList(ref string) {
+	require.Nil(f.t, pgapis.AddToScheme(f.S))
+	f.S.AddKnownTypes(pgv1alpha1.SchemeGroupVersion, &pgv1alpha1.Database{})
+	f.objs = append(f.objs, DatabaseCRListMock(f.ns, ref))
+}
+
+// AddMockedUnstructuredDeployment add mocked object from UnstructuredDeploymentMock.
+func (f *Fake) AddMockedUnstructuredDeployment(name string, matchLabels map[string]string) {
+	require.Nil(f.t, appsv1.AddToScheme(f.S))
+	d, err := UnstructuredDeploymentMock(f.ns, name, matchLabels)
+	require.Nil(f.t, err)
+	f.S.AddKnownTypes(appsv1.SchemeGroupVersion, &appsv1.Deployment{})
+	f.objs = append(f.objs, d)
+}
+
+// AddMockedSecret add mocked object from SecretMock.
+func (f *Fake) AddMockedSecret(name string) {
+	f.objs = append(f.objs, SecretMock(f.ns, name))
+}
+
+// FakeClient returns fake structured api client.
+func (f *Fake) FakeClient() client.Client {
+	return fake.NewFakeClientWithScheme(f.S, f.objs...)
+}
+
+// FakeDynClient returns fake dynamic api client.
+func (f *Fake) FakeDynClient() dynamic.Interface {
+	return fakedynamic.NewSimpleDynamicClient(f.S, f.objs...)
+}
+
+// NewFake instantiate Fake type.
+func NewFake(t *testing.T, ns string) *Fake {
+	return &Fake{t: t, ns: ns, S: scheme.Scheme}
+}
diff --git a/test/mocks/mocks.go b/test/mocks/mocks.go
index 190e0c0c..0c3759c8 100644
--- a/test/mocks/mocks.go
+++ b/test/mocks/mocks.go
@@ -9,110 +9,124 @@ import (
 	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"
+	ustrv1 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+	"k8s.io/apimachinery/pkg/runtime"
 
 	v1alpha1 "github.com/redhat-developer/service-binding-operator/pkg/apis/apps/v1alpha1"
 )
 
 // resource details employed in mocks
 const (
+	CRDName            = "postgresql.baiju.dev"
 	CRDVersion         = "v1alpha1"
 	CRDKind            = "Database"
 	OperatorKind       = "ServiceBindingRequest"
 	OperatorAPIVersion = "apps.openshift.io/v1alpha1"
 )
 
-// CRDGroup is the group of the sample CRD used in this test.
-var CRDGroup string = "postgresql.baiju.dev"
-
-// ClusterServiceVersionMock based on PostgreSQL operator.
-func ClusterServiceVersionMock(ns, name string) olmv1alpha1.ClusterServiceVersion {
-	strategy := olminstall.StrategyDetailsDeployment{
-		DeploymentSpecs: []olminstall.StrategyDeploymentSpec{{
-			Name: "deployment",
-			Spec: appsv1.DeploymentSpec{},
-		}},
+var (
+	// DBNameSpecDesc default spec descriptor to inform the database name.
+	DBNameSpecDesc = olmv1alpha1.SpecDescriptor{
+		DisplayName:  "Database Name",
+		Description:  "Database Name",
+		Path:         "dbName",
+		XDescriptors: []string{"urn:alm:descriptor:servicebindingrequest:env:attribute"},
 	}
-
-	strategyJSON, _ := json.Marshal(strategy)
-
-	return olmv1alpha1.ClusterServiceVersion{
-		ObjectMeta: metav1.ObjectMeta{
-			Namespace: ns,
-			Name:      name,
+	// DBConfigMapSpecDesc spec descriptor to describe a operator that export username and password
+	// via config-map, instead of a usual secret.
+	DBConfigMapSpecDesc = olmv1alpha1.SpecDescriptor{
+		DisplayName: "DB ConfigMap",
+		Description: "Database ConfigMap",
+		Path:        "dbConfigMap",
+		XDescriptors: []string{
+			"urn:alm:descriptor:io.kubernetes:ConfigMap",
+			"urn:alm:descriptor:servicebindingrequest:env:object:configmap:user",
+			"urn:alm:descriptor:servicebindingrequest:env:object:configmap:password",
 		},
-		Spec: olmv1alpha1.ClusterServiceVersionSpec{
-			DisplayName: "mock-database-csv",
-			InstallStrategy: olmv1alpha1.NamedInstallStrategy{
-				StrategyName:    "deployment",
-				StrategySpecRaw: strategyJSON,
-			},
-			CustomResourceDefinitions: olmv1alpha1.CustomResourceDefinitions{
-				Owned: []olmv1alpha1.CRDDescription{CRDDescriptionMock()},
-			},
+	}
+	// DBPasswordCredentialsOnEnvStatusDesc status descriptor to describe a database operator that
+	// publishes username and password over a secret. Default approach.
+	DBPasswordCredentialsOnEnvStatusDesc = olmv1alpha1.StatusDescriptor{
+		DisplayName: "DB Password Credentials",
+		Description: "Database credentials secret",
+		Path:        "dbCredentials",
+		XDescriptors: []string{
+			"urn:alm:descriptor:io.kubernetes:Secret",
+			"urn:alm:descriptor:servicebindingrequest:env:object:secret:user",
+			"urn:alm:descriptor:servicebindingrequest:env:object:secret:password",
+		},
+	}
+	// DBPasswordCredentialsOnVolumeMountStatusDesc status descriptor to describe a operator that
+	// informs credentials via a volume.
+	DBPasswordCredentialsOnVolumeMountStatusDesc = olmv1alpha1.StatusDescriptor{
+		DisplayName: "DB Password Credentials",
+		Description: "Database credentials secret",
+		Path:        "dbCredentials",
+		XDescriptors: []string{
+			"urn:alm:descriptor:io.kubernetes:Secret",
+			"urn:alm:descriptor:servicebindingrequest:volumemount:secret:user",
+			"urn:alm:descriptor:servicebindingrequest:volumemount:secret:password",
 		},
 	}
+)
+
+// crdDescriptionMock based for mocked objects.
+func crdDescriptionMock(
+	specDescriptor []olmv1alpha1.SpecDescriptor,
+	statusDescriptors []olmv1alpha1.StatusDescriptor,
+) olmv1alpha1.CRDDescription {
+	return olmv1alpha1.CRDDescription{
+		Name:              fmt.Sprintf("%s.%s", CRDKind, CRDName),
+		DisplayName:       CRDKind,
+		Description:       "mock-crd-description",
+		Kind:              CRDKind,
+		Version:           CRDVersion,
+		SpecDescriptors:   specDescriptor,
+		StatusDescriptors: statusDescriptors,
+	}
 }
 
 // ClusterServiceVersionListMock returns a list with a single CSV object inside, reusing mock.
-func ClusterServiceVersionListMock(ns, name string) olmv1alpha1.ClusterServiceVersionList {
-	return olmv1alpha1.ClusterServiceVersionList{
+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.
+// CRDDescriptionMock based on PostgreSQL operator, returning a mock using default third party
+// operator setup.
 func CRDDescriptionMock() olmv1alpha1.CRDDescription {
-	return olmv1alpha1.CRDDescription{
-		Name:        fmt.Sprintf("%s.%s", CRDKind, CRDGroup),
-		DisplayName: CRDKind,
-		Description: "mock-crd-description",
-		Kind:        CRDKind,
-		Version:     CRDVersion,
-		SpecDescriptors: []olmv1alpha1.SpecDescriptor{{
-			DisplayName:  "Database Name",
-			Description:  "Database Name",
-			Path:         "dbName",
-			XDescriptors: []string{"urn:alm:descriptor:servicebindingrequest:env:attribute"},
-		}},
-		StatusDescriptors: []olmv1alpha1.StatusDescriptor{{
-			DisplayName: "DB Password Credentials",
-			Description: "Database credentials secret",
-			Path:        "dbCredentials",
-			XDescriptors: []string{
-				"urn:alm:descriptor:io.kubernetes:Secret",
-				"urn:alm:descriptor:servicebindingrequest:env:object:secret:user",
-				"urn:alm:descriptor:servicebindingrequest:env:object:secret:password",
-			},
-		}},
-	}
+	return crdDescriptionMock(
+		[]olmv1alpha1.SpecDescriptor{DBNameSpecDesc},
+		[]olmv1alpha1.StatusDescriptor{DBPasswordCredentialsOnEnvStatusDesc},
+	)
 }
 
-// CRDDescriptionConfigMapMock ...
+// CRDDescriptionConfigMapMock based on PostgreSQL operator, returns a mock using configmap based
+// spec-descriptor
 func CRDDescriptionConfigMapMock() olmv1alpha1.CRDDescription {
-	return olmv1alpha1.CRDDescription{
-		Name:        fmt.Sprintf("%s.%s", CRDKind, CRDGroup),
-		DisplayName: CRDKind,
-		Description: "mock-crd-description",
-		Kind:        CRDKind,
-		Version:     CRDVersion,
-		SpecDescriptors: []olmv1alpha1.SpecDescriptor{{
-			DisplayName: "DB ConfigMap",
-			Description: "Database ConfigMap",
-			Path:        "dbConfigMap",
-			XDescriptors: []string{
-				"urn:alm:descriptor:io.kubernetes:ConfigMap",
-				"urn:alm:descriptor:servicebindingrequest:env:object:configmap:user",
-				"urn:alm:descriptor:servicebindingrequest:env:object:configmap:password",
-			},
-		}},
-	}
+	return crdDescriptionMock(
+		[]olmv1alpha1.SpecDescriptor{DBConfigMapSpecDesc},
+		[]olmv1alpha1.StatusDescriptor{DBPasswordCredentialsOnEnvStatusDesc},
+	)
 }
 
-// ClusterServiceVersionVolumeMountMock based on PostgreSQL operator.
-func ClusterServiceVersionVolumeMountMock(ns, name string) olmv1alpha1.ClusterServiceVersion {
+// CRDDescriptionVolumeMountMock based on PostgreSQL operator, returns a mock having credentials
+// in a volume.
+func CRDDescriptionVolumeMountMock() olmv1alpha1.CRDDescription {
+	return crdDescriptionMock(
+		[]olmv1alpha1.SpecDescriptor{DBNameSpecDesc},
+		[]olmv1alpha1.StatusDescriptor{DBPasswordCredentialsOnVolumeMountStatusDesc},
+	)
+}
+
+// clusterServiceVersionMock base object to create a CSV.
+func clusterServiceVersionMock(
+	ns,
+	name string,
+	crdDescription olmv1alpha1.CRDDescription,
+) olmv1alpha1.ClusterServiceVersion {
 	strategy := olminstall.StrategyDetailsDeployment{
 		DeploymentSpecs: []olminstall.StrategyDeploymentSpec{{
 			Name: "deployment",
@@ -123,6 +137,10 @@ func ClusterServiceVersionVolumeMountMock(ns, name string) olmv1alpha1.ClusterSe
 	strategyJSON, _ := json.Marshal(strategy)
 
 	return olmv1alpha1.ClusterServiceVersion{
+		TypeMeta: metav1.TypeMeta{
+			Kind:       "ClusterServiceVersion",
+			APIVersion: "operators.coreos.com/v1alpha1",
+		},
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: ns,
 			Name:      name,
@@ -134,43 +152,46 @@ func ClusterServiceVersionVolumeMountMock(ns, name string) olmv1alpha1.ClusterSe
 				StrategySpecRaw: strategyJSON,
 			},
 			CustomResourceDefinitions: olmv1alpha1.CustomResourceDefinitions{
-				Owned: []olmv1alpha1.CRDDescription{CRDDescriptionVolumeMountMock()},
+				Owned: []olmv1alpha1.CRDDescription{crdDescription},
 			},
 		},
 	}
 }
 
-// ClusterServiceVersionListVolumeMountMock returns a list with a single CSV object inside, reusing mock.
-func ClusterServiceVersionListVolumeMountMock(ns, name string) olmv1alpha1.ClusterServiceVersionList {
-	return olmv1alpha1.ClusterServiceVersionList{
-		Items: []olmv1alpha1.ClusterServiceVersion{ClusterServiceVersionVolumeMountMock(ns, name)},
-	}
+// ClusterServiceVersionMock based on PostgreSQL operator having what's expected as defaults.
+func ClusterServiceVersionMock(ns, name string) olmv1alpha1.ClusterServiceVersion {
+	return clusterServiceVersionMock(ns, name, CRDDescriptionMock())
 }
 
-// CRDDescriptionVolumeMountMock ...
-func CRDDescriptionVolumeMountMock() olmv1alpha1.CRDDescription {
-	return olmv1alpha1.CRDDescription{
-		Name:        fmt.Sprintf("%s.%s", CRDKind, CRDGroup),
-		DisplayName: CRDKind,
-		Description: "mock-crd-description",
-		Kind:        CRDKind,
-		Version:     CRDVersion,
-		SpecDescriptors: []olmv1alpha1.SpecDescriptor{{
-			DisplayName:  "Database Name",
-			Description:  "Database Name",
-			Path:         "dbName",
-			XDescriptors: []string{"urn:alm:descriptor:servicebindingrequest:env:attribute"},
-		}},
-		StatusDescriptors: []olmv1alpha1.StatusDescriptor{{
-			DisplayName: "DB Password Credentials",
-			Description: "Database credentials secret",
-			Path:        "dbCredentials",
-			XDescriptors: []string{
-				"urn:alm:descriptor:io.kubernetes:Secret",
-				"urn:alm:descriptor:servicebindingrequest:volumemount:secret:user",
-				"urn:alm:descriptor:servicebindingrequest:volumemount:secret:password",
-			},
-		}},
+// UnstructuredClusterServiceVersionMock unstructured object based on ClusterServiceVersionMock.
+func UnstructuredClusterServiceVersionMock(ns, name string) (*ustrv1.Unstructured, error) {
+	csv := ClusterServiceVersionMock(ns, name)
+	data, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&csv)
+	u := ustrv1.Unstructured{Object: data}
+	return &u, err
+}
+
+// ClusterServiceVersionVolumeMountMock based on PostgreSQL operator.
+func ClusterServiceVersionVolumeMountMock(ns, name string) olmv1alpha1.ClusterServiceVersion {
+	return clusterServiceVersionMock(ns, name, CRDDescriptionVolumeMountMock())
+}
+
+// UnstructuredClusterServiceVersionVolumeMountMock returns ClusterServiceVersionVolumeMountMock as
+// unstructured object
+func UnstructuredClusterServiceVersionVolumeMountMock(
+	ns string,
+	name string,
+) (*ustrv1.Unstructured, error) {
+	csv := ClusterServiceVersionVolumeMountMock(ns, name)
+	data, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&csv)
+	u := ustrv1.Unstructured{Object: data}
+	return &u, err
+}
+
+// ClusterServiceVersionListVolumeMountMock returns a list with a single CSV object inside, reusing mock.
+func ClusterServiceVersionListVolumeMountMock(ns, name string) *olmv1alpha1.ClusterServiceVersionList {
+	return &olmv1alpha1.ClusterServiceVersionList{
+		Items: []olmv1alpha1.ClusterServiceVersion{ClusterServiceVersionVolumeMountMock(ns, name)},
 	}
 }
 
@@ -181,7 +202,7 @@ func DatabaseCRMock(ns, name string) pgv1alpha1.Database {
 		// it via *unstructured.Unstructured it could not find this CR without it.
 		TypeMeta: metav1.TypeMeta{
 			Kind:       CRDKind,
-			APIVersion: fmt.Sprintf("%s/%s", CRDGroup, CRDVersion),
+			APIVersion: fmt.Sprintf("%s/%s", CRDName, CRDVersion),
 		},
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: ns,
@@ -198,15 +219,15 @@ func DatabaseCRMock(ns, name string) pgv1alpha1.Database {
 }
 
 // DatabaseCRListMock returns a list with a single database CR inside, reusing existing mock.
-func DatabaseCRListMock(ns, name string) pgv1alpha1.DatabaseList {
-	return pgv1alpha1.DatabaseList{
+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{
+func SecretMock(ns, name string) *corev1.Secret {
+	return &corev1.Secret{
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: ns,
 			Name:      name,
@@ -218,7 +239,7 @@ func SecretMock(ns, name string) corev1.Secret {
 	}
 }
 
-// ConfigMapMock ...
+// ConfigMapMock returns a dummy config-map object.
 func ConfigMapMock(ns, name string) corev1.ConfigMap {
 	return corev1.ConfigMap{
 		ObjectMeta: metav1.ObjectMeta{
@@ -235,9 +256,8 @@ func ConfigMapMock(ns, name string) corev1.ConfigMap {
 // 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{
+) *v1alpha1.ServiceBindingRequest {
+	return &v1alpha1.ServiceBindingRequest{
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: ns,
 			Name:      name,
@@ -245,28 +265,57 @@ func ServiceBindingRequestMock(
 		Spec: v1alpha1.ServiceBindingRequestSpec{
 			MountPathPrefix: "/var/redhat",
 			BackingServiceSelector: v1alpha1.BackingServiceSelector{
-				Group:       &CRDGroup,
-				Kind:        CRDKind,
+				Group:       CRDName,
 				Version:     CRDVersion,
+				Kind:        CRDKind,
 				ResourceRef: resourceRef,
 			},
 			ApplicationSelector: v1alpha1.ApplicationSelector{
-				Kind:        "Deployment",
+				Group:       "apps",
+				Version:     "v1",
+				Resource:    "deployments",
 				MatchLabels: matchLabels,
 			},
 		},
 	}
 }
 
+// DeploymentListMock returns a list of DeploymentMock.
+func DeploymentListMock(ns, name string, matchLabels map[string]string) appsv1.DeploymentList {
+	return appsv1.DeploymentList{
+		TypeMeta: metav1.TypeMeta{
+			Kind:       "DeploymentList",
+			APIVersion: "apps/v1",
+		},
+		Items: []appsv1.Deployment{DeploymentMock(ns, name, matchLabels)},
+	}
+}
+
+// UnstructuredDeploymentMock converts the DeploymentMock to unstructured.
+func UnstructuredDeploymentMock(
+	ns,
+	name string,
+	matchLabels map[string]string,
+) (*ustrv1.Unstructured, error) {
+	d := DeploymentMock(ns, name, matchLabels)
+	data, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&d)
+	u := ustrv1.Unstructured{Object: data}
+	return &u, err
+}
+
 // DeploymentMock creates a mocked Deployment object of busybox.
-func DeploymentMock(ns, name string, matchLabels map[string]string) extv1beta1.Deployment {
-	return extv1beta1.Deployment{
+func DeploymentMock(ns, name string, matchLabels map[string]string) appsv1.Deployment {
+	return appsv1.Deployment{
+		TypeMeta: metav1.TypeMeta{
+			Kind:       "Deployment",
+			APIVersion: "apps/v1",
+		},
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: ns,
 			Name:      name,
 			Labels:    matchLabels,
 		},
-		Spec: extv1beta1.DeploymentSpec{
+		Spec: appsv1.DeploymentSpec{
 			Selector: &metav1.LabelSelector{
 				MatchLabels: matchLabels,
 			},
@@ -319,7 +368,7 @@ func NestedDatabaseCRMock(ns, name string) NestedDatabase {
 		// it via *unstructured.Unstructured it could not find this CR without it.
 		TypeMeta: metav1.TypeMeta{
 			Kind:       CRDKind,
-			APIVersion: fmt.Sprintf("%s/%s", CRDGroup, CRDVersion),
+			APIVersion: fmt.Sprintf("%s/%s", CRDName, CRDVersion),
 		},
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: ns,
@@ -350,11 +399,11 @@ type ConfigMapDatabase struct {
 }
 
 // DatabaseConfigMapMock ...
-func DatabaseConfigMapMock(ns, name string) ConfigMapDatabase {
-	return ConfigMapDatabase{
+func DatabaseConfigMapMock(ns, name string) *ConfigMapDatabase {
+	return &ConfigMapDatabase{
 		TypeMeta: metav1.TypeMeta{
 			Kind:       CRDKind,
-			APIVersion: fmt.Sprintf("%s/%s", CRDGroup, CRDVersion),
+			APIVersion: fmt.Sprintf("%s/%s", CRDName, CRDVersion),
 		},
 		ObjectMeta: metav1.ObjectMeta{
 			Namespace: ns,