Repository: redhat-developer/service-binding-operator
Pull request #1251 (2022-10-05 12:04:23)

disable olm descriptor support
This was causing performance issues under OCP 4.11.

Signed-off-by: Andy Sadler <ansadler@redhat.com>

# Changes

/kind enhancement

# Submitter Checklist

As the author of this PR, please check off the items in this checklist:

- [x] [Docs](https://github.com/redhat-developer/service-binding-operator/blob/master/CONTRIBUTING.md#docs) 
  included if any changes are user facing
- [x] [Tests](https://github.com/redhat-developer/service-binding-operator/blob/master/CONTRIBUTING.md#tests)
  included if any functionality added or changed. For bugfixes please include tests that can catch regressions
- [x] All acceptance test scenarios included in the PR which verifies a bugfix or a requested feature reported by a non-member are tagged with `@external-feedback` tag.
- [x] Follows the [commit message standard](https://github.com/redhat-developer/service-binding-operator/blob/master/CONTRIBUTING.md#commits)



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

This pull-request has been approved by:
**Once this PR has been reviewed and has the lgtm label**, please ask for approval from sadlerap by writing `/assign @sadlerap` in a comment. For more information see:[The Kubernetes Code Review Process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process).

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":["sadlerap"]} -->
sadlerap: /test performance
openshift-ci[bot]: @sadlerap: The following test **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
ci/prow/4.12-acceptance | 5a7ca058d1861fe42dd4196a4461744ee4d51f61 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1251/pull-ci-redhat-developer-service-binding-operator-master-4.12-acceptance/1577630798658408448) | true | `/test 4.12-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1251). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:sadlerap).

<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 -->
pmacik: Recently, Crunchy Postgres Operator test started to fail on OCP 4.12.. working on fixing that in https://github.com/redhat-developer/service-binding-operator/pull/1250
openshift-ci[bot]: @sadlerap: The following test **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
ci/prow/4.12-acceptance | ecca6f04221fbca0487986ab2e9d3a8f1738efb3 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1251/pull-ci-redhat-developer-service-binding-operator-master-4.12-acceptance/1578014072551510016) | true | `/test 4.12-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1251). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:sadlerap).

<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 -->
pmacik: /retest
pmacik: /lgtm
/approve

```yaml
kpi:
- name: usage
  metrics:
  - average: 12.03225806451613
    first: 1.0
    last: 34.0
    maximum: 86.0
    median: 5.0
    minimum: 0.0
    name: CPU_millicores
  
  - average: 108.09925558312655
    first: 49.0
    last: 148.0
    maximum: 149.0
    median: 112.0
    minimum: 49.0
    name: Memory_MiB
```
openshift-ci[bot]: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/redhat-developer/service-binding-operator/pull/1251#issuecomment-1270603183" title="Approved">pmacik</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)~~ [pmacik]

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":[]} -->
openshift-ci[bot]: @sadlerap: The following test **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
ci/prow/4.12-acceptance | ecca6f04221fbca0487986ab2e9d3a8f1738efb3 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1251/pull-ci-redhat-developer-service-binding-operator-master-4.12-acceptance/1578071081145602048) | true | `/test 4.12-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1251). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:sadlerap).

<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 -->
pmacik: /retest
openshift-ci[bot]: @sadlerap: The following test **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
ci/prow/4.12-acceptance | ecca6f04221fbca0487986ab2e9d3a8f1738efb3 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1251/pull-ci-redhat-developer-service-binding-operator-master-4.12-acceptance/1578252621687296000) | true | `/test 4.12-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1251). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:sadlerap).

<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 -->
pmacik: Manually tested with 4.12 and the tests passed. Merging.

Patch:
diff --git a/docs/userguide/modules/ROOT/pages/intro.adoc b/docs/userguide/modules/ROOT/pages/intro.adoc
index a42902fd..1e2fb7f5 100644
--- a/docs/userguide/modules/ROOT/pages/intro.adoc
+++ b/docs/userguide/modules/ROOT/pages/intro.adoc
@@ -34,18 +34,18 @@ With {servicebinding-title}, you can:
 *Exposal of binding data from services*
 
 * Based on annotations present in CRD, custom resources (CRs), or resources.
-* Based on descriptors present in Operator Lifecycle Manager (OLM) descriptors.
+* Project secrets and services following the Provisioned Service standard.
 
 *Workload projection*
 
-* Projection of binding data as files, with a volume mounts.
+* Projection of binding data as files, with a volume mount.
 * Projection of binding data as environment variables.
 
 *Service Binding Options*
 
 * Bind backing services in a namespace that is different from the workload namespace.
 * Project binding data into the specific container workloads.
-* Auto-detection of the binding data from resources owned by the backing service CR. 
+* Auto-detection of the binding data from resources owned by the backing service CR.
 * Change the binding names before projecting them into workload.
 * Compose custom binding data from the exposed binding data.
 * Support for non-`PodSpec` compliant workload resources.
@@ -71,7 +71,7 @@ By using the {servicebinding-title}, as an application developer, you need to de
 The CRD of the {servicebinding-title} supports the following APIs:
 
 * *Service Binding* with the `binding.operators.coreos.com` API group.
-+ 
++
 This API is compliant with the Service Binding specification. It is fully supported and considered as the mature API. Use this API in production environments.
 
 * *Service Binding (Spec API Tech Preview)* with the `servicebinding.io` API group.
@@ -100,5 +100,3 @@ vars
 [#referenced-specification]
 == Referenced specification
 Service Binding Operator supports the https://github.com/k8s-service-bindings/spec[Service Binding Specification for Kubernetes].
-
-
diff --git a/docs/userguide/modules/binding-workloads-using-sbo/pages/binding-options.adoc b/docs/userguide/modules/binding-workloads-using-sbo/pages/binding-options.adoc
index 2fcb60ea..8c17e20c 100644
--- a/docs/userguide/modules/binding-workloads-using-sbo/pages/binding-options.adoc
+++ b/docs/userguide/modules/binding-workloads-using-sbo/pages/binding-options.adoc
@@ -18,7 +18,7 @@ While using naming strategies, depending on the expectations or requirements of
 * `title`: Converts the character strings where the first letter of each word is capitalized except for certain minor words.
 
 .Predefined naming strategies
-Binding names declared through annotations or Operator Lifecycle Manager (OLM) descriptors are processed for their name change before their projection into the workload according to the following predefined naming strategies:
+Binding names declared through annotations are processed for their name change before their projection into the workload according to the following predefined naming strategies:
 
 * `none`: When applied, there are no changes in the binding names.
 +
diff --git a/docs/userguide/modules/exposing-binding-data/nav.adoc b/docs/userguide/modules/exposing-binding-data/nav.adoc
index 86006f39..3d0e44ef 100644
--- a/docs/userguide/modules/exposing-binding-data/nav.adoc
+++ b/docs/userguide/modules/exposing-binding-data/nav.adoc
@@ -4,6 +4,5 @@
 ** xref:provisioned-service.adoc[]
 ** xref:direct-secret-reference.adoc[]
 ** xref:adding-annotation.adoc[]
-** xref:olm-descriptors.adoc[]
 ** xref:detect-bindings.adoc[]
 
diff --git a/docs/userguide/modules/exposing-binding-data/pages/intro-expose-binding.adoc b/docs/userguide/modules/exposing-binding-data/pages/intro-expose-binding.adoc
index e3a265ff..d9105ea0 100644
--- a/docs/userguide/modules/exposing-binding-data/pages/intro-expose-binding.adoc
+++ b/docs/userguide/modules/exposing-binding-data/pages/intro-expose-binding.adoc
@@ -24,7 +24,6 @@ You must expose the binding data from the backing service. Depending on your wor
 +
 ** xref:direct-secret-reference.adoc[Direct secret reference]
 ** xref:adding-annotation.adoc[Declaring binding data through custom resource definition (CRD) or CR annotations]
-** xref:olm-descriptors.adoc[Declaring binding data through Operator Lifecycle Manager (OLM) descriptors]
 ** xref:detect-bindings.adoc[Detection of binding data through owned resources]
 
 
@@ -47,12 +46,9 @@ collection of objects
 [#data-model]
 == Data model
 
-This section explains the data model used in the annotation and OLM
-descriptors. The data model is same for CRD or CR annotations and OLM
-descriptors, but the syntax is different, which is explained in the
-respective sections.
+This section explains the data model used in the annotations.
 
-* `path`: JSONPath template is composed of JSONPath expressions enclosed by curly braces {}.The data model used in the annotations and OLM descriptors follow specific conventions.
+* `path`: JSONPath template is composed of JSONPath expressions enclosed by curly braces {}. The data model used in the annotations follow specific conventions.
 
 Service binding annotations must use the following convention:
 
@@ -66,8 +62,6 @@ where:
 `<NAME>`:: Specifies the name under which the binding value is to be exposed. You can exclude it only when the `objectType` parameter is set to `Secret` or `ConfigMap`.
 `<VALUE>`:: Specifies the constant value exposed when no `path` is set.
 
-Although, the data model is the same for custom resource definitions (CRD), custom resource (CR) annotations, and Operator Lifecycle Manager (OLM) descriptors, the syntax for each one differs.
-
 The data model provides the details on the allowed values and semantic for the `path`, `elementType`, `objectType`, `sourceKey`, and `sourceValue` parameters.
 
 .Parameters and their descriptions
diff --git a/docs/userguide/modules/exposing-binding-data/pages/olm-descriptors.adoc b/docs/userguide/modules/exposing-binding-data/pages/olm-descriptors.adoc
deleted file mode 100644
index 5d55bbd6..00000000
--- a/docs/userguide/modules/exposing-binding-data/pages/olm-descriptors.adoc
+++ /dev/null
@@ -1,181 +0,0 @@
-[#declaring-binding-data-through-OLM-descriptors]
-= Declaring binding data through OLM descriptors
-
-You can use this method if your backing service is provided by an Operator. If your Operator is distributed as an https://github.com/operator-framework/operator-registry/blob/master/docs/design/operator-bundle.md[Operator Bundle], you can add https://github.com/openshift/console/blob/master/frontend/packages/operator-lifecycle-manager/src/components/descriptors/reference/reference.md[Operator Lifecycle Manager (OLM) descriptors] to describe the binding data that is to be exposed. The OLM descriptors are part of https://docs.openshift.com/container-platform/4.7/operators/operator_sdk/osdk-generating-csvs.html[Cluster Service Version] resources. The {servicebinding-title} detects the OLM descriptors and then creates a `Secret` resource with the values extracted based on the detected OLM descriptors.
-
-You can expose the binding data by using the `specDescriptors` array and `statusDescriptors` array. The `specDescriptors` array specifies a path under the `.spec` section of a CR. The `statusDescriptors` array specifies a path under the `.status` section of a CR.
-
-Following are the only two fields that are used for binding the data:
-
-* `Path`: A dot-delimited path of the field on the object as described by the descriptor.
-*  `X-Descriptors`: Defines the binding data.
-
-The following examples show how to define an X-Descriptor depending on the resource to which you point the path:
-
-.Example: X-Descriptor definition for exposing a secret
-[source,yaml]
-----
-- path: data.dbCredentials
-  x-descriptors:
-  - urn:alm:descriptor:io.kubernetes:Secret
-  - service.binding
-----
-
-.Example: X-Descriptor definition for exposing a config map
-[source,yaml]
-----
-- path: data.dbConfiguration
-  x-descriptors:
-  - urn:alm:descriptor:io.kubernetes:ConfigMap
-  - service.binding
-----
-
-[NOTE]
-====
-* You must have a `service.binding` entry in the X-Descriptors to identify that it is a configuration for service binding.
-* The absence of the `Secret` or `ConfigMap` specific X-Descriptors indicates that the descriptor is referencing the binding data value at the given path.
-====
-
-[#exposing-entire-configmap-or-secret-referenced-from-resource]
-== Exposing an entire config map or secret that is referenced from a resource
-The following example shows how to expose an entire config map through OLM descriptors:
-
-.Example: Exposing an entire config map through OLM descriptors
-[source,yaml]
-----
-- path: data.dbConfiguration
-  x-descriptors:
-  - urn:alm:descriptor:io.kubernetes:ConfigMap
-  - service.binding
-----
-
-This example uses the `path` attribute with a `urn:alm:descriptor:io.kubernetes:ConfigMap` entry to indicate that the path points to the `ConfigMap` service resource.
-
-If you intend to project all the values from a `ConfigMap` service resource, you must specify it as an attribute in the backing service CR. For example, if the attribute is part of the `.spec` section, you can create and use a `specDescriptors` array. Or, if the attribute is part of the `.status` section, you can create and use a `statusDescriptors` array.
-
-[#exposing-specific-entry-from-config-map-or-secret-referenced-from-resource]
-== Exposing a specific entry from a config map or secret that is referenced from a resource
-The following examples show how to expose a specific entry from a config map  or secret through OLM descriptors:
-
-.Example: Exposing an entry from a config map through OLM descriptors
-[source,yaml]
-----
-- path: data.dbConfiguration
-  x-descriptors:
-  - urn:alm:descriptor:io.kubernetes:ConfigMap
-  - service.binding:my_certificate:sourceKey=certificate
-----
-
-.Example: Exposing an entry from a secret through OLM descriptors
-[source,yaml]
-----
-- path: data.dbConfiguration
-  x-descriptors:
-  - urn:alm:descriptor:io.kubernetes:Secret
-  - service.binding:my_certificate:sourceKey=certificate
-----
-
-The previous examples use the `path` attribute with an `X-Descriptors` update for `service.binding` and `sourceKey` by providing the following information:
-
-* Name of the binding key that is to be projected
-* Name of the key in the Secret service resource
-
-[#exposing-resource-definition-value]
-== Exposing a resource definition value
-The following example shows how to expose a resource definition value through OLM descriptors:
-
-.Example: Exposing a resource definition value through OLM descriptors
-[source,yaml]
-----
-- path: data.connectionURL
-  x-descriptors:
-  - service.binding:uri
-----
-
-The previous example uses the `connectionURL` attribute that points to the required resource definition value that is to be projected as `uri`.
-
-If required values are available as attributes of backing service resources, annotating these values using `X-Descriptors` identifies them as the binding data.
-
-
-[#exposing-entries-of-collection-with-key-and-value-from-each-entry]
-== Exposing entries of a collection with the key and value from each entry
-The following example shows how to expose the entries of a collection with the key and value from each entry through OLM descriptors:
-
-.Example: Exposing the entries of a collection through OLM descriptors
-[source,yaml]
-----
-- path: bootstrap
-  x-descriptors:
-  - service.binding:endpoints:elementType=sliceOfMaps:sourceKey=type:sourceValue=url
-----
-
-The previous example uses the `path` attribute with an `X-Descriptors` update for the required entries of a collection.
-
-.Example: Configuration from a backing service resource
-[source,yaml]
-----
-status:
-  connections:
-    - type: primary
-      url: primary.example.com
-    - type: secondary
-      url: secondary.example.com
-    - type: '404'
-      url: black-hole.example.com
-----
-
-The previous example helps you to project all those values with keys such as `primary`,
-`secondary`, and so on.
-
-
-[#exposing-items-of-collection-with-one-key-per-item]
-== Exposing items of a collection with one key per item
-The following example shows how to expose the items of a collection with one key per item through OLM descriptors:
-
-.Example: Exposing the items of a collection through OLM descriptors
-[source,yaml]
-----
-- path: spec.tags
-  x-descriptors:
-  - service.binding:tags:elementType=sliceOfStrings
-----
-
-The previous example uses the `path` attribute with an `X-Descriptors` update for the required items of a collection.
-
-.Example: Configuration from a backing service resource
-[source,yaml]
-----
-spec:
-  tags:
-  - knowledge
-  - is
-  - power
-----
-
-The previous example helps you project all those values with key such as `prefix_0`, `prefix_1`, and so on. The default prefix is the name of the resource `kind:`.
-
-[#exposing-values-of-collection-entries-with-one-key-per-entry-value]
-== Exposing values of collection entries with one key per entry value
-The following example shows how to expose the values of collection entries with one key per entry value through OLM descriptors:
-
-.Example: Exposing the values of collection entries through OLM descriptors
-[source,yaml]
-----
-- path: bootstrap
-  x-descriptors:
-  - service.binding:endpoints:elementType=sliceOfStrings:sourceValue=url
-----
-
-The previous example uses the `path` attribute with an `X-Descriptors` update for the required values of a collection.
-
-The following example shows how the previous values of a collection are projected into the bound application.
-
-.Example: Binding data files
-[source,text]
-----
-/bindings/<binding-name>/url_0 => primary.example.com
-/bindings/<binding-name>/url_1 => secondary.example.com
-/bindings/<binding-name>/url_2 => black-hole.example.com
-----
-
-The previous example helps you project all those values with key such as `prefix_0`, `prefix_1`, and so on. The default prefix is the name of the resource `kind:`.
diff --git a/pkg/reconcile/pipeline/api.go b/pkg/reconcile/pipeline/api.go
index ff294c14..b884fa39 100644
--- a/pkg/reconcile/pipeline/api.go
+++ b/pkg/reconcile/pipeline/api.go
@@ -119,9 +119,6 @@ type CRD interface {
 	HasResource
 
 	Bindable
-
-	// optional Descriptor attached to ClusterServiceVersion resource
-	Descriptor() (*CRDDescription, error)
 }
 
 // Pipeline context passed to each handler
diff --git a/pkg/reconcile/pipeline/context/service/service.go b/pkg/reconcile/pipeline/context/service/service.go
index 89d37d0b..423e9888 100644
--- a/pkg/reconcile/pipeline/context/service/service.go
+++ b/pkg/reconcile/pipeline/context/service/service.go
@@ -2,9 +2,7 @@ package service
 
 import (
 	"context"
-	e "errors"
 
-	olmv1alpha1 "github.com/operator-framework/api/pkg/operators/v1alpha1"
 	"github.com/redhat-developer/service-binding-operator/pkg/binding"
 	"github.com/redhat-developer/service-binding-operator/pkg/binding/registry"
 	"github.com/redhat-developer/service-binding-operator/pkg/client/kubernetes"
@@ -16,7 +14,6 @@ import (
 	"k8s.io/apimachinery/pkg/api/errors"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
-	"k8s.io/apimachinery/pkg/runtime"
 	"k8s.io/apimachinery/pkg/runtime/schema"
 	"k8s.io/client-go/dynamic"
 )
@@ -238,14 +235,7 @@ func (c *customResourceDefinition) kind() string {
 }
 
 func (c *customResourceDefinition) IsBindable() (bool, error) {
-	descriptor, err := c.Descriptor()
-	if err != nil {
-		return false, err
-	}
 	annotations := make(map[string]string)
-	if descriptor != nil {
-		util.MergeMaps(annotations, descriptor.BindingAnnotations())
-	}
 	util.MergeMaps(annotations, c.resource.GetAnnotations())
 	if len(annotations) == 0 {
 		return false, nil
@@ -262,43 +252,3 @@ func (c *customResourceDefinition) IsBindable() (bool, error) {
 	}
 	return false, nil
 }
-
-func (c *customResourceDefinition) Descriptor() (*pipeline.CRDDescription, error) {
-	csvs, err := c.client.Resource(olmv1alpha1.SchemeGroupVersion.WithResource("clusterserviceversions")).Namespace(c.ns).List(context.Background(), metav1.ListOptions{})
-	if err != nil {
-		if errors.IsNotFound(err) {
-			return nil, nil
-		}
-		return nil, err
-	}
-	if len(csvs.Items) == 0 {
-		return nil, nil
-	}
-	for _, csv := range csvs.Items {
-		ownedPath := []string{"spec", "customresourcedefinitions", "owned"}
-
-		ownedCRDs, exists, err := unstructured.NestedSlice(csv.Object, ownedPath...)
-		if err != nil {
-			return nil, err
-		}
-		if !exists {
-			continue
-		}
-
-		for _, crd := range ownedCRDs {
-			crdDesciption := &pipeline.CRDDescription{}
-			data, ok := crd.(map[string]interface{})
-			if !ok {
-				return nil, e.New("cannot cast to map")
-			}
-			err := runtime.DefaultUnstructuredConverter.FromUnstructured(data, crdDesciption)
-			if err != nil {
-				return nil, err
-			}
-			if crdDesciption.Name == c.resource.GetName() && crdDesciption.Kind == c.kind() && crdDesciption.Version == c.serviceGVR.Version {
-				return crdDesciption, nil
-			}
-		}
-	}
-	return nil, nil
-}
diff --git a/pkg/reconcile/pipeline/handler/collect/impl.go b/pkg/reconcile/pipeline/handler/collect/impl.go
index 283d1e20..9fae7a93 100644
--- a/pkg/reconcile/pipeline/handler/collect/impl.go
+++ b/pkg/reconcile/pipeline/handler/collect/impl.go
@@ -49,14 +49,6 @@ func BindingDefinitions(ctx pipeline.Context) {
 			return
 		}
 		if crd != nil {
-			descr, err := crd.Descriptor()
-			if err != nil {
-				requestRetry(ctx, ErrorReadingDescriptorReason, err)
-				return
-			}
-			if descr != nil {
-				util.MergeMaps(anns, descr.BindingAnnotations())
-			}
 			util.MergeMaps(anns, crd.Resource().GetAnnotations())
 		}
 
diff --git a/pkg/reconcile/pipeline/mocks/mocks_pipeline.go b/pkg/reconcile/pipeline/mocks/mocks_pipeline.go
index 8c264f75..ccb8b6bb 100644
--- a/pkg/reconcile/pipeline/mocks/mocks_pipeline.go
+++ b/pkg/reconcile/pipeline/mocks/mocks_pipeline.go
@@ -510,21 +510,6 @@ func (m *MockCRD) EXPECT() *MockCRDMockRecorder {
 	return m.recorder
 }
 
-// Descriptor mocks base method.
-func (m *MockCRD) Descriptor() (*pipeline.CRDDescription, error) {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "Descriptor")
-	ret0, _ := ret[0].(*pipeline.CRDDescription)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// Descriptor indicates an expected call of Descriptor.
-func (mr *MockCRDMockRecorder) Descriptor() *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Descriptor", reflect.TypeOf((*MockCRD)(nil).Descriptor))
-}
-
 // IsBindable mocks base method.
 func (m *MockCRD) IsBindable() (bool, error) {
 	m.ctrl.T.Helper()


Test patch:
diff --git a/pkg/reconcile/pipeline/context/service/crd_test.go b/pkg/reconcile/pipeline/context/service/crd_test.go
index 9d7accd0..c2e8faed 100644
--- a/pkg/reconcile/pipeline/context/service/crd_test.go
+++ b/pkg/reconcile/pipeline/context/service/crd_test.go
@@ -5,11 +5,8 @@ import (
 	. "github.com/onsi/ginkgo/extensions/table"
 	. "github.com/onsi/gomega"
 	"github.com/redhat-developer/service-binding-operator/pkg/binding"
-	"github.com/redhat-developer/service-binding-operator/pkg/converter"
-	v1apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/runtime"
-	"k8s.io/apimachinery/pkg/runtime/schema"
 	"k8s.io/client-go/dynamic/fake"
 
 	"github.com/golang/mock/gomock"
@@ -73,48 +70,4 @@ var _ = Describe("CRD", func() {
 		crd := &customResourceDefinition{resource: u, client: client}
 		Expect(crd.IsBindable()).To(BeFalse())
 	})
-
-	It("should be bindable if there are service binding descriptors on CSV", func() {
-		res := &v1apiextensions.CustomResourceDefinition{}
-		res.Spec.Names.Kind = "Foo"
-		res.Name = "foo"
-		u, err := converter.ToUnstructured(res)
-		Expect(err).NotTo(HaveOccurred())
-
-		serviceGVR := schema.GroupVersionResource{Version: "v1"}
-
-		csv := &olmv1alpha1.ClusterServiceVersion{}
-		csv.Spec.CustomResourceDefinitions.Owned = []olmv1alpha1.CRDDescription{
-			{
-				Name:    u.GetName(),
-				Version: serviceGVR.Version,
-				Kind:    "Foo",
-				StatusDescriptors: []olmv1alpha1.StatusDescriptor{
-					{
-						Path:         "foo",
-						XDescriptors: []string{"urn:alm:descriptor:io.kubernetes:Secret", "service.binding:username:sourceValue=username"},
-					},
-					{
-						Path:         "bar",
-						XDescriptors: []string{"bar"},
-					},
-					{
-						Path:         "foo2",
-						XDescriptors: []string{"urn:alm:descriptor:io.kubernetes:Secret", "service.binding:username2:sourceValue=username"},
-					},
-				},
-			},
-		}
-		ucsv, err := converter.ToUnstructured(csv)
-		Expect(err).NotTo(HaveOccurred())
-		ucsv.SetGroupVersionKind(olmv1alpha1.SchemeGroupVersion.WithKind("ClusterServiceVersion"))
-		ns := "ns1"
-		ucsv.SetName("foo")
-		ucsv.SetNamespace(ns)
-		client = fake.NewSimpleDynamicClient(runtime.NewScheme(), ucsv)
-
-		crd := &customResourceDefinition{resource: u, client: client, ns: ns, serviceGVR: &serviceGVR}
-
-		Expect(crd.IsBindable()).To(BeTrue())
-	})
 })
diff --git a/pkg/reconcile/pipeline/handler/collect/impl_test.go b/pkg/reconcile/pipeline/handler/collect/impl_test.go
index 398a045f..9cde6598 100644
--- a/pkg/reconcile/pipeline/handler/collect/impl_test.go
+++ b/pkg/reconcile/pipeline/handler/collect/impl_test.go
@@ -12,7 +12,6 @@ import (
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/ginkgo/extensions/table"
 
-	olmv1alpha1 "github.com/operator-framework/api/pkg/operators/v1alpha1"
 	"github.com/redhat-developer/service-binding-operator/apis"
 	"github.com/redhat-developer/service-binding-operator/pkg/binding"
 	bindingmocks "github.com/redhat-developer/service-binding-operator/pkg/binding/mocks"
@@ -71,7 +70,6 @@ var _ = Describe("Collect Binding Definitions", func() {
 	})
 
 	Describe("request retry processing and set collection ready status to false", func() {
-
 		var (
 			errMsg = "foo"
 			err    = errors.New(errMsg)
@@ -85,7 +83,6 @@ var _ = Describe("Collect Binding Definitions", func() {
 				service1.EXPECT().CustomResourceDefinition().Return(crd, nil)
 				service1.EXPECT().Resource().Return(&unstructured.Unstructured{})
 				crd.EXPECT().Resource().Return(&unstructured.Unstructured{})
-				crd.EXPECT().Descriptor().Return(nil, nil)
 
 				service2 := mocks.NewMockService(mockCtrl)
 				service2.EXPECT().CustomResourceDefinition().Return(nil, err)
@@ -94,27 +91,6 @@ var _ = Describe("Collect Binding Definitions", func() {
 
 			shouldRetry(pipeline.HandlerFunc(collect.BindingDefinitions), collect.ErrorReadingCRD, err)
 		})
-
-		Context("on error reading descriptor from at least one service", func() {
-			BeforeEach(func() {
-				service1 := mocks.NewMockService(mockCtrl)
-				crd := mocks.NewMockCRD(mockCtrl)
-				service1.EXPECT().CustomResourceDefinition().Return(crd, nil)
-				service1.EXPECT().Resource().Return(&unstructured.Unstructured{})
-				crd.EXPECT().Resource().Return(&unstructured.Unstructured{})
-				crd.EXPECT().Descriptor().Return(nil, nil)
-
-				service2 := mocks.NewMockService(mockCtrl)
-				crd2 := mocks.NewMockCRD(mockCtrl)
-				service2.EXPECT().CustomResourceDefinition().Return(crd2, nil)
-				crd2.EXPECT().Descriptor().Return(nil, err)
-
-				ctx.EXPECT().Services().Return([]pipeline.Service{service1, service2}, nil)
-			})
-
-			shouldRetry(pipeline.HandlerFunc(collect.BindingDefinitions), collect.ErrorReadingDescriptorReason, err)
-		})
-
 	})
 	Describe("successful processing", func() {
 
@@ -161,7 +137,6 @@ var _ = Describe("Collect Binding Definitions", func() {
 					"service.binding/foo":                   "path={.status.foo},objectType=Secret,sourceValue=username",
 					"service.binding/foo2":                  "path={.status.foo2},objectType=Secret,sourceValue=username",
 				})
-				crd.EXPECT().Descriptor().Return(&pipeline.CRDDescription{}, nil)
 				service.EXPECT().AddBindingDef(bindingDefPath([]string{"status", "foo"}))
 				service.EXPECT().AddBindingDef(bindingDefPath([]string{"status", "foo2"}))
 				collect.BindingDefinitions(ctx)
@@ -173,124 +148,12 @@ var _ = Describe("Collect Binding Definitions", func() {
 					"service.binding/foo":  "path={.status.foo},objectType=Secret,sourceValue=username",
 					"service.binding/foo2": "path={.status.foo2},objectType=Secret,sourceValue=username",
 				})
-				crd.EXPECT().Descriptor().Return(&pipeline.CRDDescription{}, nil)
 				service.EXPECT().AddBindingDef(bindingDefPath([]string{"status", "foo"}))
 				service.EXPECT().AddBindingDef(bindingDefPath([]string{"status", "foo2"}))
 				collect.BindingDefinitions(ctx)
 			})
 
-			It("should extract binding definitions from status descriptors", func() {
-				crd.EXPECT().Descriptor().Return(&pipeline.CRDDescription{
-					StatusDescriptors: []olmv1alpha1.StatusDescriptor{
-						{
-							Path:         "foo",
-							XDescriptors: []string{"urn:alm:descriptor:io.kubernetes:Secret", "service.binding:username:sourceValue=username"},
-						},
-						{
-							Path:         "bar",
-							XDescriptors: []string{"bar"},
-						},
-						{
-							Path:         "foo2",
-							XDescriptors: []string{"urn:alm:descriptor:io.kubernetes:Secret", "service.binding:username2:sourceValue=username"},
-						},
-					},
-				}, nil)
-				service.EXPECT().AddBindingDef(bindingDefPath([]string{"status", "foo"}))
-				service.EXPECT().AddBindingDef(bindingDefPath([]string{"status", "foo2"}))
-				collect.BindingDefinitions(ctx)
-			})
-
-			It("should extract binding definitions from spec descriptors", func() {
-				crd.EXPECT().Descriptor().Return(&pipeline.CRDDescription{
-					SpecDescriptors: []olmv1alpha1.SpecDescriptor{
-						{
-							Path:         "foo",
-							XDescriptors: []string{"urn:alm:descriptor:io.kubernetes:Secret", "service.binding:username:sourceValue=username"},
-						},
-						{
-							Path:         "bar",
-							XDescriptors: []string{"bar"},
-						},
-						{
-							Path:         "foo2",
-							XDescriptors: []string{"urn:alm:descriptor:io.kubernetes:Secret", "service.binding:username2:sourceValue=username"},
-						},
-					},
-				}, nil)
-				service.EXPECT().AddBindingDef(bindingDefPath([]string{"spec", "foo"}))
-				service.EXPECT().AddBindingDef(bindingDefPath([]string{"spec", "foo2"}))
-				collect.BindingDefinitions(ctx)
-			})
-
-			It("should extract binding definitions both from spec and status descriptors", func() {
-				crd.EXPECT().Descriptor().Return(&pipeline.CRDDescription{
-					SpecDescriptors: []olmv1alpha1.SpecDescriptor{
-						{
-							Path:         "foo",
-							XDescriptors: []string{"urn:alm:descriptor:io.kubernetes:Secret", "service.binding:username:sourceValue=username"},
-						},
-					},
-					StatusDescriptors: []olmv1alpha1.StatusDescriptor{
-						{
-							Path:         "foo",
-							XDescriptors: []string{"urn:alm:descriptor:io.kubernetes:Secret", "service.binding:username2:sourceValue=username"},
-						},
-					},
-				}, nil)
-				service.EXPECT().AddBindingDef(bindingDefPath([]string{"status", "foo"}))
-				service.EXPECT().AddBindingDef(bindingDefPath([]string{"spec", "foo"}))
-				collect.BindingDefinitions(ctx)
-			})
-
-			It("binding definitions on CRD take precedence over those from descriptors", func() {
-				crd.EXPECT().Descriptor().Return(&pipeline.CRDDescription{
-					SpecDescriptors: []olmv1alpha1.SpecDescriptor{
-						{
-							Path:         "foo",
-							XDescriptors: []string{"urn:alm:descriptor:io.kubernetes:Secret", "service.binding:username:sourceValue=username"},
-						},
-					},
-					StatusDescriptors: []olmv1alpha1.StatusDescriptor{
-						{
-							Path:         "foo",
-							XDescriptors: []string{"urn:alm:descriptor:io.kubernetes:Secret", "service.binding:username2:sourceValue=username"},
-						},
-					},
-				}, nil)
-				crdContent.SetAnnotations(map[string]string{
-					"service.binding/username2": "path={.spec.foo2},objectType=Secret,sourceValue=username",
-				})
-				service.EXPECT().AddBindingDef(bindingDefPath([]string{"spec", "foo"}))
-				service.EXPECT().AddBindingDef(bindingDefPath([]string{"spec", "foo2"}))
-				collect.BindingDefinitions(ctx)
-			})
-
-			It("binding definitions on service take precedence over those from descriptors", func() {
-				crd.EXPECT().Descriptor().Return(&pipeline.CRDDescription{
-					SpecDescriptors: []olmv1alpha1.SpecDescriptor{
-						{
-							Path:         "foo",
-							XDescriptors: []string{"urn:alm:descriptor:io.kubernetes:Secret", "service.binding:username:sourceValue=username"},
-						},
-					},
-					StatusDescriptors: []olmv1alpha1.StatusDescriptor{
-						{
-							Path:         "foo",
-							XDescriptors: []string{"urn:alm:descriptor:io.kubernetes:Secret", "service.binding:username2:sourceValue=username"},
-						},
-					},
-				}, nil)
-				serviceContent.SetAnnotations(map[string]string{
-					"service.binding/username2": "path={.spec.foo2},objectType=Secret,sourceValue=username",
-				})
-				service.EXPECT().AddBindingDef(bindingDefPath([]string{"spec", "foo"}))
-				service.EXPECT().AddBindingDef(bindingDefPath([]string{"spec", "foo2"}))
-				collect.BindingDefinitions(ctx)
-			})
-
 			It("binding definitions on service take precedence over those from CRD", func() {
-				crd.EXPECT().Descriptor().Return(&pipeline.CRDDescription{}, nil)
 				crdContent.SetAnnotations(map[string]string{
 					"service.binding/foo":  "path={.spec.foo},objectType=Secret,sourceValue=username",
 					"service.binding/foo2": "path={.spec.foo2},objectType=Secret,sourceValue=username",
@@ -307,7 +170,6 @@ var _ = Describe("Collect Binding Definitions", func() {
 
 			Context("non OLM environment", func() {
 				It("should extract binding definitions both from service and CRD annotations", func() {
-					crd.EXPECT().Descriptor().Return(nil, nil)
 					crdContent.SetAnnotations(map[string]string{
 						"service.binding/foo": "path={.spec.foo},objectType=Secret,sourceValue=username",
 					})
diff --git a/test/acceptance/features/bindAppToService.feature b/test/acceptance/features/bindAppToService.feature
index 0c770d6a..015e0f50 100644
--- a/test/acceptance/features/bindAppToService.feature
+++ b/test/acceptance/features/bindAppToService.feature
@@ -524,48 +524,6 @@ Feature: Bind an application to a service
             """
         Then Error message "name and selector MUST NOT be defined in the application reference" is thrown
 
-    @olm @olm-descriptors
-    Scenario: Bind service to application using binding definition available in x-descriptors
-        Given OLM Operator "backend-new-spec" is running
-        * Generic test application is running
-        * The Custom Resource is present
-            """
-            apiVersion: "beta.example.com/v1"
-            kind: Backend
-            metadata:
-                name: $scenario_id-backend
-            spec:
-                host: example.common
-                ports:
-                    - protocol: tcp
-                      port: 8080
-                    - protocol: ftp
-                      port: 22
-            """
-        * Service Binding is applied
-            """
-            apiVersion: binding.operators.coreos.com/v1alpha1
-            kind: ServiceBinding
-            metadata:
-                name: $scenario_id-binding
-            spec:
-                bindAsFiles: false
-                services:
-                -   group: beta.example.com
-                    version: v1
-                    kind: Backend
-                    name: $scenario_id-backend
-                application:
-                    name: $scenario_id
-                    group: apps
-                    version: v1
-                    resource: deployments
-            """
-        Then Service Binding is ready
-        And The application env var "BACKEND_HOST" has value "example.common"
-        And The application env var "BACKEND_PORTS_FTP" has value "22"
-        And The application env var "BACKEND_PORTS_TCP" has value "8080"
-
     @external-feedback
     Scenario: Custom environment variable is injected into the application under the declared name ignoring global and service env prefix
         Given Generic test application is running
diff --git a/test/acceptance/features/bindAppToServiceUsingSecret.feature b/test/acceptance/features/bindAppToServiceUsingSecret.feature
index 7fe9c21c..1edae465 100644
--- a/test/acceptance/features/bindAppToServiceUsingSecret.feature
+++ b/test/acceptance/features/bindAppToServiceUsingSecret.feature
@@ -202,319 +202,6 @@ Feature: Bind values from a secret referred in backing service resource
         And The application env var "BACKEND_USERNAME" has value "AzureDiamond"
         And The application env var "BACKEND_PASSWORD" has value "hunter2"
 
-    @olm @olm-descriptors
-    Scenario: Inject into app a key from a secret referred within service resource Binding definition is declared via OLM descriptor.
-
-        Given Generic test application is running
-        * OLM Operator "backends_foo" is running
-        * The Custom Resource Definition is present
-            """
-            apiVersion: apiextensions.k8s.io/v1
-            kind: CustomResourceDefinition
-            metadata:
-                name: backends.foo.example.com
-            spec:
-                group: foo.example.com
-                versions:
-                    - name: v1
-                      served: true
-                      storage: true
-                      schema:
-                        openAPIV3Schema:
-                            type: object
-                            properties:
-                                apiVersion:
-                                    type: string
-                                kind:
-                                    type: string
-                                metadata:
-                                    type: object
-                                spec:
-                                    type: object
-                                    properties:
-                                        host:
-                                            type: string
-                                status:
-                                    type: object
-                                    properties:
-                                        data:
-                                            type: object
-                                            properties:
-                                                dbCredentials:
-                                                    type: string
-                scope: Namespaced
-                names:
-                    plural: backends
-                    singular: backend
-                    kind: Backend
-                    shortNames:
-                    - bs
-            """
-        And The Custom Resource Definition is present
-            """
-            apiVersion: operators.coreos.com/v1alpha1
-            kind: ClusterServiceVersion
-            metadata:
-              annotations:
-                capabilities: Basic Install
-              name: backend-operator-foo.v0.1.0
-            spec:
-              customresourcedefinitions:
-                owned:
-                - description: Backend is the Schema for the backend API
-                  kind: Backend
-                  name: backends.foo.example.com
-                  version: v1
-                  specDescriptors:
-                    - description: Host address
-                      displayName: Host address
-                      path: host
-                      x-descriptors:
-                        - service.binding:host
-                  statusDescriptors:
-                      - description: db credentials
-                        displayName: db credentials
-                        path: data.dbCredentials
-                        x-descriptors:
-                            - urn:alm:descriptor:io.kubernetes:Secret
-                            - service.binding:username:sourceValue=username
-              displayName: Backend Operator
-              install:
-                spec:
-                  deployments:
-                  - name: backend-operator
-                    spec:
-                      replicas: 1
-                      selector:
-                        matchLabels:
-                          name: backend-operator
-                      strategy: {}
-                      template:
-                        metadata:
-                          labels:
-                            name: backend-operator
-                        spec:
-                          containers:
-                          - command:
-                            - backend-operator
-                            env:
-                            - name: WATCH_NAMESPACE
-                              valueFrom:
-                                fieldRef:
-                                  fieldPath: metadata.annotations['olm.targetNamespaces']
-                            - name: POD_NAME
-                              valueFrom:
-                                fieldRef:
-                                  fieldPath: metadata.name
-                            - name: OPERATOR_NAME
-                              value: backend-operator
-                            image: REPLACE_IMAGE
-                            imagePullPolicy: Always
-                            name: backend-operator
-                            resources: {}
-                strategy: deployment
-            """
-        And The Secret is present
-            """
-            apiVersion: v1
-            kind: Secret
-            metadata:
-                name: $scenario_id-secret
-            stringData:
-                username: AzureDiamond
-            """
-        And The Custom Resource is present
-            """
-            apiVersion: foo.example.com/v1
-            kind: Backend
-            metadata:
-                name: $scenario_id-backend
-            spec:
-                host: example.com
-            status:
-                data:
-                    dbCredentials: $scenario_id-secret
-            """
-        When Service Binding is applied
-            """
-            apiVersion: binding.operators.coreos.com/v1alpha1
-            kind: ServiceBinding
-            metadata:
-                name: $scenario_id-binding
-            spec:
-                bindAsFiles: false
-                services:
-                  - group: foo.example.com
-                    version: v1
-                    kind: Backend
-                    name: $scenario_id-backend
-                application:
-                    name: $scenario_id
-                    group: apps
-                    version: v1
-                    resource: deployments
-            """
-        Then Service Binding is ready
-        And The application env var "BACKEND_USERNAME" has value "AzureDiamond"
-        And The application env var "BACKEND_HOST" has value "example.com"
-
-    @olm @olm-descriptors
-    Scenario: Inject into app all keys from a secret referred within service resource Binding definition is declared via OLM descriptor.
-
-        Given Generic test application is running
-        * OLM Operator "backends_bar" is running
-        * The Custom Resource Definition is present
-            """
-            apiVersion: apiextensions.k8s.io/v1
-            kind: CustomResourceDefinition
-            metadata:
-                name: backends.bar.example.com
-            spec:
-                group: bar.example.com
-                versions:
-                    - name: v1
-                      served: true
-                      storage: true
-                      schema:
-                        openAPIV3Schema:
-                            type: object
-                            properties:
-                                apiVersion:
-                                    type: string
-                                kind:
-                                    type: string
-                                metadata:
-                                    type: object
-                                spec:
-                                    type: object
-                                    properties:
-                                        image:
-                                            type: string
-                                        imageName:
-                                            type: string
-                                        dbName:
-                                            type: string
-                                status:
-                                    type: object
-                                    properties:
-                                        data:
-                                            type: object
-                                            properties:
-                                                dbCredentials:
-                                                    type: string
-                scope: Namespaced
-                names:
-                    plural: backends
-                    singular: backend
-                    kind: Backend
-                    shortNames:
-                    - bs
-            """
-        And The Custom Resource is present
-            """
-            apiVersion: operators.coreos.com/v1alpha1
-            kind: ClusterServiceVersion
-            metadata:
-              annotations:
-                capabilities: Basic Install
-              name: backend-operator-bar.v0.1.0
-            spec:
-              customresourcedefinitions:
-                owned:
-                - description: Backend is the Schema for the backend API
-                  kind: Backend
-                  name: backends.bar.example.com
-                  version: v1
-                  statusDescriptors:
-                      - description: db credentials
-                        displayName: db credentials
-                        path: data.dbCredentials
-                        x-descriptors:
-                            - urn:alm:descriptor:io.kubernetes:Secret
-                            - service.binding:elementType=map
-              displayName: Backend Operator
-              install:
-                spec:
-                  deployments:
-                  - name: backend-operator
-                    spec:
-                      replicas: 1
-                      selector:
-                        matchLabels:
-                          name: backend-operator
-                      strategy: {}
-                      template:
-                        metadata:
-                          labels:
-                            name: backend-operator
-                        spec:
-                          containers:
-                          - command:
-                            - backend-operator
-                            env:
-                            - name: WATCH_NAMESPACE
-                              valueFrom:
-                                fieldRef:
-                                  fieldPath: metadata.annotations['olm.targetNamespaces']
-                            - name: POD_NAME
-                              valueFrom:
-                                fieldRef:
-                                  fieldPath: metadata.name
-                            - name: OPERATOR_NAME
-                              value: backend-operator
-                            image: REPLACE_IMAGE
-                            imagePullPolicy: Always
-                            name: backend-operator
-                            resources: {}
-                strategy: deployment
-            """
-        And The Secret is present
-            """
-            apiVersion: v1
-            kind: Secret
-            metadata:
-                name: $scenario_id-secret
-            stringData:
-                username: AzureDiamond
-                password: hunter2
-            """
-        And The Custom Resource is present
-            """
-            apiVersion: bar.example.com/v1
-            kind: Backend
-            metadata:
-                name: $scenario_id-backend
-            spec:
-                image: docker.io/postgres
-                imageName: postgres
-                dbName: db-demo
-            status:
-                data:
-                    dbCredentials: $scenario_id-secret
-            """
-        When Service Binding is applied
-            """
-            apiVersion: binding.operators.coreos.com/v1alpha1
-            kind: ServiceBinding
-            metadata:
-                name: $scenario_id-binding
-            spec:
-                bindAsFiles: false
-                services:
-                  - group: bar.example.com
-                    version: v1
-                    kind: Backend
-                    name: $scenario_id-backend
-                application:
-                    name: $scenario_id
-                    group: apps
-                    version: v1
-                    resource: deployments
-            """
-        Then Service Binding is ready
-        And The application env var "BACKEND_USERNAME" has value "AzureDiamond"
-        And The application env var "BACKEND_PASSWORD" has value "hunter2"
-
     @external-feedback
     Scenario: Inject into app all keys from a secret existing in a same namespace with service and different from the service binding
         Given The Custom Resource Definition is present
diff --git a/test/acceptance/resources/backend-new-spec.operator.manifest.yaml b/test/acceptance/resources/backend-new-spec.operator.manifest.yaml
deleted file mode 100644
index e98e8eec..00000000
--- a/test/acceptance/resources/backend-new-spec.operator.manifest.yaml
+++ /dev/null
@@ -1,129 +0,0 @@
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  name: backends.beta.example.com
-spec:
-  group: beta.example.com
-  versions:
-    - name: v1
-      served: true
-      storage: true
-      schema:
-        openAPIV3Schema:
-          type: object
-          properties:
-            apiVersion:
-              type: string
-            kind:
-              type: string
-            metadata:
-              type: object
-            spec:
-              type: object
-              properties:
-                host:
-                  type: string
-                port:
-                  type: string
-                ports:
-                  type: array
-                  items:
-                    type: object
-                    properties:
-                      protocol:
-                        type: string
-                      port:
-                        type: integer
-                username:
-                  type: string
-                host_internal_db:
-                  type: string
-                host_external_db:
-                  type: string
-            status:
-              type: object
-              properties:
-                data:
-                  type: object
-                  properties:
-                    dbCredentials:
-                      type: string
-  scope: Namespaced
-  names:
-    plural: backends
-    singular: backend
-    kind: Backend
-    shortNames:
-      - bk
----
-apiVersion: operators.coreos.com/v1alpha1
-kind: ClusterServiceVersion
-metadata:
-  annotations:
-    capabilities: Basic Install
-  name: backend-operator.v0.1.0
-spec:
-  apiservicedefinitions: {}
-  customresourcedefinitions:
-    owned:
-    - description: Backend is the Schema for the backend API
-      kind: Backend
-      name: backends.beta.example.com
-      version: v1
-      specDescriptors:
-        - description: Host address
-          displayName: Host address
-          path: host
-          x-descriptors:
-            - service.binding:host
-        - description: Exposed ports
-          displayName: Exposed ports
-          path: ports
-          x-descriptors:
-            - service.binding:ports:elementType=sliceOfMaps,sourceKey=protocol,sourceValue=port
-  displayName: Backend Operator
-  install:
-    spec:
-      deployments:
-      - name: backend-operator
-        spec:
-          replicas: 1
-          selector:
-            matchLabels:
-              name: backend-operator
-          strategy: {}
-          template:
-            metadata:
-              labels:
-                name: backend-operator
-            spec:
-              containers:
-              - command:
-                - backend-operator
-                env:
-                - name: WATCH_NAMESPACE
-                  valueFrom:
-                    fieldRef:
-                      fieldPath: metadata.annotations['olm.targetNamespaces']
-                - name: POD_NAME
-                  valueFrom:
-                    fieldRef:
-                      fieldPath: metadata.name
-                - name: OPERATOR_NAME
-                  value: backend-operator
-                image: REPLACE_IMAGE
-                imagePullPolicy: Always
-                name: backend-operator
-                resources: {}
-    strategy: deployment
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
-  name: admin-to-backend-beta
-  labels:
-    servicebinding.io/controller: "true"
-rules:
-  - apiGroups: ["beta.example.com"]
-    resources: ["backends"]
-    verbs: ["get", "list"]
\ No newline at end of file
diff --git a/test/acceptance/resources/backends_bar.operator.manifest.yaml b/test/acceptance/resources/backends_bar.operator.manifest.yaml
deleted file mode 100644
index dd182d1b..00000000
--- a/test/acceptance/resources/backends_bar.operator.manifest.yaml
+++ /dev/null
@@ -1,112 +0,0 @@
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  name: backends.bar.example.com
-spec:
-  group: bar.example.com
-  versions:
-    - name: v1
-      served: true
-      storage: true
-      schema:
-        openAPIV3Schema:
-          type: object
-          properties:
-            apiVersion:
-              type: string
-            kind:
-              type: string
-            metadata:
-              type: object
-            spec:
-              type: object
-              properties:
-                image:
-                  type: string
-                imageName:
-                  type: string
-                dbName:
-                  type: string
-            status:
-              type: object
-              properties:
-                data:
-                  type: object
-                  properties:
-                    dbCredentials:
-                      type: string
-  scope: Namespaced
-  names:
-    plural: backends
-    singular: backend
-    kind: Backend
-    shortNames:
-    - bs
-
----
-apiVersion: operators.coreos.com/v1alpha1
-kind: ClusterServiceVersion
-metadata:
-  annotations:
-    capabilities: Basic Install
-  name: backend-operator-bar.v0.1.0
-spec:
-  customresourcedefinitions:
-    owned:
-    - description: Backend is the Schema for the backend API
-      kind: Backend
-      name: backends.bar.example.com
-      version: v1
-      statusDescriptors:
-      - description: db credentials
-        displayName: db credentials
-        path: data.dbCredentials
-        x-descriptors:
-          - urn:alm:descriptor:io.kubernetes:Secret
-          - service.binding:elementType=map
-  displayName: Backend Operator
-  install:
-    spec:
-      deployments:
-      - name: backend-operator
-        spec:
-          replicas: 1
-          selector:
-            matchLabels:
-              name: backend-operator
-          strategy: {}
-          template:
-            metadata:
-              labels:
-                name: backend-operator
-            spec:
-              containers:
-              - command:
-                - backend-operator
-                env:
-                - name: WATCH_NAMESPACE
-                  valueFrom:
-                    fieldRef:
-                      fieldPath: metadata.annotations['olm.targetNamespaces']
-                - name: POD_NAME
-                  valueFrom:
-                    fieldRef:
-                      fieldPath: metadata.name
-                - name: OPERATOR_NAME
-                  value: backend-operator
-                image: REPLACE_IMAGE
-                imagePullPolicy: Always
-                name: backend-operator
-                resources: {}
-    strategy: deployment
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
-  name: admin-to-provisionedbackends-stable
-  labels:
-    servicebinding.io/controller: "true"
-rules:
-  - apiGroups: ["bar.example.com"]
-    resources: ["*"]
-    verbs: ["get", "list"]
\ No newline at end of file
diff --git a/test/acceptance/resources/backends_foo.operator.manifest.yaml b/test/acceptance/resources/backends_foo.operator.manifest.yaml
deleted file mode 100644
index 3796d970..00000000
--- a/test/acceptance/resources/backends_foo.operator.manifest.yaml
+++ /dev/null
@@ -1,115 +0,0 @@
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  name: backends.foo.example.com
-spec:
-  group: foo.example.com
-  versions:
-  - name: v1
-    served: true
-    storage: true
-    schema:
-      openAPIV3Schema:
-        type: object
-        properties:
-          apiVersion:
-            type: string
-          kind:
-            type: string
-          metadata:
-            type: object
-          spec:
-            type: object
-            properties:
-              host:
-                type: string
-          status:
-            type: object
-            properties:
-              data:
-                type: object
-                properties:
-                  dbCredentials:
-                    type: string
-  scope: Namespaced
-  names:
-    plural: backends
-    singular: backend
-    kind: Backend
-    shortNames:
-    - bs
-
----
-apiVersion: operators.coreos.com/v1alpha1
-kind: ClusterServiceVersion
-metadata:
-  annotations:
-    capabilities: Basic Install
-  name: backend-operator-foo.v0.1.0
-spec:
-  customresourcedefinitions:
-    owned:
-    - description: Backend is the Schema for the backend API
-      kind: Backend
-      name: backends.foo.example.com
-      version: v1
-      specDescriptors:
-      - description: Host address
-        displayName: Host address
-        path: host
-        x-descriptors:
-          - service.binding:host
-      statusDescriptors:
-      - description: db credentials
-        displayName: db credentials
-        path: data.dbCredentials
-        x-descriptors:
-          - urn:alm:descriptor:io.kubernetes:Secret
-          - service.binding:username:sourceValue=username
-  displayName: Backend Operator
-  install:
-    spec:
-      deployments:
-      - name: backend-operator
-        spec:
-          replicas: 1
-          selector:
-            matchLabels:
-              name: backend-operator
-          strategy: {}
-          template:
-            metadata:
-              labels:
-                name: backend-operator
-            spec:
-              containers:
-              - command:
-                - backend-operator
-                env:
-                - name: WATCH_NAMESPACE
-                  valueFrom:
-                    fieldRef:
-                      fieldPath: metadata.annotations['olm.targetNamespaces']
-                - name: POD_NAME
-                  valueFrom:
-                    fieldRef:
-                      fieldPath: metadata.name
-                - name: OPERATOR_NAME
-                  value: backend-operator
-                image: REPLACE_IMAGE
-                imagePullPolicy: Always
-                name: backend-operator
-                resources: {}
-    strategy: deployment
-
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
-  name: admin-to-provisionedbackends-stable
-  labels:
-    servicebinding.io/controller: "true"
-rules:
-  - apiGroups: ["foo.example.com"]
-    resources: ["*"]
-    verbs: ["get", "list"]
\ No newline at end of file