Repository: redhat-developer/service-binding-operator
Pull request #1086 (2021-12-23 20:35:22)

Workload resource mapping
### Motivation

We need to be able to be informed where container data lives within a workload resource.  This introduces support for [workload resource mapping](https://github.com/servicebinding/spec#workload-resource-mapping), which is how the specification API defines how we can be informed of this data.

### Changes

A lot of the functionality of `pipeline.Application` has been changed to meet this need.  To facilitate the requirement to look up data almost arbitrarily within an workload resource, we need to store and carry around the data to look up where our workload's data lives.

### Testing

Unit tests *should* largely pass (with one exception, see below).  The infrastructure for acceptance tests is largely there, but we're still a little short on the actual tests.  I'll be working to have some more before this gets merged.

### Other notes
1. This crashes under integration/acceptance test scenarios.  This is because go panics whenever I try to do a deep copy of a slice of maps (i.e. `[]map[string]interface`); I haven't quite figured out why this is happing nor how to fix it.
2. This enables support in both the specification API and our API.  Judging from discussion a few weeks ago, we wanted to have a replacement for the `bindingPath` entry within a service binding; this is probably a more robust solution (current spec issues aside).
3. Acceptance tests are a little short at the moment.  I'm hoping to expand them going forward.

openshift-ci[bot]: Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with `/test all`
openshift-ci[bot]: [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 ask for approval from **sadlerap** after the PR has been reviewed.

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: This is probably good enough to review, at least from a high level.  There are still some parts that might change: some acceptance tests are failing, and I know I need to add some more unit tests to make code coverage happy.  However, I doubt the design is going to change all that much from these fixes, and most of this should be in good-enough shape to review.
sadlerap: This is probably good enough to review, at least from a high level.  There are still some parts that might change: some acceptance tests are failing, and I know I need to add some more unit tests to make code coverage happy.  However, I doubt the design is going to change all that much from these fixes, and most of this should be in good-enough shape to review.
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.10-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1482128847104118784) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.10-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1482128847104118784) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1482128847351582720) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.10-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1482128847104118784) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1482128847351582720) | true | `/test 4.9-acceptance`
ci/prow/4.8-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1482128847213170688) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.10-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1482128847104118784) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1482128847351582720) | true | `/test 4.9-acceptance`
ci/prow/4.8-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1482128847213170688) | true | `/test 4.8-acceptance`
ci/prow/4.7-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1482128847154450432) | true | `/test 4.7-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.9-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1482128847351582720) | true | `/test 4.9-acceptance`
ci/prow/4.8-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1482128847213170688) | true | `/test 4.8-acceptance`
ci/prow/4.7-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1482128847154450432) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 0322a920801417d62dc78d903cc5508e791596f6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1483567588674899968) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.8-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1482128847213170688) | true | `/test 4.8-acceptance`
ci/prow/4.7-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1482128847154450432) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 0322a920801417d62dc78d903cc5508e791596f6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1483567588674899968) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | 0322a920801417d62dc78d903cc5508e791596f6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1483567588788146176) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | ea2ef167ade2e430d11612d2805e4f23c99c56e6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1482128847154450432) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 0322a920801417d62dc78d903cc5508e791596f6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1483567588674899968) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | 0322a920801417d62dc78d903cc5508e791596f6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1483567588788146176) | true | `/test 4.9-acceptance`
ci/prow/4.8-acceptance | 0322a920801417d62dc78d903cc5508e791596f6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1483567588750397440) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.10-acceptance | 0322a920801417d62dc78d903cc5508e791596f6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1483567588674899968) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | 0322a920801417d62dc78d903cc5508e791596f6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1483567588788146176) | true | `/test 4.9-acceptance`
ci/prow/4.8-acceptance | 0322a920801417d62dc78d903cc5508e791596f6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1483567588750397440) | true | `/test 4.8-acceptance`
ci/prow/4.7-acceptance | 0322a920801417d62dc78d903cc5508e791596f6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1483567588708454400) | true | `/test 4.7-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: 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[bot]: @sadlerap: The following tests **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.9-acceptance | 0322a920801417d62dc78d903cc5508e791596f6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1483567588788146176) | true | `/test 4.9-acceptance`
ci/prow/4.8-acceptance | 0322a920801417d62dc78d903cc5508e791596f6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1483567588750397440) | true | `/test 4.8-acceptance`
ci/prow/4.7-acceptance | 0322a920801417d62dc78d903cc5508e791596f6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1483567588708454400) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 1e55fd7a507b5fab3dea1c45975eff4b681b03d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1491519331924709376) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.9-acceptance | 0322a920801417d62dc78d903cc5508e791596f6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1483567588788146176) | true | `/test 4.9-acceptance`
ci/prow/4.7-acceptance | 0322a920801417d62dc78d903cc5508e791596f6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1483567588708454400) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 1e55fd7a507b5fab3dea1c45975eff4b681b03d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1491519331924709376) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | 3caa5dffcd052dedacacc584ab3f419de957bf30 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1491526023659917312) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.8-acceptance | 3caa5dffcd052dedacacc584ab3f419de957bf30 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1491526023659917312) | true | `/test 4.8-acceptance`
ci/prow/4.7-acceptance | 3caa5dffcd052dedacacc584ab3f419de957bf30 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491526023626362880) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | 3caa5dffcd052dedacacc584ab3f419de957bf30 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1491526023693471744) | true | `/test 4.9-acceptance`
ci/prow/4.10-acceptance | 3caa5dffcd052dedacacc584ab3f419de957bf30 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1491526023592808448) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.8-acceptance | 3caa5dffcd052dedacacc584ab3f419de957bf30 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1491526023659917312) | true | `/test 4.8-acceptance`
ci/prow/4.7-acceptance | 3caa5dffcd052dedacacc584ab3f419de957bf30 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491526023626362880) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 3caa5dffcd052dedacacc584ab3f419de957bf30 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1491526023592808448) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1491869569201999872) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.8-acceptance | 3caa5dffcd052dedacacc584ab3f419de957bf30 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1491526023659917312) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | 3caa5dffcd052dedacacc584ab3f419de957bf30 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1491526023592808448) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1491869569201999872) | true | `/test 4.9-acceptance`
ci/prow/4.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.8-acceptance | 3caa5dffcd052dedacacc584ab3f419de957bf30 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1491526023659917312) | true | `/test 4.8-acceptance`
ci/prow/4.9-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1491869569201999872) | true | `/test 4.9-acceptance`
ci/prow/4.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1491869568988090368) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.9-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1491869569201999872) | true | `/test 4.9-acceptance`
ci/prow/4.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1491869568988090368) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1491869569109725184) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.9-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1491869569201999872) | true | `/test 4.9-acceptance`
ci/prow/4.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1491869568988090368) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1491869569109725184) | true | `/test 4.8-acceptance`
ci/prow/4.11-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1502298748418527232) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
sadlerap: This should largely be good for another review.  Please note: the following parts of the mapping part of the spec are still unimplemented (with the intention of getting them done in separate PRs):

- Validation of `ClusterWorkloadResourceMapping` resources on creation (via validation webhooks)
- Correct rebinding of resources when their mapping changes.
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1491869568988090368) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1491869569109725184) | true | `/test 4.8-acceptance`
ci/prow/4.11-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1502298748418527232) | true | `/test 4.11-acceptance`
ci/prow/4.9-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506379564073357312) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1491869569109725184) | true | `/test 4.8-acceptance`
ci/prow/4.11-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1502298748418527232) | true | `/test 4.11-acceptance`
ci/prow/4.9-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506379564073357312) | true | `/test 4.9-acceptance`
ci/prow/4.10-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506379563960111104) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1491869569109725184) | true | `/test 4.8-acceptance`
ci/prow/4.9-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506379564073357312) | true | `/test 4.9-acceptance`
ci/prow/4.10-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506379563960111104) | true | `/test 4.10-acceptance`
ci/prow/4.11-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506379563997859840) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506379564073357312) | true | `/test 4.9-acceptance`
ci/prow/4.10-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506379563960111104) | true | `/test 4.10-acceptance`
ci/prow/4.11-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506379563997859840) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506379564035608576) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
baijum: /retest
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506379564073357312) | true | `/test 4.9-acceptance`
ci/prow/4.10-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506379563960111104) | true | `/test 4.10-acceptance`
ci/prow/4.11-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506379563997859840) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506453908841566208) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506379564073357312) | true | `/test 4.9-acceptance`
ci/prow/4.11-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506379563997859840) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506453908841566208) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506453908753485824) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506379564073357312) | true | `/test 4.9-acceptance`
ci/prow/4.8-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506453908841566208) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506453908753485824) | true | `/test 4.10-acceptance`
ci/prow/4.11-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506453908795428864) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506453908841566208) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506453908753485824) | true | `/test 4.10-acceptance`
ci/prow/4.11-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506453908795428864) | true | `/test 4.11-acceptance`
ci/prow/4.9-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506453908896092160) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506453908841566208) | true | `/test 4.8-acceptance`
ci/prow/4.11-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506453908795428864) | true | `/test 4.11-acceptance`
ci/prow/4.9-acceptance | bdc25ce7fa751df57cfa665e23ced6c392cbd0d7 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506453908896092160) | true | `/test 4.9-acceptance`
ci/prow/4.10-acceptance | 5d5ee30cf5ed05c25d765207714b33536c7191b2 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506633940268486656) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 5d5ee30cf5ed05c25d765207714b33536c7191b2 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506633940268486656) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | 5d5ee30cf5ed05c25d765207714b33536c7191b2 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506633940381732864) | true | `/test 4.9-acceptance`
ci/prow/4.11-acceptance | 5d5ee30cf5ed05c25d765207714b33536c7191b2 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506633940302041088) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | 5d5ee30cf5ed05c25d765207714b33536c7191b2 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506633940343984128) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 5d5ee30cf5ed05c25d765207714b33536c7191b2 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506633940268486656) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | 5d5ee30cf5ed05c25d765207714b33536c7191b2 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506633940381732864) | true | `/test 4.9-acceptance`
ci/prow/4.8-acceptance | 5d5ee30cf5ed05c25d765207714b33536c7191b2 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506633940343984128) | true | `/test 4.8-acceptance`
ci/prow/4.11-acceptance | a88a999309c9eb5bc5137c591473957d77bce00b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506689616994897920) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | 5d5ee30cf5ed05c25d765207714b33536c7191b2 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506633940381732864) | true | `/test 4.9-acceptance`
ci/prow/4.11-acceptance | a88a999309c9eb5bc5137c591473957d77bce00b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506689616994897920) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | a88a999309c9eb5bc5137c591473957d77bce00b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506689617032646656) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | a88a999309c9eb5bc5137c591473957d77bce00b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506689616957149184) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | a88a999309c9eb5bc5137c591473957d77bce00b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506689616994897920) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | a88a999309c9eb5bc5137c591473957d77bce00b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506689617032646656) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | a88a999309c9eb5bc5137c591473957d77bce00b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506689616957149184) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | a88a999309c9eb5bc5137c591473957d77bce00b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506689617070395392) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
sadlerap: FYI, looks like I'm getting [action failures](https://github.com/redhat-developer/service-binding-operator/runs/5666872738?check_suite_focus=true) related to the recent github outages.  I'm going to retry CI as soon as github stabilizes (hopefully sometime soon).
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | a88a999309c9eb5bc5137c591473957d77bce00b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506689617032646656) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | a88a999309c9eb5bc5137c591473957d77bce00b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506689616957149184) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | a88a999309c9eb5bc5137c591473957d77bce00b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506689617070395392) | true | `/test 4.9-acceptance`
ci/prow/4.11-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506738339942764544) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | a88a999309c9eb5bc5137c591473957d77bce00b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506689617032646656) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | a88a999309c9eb5bc5137c591473957d77bce00b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506689616957149184) | true | `/test 4.10-acceptance`
ci/prow/4.11-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506738339942764544) | true | `/test 4.11-acceptance`
ci/prow/4.9-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506738340022456320) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | a88a999309c9eb5bc5137c591473957d77bce00b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506689617032646656) | true | `/test 4.8-acceptance`
ci/prow/4.11-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506738339942764544) | true | `/test 4.11-acceptance`
ci/prow/4.9-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506738340022456320) | true | `/test 4.9-acceptance`
ci/prow/4.10-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506738339905015808) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506738339942764544) | true | `/test 4.11-acceptance`
ci/prow/4.9-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506738340022456320) | true | `/test 4.9-acceptance`
ci/prow/4.10-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506738339905015808) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506738339988901888) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506738339942764544) | true | `/test 4.11-acceptance`
ci/prow/4.10-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506738339905015808) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506738339988901888) | true | `/test 4.8-acceptance`
ci/prow/4.9-acceptance | 778084f0bd16c484a0f9dc68c36e4c48fcc2cc2d | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506999396472983552) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506738339905015808) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506738339988901888) | true | `/test 4.8-acceptance`
ci/prow/4.9-acceptance | 778084f0bd16c484a0f9dc68c36e4c48fcc2cc2d | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506999396472983552) | true | `/test 4.9-acceptance`
ci/prow/4.11-acceptance | 778084f0bd16c484a0f9dc68c36e4c48fcc2cc2d | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506999396309405696) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | c49ff80682f41ab4a90a4cabdb7056a1a5e2e2c6 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506738339905015808) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | 778084f0bd16c484a0f9dc68c36e4c48fcc2cc2d | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506999396472983552) | true | `/test 4.9-acceptance`
ci/prow/4.11-acceptance | 778084f0bd16c484a0f9dc68c36e4c48fcc2cc2d | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506999396309405696) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | 778084f0bd16c484a0f9dc68c36e4c48fcc2cc2d | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506999396384903168) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | 778084f0bd16c484a0f9dc68c36e4c48fcc2cc2d | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506999396472983552) | true | `/test 4.9-acceptance`
ci/prow/4.11-acceptance | 778084f0bd16c484a0f9dc68c36e4c48fcc2cc2d | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506999396309405696) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | 778084f0bd16c484a0f9dc68c36e4c48fcc2cc2d | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1506999396384903168) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | 778084f0bd16c484a0f9dc68c36e4c48fcc2cc2d | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506999396242296832) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | 778084f0bd16c484a0f9dc68c36e4c48fcc2cc2d | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1506999396472983552) | true | `/test 4.9-acceptance`
ci/prow/4.11-acceptance | 778084f0bd16c484a0f9dc68c36e4c48fcc2cc2d | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506999396309405696) | true | `/test 4.11-acceptance`
ci/prow/4.10-acceptance | 778084f0bd16c484a0f9dc68c36e4c48fcc2cc2d | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1506999396242296832) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507040288256823296) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | 778084f0bd16c484a0f9dc68c36e4c48fcc2cc2d | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1506999396309405696) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507040288256823296) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507040288160354304) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507040288286183424) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507040288256823296) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507040288160354304) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507040288286183424) | true | `/test 4.9-acceptance`
ci/prow/4.11-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507040288206491648) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
sadlerap: /retest
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507040288160354304) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507040288286183424) | true | `/test 4.9-acceptance`
ci/prow/4.8-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507057676108959744) | true | `/test 4.8-acceptance`
ci/prow/4.11-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507057676050239488) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507040288286183424) | true | `/test 4.9-acceptance`
ci/prow/4.8-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507057676108959744) | true | `/test 4.8-acceptance`
ci/prow/4.11-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507057676050239488) | true | `/test 4.11-acceptance`
ci/prow/4.10-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507057676016685056) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507057676108959744) | true | `/test 4.8-acceptance`
ci/prow/4.11-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507057676050239488) | true | `/test 4.11-acceptance`
ci/prow/4.10-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507057676016685056) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507079217630679040) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507057676108959744) | true | `/test 4.8-acceptance`
ci/prow/4.11-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507057676050239488) | true | `/test 4.11-acceptance`
ci/prow/4.9-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507079217630679040) | true | `/test 4.9-acceptance`
ci/prow/4.10-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507079217509044224) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | b597abe5d2d74809b7bfb4b5ddb6153ac7ddf5d5 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507057676108959744) | true | `/test 4.8-acceptance`
ci/prow/4.9-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507079217630679040) | true | `/test 4.9-acceptance`
ci/prow/4.10-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507079217509044224) | true | `/test 4.10-acceptance`
ci/prow/4.11-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507079217546792960) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507079217630679040) | true | `/test 4.9-acceptance`
ci/prow/4.10-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507079217509044224) | true | `/test 4.10-acceptance`
ci/prow/4.11-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507079217546792960) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507079217592930304) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507079217509044224) | true | `/test 4.10-acceptance`
ci/prow/4.11-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507079217546792960) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507079217592930304) | true | `/test 4.8-acceptance`
ci/prow/4.9-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507279590123376640) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507079217509044224) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507079217592930304) | true | `/test 4.8-acceptance`
ci/prow/4.9-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507279590123376640) | true | `/test 4.9-acceptance`
ci/prow/4.11-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507279590052073472) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507079217509044224) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507279590123376640) | true | `/test 4.9-acceptance`
ci/prow/4.11-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507279590052073472) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507279590094016512) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507279590123376640) | true | `/test 4.9-acceptance`
ci/prow/4.11-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507279590052073472) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507279590094016512) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507279590018519040) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
sadlerap: /retest
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507279590123376640) | true | `/test 4.9-acceptance`
ci/prow/4.8-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507279590094016512) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507279590018519040) | true | `/test 4.10-acceptance`
ci/prow/4.11-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507395722398404608) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507279590123376640) | true | `/test 4.9-acceptance`
ci/prow/4.8-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507279590094016512) | true | `/test 4.8-acceptance`
ci/prow/4.11-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507395722398404608) | true | `/test 4.11-acceptance`
ci/prow/4.10-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507395722360655872) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507279590123376640) | true | `/test 4.9-acceptance`
ci/prow/4.11-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507395722398404608) | true | `/test 4.11-acceptance`
ci/prow/4.10-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507395722360655872) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507395722444541952) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507395722398404608) | true | `/test 4.11-acceptance`
ci/prow/4.10-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507395722360655872) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507395722444541952) | true | `/test 4.8-acceptance`
ci/prow/4.9-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1507395722486484992) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
sadlerap: /retest
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507395722398404608) | true | `/test 4.11-acceptance`
ci/prow/4.10-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1507395722360655872) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507395722444541952) | true | `/test 4.8-acceptance`
ci/prow/4.9-acceptance | 9a876023f13c320ecd35925b4cc20e9918115590 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1509968927927570432) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507395722398404608) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1507395722444541952) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | e07e45235d50fd75b7b7f146e5b0c063184ee438 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1509986503961350144) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | 6214a6169e13490d46309001df097f8c93a71da8 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1507395722398404608) | true | `/test 4.11-acceptance`
ci/prow/4.10-acceptance | e07e45235d50fd75b7b7f146e5b0c063184ee438 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1509986503961350144) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | e07e45235d50fd75b7b7f146e5b0c063184ee438 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1509986504145899520) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | e07e45235d50fd75b7b7f146e5b0c063184ee438 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1509986503961350144) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | e07e45235d50fd75b7b7f146e5b0c063184ee438 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1509986504145899520) | true | `/test 4.8-acceptance`
ci/prow/4.11-acceptance | e07e45235d50fd75b7b7f146e5b0c063184ee438 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1509986504045236224) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
baijum: /retest
baijum: Even though I approved this PR. I think couple more test cases would be helpful:

1. The volume is not specified, then it falls back to PoSpec-able default (.spec.template.spec.volumes).
2. The containers path is not specified, then it falls back to PoSpec-able default (.spec.template.spec.containers[*])

openshift-ci[bot]: New changes are detected. LGTM label has been removed.
openshift-ci[bot]: [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 ask for approval from **baijum** after the PR has been reviewed.

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":["baijum"]} -->
sadlerap: @baijum - I've added the tests you requested.  I wrote them against the spec API; should we also have these tests against the coreos API as well?
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | ee81c5fc9cbbe2a300fb841da566ec8ed489231b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1511416051282219008) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | ee81c5fc9cbbe2a300fb841da566ec8ed489231b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1511416051282219008) | true | `/test 4.11-acceptance`
ci/prow/4.10-acceptance | ee81c5fc9cbbe2a300fb841da566ec8ed489231b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1511416051248664576) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | ee81c5fc9cbbe2a300fb841da566ec8ed489231b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1511416051282219008) | true | `/test 4.11-acceptance`
ci/prow/4.10-acceptance | ee81c5fc9cbbe2a300fb841da566ec8ed489231b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1511416051248664576) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | ee81c5fc9cbbe2a300fb841da566ec8ed489231b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1511416051357716480) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | ee81c5fc9cbbe2a300fb841da566ec8ed489231b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1511416051282219008) | true | `/test 4.11-acceptance`
ci/prow/4.10-acceptance | ee81c5fc9cbbe2a300fb841da566ec8ed489231b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1511416051248664576) | true | `/test 4.10-acceptance`
ci/prow/4.9-acceptance | ee81c5fc9cbbe2a300fb841da566ec8ed489231b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1511416051357716480) | true | `/test 4.9-acceptance`
ci/prow/4.8-acceptance | ee81c5fc9cbbe2a300fb841da566ec8ed489231b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1511416051324162048) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | ee81c5fc9cbbe2a300fb841da566ec8ed489231b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1511416051282219008) | true | `/test 4.11-acceptance`
ci/prow/4.9-acceptance | ee81c5fc9cbbe2a300fb841da566ec8ed489231b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1511416051357716480) | true | `/test 4.9-acceptance`
ci/prow/4.8-acceptance | ee81c5fc9cbbe2a300fb841da566ec8ed489231b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1511416051324162048) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | f24119263cf9ea71987ba9efe87da17ebe7a5b60 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1512522720879841280) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | ee81c5fc9cbbe2a300fb841da566ec8ed489231b | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1511416051324162048) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | f24119263cf9ea71987ba9efe87da17ebe7a5b60 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1512522720879841280) | true | `/test 4.10-acceptance`
ci/prow/4.11-acceptance | f24119263cf9ea71987ba9efe87da17ebe7a5b60 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1512522720917590016) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | f24119263cf9ea71987ba9efe87da17ebe7a5b60 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1512522720879841280) | true | `/test 4.10-acceptance`
ci/prow/4.11-acceptance | f24119263cf9ea71987ba9efe87da17ebe7a5b60 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1512522720917590016) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | f24119263cf9ea71987ba9efe87da17ebe7a5b60 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1512522720959533056) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
baijum: /retest
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | f24119263cf9ea71987ba9efe87da17ebe7a5b60 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1512522720879841280) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | f24119263cf9ea71987ba9efe87da17ebe7a5b60 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1512522720959533056) | true | `/test 4.8-acceptance`
ci/prow/4.11-acceptance | f24119263cf9ea71987ba9efe87da17ebe7a5b60 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1513360629811908608) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
baijum: > @baijum - I've added the tests you requested. I wrote them against the spec API; should we also have these tests against the coreos API as well?

I think tests in spec API are enough.
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | f24119263cf9ea71987ba9efe87da17ebe7a5b60 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1512522720959533056) | true | `/test 4.8-acceptance`
ci/prow/4.11-acceptance | f24119263cf9ea71987ba9efe87da17ebe7a5b60 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1513360629811908608) | true | `/test 4.11-acceptance`
ci/prow/4.10-acceptance | f24119263cf9ea71987ba9efe87da17ebe7a5b60 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1513360629778354176) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
baijum: /retest
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 86ad7432d7faa1131e62637d01d4c66696c499fa | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1513527288593911808) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 86ad7432d7faa1131e62637d01d4c66696c499fa | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1513527288593911808) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | 86ad7432d7faa1131e62637d01d4c66696c499fa | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1513527288681992192) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 86ad7432d7faa1131e62637d01d4c66696c499fa | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1513527288593911808) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | 86ad7432d7faa1131e62637d01d4c66696c499fa | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1513527288681992192) | true | `/test 4.8-acceptance`
ci/prow/4.9-acceptance | 86ad7432d7faa1131e62637d01d4c66696c499fa | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1513527288782655488) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.10-acceptance | 86ad7432d7faa1131e62637d01d4c66696c499fa | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1513527288593911808) | true | `/test 4.10-acceptance`
ci/prow/4.8-acceptance | 86ad7432d7faa1131e62637d01d4c66696c499fa | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1513527288681992192) | true | `/test 4.8-acceptance`
ci/prow/4.9-acceptance | 86ad7432d7faa1131e62637d01d4c66696c499fa | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1513527288782655488) | true | `/test 4.9-acceptance`
ci/prow/4.11-acceptance | bc3afeab6b1becdc0b4d2ef90d74eab2b7314822 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1513564564669599744) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | 86ad7432d7faa1131e62637d01d4c66696c499fa | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1513527288681992192) | true | `/test 4.8-acceptance`
ci/prow/4.11-acceptance | 3a2b276abb8975ef5d5eaed6da0eb276fc922e32 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1513599623892045824) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | 3a2b276abb8975ef5d5eaed6da0eb276fc922e32 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1513763694008340480) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | 3a2b276abb8975ef5d5eaed6da0eb276fc922e32 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1513815498041593856) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
sadlerap: /retest
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | 3a2b276abb8975ef5d5eaed6da0eb276fc922e32 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1513815498041593856) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | 28dcc7740c9fff7408d942e3846085d45bb29edf | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1513861920556322816) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.11-acceptance | 3a2b276abb8975ef5d5eaed6da0eb276fc922e32 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1513815498041593856) | true | `/test 4.11-acceptance`
ci/prow/4.8-acceptance | 28dcc7740c9fff7408d942e3846085d45bb29edf | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1513861920556322816) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | 28dcc7740c9fff7408d942e3846085d45bb29edf | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1513861920485019648) | true | `/test 4.10-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | 28dcc7740c9fff7408d942e3846085d45bb29edf | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1513861920556322816) | true | `/test 4.8-acceptance`
ci/prow/4.10-acceptance | 28dcc7740c9fff7408d942e3846085d45bb29edf | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.10-acceptance/1513861920485019648) | true | `/test 4.10-acceptance`
ci/prow/4.11-acceptance | 28dcc7740c9fff7408d942e3846085d45bb29edf | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.11-acceptance/1513861920510185472) | true | `/test 4.11-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
sadlerap: /retest
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | 28dcc7740c9fff7408d942e3846085d45bb29edf | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1513909645402443776) | true | `/test 4.9-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.9-acceptance | 28dcc7740c9fff7408d942e3846085d45bb29edf | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.9-acceptance/1513909645402443776) | true | `/test 4.9-acceptance`
ci/prow/4.8-acceptance | c6b800518d2bab66a1fdf69a75ba9b362ee27aa4 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1513944303037059072) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
sadlerap: /retest
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | c6b800518d2bab66a1fdf69a75ba9b362ee27aa4 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1513982357864976384) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
sadlerap: /retest
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | c6b800518d2bab66a1fdf69a75ba9b362ee27aa4 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1514270897458909184) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
sadlerap: /retest
openshift-ci[bot]: @sadlerap: The following tests **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.7-acceptance | 6895640549867cb5633ed9161a2956dcf65bcc23 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.7-acceptance/1491869569021644800) | true | `/test 4.7-acceptance`
ci/prow/4.8-acceptance | c6b800518d2bab66a1fdf69a75ba9b362ee27aa4 | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_service-binding-operator/1086/pull-ci-redhat-developer-service-binding-operator-master-4.8-acceptance/1514323952887926784) | true | `/test 4.8-acceptance`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=redhat-developer&repo=service-binding-operator&pr=1086). [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 -->
baijum: /retest
baijum: /lgtm
dperaza4dustbit: This PR looks good to merge, any improvements we will like to see, lets add a Jira story under epic https://issues.redhat.com/browse/APPSVC-1082, any regression we notice lets add a jira bug.

Patch:
diff --git a/apis/spec/v1alpha3/cluster_workload_resource_mapping.go b/apis/spec/v1alpha3/cluster_workload_resource_mapping.go
new file mode 100644
index 00000000..b881482e
--- /dev/null
+++ b/apis/spec/v1alpha3/cluster_workload_resource_mapping.go
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2021 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
+ *
+ *      https://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 v1alpha3
+
+import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
+// ClusterWorkloadResourceMappingTemplate defines the mapping for a specific version of an workload resource to a
+// logical PodTemplateSpec-like structure.
+type ClusterWorkloadResourceMappingTemplate struct {
+	// Version is the version of the workload resource that this mapping is for.
+	Version string `json:"version"`
+	// Annotations is a Restricted JSONPath that references the annotations map within the workload resource. These
+	// annotations must end up in the resulting Pod, and are generally not the workload resource's annotations.
+	// Defaults to `.spec.template.metadata.annotations`.
+	// +optional
+	Annotations string `json:"annotations,omitempty"`
+	// Containers is the collection of mappings to container-like fragments of the workload resource. Defaults to
+	// mappings appropriate for a PodSpecable resource.
+	// +optional
+	Containers []ClusterWorkloadResourceMappingContainer `json:"containers,omitempty"`
+	// Volumes is a Restricted JSONPath that references the slice of volumes within the workload resource. Defaults to
+	// `.spec.template.spec.volumes`.
+	// +optional
+	Volumes string `json:"volumes,omitempty"`
+}
+
+// ClusterWorkloadResourceMappingContainer defines the mapping for a specific fragment of an workload resource
+// to a Container-like structure.
+//
+// Each mapping defines exactly one path that may match multiple container-like fragments within the workload
+// resource. For each object matching the path the name, env and volumeMounts expressions are resolved to find those
+// structures.
+type ClusterWorkloadResourceMappingContainer struct {
+	// Path is the JSONPath within the workload resource that matches an existing fragment that is container-like.
+	Path string `json:"path"`
+	// Name is a Restricted JSONPath that references the name of the container with the container-like workload resource
+	// fragment. If not defined, container name filtering is ignored.
+	// +optional
+	Name string `json:"name,omitempty"`
+	// Env is a Restricted JSONPath that references the slice of environment variables for the container with the
+	// container-like workload resource fragment. The referenced location is created if it does not exist. Defaults
+	// to `.envs`.
+	// +optional
+	Env string `json:"env,omitempty"`
+	// VolumeMounts is a Restricted JSONPath that references the slice of volume mounts for the container with the
+	// container-like workload resource fragment. The referenced location is created if it does not exist. Defaults
+	// to `.volumeMounts`.
+	// +optional
+	VolumeMounts string `json:"volumeMounts,omitempty"`
+}
+
+// ClusterWorkloadResourceMappingSpec defines the desired state of ClusterWorkloadResourceMapping
+type ClusterWorkloadResourceMappingSpec struct {
+	// Versions is the collection of versions for a given resource, with mappings.
+	Versions []ClusterWorkloadResourceMappingTemplate `json:"versions,omitempty"`
+}
+
+// +kubebuilder:object:root=true
+// +kubebuilder:resource:scope=Cluster
+// +kubebuilder:storageversion
+// +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`
+
+// ClusterWorkloadResourceMapping is the Schema for the clusterworkloadresourcemappings API
+type ClusterWorkloadResourceMapping struct {
+	metav1.TypeMeta   `json:",inline"`
+	metav1.ObjectMeta `json:"metadata,omitempty"`
+
+	Spec ClusterWorkloadResourceMappingSpec `json:"spec,omitempty"`
+}
+
+// +kubebuilder:object:root=true
+
+// ClusterWorkloadResourceMappingList contains a list of ClusterWorkloadResourceMapping
+type ClusterWorkloadResourceMappingList struct {
+	metav1.TypeMeta `json:",inline"`
+	metav1.ListMeta `json:"metadata,omitempty"`
+
+	Items []ClusterWorkloadResourceMapping `json:"items"`
+}
+
+var DefaultTemplate = ClusterWorkloadResourceMappingTemplate{
+	Version:     "*",
+	Annotations: "",
+	Volumes:     ".spec.template.spec.volumes",
+	Containers: []ClusterWorkloadResourceMappingContainer{
+		{
+			Path:         ".spec.template.spec.containers[*]",
+			Name:         ".name",
+			Env:          ".env",
+			VolumeMounts: ".volumeMounts",
+		},
+		{
+			Path:         ".spec.template.spec.initContainers[*]",
+			Name:         ".name",
+			Env:          ".env",
+			VolumeMounts: ".volumeMounts",
+		},
+	},
+}
diff --git a/apis/spec/v1alpha3/groupversion_info.go b/apis/spec/v1alpha3/groupversion_info.go
index 02752e47..3a941237 100644
--- a/apis/spec/v1alpha3/groupversion_info.go
+++ b/apis/spec/v1alpha3/groupversion_info.go
@@ -32,6 +32,10 @@ var (
 
 	GroupVersionKind = GroupVersion.WithKind("ServiceBinding")
 
+	WorkloadResourceMappingGroupVersionResource = GroupVersion.WithResource("clusterworkloadresourcemappings")
+
+	WorkloadResourceMappingGroupVersionKind = GroupVersion.WithKind("ClusterWorkloadResourceMapping")
+
 	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
 	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}
 
diff --git a/apis/spec/v1alpha3/servicebinding_webhook.go b/apis/spec/v1alpha3/servicebinding_webhook.go
index ede9288d..ca27c969 100644
--- a/apis/spec/v1alpha3/servicebinding_webhook.go
+++ b/apis/spec/v1alpha3/servicebinding_webhook.go
@@ -9,8 +9,7 @@ You may obtain a copy of the License at
 
 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 expr@wip
-ess or implied.
+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.
 */
diff --git a/apis/spec/v1alpha3/zz_generated.deepcopy.go b/apis/spec/v1alpha3/zz_generated.deepcopy.go
index 4889fdf4..8c580269 100644
--- a/apis/spec/v1alpha3/zz_generated.deepcopy.go
+++ b/apis/spec/v1alpha3/zz_generated.deepcopy.go
@@ -26,6 +26,121 @@ import (
 	"k8s.io/apimachinery/pkg/runtime"
 )
 
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ClusterWorkloadResourceMapping) DeepCopyInto(out *ClusterWorkloadResourceMapping) {
+	*out = *in
+	out.TypeMeta = in.TypeMeta
+	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+	in.Spec.DeepCopyInto(&out.Spec)
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkloadResourceMapping.
+func (in *ClusterWorkloadResourceMapping) DeepCopy() *ClusterWorkloadResourceMapping {
+	if in == nil {
+		return nil
+	}
+	out := new(ClusterWorkloadResourceMapping)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *ClusterWorkloadResourceMapping) DeepCopyObject() runtime.Object {
+	if c := in.DeepCopy(); c != nil {
+		return c
+	}
+	return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ClusterWorkloadResourceMappingContainer) DeepCopyInto(out *ClusterWorkloadResourceMappingContainer) {
+	*out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkloadResourceMappingContainer.
+func (in *ClusterWorkloadResourceMappingContainer) DeepCopy() *ClusterWorkloadResourceMappingContainer {
+	if in == nil {
+		return nil
+	}
+	out := new(ClusterWorkloadResourceMappingContainer)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ClusterWorkloadResourceMappingList) DeepCopyInto(out *ClusterWorkloadResourceMappingList) {
+	*out = *in
+	out.TypeMeta = in.TypeMeta
+	in.ListMeta.DeepCopyInto(&out.ListMeta)
+	if in.Items != nil {
+		in, out := &in.Items, &out.Items
+		*out = make([]ClusterWorkloadResourceMapping, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkloadResourceMappingList.
+func (in *ClusterWorkloadResourceMappingList) DeepCopy() *ClusterWorkloadResourceMappingList {
+	if in == nil {
+		return nil
+	}
+	out := new(ClusterWorkloadResourceMappingList)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *ClusterWorkloadResourceMappingList) DeepCopyObject() runtime.Object {
+	if c := in.DeepCopy(); c != nil {
+		return c
+	}
+	return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ClusterWorkloadResourceMappingSpec) DeepCopyInto(out *ClusterWorkloadResourceMappingSpec) {
+	*out = *in
+	if in.Versions != nil {
+		in, out := &in.Versions, &out.Versions
+		*out = make([]ClusterWorkloadResourceMappingTemplate, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkloadResourceMappingSpec.
+func (in *ClusterWorkloadResourceMappingSpec) DeepCopy() *ClusterWorkloadResourceMappingSpec {
+	if in == nil {
+		return nil
+	}
+	out := new(ClusterWorkloadResourceMappingSpec)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ClusterWorkloadResourceMappingTemplate) DeepCopyInto(out *ClusterWorkloadResourceMappingTemplate) {
+	*out = *in
+	if in.Containers != nil {
+		in, out := &in.Containers, &out.Containers
+		*out = make([]ClusterWorkloadResourceMappingContainer, len(*in))
+		copy(*out, *in)
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterWorkloadResourceMappingTemplate.
+func (in *ClusterWorkloadResourceMappingTemplate) DeepCopy() *ClusterWorkloadResourceMappingTemplate {
+	if in == nil {
+		return nil
+	}
+	out := new(ClusterWorkloadResourceMappingTemplate)
+	in.DeepCopyInto(out)
+	return out
+}
+
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *EnvMapping) DeepCopyInto(out *EnvMapping) {
 	*out = *in
diff --git a/config/crd/bases/servicebinding.io_clusterworkloadresourcemappings.yaml b/config/crd/bases/servicebinding.io_clusterworkloadresourcemappings.yaml
new file mode 100644
index 00000000..06c65802
--- /dev/null
+++ b/config/crd/bases/servicebinding.io_clusterworkloadresourcemappings.yaml
@@ -0,0 +1,122 @@
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+  annotations:
+    controller-gen.kubebuilder.io/version: v0.8.0
+  creationTimestamp: null
+  name: clusterworkloadresourcemappings.servicebinding.io
+spec:
+  group: servicebinding.io
+  names:
+    kind: ClusterWorkloadResourceMapping
+    listKind: ClusterWorkloadResourceMappingList
+    plural: clusterworkloadresourcemappings
+    singular: clusterworkloadresourcemapping
+  scope: Cluster
+  versions:
+  - additionalPrinterColumns:
+    - jsonPath: .metadata.creationTimestamp
+      name: Age
+      type: date
+    name: v1alpha3
+    schema:
+      openAPIV3Schema:
+        description: ClusterWorkloadResourceMapping is the Schema for the clusterworkloadresourcemappings
+          API
+        properties:
+          apiVersion:
+            description: 'APIVersion defines the versioned schema of this representation
+              of an object. Servers should convert recognized schemas to the latest
+              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+            type: string
+          kind:
+            description: 'Kind is a string value representing the REST resource this
+              object represents. Servers may infer this from the endpoint the client
+              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+            type: string
+          metadata:
+            type: object
+          spec:
+            description: ClusterWorkloadResourceMappingSpec defines the desired state
+              of ClusterWorkloadResourceMapping
+            properties:
+              versions:
+                description: Versions is the collection of versions for a given resource,
+                  with mappings.
+                items:
+                  description: ClusterWorkloadResourceMappingTemplate defines the
+                    mapping for a specific version of an workload resource to a logical
+                    PodTemplateSpec-like structure.
+                  properties:
+                    annotations:
+                      description: Annotations is a Restricted JSONPath that references
+                        the annotations map within the workload resource. These annotations
+                        must end up in the resulting Pod, and are generally not the
+                        workload resource's annotations. Defaults to `.spec.template.metadata.annotations`.
+                      type: string
+                    containers:
+                      description: Containers is the collection of mappings to container-like
+                        fragments of the workload resource. Defaults to mappings appropriate
+                        for a PodSpecable resource.
+                      items:
+                        description: "ClusterWorkloadResourceMappingContainer defines
+                          the mapping for a specific fragment of an workload resource
+                          to a Container-like structure. \n Each mapping defines exactly
+                          one path that may match multiple container-like fragments
+                          within the workload resource. For each object matching the
+                          path the name, env and volumeMounts expressions are resolved
+                          to find those structures."
+                        properties:
+                          env:
+                            description: Env is a Restricted JSONPath that references
+                              the slice of environment variables for the container
+                              with the container-like workload resource fragment.
+                              The referenced location is created if it does not exist.
+                              Defaults to `.envs`.
+                            type: string
+                          name:
+                            description: Name is a Restricted JSONPath that references
+                              the name of the container with the container-like workload
+                              resource fragment. If not defined, container name filtering
+                              is ignored.
+                            type: string
+                          path:
+                            description: Path is the JSONPath within the workload
+                              resource that matches an existing fragment that is container-like.
+                            type: string
+                          volumeMounts:
+                            description: VolumeMounts is a Restricted JSONPath that
+                              references the slice of volume mounts for the container
+                              with the container-like workload resource fragment.
+                              The referenced location is created if it does not exist.
+                              Defaults to `.volumeMounts`.
+                            type: string
+                        required:
+                        - path
+                        type: object
+                      type: array
+                    version:
+                      description: Version is the version of the workload resource
+                        that this mapping is for.
+                      type: string
+                    volumes:
+                      description: Volumes is a Restricted JSONPath that references
+                        the slice of volumes within the workload resource. Defaults
+                        to `.spec.template.spec.volumes`.
+                      type: string
+                  required:
+                  - version
+                  type: object
+                type: array
+            type: object
+        type: object
+    served: true
+    storage: true
+    subresources: {}
+status:
+  acceptedNames:
+    kind: ""
+    plural: ""
+  conditions: []
+  storedVersions: []
diff --git a/config/crd/kustomization.yaml b/config/crd/kustomization.yaml
index 556684ef..5abc9c76 100644
--- a/config/crd/kustomization.yaml
+++ b/config/crd/kustomization.yaml
@@ -5,6 +5,7 @@ resources:
 - bases/binding.operators.coreos.com_servicebindings.yaml
 - bases/servicebinding.io_servicebindings.yaml
 - bases/binding.operators.coreos.com_bindablekinds.yaml
+- bases/servicebinding.io_clusterworkloadresourcemappings.yaml
 # +kubebuilder:scaffold:crdkustomizeresource
 
 patchesStrategicMerge:
diff --git a/config/rbac/role.yaml b/config/rbac/role.yaml
index 8e21794b..7e0a98dd 100644
--- a/config/rbac/role.yaml
+++ b/config/rbac/role.yaml
@@ -145,6 +145,12 @@ rules:
   verbs:
   - get
   - list
+- apiGroups:
+  - servicebinding.io
+  resources:
+  - clusterworkloadresourcemappings
+  verbs:
+  - get
 - apiGroups:
   - servicebinding.io
   resources:
diff --git a/controllers/common.go b/controllers/common.go
index 89e7317f..35c457ae 100644
--- a/controllers/common.go
+++ b/controllers/common.go
@@ -25,6 +25,7 @@ import (
 // +kubebuilder:rbac:groups="",resources=pods;secrets;services;endpoints;configmaps,verbs=get;list
 // +kubebuilder:rbac:groups="",resources=pods;secrets,verbs=update;patch
 // +kubebuilder:rbac:groups="",resources=secrets,verbs=create
+// +kubebuilder:rbac:groups=servicebinding.io,resources=clusterworkloadresourcemappings,verbs=get
 
 var (
 	MaxConcurrentReconciles int
diff --git a/pkg/converter/unstructured.go b/pkg/converter/unstructured.go
index 69f39407..e3004573 100644
--- a/pkg/converter/unstructured.go
+++ b/pkg/converter/unstructured.go
@@ -34,27 +34,38 @@ func ToUnstructuredAsGVK(
 // Additionally the function gives an indication if specified resource is found or error if the found slice does not contain resources of the given type
 func NestedResources(obj interface{}, resource map[string]interface{}, path ...string) ([]map[string]interface{}, bool, error) {
 	val, found, err := unstructured.NestedFieldNoCopy(resource, path...)
-	if err != nil {
-		return nil, false, err
+	if err != nil || !found {
+		return nil, found, err
 	}
-	if !found {
-		return nil, found, nil
+	valSliceOfMaps, ok := val.([]map[string]interface{})
+	if ok {
+		var containers []map[string]interface{}
+		for _, item := range valSliceOfMaps {
+			err := runtime.DefaultUnstructuredConverter.FromUnstructured(item, obj)
+			if err != nil {
+				return nil, true, err
+			}
+			containers = append(containers, item)
+		}
+		return containers, true, nil
 	}
+
 	valSlice, ok := val.([]interface{})
-	if !ok {
-		return nil, true, errors.New("not a slice")
-	}
-	var containers []map[string]interface{}
-	for _, item := range valSlice {
-		u, ok := item.(map[string]interface{})
-		if !ok {
-			return nil, true, errors.New("not a map")
-		}
-		err := runtime.DefaultUnstructuredConverter.FromUnstructured(u, obj)
-		if err != nil {
-			return nil, true, err
+	if ok {
+		var containers []map[string]interface{}
+		for _, item := range valSlice {
+			u, ok := item.(map[string]interface{})
+			if !ok {
+				return nil, true, errors.New("not a map")
+			}
+			err := runtime.DefaultUnstructuredConverter.FromUnstructured(u, obj)
+			if err != nil {
+				return nil, true, err
+			}
+			containers = append(containers, u)
 		}
-		containers = append(containers, u)
+		return containers, true, nil
 	}
-	return containers, true, nil
+
+	return nil, true, errors.New("not a slice")
 }
diff --git a/pkg/reconcile/pipeline/api.go b/pkg/reconcile/pipeline/api.go
index e9800782..e9eab677 100644
--- a/pkg/reconcile/pipeline/api.go
+++ b/pkg/reconcile/pipeline/api.go
@@ -2,12 +2,14 @@ package pipeline
 
 import (
 	"fmt"
+
 	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/client/kubernetes"
 	v1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+	"k8s.io/apimachinery/pkg/runtime/schema"
 )
 
 //go:generate mockgen -destination=mocks/mocks_pipeline.go -package=mocks . Context,Service,CRD,Application,ContextProvider,Handler
@@ -22,6 +24,21 @@ type Pipeline interface {
 	Process(binding interface{}) (bool, error)
 }
 
+// A container-like object.  EnvFrom is optional; all other fields are required.
+type MetaContainer struct {
+	Name        string
+	Env         []string
+	EnvFrom     []string
+	VolumeMount []string
+	Data        map[string]interface{}
+}
+
+type MetaPodSpec struct {
+	Containers []MetaContainer
+	Volume     []string
+	Data       map[string]interface{}
+}
+
 // A pipeline stage
 type Handler interface {
 	Handle(ctx Context)
@@ -74,16 +91,21 @@ type Application interface {
 	// Application resource
 	HasResource
 
-	// dot-separated path inside the application resource locating container resources
-	// the returned value follows foo.bar.bla convention
-	// it cannot be empty
-	ContainersPath() string
-
 	// optional dot-separated path inside the application resource locating field where intermediate binding secret ref should be injected
 	// the returns value follows foo.bar.bla convention, but it can be empty
 	SecretPath() string
 
-	BindableContainers() ([]map[string]interface{}, error)
+	// Returns a container-like interface.
+	BindablePods() (*MetaPodSpec, error)
+
+	// A flag indicating if changes have been propogated
+	IsUpdated() bool
+
+	// GroupVersionResource of the application
+	GroupVersionResource() schema.GroupVersionResource
+
+	// Use a different mapping
+	SetMapping(WorkloadMapping)
 }
 
 type CRDDescription olmv1alpha1.CRDDescription
@@ -162,6 +184,8 @@ type Context interface {
 	kubernetes.SecretReader
 
 	FlowStatus() FlowStatus
+
+	WorkloadResourceTemplate(gvr *schema.GroupVersionResource, containerPath string) (*WorkloadMapping, error)
 }
 
 // Provides context for a given service binding
diff --git a/pkg/reconcile/pipeline/context/application.go b/pkg/reconcile/pipeline/context/application.go
index c6f2f996..c4fe33ae 100644
--- a/pkg/reconcile/pipeline/context/application.go
+++ b/pkg/reconcile/pipeline/context/application.go
@@ -1,21 +1,17 @@
 package context
 
 import (
-	"errors"
 	"fmt"
+	"reflect"
+
 	"github.com/redhat-developer/service-binding-operator/apis/binding/v1alpha1"
-	"github.com/redhat-developer/service-binding-operator/pkg/converter"
 	"github.com/redhat-developer/service-binding-operator/pkg/reconcile/pipeline"
-	corev1 "k8s.io/api/core/v1"
+
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/runtime/schema"
 	"k8s.io/apimachinery/pkg/util/sets"
-	"reflect"
-	"strings"
 )
 
-const defaultContainerPath = "spec.template.spec.containers"
-
 var _ pipeline.Application = &application{}
 
 type application struct {
@@ -24,6 +20,7 @@ type application struct {
 	resource               *unstructured.Unstructured
 	bindingPath            *v1alpha1.BindingPath
 	bindableContainerNames sets.String
+	resourceMapping        pipeline.WorkloadMapping
 }
 
 func (a *application) SecretPath() string {
@@ -40,41 +37,89 @@ func (a *application) Resource() *unstructured.Unstructured {
 	return a.resource
 }
 
-func (a *application) ContainersPath() string {
-	if a.bindingPath == nil || a.bindingPath.ContainersPath == "" {
-		return defaultContainerPath
-	}
-	return a.bindingPath.ContainersPath
-}
-
 func (a *application) IsUpdated() bool {
 	return !reflect.DeepEqual(a.persistedResource, a.resource)
 }
 
-func (a *application) BindableContainers() ([]map[string]interface{}, error) {
-	path := strings.Split(a.ContainersPath(), ".")
-	containers, found, err := converter.NestedResources(&corev1.Container{}, a.Resource().Object, path...)
-	if !found {
-		err = errors.New("no containers found in application resource")
+func (a *application) BindablePods() (*pipeline.MetaPodSpec, error) {
+	var filteredContainers []pipeline.MetaContainer
+	for _, container := range a.resourceMapping.Containers {
+		pathData, err := container.Path.FindResults(a.Resource().Object)
+		if err != nil {
+			continue
+		}
+		for _, data := range pathData[0] {
+			sliceData, isSlice := data.Interface().([]interface{})
+			mapData, isMap := data.Interface().(map[string]interface{})
+			if !(isSlice || isMap) {
+				return nil, fmt.Errorf("Unable to convert data to suitable format: %v, received type %v", data, data.Type().String())
+			}
+
+			if isSlice {
+				for _, c := range sliceData {
+					cData, ok := c.(map[string]interface{})
+					if !ok {
+						return nil, fmt.Errorf("Unable to convert data to suitable format: %v, received type %v", data, data.Type().String())
+					}
+					mc, err := intoMetaContainer(container, cData)
+					if mc != nil {
+						if len(a.bindableContainerNames) == 0 || a.bindableContainerNames.Has(mc.Name) {
+							filteredContainers = append(filteredContainers, *mc)
+						}
+					} else {
+						return nil, err
+					}
+				}
+			} else if isMap {
+				mc, err := intoMetaContainer(container, mapData)
+				if mc != nil {
+					if len(a.bindableContainerNames) == 0 || a.bindableContainerNames.Has(mc.Name) {
+						filteredContainers = append(filteredContainers, *mc)
+					}
+				} else {
+					return nil, err
+				}
+			}
+		}
 	}
-	if err != nil {
-		return nil, err
+
+	if len(filteredContainers) == 0 {
+		return nil, fmt.Errorf("no containers found in application resource: data: %v, names: %v", a.Resource(), a.bindableContainerNames)
 	}
-	initPath := append(path[:len(path)-1], "initContainers")
-	initContainers, found, err := converter.NestedResources(&corev1.Container{}, a.Resource().Object, initPath...)
-	if found && err == nil {
-		containers = append(containers, initContainers...)
+
+	containerTemplate := &pipeline.MetaPodSpec{
+		Volume:     a.resourceMapping.Volume,
+		Containers: filteredContainers,
+		Data:       a.resource.Object,
 	}
 
-	if len(a.bindableContainerNames) == 0 {
-		return containers, err
+	return containerTemplate, nil
+}
+
+func intoMetaContainer(container pipeline.WorkloadContainer, data map[string]interface{}) (*pipeline.MetaContainer, error) {
+
+	name, found, err := unstructured.NestedString(data, container.Name...)
+	if !found {
+		name = ""
+	} else if err != nil {
+		return nil, err
 	}
-	filteredContainers := make([]map[string]interface{}, 0, len(containers))
-	for _, c := range containers {
-		cname, ok := c["name"]
-		if ok && a.bindableContainerNames.Has(fmt.Sprintf("%v", cname)) {
-			filteredContainers = append(filteredContainers, c)
-		}
+
+	metaContainer := &pipeline.MetaContainer{
+		Name:        name,
+		Env:         container.Env,
+		VolumeMount: container.VolumeMounts,
+		EnvFrom:     container.EnvFrom,
+		Data:        data,
 	}
-	return filteredContainers, nil
+
+	return metaContainer, nil
+}
+
+func (a *application) SetMapping(mapping pipeline.WorkloadMapping) {
+	a.resourceMapping = mapping
+}
+
+func (a *application) GroupVersionResource() schema.GroupVersionResource {
+	return *a.gvr
 }
diff --git a/pkg/reconcile/pipeline/context/impl.go b/pkg/reconcile/pipeline/context/impl.go
index a55117c6..a6814b2e 100644
--- a/pkg/reconcile/pipeline/context/impl.go
+++ b/pkg/reconcile/pipeline/context/impl.go
@@ -5,14 +5,16 @@ import (
 	"crypto/sha1"
 	"encoding/hex"
 	"fmt"
+	"sort"
+
 	"github.com/redhat-developer/service-binding-operator/apis"
 	"github.com/redhat-developer/service-binding-operator/apis/binding/v1alpha1"
+	"github.com/redhat-developer/service-binding-operator/apis/spec/v1alpha3"
 	"github.com/redhat-developer/service-binding-operator/pkg/client/kubernetes"
 	"github.com/redhat-developer/service-binding-operator/pkg/reconcile/pipeline/context/service"
 	authv1 "k8s.io/api/authentication/v1"
 	v1 "k8s.io/api/authorization/v1"
 	clientauthzv1 "k8s.io/client-go/kubernetes/typed/authorization/v1"
-	"sort"
 
 	"github.com/redhat-developer/service-binding-operator/pkg/converter"
 	"github.com/redhat-developer/service-binding-operator/pkg/reconcile/pipeline"
@@ -23,6 +25,7 @@ import (
 	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/client-go/dynamic"
 )
@@ -39,7 +42,7 @@ type impl struct {
 	//nolint
 	services []pipeline.Service
 
-	applications []*application
+	applications []pipeline.Application
 
 	bindingItems pipeline.BindingItems
 
@@ -66,6 +69,8 @@ type impl struct {
 	requester func() *authv1.UserInfo
 
 	serviceBuilder service.Builder
+
+	resourceMapping *pipeline.WorkloadMapping
 }
 
 type bindingImpl struct {
@@ -224,6 +229,15 @@ func (i *bindingImpl) Applications() ([]pipeline.Application, error) {
 		if err != nil {
 			return nil, err
 		}
+		containerPath := ""
+		if i.serviceBinding != nil && i.serviceBinding.Spec.Application.BindingPath != nil {
+			containerPath = i.serviceBinding.Spec.Application.BindingPath.ContainersPath
+		}
+		mappingTemplate, err := i.WorkloadResourceTemplate(gvr, containerPath)
+		if err != nil {
+			return nil, err
+		}
+
 		if i.serviceBinding.Spec.Application.Name != "" {
 			if !i.canPerform(gvr, ref.Name, i.serviceBinding.Namespace, "get") {
 				return nil, fmt.Errorf("cannot read application %s in namespace %s", ref.Name, i.serviceBinding.Namespace)
@@ -235,7 +249,13 @@ func (i *bindingImpl) Applications() ([]pipeline.Application, error) {
 			if err != nil {
 				return nil, emptyApplicationsErr{err}
 			}
-			i.applications = append(i.applications, &application{gvr: gvr, persistedResource: u, bindingPath: i.serviceBinding.Spec.Application.BindingPath})
+
+			i.applications = append(i.applications, &application{
+				gvr:               gvr,
+				persistedResource: u,
+				bindingPath:       i.serviceBinding.Spec.Application.BindingPath,
+				resourceMapping:   *mappingTemplate,
+			})
 		}
 		if i.serviceBinding.Spec.Application.LabelSelector != nil && i.serviceBinding.Spec.Application.LabelSelector.MatchLabels != nil {
 			matchLabels := i.serviceBinding.Spec.Application.LabelSelector.MatchLabels
@@ -261,15 +281,18 @@ func (i *bindingImpl) Applications() ([]pipeline.Application, error) {
 					return nil, fmt.Errorf("cannot update application resource %s in namespace %s", name, i.serviceBinding.Namespace)
 				}
 
-				i.applications = append(i.applications, &application{gvr: gvr, persistedResource: &(objList.Items[index]), bindingPath: i.serviceBinding.Spec.Application.BindingPath})
+				i.applications = append(i.applications, &application{
+					gvr:               gvr,
+					persistedResource: &(objList.Items[index]),
+					bindingPath:       i.serviceBinding.Spec.Application.BindingPath,
+					resourceMapping:   *mappingTemplate,
+				})
 			}
 		}
 	}
 
 	result := make([]pipeline.Application, len(i.applications))
-	for l, a := range i.applications {
-		result[l] = a
-	}
+	copy(result, i.applications)
 	return result, nil
 }
 
@@ -425,9 +448,26 @@ func (i *impl) Close() error {
 	}
 	for _, app := range i.applications {
 		if app.IsUpdated() {
-			_, err = i.client.Resource(*app.gvr).Namespace(i.bindingMeta.Namespace).Update(context.Background(), app.Resource(), metav1.UpdateOptions{})
+			// We explicitly want to clone our app object here.  This is because we need to pass this
+			// object through DeepCopyJSON(), which currently doesn't allow []map[string]interface{}
+			// objects.  To fix this, we have to normalize them into []interface{} slices, where
+			// every element of that slice is of type map[string]interface{}.
+			clone, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&app.Resource().Object)
 			if err != nil {
-				i.SetCondition(apis.Conditions().NotBindingReady().Reason("ApplicationUpdateError").Msg(err.Error()).Build())
+				return err
+			}
+
+			resource := &unstructured.Unstructured{Object: clone}
+			_, err = i.client.
+				Resource(app.GroupVersionResource()).
+				Namespace(i.bindingMeta.Namespace).
+				Update(context.Background(), resource, metav1.UpdateOptions{})
+			if err != nil {
+				i.SetCondition(apis.Conditions().
+					NotBindingReady().
+					Reason("ApplicationUpdateError").
+					Msg(err.Error()).
+					Build())
 				_ = i.persistBinding()
 				return err
 			}
@@ -460,3 +500,74 @@ func (i *impl) ReadSecret(namespace string, name string) (*unstructured.Unstruct
 func (i *impl) AddBindings(bindings pipeline.Bindings) {
 	i.bindings = append(i.bindings, bindings)
 }
+
+func (i *impl) WorkloadResourceTemplate(gvr *schema.GroupVersionResource, containerPath string) (*pipeline.WorkloadMapping, error) {
+	if i.resourceMapping != nil {
+		return i.resourceMapping, nil
+	}
+
+	defaultTemplate := v1alpha3.DefaultTemplate
+	mappingGVR := v1alpha3.WorkloadResourceMappingGroupVersionResource
+
+	if !i.canPerform(&mappingGVR, gvr.GroupResource().String(), "", "get") {
+		return nil, errors.NewBadRequest(fmt.Sprintf("Unable to retrieve ClusterWorkloadResourceMapping for type %q", gvr))
+	}
+
+	var mappingTemplate *v1alpha3.ClusterWorkloadResourceMappingTemplate = nil
+	mappingObj, err := i.client.Resource(mappingGVR).
+		Get(context.Background(),
+			gvr.GroupResource().String(),
+			metav1.GetOptions{})
+	if errors.IsNotFound(err) {
+		mappingTemplate = &defaultTemplate
+	} else if mappingObj != nil {
+		var mapping v1alpha3.ClusterWorkloadResourceMapping
+		err := runtime.DefaultUnstructuredConverter.FromUnstructured(mappingObj.Object, &mapping)
+		if err != nil {
+			return nil, err
+		}
+
+		wildcardTemplate := defaultTemplate.DeepCopy()
+		for _, template := range mapping.Spec.Versions {
+			if template.Version == gvr.Version {
+				mappingTemplate = &template
+				break
+			} else if template.Version == "*" {
+				wildcardTemplate = &template
+			}
+		}
+		if mappingTemplate == nil {
+			mappingTemplate = wildcardTemplate
+		}
+	} else {
+		return nil, err
+	}
+
+	if len(mappingTemplate.Containers) == 0 {
+		mappingTemplate.Containers = defaultTemplate.Containers
+	}
+
+	if containerPath != "" {
+		path := fmt.Sprintf(".%v[*]", containerPath)
+		found := false
+		for _, container := range mappingTemplate.Containers {
+			if path != container.Path {
+				found = true
+				break
+			}
+		}
+		if found {
+			mappingTemplate.Containers = append(mappingTemplate.Containers, v1alpha3.ClusterWorkloadResourceMappingContainer{
+				Path: path,
+			})
+		}
+	}
+
+	workloadMapping, err := pipeline.FromWorkloadResourceMappingTemplate(*mappingTemplate)
+	if err != nil {
+		return nil, err
+	}
+
+	i.resourceMapping = workloadMapping
+	return workloadMapping, nil
+}
diff --git a/pkg/reconcile/pipeline/context/spec_binding_impl.go b/pkg/reconcile/pipeline/context/spec_binding_impl.go
index 772fc4f2..9da02513 100644
--- a/pkg/reconcile/pipeline/context/spec_binding_impl.go
+++ b/pkg/reconcile/pipeline/context/spec_binding_impl.go
@@ -139,6 +139,12 @@ func (i *specImpl) Applications() ([]pipeline.Application, error) {
 		if err != nil {
 			return nil, err
 		}
+
+		mappingTemplate, err := i.WorkloadResourceTemplate(gvr, "")
+		if err != nil {
+			return nil, err
+		}
+
 		if i.serviceBinding.Spec.Workload.Name != "" {
 			if !i.canPerform(gvr, ref.Name, i.serviceBinding.Namespace, "get") {
 				return nil, fmt.Errorf("cannot read application %s in namespace %s", ref.Name, i.serviceBinding.Namespace)
@@ -150,7 +156,13 @@ func (i *specImpl) Applications() ([]pipeline.Application, error) {
 			if err != nil {
 				return nil, emptyApplicationsErr{err}
 			}
-			i.applications = append(i.applications, &application{gvr: gvr, persistedResource: u, bindableContainerNames: sets.NewString(i.serviceBinding.Spec.Workload.Containers...)})
+
+			i.applications = append(i.applications, &application{
+				gvr:                    gvr,
+				persistedResource:      u,
+				bindableContainerNames: sets.NewString(i.serviceBinding.Spec.Workload.Containers...),
+				resourceMapping:        *mappingTemplate,
+			})
 		}
 		if i.serviceBinding.Spec.Workload.Selector != nil && i.serviceBinding.Spec.Workload.Selector.MatchLabels != nil {
 			matchLabels := i.serviceBinding.Spec.Workload.Selector.MatchLabels
@@ -176,17 +188,14 @@ func (i *specImpl) Applications() ([]pipeline.Application, error) {
 					return nil, fmt.Errorf("cannot update application resource %s in namespace %s", name, i.serviceBinding.Namespace)
 				}
 
-				i.applications = append(i.applications, &application{gvr: gvr, persistedResource: &(objList.Items[index]), bindableContainerNames: sets.NewString(i.serviceBinding.Spec.Workload.Containers...)})
+				i.applications = append(i.applications, &application{gvr: gvr, persistedResource: &(objList.Items[index]), bindableContainerNames: sets.NewString(i.serviceBinding.Spec.Workload.Containers...), resourceMapping: *mappingTemplate})
 			}
 		}
 	}
 
 	result := make([]pipeline.Application, len(i.applications))
-	for l, a := range i.applications {
-		result[l] = a
-	}
+	copy(result, i.applications)
 	return result, nil
-
 }
 
 func (s *specImpl) BindAsFiles() bool {
diff --git a/pkg/reconcile/pipeline/handler/project/impl.go b/pkg/reconcile/pipeline/handler/project/impl.go
index 76c30a79..4032728e 100644
--- a/pkg/reconcile/pipeline/handler/project/impl.go
+++ b/pkg/reconcile/pipeline/handler/project/impl.go
@@ -3,15 +3,12 @@ package project
 import (
 	"errors"
 	"fmt"
+	"strings"
+
 	"github.com/redhat-developer/service-binding-operator/apis"
-	"github.com/redhat-developer/service-binding-operator/pkg/converter"
 	"github.com/redhat-developer/service-binding-operator/pkg/reconcile/pipeline"
 	corev1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
-	"k8s.io/apimachinery/pkg/runtime"
-	"path"
-	"reflect"
-	"strings"
 )
 
 func PreFlightCheck(mandatoryBindingKeys ...string) func(pipeline.Context) {
@@ -57,10 +54,13 @@ func PostFlightCheck(ctx pipeline.Context) {
 func InjectSecretRef(ctx pipeline.Context) {
 	applications, _ := ctx.Applications()
 	for _, app := range applications {
+		// Safety: In the spec API, secretPath is always "", so injecting secrets using this method
+		// only happens in the coreos api.
 		secretPath := app.SecretPath()
 		if secretPath == "" {
 			continue
 		}
+
 		err := unstructured.SetNestedField(app.Resource().Object, ctx.BindingSecretName(), strings.Split(secretPath, ".")...)
 		if err != nil {
 			stop(ctx, err)
@@ -77,11 +77,11 @@ func BindingsAsEnv(ctx pipeline.Context) {
 	}
 
 	secretName := ctx.BindingSecretName()
-	var envVars []interface{}
+	var envVars []corev1.EnvVar
 	if len(envBindings) > 0 {
-		envVars = make([]interface{}, 0, len(envBindings))
+		envVars = make([]corev1.EnvVar, 0, len(envBindings))
 		for _, e := range envBindings {
-			u, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&corev1.EnvVar{
+			u := corev1.EnvVar{
 				Name: e.Var,
 				ValueFrom: &corev1.EnvVarSource{
 					SecretKeyRef: &corev1.SecretKeySelector{
@@ -91,10 +91,6 @@ func BindingsAsEnv(ctx pipeline.Context) {
 						Key: e.Name,
 					},
 				},
-			})
-			if err != nil {
-				stop(ctx, err)
-				return
 			}
 			envVars = append(envVars, u)
 		}
@@ -107,61 +103,32 @@ func BindingsAsEnv(ctx pipeline.Context) {
 			},
 		},
 	}
+
 	for _, app := range applications {
-		if app.SecretPath() != "" {
-			continue
-		}
-		containerResources, err := app.BindableContainers()
-		if containerResources == nil && err == nil {
-			err = errors.New("Containers not found in app resource")
-		}
+		containerResources, err := app.BindablePods()
 		if err != nil {
+			if app.SecretPath() != "" {
+				continue
+			}
 			stop(ctx, err)
 			return
 		}
-		for _, container := range containerResources {
+		for _, container := range containerResources.Containers {
 			if !ctx.BindAsFiles() {
-				envFrom, found := container["envFrom"]
-				if !found {
-
-					u, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&envFromSecret)
-					if err != nil {
-						stop(ctx, err)
-						return
-					}
-					container["envFrom"] = []interface{}{u}
-					continue
-				}
-				envFromSlice, ok := envFrom.([]interface{})
-				if !ok {
-					stop(ctx, errors.New("envFrom not a slice"))
-					return
-				}
-				u, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&envFromSecret)
-				if err != nil {
+				// Safety: EnvFrom is available when ctx.BindAsFiles() == false
+				if err := container.AddEnvFromVar(envFromSecret); err != nil {
 					stop(ctx, err)
 					return
 				}
-				container["envFrom"] = append(envFromSlice, u)
-				continue
-			}
-			env, found := container["env"]
-			if !found {
-				container["env"] = envVars
-				continue
 			}
-			envSlice, ok := env.([]interface{})
-			if !ok {
-				stop(ctx, errors.New("env not a slice"))
+			if err := container.AddEnvVars(envVars); err != nil {
+				stop(ctx, err)
 				return
 			}
-			container["env"] = append(envSlice, envVars...)
 		}
 	}
 }
 
-var volumesPath = []string{"spec", "template", "spec", "volumes"}
-
 func BindingsAsFiles(ctx pipeline.Context) {
 	if !ctx.BindAsFiles() {
 		return
@@ -170,112 +137,44 @@ func BindingsAsFiles(ctx pipeline.Context) {
 	bindingName := ctx.BindingName()
 	applications, _ := ctx.Applications()
 	for _, app := range applications {
-		if app.SecretPath() != "" {
-			continue
-		}
-		appResource := app.Resource()
-		volumerResources, found, err := converter.NestedResources(&corev1.Volume{}, appResource.Object, volumesPath...)
+		containerResources, err := app.BindablePods()
 		if err != nil {
+			if app.SecretPath() != "" {
+				continue
+			}
 			stop(ctx, err)
 			return
 		}
 
-		volume, err := runtime.DefaultUnstructuredConverter.ToUnstructured(
-			&corev1.Volume{
-				Name: bindingName,
-				VolumeSource: corev1.VolumeSource{
-					Secret: &corev1.SecretVolumeSource{
-						SecretName: secretName,
-					},
+		volume := corev1.Volume{
+			Name: bindingName,
+			VolumeSource: corev1.VolumeSource{
+				Secret: &corev1.SecretVolumeSource{
+					SecretName: secretName,
 				},
-			})
-		if err != nil {
-			stop(ctx, err)
-			return
-		}
-		if found {
-			var newVolumes []interface{}
-			exist := false
-			for _, v := range volumerResources {
-				if v["name"] == volume["name"] {
-					exist = true
-					if !reflect.DeepEqual(v["secret"], volume["secret"]) {
-						newVolumes = append(newVolumes, volume)
-					} else {
-						newVolumes = append(newVolumes, v)
-					}
-				} else {
-					newVolumes = append(newVolumes, v)
-				}
-			}
-			if !exist {
-				newVolumes = append(newVolumes, volume)
-			}
-			if err = unstructured.SetNestedSlice(appResource.Object, newVolumes, volumesPath...); err != nil {
-				stop(ctx, err)
-				return
-			}
-		} else {
-			if err = unstructured.SetNestedSlice(appResource.Object, []interface{}{volume}, volumesPath...); err != nil {
-				stop(ctx, err)
-				return
-			}
-		}
-
-		containerResources, err := app.BindableContainers()
-		if containerResources == nil && err == nil {
-			err = errors.New("Containers not found in app resource")
+			},
 		}
-		if err != nil {
+		if err := containerResources.AddVolume(volume); err != nil {
 			stop(ctx, err)
 			return
 		}
-		for _, container := range containerResources {
-			mountPath, err := mountPath(container, ctx)
-			if err != nil {
-				stop(ctx, err)
-				return
-			}
-			volumeMounts, found, err := converter.NestedResources(&corev1.VolumeMount{}, container, "volumeMounts")
+
+		for _, container := range containerResources.Containers {
+			mountPath, err := container.MountPath(ctx.BindingName())
 			if err != nil {
 				stop(ctx, err)
 				return
 			}
-			u, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&corev1.VolumeMount{
+			volumeMount := corev1.VolumeMount{
 				Name:      bindingName,
 				MountPath: mountPath,
-			})
-			if err != nil {
+			}
+
+			if err := container.AddVolumeMount(volumeMount); err != nil {
 				stop(ctx, err)
 				return
 			}
-			if found {
-				var newVolumeMounts []interface{}
-				exist := false
-				for _, vm := range volumeMounts {
-					if vm["name"] == u["name"] {
-						exist = true
-						if !reflect.DeepEqual(vm, u) {
-							newVolumeMounts = append(newVolumeMounts, u)
-						} else {
-							newVolumeMounts = append(newVolumeMounts, vm)
-						}
-					} else {
-						newVolumeMounts = append(newVolumeMounts, vm)
-					}
-				}
-				if !exist {
-					newVolumeMounts = append(newVolumeMounts, u)
-				}
-				container["volumeMounts"] = newVolumeMounts
-			} else {
-				if err := unstructured.SetNestedField(container, []interface{}{u}, "volumeMounts"); err != nil {
-					stop(ctx, err)
-					return
-				}
-			}
 		}
-
 	}
 }
 
@@ -290,110 +189,39 @@ func Unbind(ctx pipeline.Context) {
 	}
 	secretName := ctx.BindingSecretName()
 	bindingName := ctx.BindingName()
+	envVars := ctx.EnvBindings()
 	if secretName == "" {
 		ctx.StopProcessing()
 		return
 	}
 	for _, app := range applications {
-		appResource := app.Resource()
-		podSpec, found, err := unstructured.NestedFieldNoCopy(appResource.Object, volumesPath[:len(volumesPath)-1]...)
-		if !found || err != nil {
-			continue
-		}
-		podSpecMap, ok := podSpec.(map[string]interface{})
-		if !ok {
-			continue
-		}
-		volumeResources, found, _ := converter.NestedResources(&corev1.Volume{}, podSpecMap, "volumes")
-		if found {
-			for i, vol := range volumeResources {
-				if val, found, err := unstructured.NestedString(vol, "name"); found && err == nil && val == bindingName {
-					s := append(volumeResources[:i], volumeResources[i+1:]...)
-					if len(s) == 0 {
-						delete(podSpecMap, "volumes")
-					} else {
-						podSpecMap["volumes"] = s
-					}
-					break
-				}
-			}
-		}
-		containerResources, err := app.BindableContainers()
+		containerResources, err := app.BindablePods()
 		if containerResources == nil && err == nil {
 			ctx.StopProcessing()
 			return
 		}
-		for _, container := range containerResources {
-			envFrom, found, _ := converter.NestedResources(&corev1.EnvFromSource{}, container, "envFrom")
-			if found {
-				for i, envSource := range envFrom {
-					if val, found, err := unstructured.NestedString(envSource, "secretRef", "name"); found && err == nil && val == secretName {
-						s := append(envFrom[:i], envFrom[i+1:]...)
-						if len(s) == 0 {
-							delete(container, "envFrom")
-						} else {
-							container["envFrom"] = s
-						}
-						break
-					}
+		if err := containerResources.RemoveVolume(bindingName); err != nil {
+			stop(ctx, err)
+			return
+		}
+		for _, container := range containerResources.Containers {
+			for _, env := range envVars {
+				if err := container.RemoveEnvVars(env.Name); err != nil {
+					stop(ctx, err)
+					return
 				}
 			}
-			volumeMounts, found, _ := converter.NestedResources(&corev1.VolumeMount{}, container, "volumeMounts")
-			if found {
-				for i, vm := range volumeMounts {
-					if val, found, err := unstructured.NestedString(vm, "name"); found && err == nil && val == bindingName {
-						s := append(volumeMounts[:i], volumeMounts[i+1:]...)
-						if len(s) == 0 {
-							delete(container, "volumeMounts")
-						} else {
-							container["volumeMounts"] = s
-						}
-						break
-					}
-				}
+			if err := container.RemoveEnvFromVars(secretName); err != nil {
+				stop(ctx, err)
+				return
 			}
-		}
-	}
-	ctx.StopProcessing()
-}
-
-const bindingRootEnvVar = "SERVICE_BINDING_ROOT"
-
-func mountPath(container map[string]interface{}, ctx pipeline.Context) (string, error) {
-	envs, found, err := converter.NestedResources(&corev1.EnvVar{}, container, "env")
-	if err != nil {
-		return "", err
-	}
-	bindingRoot := ""
-	if found {
-		for _, e := range envs {
-			if e["name"] == bindingRootEnvVar {
-				bindingRoot = fmt.Sprintf("%v", e["value"])
-				return path.Join(bindingRoot, ctx.BindingName()), nil
+			if err := container.RemoveVolumeMount(bindingName); err != nil {
+				stop(ctx, err)
+				return
 			}
 		}
 	}
-
-	bindingRoot = "/bindings"
-	mp := path.Join(bindingRoot, ctx.BindingName())
-
-	u, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&corev1.EnvVar{
-		Name:  bindingRootEnvVar,
-		Value: bindingRoot,
-	})
-	if err != nil {
-		return "", err
-	}
-
-	if found {
-		container["env"] = append(envs, u)
-	} else {
-		if err := unstructured.SetNestedField(container, []interface{}{u}, "env"); err != nil {
-			return "", err
-		}
-	}
-	return mp, nil
-
+	ctx.StopProcessing()
 }
 
 func stop(ctx pipeline.Context, err error) {
diff --git a/pkg/reconcile/pipeline/mapping.go b/pkg/reconcile/pipeline/mapping.go
new file mode 100644
index 00000000..a1548b54
--- /dev/null
+++ b/pkg/reconcile/pipeline/mapping.go
@@ -0,0 +1,374 @@
+/*
+Copyright 2022.
+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 pipeline
+
+import (
+	"fmt"
+	"path"
+
+	"github.com/redhat-developer/service-binding-operator/apis/spec/v1alpha3"
+	"github.com/redhat-developer/service-binding-operator/pkg/converter"
+	corev1 "k8s.io/api/core/v1"
+	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+	"k8s.io/apimachinery/pkg/runtime"
+	"k8s.io/client-go/util/jsonpath"
+)
+
+type WorkloadContainer struct {
+	Path         *jsonpath.JSONPath
+	Name         []string
+	Env          []string
+	EnvFrom      []string
+	VolumeMounts []string
+}
+
+type WorkloadMapping struct {
+	Containers []WorkloadContainer
+	Volume     []string
+}
+
+func FromWorkloadResourceMappingTemplate(mapping v1alpha3.ClusterWorkloadResourceMappingTemplate) (*WorkloadMapping, error) {
+	var containers []WorkloadContainer
+	for _, container := range mapping.Containers {
+		wc := WorkloadContainer{}
+
+		if err := constructRestrictedPath(container.Name, []string{"name"}, &wc.Name); err != nil {
+			return nil, err
+		}
+		if err := constructRestrictedPath(container.Env, []string{"env"}, &wc.Env); err != nil {
+			return nil, err
+		}
+		if err := constructRestrictedPath(container.VolumeMounts, []string{"volumeMounts"}, &wc.VolumeMounts); err != nil {
+			return nil, err
+		}
+		// not in the spec, but we need this for compatability with the coreos api
+		wc.EnvFrom = []string{"envFrom"}
+
+		path := jsonpath.New("")
+		formatted := fmt.Sprintf("{%s}", container.Path)
+		if err := path.Parse(formatted); err != nil {
+			return nil, fmt.Errorf("Error in parsing JSONPath expression %v: %v", formatted, err)
+		}
+
+		wc.Path = path
+
+		containers = append(containers, wc)
+	}
+
+	var volume []string
+	if err := constructRestrictedPath(mapping.Volumes, []string{"spec", "template", "spec", "volumes"}, &volume); err != nil {
+		return nil, err
+	}
+
+	return &WorkloadMapping{Containers: containers, Volume: volume}, nil
+}
+
+func constructRestrictedPath(value string, defaultValue []string, target *[]string) error {
+	if value != "" {
+		val, err := isValidRestrictedJsonPath(value)
+		if err != nil {
+			return err
+		}
+		*target = val
+	} else {
+		*target = defaultValue
+	}
+	return nil
+}
+
+func isValidRestrictedJsonPath(path string) ([]string, error) {
+	parser, err := jsonpath.Parse("", fmt.Sprintf("{%s}", path))
+	if err != nil {
+		return nil, err
+	}
+	return verifyJsonPath(parser.Root)
+}
+
+func verifyJsonPath(node jsonpath.Node) ([]string, error) {
+	switch node.Type() {
+	case jsonpath.NodeField:
+		field := node.(*jsonpath.FieldNode)
+		return []string{field.Value}, nil
+	case jsonpath.NodeList:
+		list := node.(*jsonpath.ListNode)
+		var paths []string
+		for _, node := range list.Nodes {
+			nested, err := verifyJsonPath(node)
+			if err != nil {
+				return nil, err
+			}
+			paths = append(paths, nested...)
+		}
+		return paths, nil
+	default:
+		return nil, fmt.Errorf("Node type %q not allowed in restricted JSONPath contexts", node)
+	}
+}
+
+const bindingRootEnvVar = "SERVICE_BINDING_ROOT"
+const bindingRoot = "/bindings"
+
+func (container *MetaContainer) MountPath(bindingName string) (string, error) {
+	envs, found, err := converter.NestedResources(&corev1.EnvVar{}, container.Data, container.Env...)
+	if err != nil {
+		return "", err
+	} else if found {
+		for _, e := range envs {
+			var envVar corev1.EnvVar
+			if err := runtime.DefaultUnstructuredConverter.FromUnstructured(e, &envVar); err != nil {
+				continue // should be unreachable
+			}
+			if envVar.Name == bindingRootEnvVar {
+				return path.Join(envVar.Value, bindingName), nil
+			}
+		}
+	}
+
+	mp := path.Join(bindingRoot, bindingName)
+
+	u, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&corev1.EnvVar{
+		Name:  bindingRootEnvVar,
+		Value: bindingRoot,
+	})
+	if err != nil {
+		return "", err
+	}
+
+	if found {
+		envs = append(envs, u)
+	} else {
+		envs = []map[string]interface{}{u}
+	}
+	if err := setSlice(container.Data, envs, container.Env); err != nil {
+		return "", err
+	}
+	return mp, nil
+}
+
+// We can't use unstructured.SetNestedField when we try to set a field to a value of type
+// []map[string]interface{}, since (apparently) map[string]interface{} doesn't implement interface{}.
+// Runtime panics occur when using SetNestedField, and SetNesetedSlice gives a compile-time error.
+func setSlice(obj map[string]interface{}, resources []map[string]interface{}, path []string) error {
+	dest := obj
+	if len(path) > 1 {
+		slice, found, err := unstructured.NestedFieldNoCopy(obj, path[:len(path)-1]...)
+		if err != nil {
+			return err
+		} else if !found {
+			current := obj
+			for i, p := range path[:len(path)-1] {
+				x, exists := current[p]
+				y, ok := x.(map[string]interface{})
+				if !exists {
+					y = make(map[string]interface{})
+					current[p] = y
+				} else if !ok {
+					return fmt.Errorf("Value already exists at path %v", path[:i])
+				}
+				current = y
+			}
+
+			dest = current
+		} else {
+			x, ok := slice.(map[string]interface{})
+			if !ok {
+				return fmt.Errorf("Value already exists at path %v", path[:len(path)-1])
+			}
+			dest = x
+		}
+	}
+
+	key := path[len(path)-1]
+	dest[key] = resources
+	return nil
+}
+
+func addRaw(obj map[string]interface{}, resource interface{}, data []map[string]interface{}, path []string) error {
+	nestedData, found, err := converter.NestedResources(resource, obj, path...)
+	if err != nil {
+		return err
+	}
+
+	if !found {
+		nestedData = data
+	} else {
+		nestedData = append(nestedData, data...)
+	}
+	return setSlice(obj, nestedData, path)
+}
+
+func (container *MetaContainer) AddEnvVars(vars []corev1.EnvVar) error {
+	var data []map[string]interface{}
+	for _, variable := range vars {
+		x, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&variable)
+		if err != nil {
+			return err
+		}
+		data = append(data, x)
+	}
+	return addRaw(container.Data, &corev1.EnvVar{}, data, container.Env)
+}
+
+func (container *MetaContainer) RemoveEnvVars(name string) error {
+	envFrom, found, err := converter.NestedResources(&corev1.EnvVar{}, container.Data, container.Env...)
+	if err != nil {
+		return err
+	} else if !found {
+		return nil
+	}
+	for i, envSource := range envFrom {
+		if val, found, err := unstructured.NestedString(envSource, "name"); found && err == nil && val == name {
+			s := append(envFrom[:i], envFrom[i+1:]...)
+			if err := setSlice(container.Data, s, container.Env); err != nil {
+				return err
+			}
+			break
+		}
+	}
+	return nil
+}
+
+func (container *MetaContainer) AddEnvFromVar(envVar corev1.EnvFromSource) error {
+	if len(container.EnvFrom) != 0 {
+		data, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&envVar)
+		if err != nil {
+			return err
+		}
+		return addRaw(container.Data, &corev1.EnvFromSource{}, []map[string]interface{}{data}, container.EnvFrom)
+	}
+	return fmt.Errorf("No envFrom field")
+}
+
+func (container *MetaContainer) RemoveEnvFromVars(secretName string) error {
+	envFrom, found, err := converter.NestedResources(&corev1.EnvFromSource{}, container.Data, container.EnvFrom...)
+	if err != nil {
+		return err
+	} else if !found {
+		return nil
+	}
+	for i, envSource := range envFrom {
+		if val, found, err := unstructured.NestedString(envSource, "secretRef", "name"); found && err == nil && val == secretName {
+			s := append(envFrom[:i], envFrom[i+1:]...)
+			if err := setSlice(container.Data, s, container.EnvFrom); err != nil {
+				return err
+			}
+			break
+		}
+	}
+	return nil
+}
+
+func (container *MetaContainer) AddVolumeMount(mount corev1.VolumeMount) error {
+	var newVolumes []map[string]interface{}
+	u, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&mount)
+	if err != nil {
+		return err
+	}
+
+	volumes, found, err := converter.NestedResources(&corev1.VolumeMount{}, container.Data, container.VolumeMount...)
+	if err != nil {
+		return err
+	} else if !found {
+		newVolumes = append(newVolumes, u)
+	} else {
+		exist := false
+		for _, vol := range volumes {
+			var tmpVol corev1.VolumeMount
+			if err := runtime.DefaultUnstructuredConverter.FromUnstructured(vol, &tmpVol); err != nil {
+				return err
+			}
+			if tmpVol.Name == mount.Name {
+				exist = true
+				newVolumes = append(newVolumes, u)
+			} else {
+				newVolumes = append(newVolumes, vol)
+			}
+		}
+		if !exist {
+			newVolumes = append(newVolumes, u)
+		}
+	}
+
+	return setSlice(container.Data, newVolumes, container.VolumeMount)
+}
+
+func (container *MetaContainer) RemoveVolumeMount(name string) error {
+	volumeMounts, found, err := converter.NestedResources(&corev1.VolumeMount{}, container.Data, container.VolumeMount...)
+	if err != nil {
+		return err
+	} else if !found {
+		return nil
+	}
+
+	for i, vm := range volumeMounts {
+		mount := &corev1.VolumeMount{}
+		if err := runtime.DefaultUnstructuredConverter.FromUnstructured(vm, mount); err == nil && mount.Name == name {
+			s := append(volumeMounts[:i], volumeMounts[i+1:]...)
+			if err := setSlice(container.Data, s, container.VolumeMount); err != nil {
+				return err
+			}
+			break
+		}
+	}
+	return nil
+}
+
+func (template *MetaPodSpec) AddVolume(volume corev1.Volume) error {
+	var newVolumes []map[string]interface{}
+	u, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&volume)
+	if err != nil {
+		return err
+	}
+
+	volumes, found, err := converter.NestedResources(&corev1.Volume{}, template.Data, template.Volume...)
+	if err != nil {
+		return err
+	} else if !found {
+		newVolumes = append(newVolumes, u)
+	} else {
+		exist := false
+		for _, vol := range volumes {
+			if vol["name"] == volume.Name {
+				exist = true
+				newVolumes = append(newVolumes, u)
+			} else {
+				newVolumes = append(newVolumes, vol)
+			}
+		}
+		if !exist {
+			newVolumes = append(newVolumes, u)
+		}
+	}
+
+	return setSlice(template.Data, newVolumes, template.Volume)
+}
+
+func (template *MetaPodSpec) RemoveVolume(name string) error {
+	volumeResources, found, err := converter.NestedResources(&corev1.Volume{}, template.Data, template.Volume...)
+	if err != nil {
+		return err
+	} else if !found {
+		return nil
+	}
+	for i, vol := range volumeResources {
+		if val, found, err := unstructured.NestedString(vol, "name"); found && err == nil && val == name {
+			s := append(volumeResources[:i], volumeResources[i+1:]...)
+			if err := setSlice(template.Data, s, template.Volume); err != nil {
+				return err
+			}
+			break
+		}
+	}
+	return nil
+}
diff --git a/pkg/reconcile/pipeline/mocks/mocks_pipeline.go b/pkg/reconcile/pipeline/mocks/mocks_pipeline.go
index 7272dfff..d91f66ec 100644
--- a/pkg/reconcile/pipeline/mocks/mocks_pipeline.go
+++ b/pkg/reconcile/pipeline/mocks/mocks_pipeline.go
@@ -12,6 +12,7 @@ import (
 	pipeline "github.com/redhat-developer/service-binding-operator/pkg/reconcile/pipeline"
 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	unstructured "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+	schema "k8s.io/apimachinery/pkg/runtime/schema"
 )
 
 // MockContext is a mock of Context interface.
@@ -309,6 +310,21 @@ func (mr *MockContextMockRecorder) UnbindRequested() *gomock.Call {
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnbindRequested", reflect.TypeOf((*MockContext)(nil).UnbindRequested))
 }
 
+// WorkloadResourceTemplate mocks base method.
+func (m *MockContext) WorkloadResourceTemplate(arg0 *schema.GroupVersionResource, arg1 string) (*pipeline.WorkloadMapping, error) {
+	m.ctrl.T.Helper()
+	ret := m.ctrl.Call(m, "WorkloadResourceTemplate", arg0, arg1)
+	ret0, _ := ret[0].(*pipeline.WorkloadMapping)
+	ret1, _ := ret[1].(error)
+	return ret0, ret1
+}
+
+// WorkloadResourceTemplate indicates an expected call of WorkloadResourceTemplate.
+func (mr *MockContextMockRecorder) WorkloadResourceTemplate(arg0, arg1 interface{}) *gomock.Call {
+	mr.mock.ctrl.T.Helper()
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WorkloadResourceTemplate", reflect.TypeOf((*MockContext)(nil).WorkloadResourceTemplate), arg0, arg1)
+}
+
 // MockService is a mock of Service interface.
 type MockService struct {
 	ctrl     *gomock.Controller
@@ -521,33 +537,47 @@ func (m *MockApplication) EXPECT() *MockApplicationMockRecorder {
 	return m.recorder
 }
 
-// BindableContainers mocks base method.
-func (m *MockApplication) BindableContainers() ([]map[string]interface{}, error) {
+// BindablePods mocks base method.
+func (m *MockApplication) BindablePods() (*pipeline.MetaPodSpec, error) {
 	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "BindableContainers")
-	ret0, _ := ret[0].([]map[string]interface{})
+	ret := m.ctrl.Call(m, "BindablePods")
+	ret0, _ := ret[0].(*pipeline.MetaPodSpec)
 	ret1, _ := ret[1].(error)
 	return ret0, ret1
 }
 
-// BindableContainers indicates an expected call of BindableContainers.
-func (mr *MockApplicationMockRecorder) BindableContainers() *gomock.Call {
+// BindablePods indicates an expected call of BindablePods.
+func (mr *MockApplicationMockRecorder) BindablePods() *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BindableContainers", reflect.TypeOf((*MockApplication)(nil).BindableContainers))
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BindablePods", reflect.TypeOf((*MockApplication)(nil).BindablePods))
 }
 
-// ContainersPath mocks base method.
-func (m *MockApplication) ContainersPath() string {
+// GroupVersionResource mocks base method.
+func (m *MockApplication) GroupVersionResource() schema.GroupVersionResource {
 	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "ContainersPath")
-	ret0, _ := ret[0].(string)
+	ret := m.ctrl.Call(m, "GroupVersionResource")
+	ret0, _ := ret[0].(schema.GroupVersionResource)
 	return ret0
 }
 
-// ContainersPath indicates an expected call of ContainersPath.
-func (mr *MockApplicationMockRecorder) ContainersPath() *gomock.Call {
+// GroupVersionResource indicates an expected call of GroupVersionResource.
+func (mr *MockApplicationMockRecorder) GroupVersionResource() *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ContainersPath", reflect.TypeOf((*MockApplication)(nil).ContainersPath))
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GroupVersionResource", reflect.TypeOf((*MockApplication)(nil).GroupVersionResource))
+}
+
+// IsUpdated mocks base method.
+func (m *MockApplication) IsUpdated() bool {
+	m.ctrl.T.Helper()
+	ret := m.ctrl.Call(m, "IsUpdated")
+	ret0, _ := ret[0].(bool)
+	return ret0
+}
+
+// IsUpdated indicates an expected call of IsUpdated.
+func (mr *MockApplicationMockRecorder) IsUpdated() *gomock.Call {
+	mr.mock.ctrl.T.Helper()
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsUpdated", reflect.TypeOf((*MockApplication)(nil).IsUpdated))
 }
 
 // Resource mocks base method.
@@ -578,6 +608,18 @@ func (mr *MockApplicationMockRecorder) SecretPath() *gomock.Call {
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SecretPath", reflect.TypeOf((*MockApplication)(nil).SecretPath))
 }
 
+// SetMapping mocks base method.
+func (m *MockApplication) SetMapping(arg0 pipeline.WorkloadMapping) {
+	m.ctrl.T.Helper()
+	m.ctrl.Call(m, "SetMapping", arg0)
+}
+
+// SetMapping indicates an expected call of SetMapping.
+func (mr *MockApplicationMockRecorder) SetMapping(arg0 interface{}) *gomock.Call {
+	mr.mock.ctrl.T.Helper()
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetMapping", reflect.TypeOf((*MockApplication)(nil).SetMapping), arg0)
+}
+
 // MockContextProvider is a mock of ContextProvider interface.
 type MockContextProvider struct {
 	ctrl     *gomock.Controller


Test patch:
diff --git a/pkg/converter/unstructured_test.go b/pkg/converter/unstructured_test.go
index 9aee1eb8..8504e475 100644
--- a/pkg/converter/unstructured_test.go
+++ b/pkg/converter/unstructured_test.go
@@ -50,3 +50,74 @@ func TestUnstructuredToUnstructuredAsGVK(t *testing.T) {
 	assert.Equal(t, "Secret", u.GetKind())
 	assert.Equal(t, "v1", u.GetAPIVersion())
 }
+
+func TestValidNestedResources(t *testing.T) {
+	resource1 := map[string]interface{}{
+		"foo": []map[string]interface{}{
+			{
+				"name":  "bar",
+				"value": "baz",
+			},
+		},
+	}
+	resource2 := map[string]interface{}{
+		"foo": []interface{}{
+			map[string]interface{}{
+				"name":  "bar",
+				"value": "baz",
+			},
+		},
+	}
+
+	result, found, err := NestedResources(&corev1.EnvVar{}, resource1, "foo")
+	assert.Equal(t, true, found)
+	assert.Equal(t, nil, err)
+	assert.Equal(t, []map[string]interface{}{{"name": "bar", "value": "baz"}}, result)
+
+	result, found, err = NestedResources(&corev1.EnvVar{}, resource2, "foo")
+	assert.Equal(t, true, found)
+	assert.Equal(t, nil, err)
+	assert.Equal(t, []map[string]interface{}{{"name": "bar", "value": "baz"}}, result)
+}
+
+func TestInvalidNestedResources(t *testing.T) {
+	resource1 := map[string]interface{}{
+		"foo": map[string]interface{}{"name": "bar", "value": "baz"},
+	}
+	resource2 := map[string]interface{}{
+		"foo": []map[string]interface{}{
+			{
+				"name":  "bar",
+				"value": "baz",
+			},
+		},
+	}
+	resource3 := map[string]interface{}{"foo": "bar"}
+	resource4 := map[string]interface{}{
+		"foo": []interface{}{"bar", "baz"},
+	}
+
+	// not a slice
+	result, found, err := NestedResources(&corev1.EnvVar{}, resource1, "foo")
+	assert.Equal(t, true, found)
+	assert.Nil(t, result)
+	assert.NotNil(t, err)
+
+	// nonexistant path
+	result, found, err = NestedResources(&corev1.EnvVar{}, resource2, "bar")
+	assert.Equal(t, false, found)
+	assert.Nil(t, result)
+	assert.Nil(t, err)
+
+	// not a slice
+	result, found, err = NestedResources(&corev1.EnvVar{}, resource3, "foo")
+	assert.Equal(t, true, found)
+	assert.Nil(t, result)
+	assert.Error(t, err)
+
+	// not a slice of maps
+	result, found, err = NestedResources(&corev1.EnvVar{}, resource4, "foo")
+	assert.Equal(t, true, found)
+	assert.Nil(t, result)
+	assert.Error(t, err)
+}
diff --git a/pkg/reconcile/pipeline/builder/pipeline_integration_test.go b/pkg/reconcile/pipeline/builder/pipeline_integration_test.go
index 9f455f69..9fbb2e04 100644
--- a/pkg/reconcile/pipeline/builder/pipeline_integration_test.go
+++ b/pkg/reconcile/pipeline/builder/pipeline_integration_test.go
@@ -2,10 +2,12 @@ package builder_test
 
 import (
 	c "context"
+	"reflect"
+
 	"github.com/redhat-developer/service-binding-operator/apis"
 	"github.com/redhat-developer/service-binding-operator/apis/binding/v1alpha1"
+	"github.com/redhat-developer/service-binding-operator/apis/spec/v1alpha3"
 	fakeauth "k8s.io/client-go/kubernetes/typed/authorization/v1/fake"
-	"reflect"
 
 	"github.com/golang/mock/gomock"
 	"github.com/redhat-developer/service-binding-operator/pkg/client/kubernetes"
@@ -15,6 +17,7 @@ import (
 	"github.com/redhat-developer/service-binding-operator/pkg/reconcile/pipeline/context"
 	appsv1 "k8s.io/api/apps/v1"
 	corev1 "k8s.io/api/core/v1"
+	"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"
@@ -155,6 +158,12 @@ var _ = Describe("Default Pipeline", func() {
 
 		u, err = client.Resource(appGVR).Namespace(sb.Namespace).Get(c.Background(), appName, metav1.GetOptions{})
 		Expect(err).NotTo(HaveOccurred())
+
+		_, err = client.
+			Resource(v1alpha3.WorkloadResourceMappingGroupVersionResource).
+			Get(c.Background(), serviceGVK.GroupKind().String(), metav1.GetOptions{})
+		Expect(err).To(Equal(errors.NewNotFound(v1alpha3.WorkloadResourceMappingGroupVersionResource.GroupResource(), serviceGVK.GroupKind().String())), "Binding should occur without a workload resource mapping")
+
 		updatedApp := &appsv1.Deployment{}
 		err = runtime.DefaultUnstructuredConverter.FromUnstructured(u.Object, updatedApp)
 		Expect(err).NotTo(HaveOccurred())
diff --git a/pkg/reconcile/pipeline/context/application_test.go b/pkg/reconcile/pipeline/context/application_test.go
index 4bb2be4a..134069b3 100644
--- a/pkg/reconcile/pipeline/context/application_test.go
+++ b/pkg/reconcile/pipeline/context/application_test.go
@@ -1,6 +1,9 @@
 package context
 
 import (
+	"fmt"
+	"strings"
+
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
 	"github.com/redhat-developer/service-binding-operator/apis/binding/v1alpha1"
@@ -11,8 +14,38 @@ import (
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/util/sets"
+	"k8s.io/client-go/util/jsonpath"
 )
 
+func jsonPath(path string) *jsonpath.JSONPath {
+	jp := jsonpath.New("")
+	str := fmt.Sprintf("{%s}", path)
+	if err := jp.Parse(str); err != nil {
+		Fail(fmt.Sprintf("Couldn't parse jsonpath {%s}: %v", path, err))
+	}
+	return jp
+}
+
+var deploymentWorkloadMapping pipeline.WorkloadMapping = pipeline.WorkloadMapping{
+	Volume: strings.Split("spec.template.spec.volumes", "."),
+	Containers: []pipeline.WorkloadContainer{
+		{
+			Path:         jsonPath(".spec.template.spec.containers[*]"),
+			Name:         []string{"name"},
+			Env:          []string{"env"},
+			EnvFrom:      []string{"envFrom"},
+			VolumeMounts: []string{"volumeMounts"},
+		},
+		{
+			Path:         jsonPath(".spec.template.spec.initContainers[*]"),
+			Name:         []string{"name"},
+			Env:          []string{"env"},
+			EnvFrom:      []string{"envFrom"},
+			VolumeMounts: []string{"volumeMounts"},
+		},
+	},
+}
+
 var _ = Describe("Application", func() {
 	var (
 		app pipeline.Application
@@ -27,21 +60,6 @@ var _ = Describe("Application", func() {
 		Expect(app.SecretPath()).To(Equal("foo"))
 	})
 
-	It("should return default container path if binding path not set", func() {
-		app = &application{}
-		Expect(app.ContainersPath()).To(Equal(defaultContainerPath))
-	})
-
-	It("should return default container path if binding path container path is set to empty", func() {
-		app = &application{bindingPath: &v1alpha1.BindingPath{}}
-		Expect(app.ContainersPath()).To(Equal(defaultContainerPath))
-	})
-
-	It("should return container path set through binding path", func() {
-		app = &application{bindingPath: &v1alpha1.BindingPath{ContainersPath: "foo"}}
-		Expect(app.ContainersPath()).To(Equal("foo"))
-	})
-
 	It("should flag resource as updated if modified", func() {
 		u := &unstructured.Unstructured{}
 		u.SetNamespace("foo")
@@ -61,18 +79,40 @@ var _ = Describe("Application", func() {
 	It("should return all containers if bindable position are not specified", func() {
 		c1 := corev1.Container{
 			Image: "foo",
+			Name:  "c1",
 		}
 		c2 := corev1.Container{
 			Image: "foo2",
+			Name:  "c2",
 		}
 		d1 := deployment("d1", []corev1.Container{c1, c2})
 		u, _ := converter.ToUnstructured(&d1)
 		cu1, _ := converter.ToUnstructured(&c1)
 		cu2, _ := converter.ToUnstructured(&c2)
-		app := &application{persistedResource: u}
-		containers, err := app.BindableContainers()
+		mct := pipeline.MetaPodSpec{
+			Data:   u.Object,
+			Volume: strings.Split("spec.template.spec.volumes", "."),
+			Containers: []pipeline.MetaContainer{
+				{
+					Data:        cu1.Object,
+					Name:        "c1",
+					Env:         []string{"env"},
+					EnvFrom:     []string{"envFrom"},
+					VolumeMount: []string{"volumeMounts"},
+				},
+				{
+					Data:        cu2.Object,
+					Name:        "c2",
+					Env:         []string{"env"},
+					EnvFrom:     []string{"envFrom"},
+					VolumeMount: []string{"volumeMounts"},
+				},
+			},
+		}
+		app := &application{persistedResource: u, resourceMapping: deploymentWorkloadMapping}
+		containers, err := app.BindablePods()
 		Expect(err).NotTo(HaveOccurred())
-		Expect(containers).To(ConsistOf(cu1.Object, cu2.Object))
+		Expect(*containers).To(Equal(mct))
 	})
 
 	It("should return only containers which names are specified in bindable names", func() {
@@ -91,10 +131,30 @@ var _ = Describe("Application", func() {
 		u, _ := converter.ToUnstructured(&d1)
 		cu2, _ := converter.ToUnstructured(&c2)
 		cu3, _ := converter.ToUnstructured(&c3)
-		app := &application{persistedResource: u, bindableContainerNames: sets.NewString("c2", "c3", "c1")}
-		containers, err := app.BindableContainers()
+		mct := pipeline.MetaPodSpec{
+			Data:   u.Object,
+			Volume: strings.Split("spec.template.spec.volumes", "."),
+			Containers: []pipeline.MetaContainer{
+				{
+					Data:        cu2.Object,
+					Name:        "c2",
+					Env:         []string{"env"},
+					EnvFrom:     []string{"envFrom"},
+					VolumeMount: []string{"volumeMounts"},
+				},
+				{
+					Data:        cu3.Object,
+					Name:        "c3",
+					Env:         []string{"env"},
+					EnvFrom:     []string{"envFrom"},
+					VolumeMount: []string{"volumeMounts"},
+				},
+			},
+		}
+		app := &application{persistedResource: u, bindableContainerNames: sets.NewString("c2", "c3", "c1"), resourceMapping: deploymentWorkloadMapping}
+		containers, err := app.BindablePods()
 		Expect(err).NotTo(HaveOccurred())
-		Expect(containers).To(ConsistOf(cu2.Object, cu3.Object))
+		Expect(*containers).To(Equal(mct))
 	})
 })
 
diff --git a/pkg/reconcile/pipeline/context/impl_test.go b/pkg/reconcile/pipeline/context/impl_test.go
index 6b4e6f59..caa82d31 100644
--- a/pkg/reconcile/pipeline/context/impl_test.go
+++ b/pkg/reconcile/pipeline/context/impl_test.go
@@ -3,14 +3,17 @@ package context
 import (
 	"context"
 	"encoding/base64"
+	"encoding/json"
 	e "errors"
 	"fmt"
+
 	"github.com/golang/mock/gomock"
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/ginkgo/extensions/table"
 	. "github.com/onsi/gomega"
 	"github.com/redhat-developer/service-binding-operator/apis"
 	bindingapi "github.com/redhat-developer/service-binding-operator/apis/binding/v1alpha1"
+	"github.com/redhat-developer/service-binding-operator/apis/spec/v1alpha3"
 	"github.com/redhat-developer/service-binding-operator/pkg/client/kubernetes/mocks"
 	"github.com/redhat-developer/service-binding-operator/pkg/converter"
 	"github.com/redhat-developer/service-binding-operator/pkg/reconcile/pipeline"
@@ -46,7 +49,7 @@ var _ = Describe("Context", func() {
 
 	Describe("Applications", func() {
 
-		DescribeTable("should return slice of size 1 if application is specified", func(bindingPath *bindingapi.BindingPath, expectedContainerPath string) {
+		DescribeTable("should return slice of size 1 if application is specified", func(bindingPath *bindingapi.BindingPath) {
 			ref := bindingapi.Application{
 				Ref: bindingapi.Ref{
 					Group:   "app",
@@ -83,12 +86,11 @@ var _ = Describe("Context", func() {
 			Expect(err).NotTo(HaveOccurred())
 			Expect(applications).To(HaveLen(1))
 			Expect(applications[0].Resource()).To(Equal(u))
-			Expect(applications[0].ContainersPath()).To(Equal(expectedContainerPath))
 		},
-			Entry("no binding path specified", nil, defaultContainerPath),
-			Entry("binding path specified", &bindingapi.BindingPath{ContainersPath: "foo.bar"}, "foo.bar"),
+			Entry("no binding path specified", nil),
+			Entry("binding path specified", &bindingapi.BindingPath{ContainersPath: "foo.bar"}),
 		)
-		DescribeTable("should return slice of size 2 if 2 applications are specified through label seclector", func(bindingPath *bindingapi.BindingPath, expectedContainerPath string) {
+		DescribeTable("should return slice of size 2 if 2 applications are specified through label seclector", func(bindingPath *bindingapi.BindingPath) {
 			ls := &metav1.LabelSelector{
 				MatchLabels: map[string]string{"env": "prod"},
 			}
@@ -139,13 +141,11 @@ var _ = Describe("Context", func() {
 			Expect(applications[0].Resource().GetName()).NotTo(Equal(applications[1].Resource().GetName()))
 			Expect(applications[0].Resource()).Should(BeElementOf(u1, u2))
 			Expect(applications[1].Resource()).Should(BeElementOf(u1, u2))
-			Expect(applications[0].ContainersPath()).To(Equal(expectedContainerPath))
-			Expect(applications[1].ContainersPath()).To(Equal(expectedContainerPath))
 		},
-			Entry("no binding path specified", nil, defaultContainerPath),
-			Entry("binding path specified", &bindingapi.BindingPath{ContainersPath: "foo.bar"}, "foo.bar"),
+			Entry("no binding path specified", nil),
+			Entry("binding path specified", &bindingapi.BindingPath{ContainersPath: "foo.bar"}),
 		)
-		DescribeTable("should return slice of size 0 if no application is matching through label seclector", func(bindingPath *bindingapi.BindingPath, expectedContainerPath string) {
+		DescribeTable("should return slice of size 0 if no application is matching through label seclector", func(bindingPath *bindingapi.BindingPath) {
 			ls := &metav1.LabelSelector{
 				MatchLabels: map[string]string{"env": "prod"},
 			}
@@ -186,8 +186,8 @@ var _ = Describe("Context", func() {
 			_, err = ctx.Applications()
 			Expect(err).To(HaveOccurred())
 		},
-			Entry("no binding path specified", nil, defaultContainerPath),
-			Entry("binding path specified", &bindingapi.BindingPath{ContainersPath: "foo.bar"}, "foo.bar"),
+			Entry("no binding path specified", nil),
+			Entry("binding path specified", &bindingapi.BindingPath{ContainersPath: "foo.bar"}),
 		)
 
 		It("should return error if application list returns error", func() {
@@ -908,4 +908,136 @@ var _ = Describe("Context", func() {
 			Expect(intermediateSecret.StringData).Should(HaveKeyWithValue("foo3", "val3"))
 		})
 	})
+
+	Describe("Mapping template", func() {
+		It("should not use a wildcard when a matching version is specified", func() {
+			ref := bindingapi.Application{
+				Ref: bindingapi.Ref{
+					Group:   "app",
+					Version: "v1",
+					Kind:    "Foo",
+					Name:    "app1",
+				},
+			}
+
+			sb := bindingapi.ServiceBinding{
+				ObjectMeta: metav1.ObjectMeta{
+					Name:      "sb1",
+					Namespace: "ns1",
+				},
+				Spec: bindingapi.ServiceBindingSpec{
+					Application: ref,
+				},
+			}
+			gvr := schema.GroupVersionResource{Group: "app", Version: "v1", Resource: "foos"}
+
+			mappingSpec := v1alpha3.ClusterWorkloadResourceMapping{
+				Spec: v1alpha3.ClusterWorkloadResourceMappingSpec{
+					Versions: []v1alpha3.ClusterWorkloadResourceMappingTemplate{
+						{
+							Version: "v1",
+							Volumes: ".spec.volumeSpec",
+						},
+						{
+							Version: "*",
+							Volumes: ".spec.volumes",
+						},
+					},
+				},
+				ObjectMeta: metav1.ObjectMeta{
+					Name: "foos.app",
+				},
+				TypeMeta: metav1.TypeMeta{
+					Kind:       v1alpha3.WorkloadResourceMappingGroupVersionKind.Kind,
+					APIVersion: "servicebinding.io/v1alpha3",
+				},
+			}
+
+			bytes, err := json.Marshal(mappingSpec)
+			Expect(err).NotTo(HaveOccurred())
+
+			var data map[string]interface{}
+			err = json.Unmarshal(bytes, &data)
+			Expect(err).NotTo(HaveOccurred())
+
+			u := &unstructured.Unstructured{}
+			u.SetGroupVersionKind(v1alpha3.WorkloadResourceMappingGroupVersionKind)
+			u.SetName("foos.app")
+			u.SetUnstructuredContent(data)
+			client := fake.NewSimpleDynamicClient(runtime.NewScheme(), u)
+			authClient := &fakeauth.FakeAuthorizationV1{}
+
+			ctx, err := Provider(client, authClient.SubjectAccessReviews(), typeLookup).Get(&sb)
+			Expect(err).NotTo(HaveOccurred())
+
+			mapping, err := ctx.WorkloadResourceTemplate(&gvr, "")
+			Expect(err).NotTo(HaveOccurred())
+			Expect(mapping.Volume).To(Equal([]string{"spec", "volumeSpec"}))
+		})
+
+		It("should use defaults when none are specified", func() {
+			ref := bindingapi.Application{
+				Ref: bindingapi.Ref{
+					Group:   "app",
+					Version: "v1",
+					Kind:    "Foo",
+					Name:    "app1",
+				},
+			}
+
+			sb := bindingapi.ServiceBinding{
+				ObjectMeta: metav1.ObjectMeta{
+					Name:      "sb1",
+					Namespace: "ns1",
+				},
+				Spec: bindingapi.ServiceBindingSpec{
+					Application: ref,
+				},
+			}
+			gvr := schema.GroupVersionResource{Group: "app", Version: "v1", Resource: "foos"}
+
+			mappingSpec := v1alpha3.ClusterWorkloadResourceMapping{
+				Spec: v1alpha3.ClusterWorkloadResourceMappingSpec{
+					Versions: []v1alpha3.ClusterWorkloadResourceMappingTemplate{
+						{
+							Version: "*",
+						},
+					},
+				},
+				ObjectMeta: metav1.ObjectMeta{
+					Name: "foos.app",
+				},
+				TypeMeta: metav1.TypeMeta{
+					Kind:       v1alpha3.WorkloadResourceMappingGroupVersionKind.Kind,
+					APIVersion: "servicebinding.io/v1alpha3",
+				},
+			}
+
+			bytes, err := json.Marshal(mappingSpec)
+			Expect(err).NotTo(HaveOccurred())
+
+			var data map[string]interface{}
+			err = json.Unmarshal(bytes, &data)
+			Expect(err).NotTo(HaveOccurred())
+
+			u := &unstructured.Unstructured{}
+			u.SetGroupVersionKind(v1alpha3.WorkloadResourceMappingGroupVersionKind)
+			u.SetName("foos.app")
+			u.SetUnstructuredContent(data)
+			client := fake.NewSimpleDynamicClient(runtime.NewScheme(), u)
+			authClient := &fakeauth.FakeAuthorizationV1{}
+
+			ctx, err := Provider(client, authClient.SubjectAccessReviews(), typeLookup).Get(&sb)
+			Expect(err).NotTo(HaveOccurred())
+
+			mapping, err := ctx.WorkloadResourceTemplate(&gvr, "")
+			Expect(err).NotTo(HaveOccurred())
+			Expect(mapping.Volume).To(Equal([]string{"spec", "template", "spec", "volumes"}))
+			Expect(mapping.Containers).To(HaveLen(2))
+			Expect(mapping.Containers[0].Env).To(Equal([]string{"env"}))
+			Expect(mapping.Containers[0].EnvFrom).To(Equal([]string{"envFrom"}))
+			Expect(mapping.Containers[0].Name).To(Equal([]string{"name"}))
+			Expect(mapping.Containers[0].VolumeMounts).To(Equal([]string{"volumeMounts"}))
+		})
+	})
 })
diff --git a/pkg/reconcile/pipeline/context/spec_binding_impl_test.go b/pkg/reconcile/pipeline/context/spec_binding_impl_test.go
index fa302faa..b384d8ae 100644
--- a/pkg/reconcile/pipeline/context/spec_binding_impl_test.go
+++ b/pkg/reconcile/pipeline/context/spec_binding_impl_test.go
@@ -4,6 +4,8 @@ import (
 	"context"
 	"encoding/base64"
 	e "errors"
+	"strings"
+
 	"github.com/golang/mock/gomock"
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/ginkgo/extensions/table"
@@ -81,7 +83,6 @@ var _ = Describe("Spec API Context", func() {
 			Expect(err).NotTo(HaveOccurred())
 			Expect(applications).To(HaveLen(1))
 			Expect(applications[0].Resource()).To(Equal(u))
-			Expect(applications[0].ContainersPath()).To(Equal(defaultContainerPath))
 		})
 		It("should return slice of size 2 if 2 applications are specified through label selector", func() {
 			ls := &metav1.LabelSelector{
@@ -131,8 +132,6 @@ var _ = Describe("Spec API Context", func() {
 			Expect(applications[0].Resource().GetName()).NotTo(Equal(applications[1].Resource().GetName()))
 			Expect(applications[0].Resource()).Should(BeElementOf(u1, u2))
 			Expect(applications[1].Resource()).Should(BeElementOf(u1, u2))
-			Expect(applications[0].ContainersPath()).To(Equal(defaultContainerPath))
-			Expect(applications[1].ContainersPath()).To(Equal(defaultContainerPath))
 		})
 		It("should return error if no application is matching through label selector", func() {
 			ls := &metav1.LabelSelector{
@@ -282,6 +281,27 @@ var _ = Describe("Spec API Context", func() {
 			u.SetGroupVersionKind(schema.GroupVersionKind{Group: "app", Version: "v1", Kind: "Foo"})
 			client := fake.NewSimpleDynamicClient(runtime.NewScheme(), u)
 
+			mct := pipeline.MetaPodSpec{
+				Data:   u.Object,
+				Volume: strings.Split("spec.template.spec.volumes", "."),
+				Containers: []pipeline.MetaContainer{
+					{
+						Data:        cu2.Object,
+						Name:        "c2",
+						Env:         []string{"env"},
+						EnvFrom:     []string{"envFrom"},
+						VolumeMount: []string{"volumeMounts"},
+					},
+					{
+						Data:        cu3.Object,
+						Name:        "c3",
+						Env:         []string{"env"},
+						EnvFrom:     []string{"envFrom"},
+						VolumeMount: []string{"volumeMounts"},
+					},
+				},
+			}
+
 			authClient := &fakeauth.FakeAuthorizationV1{}
 
 			ctx, err := SpecProvider(client, authClient.SubjectAccessReviews(), typeLookup).Get(&sb)
@@ -290,9 +310,10 @@ var _ = Describe("Spec API Context", func() {
 			applications, err := ctx.Applications()
 			Expect(err).NotTo(HaveOccurred())
 			Expect(applications).To(HaveLen(1))
-			containers, err := applications[0].BindableContainers()
+			applications[0].SetMapping(deploymentWorkloadMapping)
+			containers, err := applications[0].BindablePods()
 			Expect(err).NotTo(HaveOccurred())
-			Expect(containers).To(ConsistOf(cu2.Object, cu3.Object))
+			Expect(*containers).To(Equal(mct))
 		})
 	})
 
diff --git a/pkg/reconcile/pipeline/handler/project/impl_test.go b/pkg/reconcile/pipeline/handler/project/impl_test.go
index 16c2468b..22a59454 100644
--- a/pkg/reconcile/pipeline/handler/project/impl_test.go
+++ b/pkg/reconcile/pipeline/handler/project/impl_test.go
@@ -3,6 +3,8 @@ package project_test
 import (
 	"errors"
 	"fmt"
+	"strings"
+
 	"github.com/golang/mock/gomock"
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
@@ -12,10 +14,10 @@ import (
 	"github.com/redhat-developer/service-binding-operator/pkg/reconcile/pipeline/handler/project"
 	appsv1 "k8s.io/api/apps/v1"
 	corev1 "k8s.io/api/core/v1"
+	v1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/runtime"
-	"strings"
 
 	"github.com/redhat-developer/service-binding-operator/pkg/reconcile/pipeline/mocks"
 )
@@ -76,9 +78,24 @@ var _ = Describe("Inject Bindings as Env vars handler", func() {
 				deploymentsUnstructured = append(deploymentsUnstructured, res)
 				deploymentsUnstructuredOld = append(deploymentsUnstructuredOld, res.DeepCopy())
 				app := mocks.NewMockApplication(mockCtrl)
-				app.EXPECT().SecretPath().Return("")
 				containers, _, _ := converter.NestedResources(&corev1.Container{}, u, strings.Split("spec.template.spec.containers", ".")...)
-				app.EXPECT().BindableContainers().Return(containers, nil)
+				var metaContainers []pipeline.MetaContainer
+				for _, c := range containers {
+					name, _, _ := unstructured.NestedString(c, "name")
+					metaContainers = append(metaContainers, pipeline.MetaContainer{
+						Data:        c,
+						Name:        name,
+						Env:         []string{"env"},
+						EnvFrom:     []string{"envFrom"},
+						VolumeMount: []string{"volumeMounts"},
+					})
+				}
+				template := pipeline.MetaPodSpec{
+					Containers: metaContainers,
+					Volume:     strings.Split("spec.template.spec.volumes", "."),
+					Data:       u,
+				}
+				app.EXPECT().BindablePods().Return(&template, nil)
 				apps = append(apps, app)
 			}
 
@@ -105,8 +122,10 @@ var _ = Describe("Inject Bindings as Env vars handler", func() {
 					},
 				},
 			})
-			u, _ := runtime.DefaultUnstructuredConverter.ToUnstructured(&expected)
-			Expect(deploymentsUnstructured[0]).To(Equal(&unstructured.Unstructured{Object: u}))
+			var d appsv1.Deployment
+			err := runtime.DefaultUnstructuredConverter.FromUnstructured(deploymentsUnstructured[0].Object, &d)
+			Expect(err).NotTo(HaveOccurred())
+			Expect(&d).To(Equal(expected))
 			expected = deployment("d2", []corev1.Container{
 				{
 					Image: "foo2",
@@ -128,12 +147,13 @@ var _ = Describe("Inject Bindings as Env vars handler", func() {
 					},
 				},
 			})
-			u, _ = runtime.DefaultUnstructuredConverter.ToUnstructured(&expected)
-			Expect(deploymentsUnstructured[1]).To(Equal(&unstructured.Unstructured{Object: u}))
+			err = runtime.DefaultUnstructuredConverter.FromUnstructured(deploymentsUnstructured[1].Object, &d)
+			Expect(err).NotTo(HaveOccurred())
+			Expect(&d).To(Equal(expected))
 		})
 	})
 
-	Context("emv bindings are set", func() {
+	Context("env bindings are set", func() {
 		var (
 			deploymentsUnstructured    []*unstructured.Unstructured
 			deploymentsUnstructuredOld []*unstructured.Unstructured
@@ -158,11 +178,13 @@ var _ = Describe("Inject Bindings as Env vars handler", func() {
 			d1 := deployment("d1", []corev1.Container{
 				{
 					Image: "foo",
+					Name:  "d1",
 				},
 			})
 			d2 := deployment("d2", []corev1.Container{
 				{
 					Image: "foo2",
+					Name:  "d2",
 					Env: []corev1.EnvVar{
 						{
 							Name:  "foo",
@@ -181,9 +203,24 @@ var _ = Describe("Inject Bindings as Env vars handler", func() {
 				deploymentsUnstructured = append(deploymentsUnstructured, res)
 				deploymentsUnstructuredOld = append(deploymentsUnstructuredOld, res.DeepCopy())
 				app := mocks.NewMockApplication(mockCtrl)
-				app.EXPECT().SecretPath().Return("")
 				containers, _, _ := converter.NestedResources(&corev1.Container{}, u, strings.Split("spec.template.spec.containers", ".")...)
-				app.EXPECT().BindableContainers().Return(containers, nil)
+				var metaContainers []pipeline.MetaContainer
+				for _, c := range containers {
+					name, _, _ := unstructured.NestedString(c, "name")
+					metaContainers = append(metaContainers, pipeline.MetaContainer{
+						Data:        c,
+						Name:        name,
+						Env:         []string{"env"},
+						EnvFrom:     []string{"envFrom"},
+						VolumeMount: []string{"volumeMounts"},
+					})
+				}
+				template := pipeline.MetaPodSpec{
+					Containers: metaContainers,
+					Volume:     strings.Split("spec.template.spec.volumes", "."),
+					Data:       u,
+				}
+				app.EXPECT().BindablePods().Return(&template, nil)
 				apps = append(apps, app)
 			}
 
@@ -198,6 +235,7 @@ var _ = Describe("Inject Bindings as Env vars handler", func() {
 			expected := deployment("d1", []corev1.Container{
 				{
 					Image: "foo",
+					Name:  "d1",
 					Env: []corev1.EnvVar{
 						{
 							Name: "e1",
@@ -224,11 +262,14 @@ var _ = Describe("Inject Bindings as Env vars handler", func() {
 					},
 				},
 			})
-			u, _ := runtime.DefaultUnstructuredConverter.ToUnstructured(&expected)
-			Expect(deploymentsUnstructured[0]).To(Equal(&unstructured.Unstructured{Object: u}))
+			var d appsv1.Deployment
+			err := runtime.DefaultUnstructuredConverter.FromUnstructured(deploymentsUnstructured[0].Object, &d)
+			Expect(err).NotTo(HaveOccurred())
+			Expect(&d).To(Equal(expected))
 			expected = deployment("d2", []corev1.Container{
 				{
 					Image: "foo2",
+					Name:  "d2",
 					Env: []corev1.EnvVar{
 						{
 							Name:  "foo",
@@ -259,8 +300,9 @@ var _ = Describe("Inject Bindings as Env vars handler", func() {
 					},
 				},
 			})
-			u, _ = runtime.DefaultUnstructuredConverter.ToUnstructured(&expected)
-			Expect(deploymentsUnstructured[1]).To(Equal(&unstructured.Unstructured{Object: u}))
+			err = runtime.DefaultUnstructuredConverter.FromUnstructured(deploymentsUnstructured[1].Object, &d)
+			Expect(err).NotTo(HaveOccurred())
+			Expect(&d).To(Equal(expected))
 		})
 	})
 
@@ -466,10 +508,24 @@ var _ = Describe("Inject bindings as files", func() {
 				deploymentsUnstructured = append(deploymentsUnstructured, res)
 				deploymentsUnstructuredOld = append(deploymentsUnstructuredOld, res.DeepCopy())
 				app := mocks.NewMockApplication(mockCtrl)
-				app.EXPECT().Resource().Return(res)
-				app.EXPECT().SecretPath().Return("")
 				containers, _, _ := converter.NestedResources(&corev1.Container{}, u, strings.Split("spec.template.spec.containers", ".")...)
-				app.EXPECT().BindableContainers().Return(containers, nil)
+				var metaContainers []pipeline.MetaContainer
+				for _, c := range containers {
+					name, _, _ := unstructured.NestedString(c, "name")
+					metaContainers = append(metaContainers, pipeline.MetaContainer{
+						Data:        c,
+						Name:        name,
+						Env:         []string{"env"},
+						EnvFrom:     []string{"envFrom"},
+						VolumeMount: []string{"volumeMounts"},
+					})
+				}
+				template := pipeline.MetaPodSpec{
+					Containers: metaContainers,
+					Volume:     strings.Split("spec.template.spec.volumes", "."),
+					Data:       u,
+				}
+				app.EXPECT().BindablePods().Return(&template, nil)
 				apps = append(apps, app)
 			}
 
@@ -710,6 +766,7 @@ var _ = Describe("Unbind handler", func() {
 			bindingName = "binding1"
 			ctx.EXPECT().BindingSecretName().Return(secretName)
 			ctx.EXPECT().BindingName().Return(bindingName)
+			ctx.EXPECT().EnvBindings().Return([]*pipeline.EnvBinding{})
 			d1 := deployment("d1", []corev1.Container{
 				{
 					Image: "foo",
@@ -823,9 +880,24 @@ var _ = Describe("Unbind handler", func() {
 				deploymentsUnstructured = append(deploymentsUnstructured, res)
 				deploymentsUnstructuredOld = append(deploymentsUnstructuredOld, res.DeepCopy())
 				app := mocks.NewMockApplication(mockCtrl)
-				app.EXPECT().Resource().Return(res)
 				containers, _, _ := converter.NestedResources(&corev1.Container{}, u, strings.Split("spec.template.spec.containers", ".")...)
-				app.EXPECT().BindableContainers().Return(containers, nil)
+				var metaContainers []pipeline.MetaContainer
+				for _, c := range containers {
+					name, _, _ := unstructured.NestedString(c, "name")
+					metaContainers = append(metaContainers, pipeline.MetaContainer{
+						Data:        c,
+						Name:        name,
+						Env:         []string{"env"},
+						EnvFrom:     []string{"envFrom"},
+						VolumeMount: []string{"volumeMounts"},
+					})
+				}
+				template := pipeline.MetaPodSpec{
+					Containers: metaContainers,
+					Volume:     strings.Split("spec.template.spec.volumes", "."),
+					Data:       u,
+				}
+				app.EXPECT().BindablePods().Return(&template, nil)
 				apps = append(apps, app)
 			}
 
@@ -856,12 +928,14 @@ var _ = Describe("Unbind handler", func() {
 			})
 			d3 := deployment("d2", []corev1.Container{
 				{
-					Image: "foo2",
+					Image:   "foo2",
+					EnvFrom: []v1.EnvFromSource{},
 				},
 			})
 			d4 := deployment("d1", []corev1.Container{
 				{
-					Image: "foo",
+					Image:        "foo",
+					VolumeMounts: []v1.VolumeMount{},
 				},
 			})
 			d5 := deployment("d1", []corev1.Container{
@@ -880,6 +954,7 @@ var _ = Describe("Unbind handler", func() {
 					Image: "foo",
 				},
 			})
+			d6.Spec.Template.Spec.Volumes = []corev1.Volume{}
 			d7 := deployment("d1", []corev1.Container{
 				{
 					Image: "foo",
@@ -902,7 +977,7 @@ var _ = Describe("Unbind handler", func() {
 				d := &appsv1.Deployment{}
 				err := runtime.DefaultUnstructuredConverter.FromUnstructured(deploymentsUnstructured[i].Object, d)
 				Expect(err).NotTo(HaveOccurred())
-				Expect(d).To(Equal(expectedDeployment))
+				Expect(d.Spec.Template).To(Equal(expectedDeployment.Spec.Template))
 			}
 		})
 	})
diff --git a/pkg/reconcile/pipeline/mapping_test.go b/pkg/reconcile/pipeline/mapping_test.go
new file mode 100644
index 00000000..83de0b15
--- /dev/null
+++ b/pkg/reconcile/pipeline/mapping_test.go
@@ -0,0 +1,618 @@
+/*
+Copyright 2022.
+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 pipeline_test
+
+import (
+	"fmt"
+
+	"github.com/golang/mock/gomock"
+	. "github.com/onsi/ginkgo"
+	. "github.com/onsi/gomega"
+	"github.com/redhat-developer/service-binding-operator/apis/spec/v1alpha3"
+	"github.com/redhat-developer/service-binding-operator/pkg/converter"
+	"github.com/redhat-developer/service-binding-operator/pkg/reconcile/pipeline"
+	v1 "k8s.io/api/core/v1"
+	"k8s.io/apimachinery/pkg/runtime"
+	"k8s.io/client-go/util/jsonpath"
+)
+
+func jsonPath(path string) *jsonpath.JSONPath {
+	jpath := jsonpath.New("")
+	err := jpath.Parse(fmt.Sprintf("{%s}", path))
+	Expect(err).NotTo(HaveOccurred())
+	return jpath
+}
+
+var _ = Describe("Mapping workloads", func() {
+	var (
+		mockCtrl *gomock.Controller
+	)
+
+	BeforeEach(func() {
+		mockCtrl = gomock.NewController(GinkgoT())
+	})
+
+	AfterEach(func() {
+		mockCtrl.Finish()
+	})
+
+	Context("Parsing", func() {
+		It("should parse valid mappings", func() {
+			template := v1alpha3.ClusterWorkloadResourceMappingTemplate{
+				Version:     "*",
+				Annotations: ".spec.annotations",
+				Containers: []v1alpha3.ClusterWorkloadResourceMappingContainer{
+					{
+						Name:         ".name",
+						Env:          ".env",
+						Path:         ".spec.spec.containers[*]",
+						VolumeMounts: ".volumeMounts",
+					},
+				},
+				Volumes: ".spec.spec.volumes",
+			}
+			mapping := pipeline.WorkloadMapping{
+				Volume: []string{"spec", "spec", "volumes"},
+				Containers: []pipeline.WorkloadContainer{
+					{
+						Name:         []string{"name"},
+						Env:          []string{"env"},
+						EnvFrom:      []string{"envFrom"},
+						VolumeMounts: []string{"volumeMounts"},
+						Path:         jsonPath(".spec.spec.containers[*]"),
+					},
+				},
+			}
+
+			result, err := pipeline.FromWorkloadResourceMappingTemplate(template)
+			Expect(err).NotTo(HaveOccurred())
+			Expect(result.Volume).To(Equal(mapping.Volume))
+			Expect(result.Containers[0].Name).To(Equal(mapping.Containers[0].Name))
+			Expect(result.Containers[0].Env).To(Equal(mapping.Containers[0].Env))
+			Expect(result.Containers[0].EnvFrom).To(Equal(mapping.Containers[0].EnvFrom))
+			Expect(result.Containers[0].VolumeMounts).To(Equal(mapping.Containers[0].VolumeMounts))
+		})
+
+		It("should use defaults when not specified", func() {
+			template := v1alpha3.ClusterWorkloadResourceMappingTemplate{
+				Version:     "*",
+				Annotations: ".spec.annotations",
+				Containers: []v1alpha3.ClusterWorkloadResourceMappingContainer{
+					{
+						Path: ".spec.spec.containers[*]",
+					},
+				},
+				Volumes: ".spec.spec.volumes",
+			}
+			mapping := pipeline.WorkloadMapping{
+				Volume: []string{"spec", "spec", "volumes"},
+				Containers: []pipeline.WorkloadContainer{
+					{
+						Name:         []string{"name"},
+						Env:          []string{"env"},
+						EnvFrom:      []string{"envFrom"},
+						VolumeMounts: []string{"volumeMounts"},
+						Path:         jsonPath(".spec.spec.containers[*]"),
+					},
+				},
+			}
+
+			result, err := pipeline.FromWorkloadResourceMappingTemplate(template)
+			Expect(err).NotTo(HaveOccurred())
+			Expect(result.Volume).To(Equal(mapping.Volume))
+			Expect(result.Containers[0].Name).To(Equal(mapping.Containers[0].Name))
+			Expect(result.Containers[0].Env).To(Equal(mapping.Containers[0].Env))
+			Expect(result.Containers[0].EnvFrom).To(Equal(mapping.Containers[0].EnvFrom))
+			Expect(result.Containers[0].VolumeMounts).To(Equal(mapping.Containers[0].VolumeMounts))
+		})
+
+		It("should return an error on invalid mappings", func() {
+			template := v1alpha3.ClusterWorkloadResourceMappingTemplate{
+				Version:     "*",
+				Annotations: ".spec.annotations",
+				Containers: []v1alpha3.ClusterWorkloadResourceMappingContainer{
+					{
+						Path: ".spec.spec.containers[",
+					},
+				},
+				Volumes: ".spec.spec.volumes",
+			}
+
+			_, err := pipeline.FromWorkloadResourceMappingTemplate(template)
+			Expect(err).To(HaveOccurred())
+		})
+
+		It("should not allow jsonpaths in restricted jsonpath contexts", func() {
+			templates := []v1alpha3.ClusterWorkloadResourceMappingTemplate{
+				{
+					Version:     "*",
+					Annotations: ".spec.annotations",
+					Containers: []v1alpha3.ClusterWorkloadResourceMappingContainer{
+						{
+							Path: ".spec.spec.containers[*]",
+							Name: ".name[*]",
+						},
+					},
+				},
+				{
+					Version:     "*",
+					Annotations: ".spec.annotations",
+					Containers: []v1alpha3.ClusterWorkloadResourceMappingContainer{
+						{
+							Path: ".spec.spec.containers[*]",
+							Env:  ".env[*]",
+						},
+					},
+				},
+				{
+					Version:     "*",
+					Annotations: ".spec.annotations",
+					Containers: []v1alpha3.ClusterWorkloadResourceMappingContainer{
+						{
+							Path:         ".spec.spec.containers[*]",
+							VolumeMounts: ".volumeMounts[*]",
+						},
+					},
+				},
+				{
+					Version:     "*",
+					Annotations: ".spec.annotations",
+					Containers: []v1alpha3.ClusterWorkloadResourceMappingContainer{
+						{
+							Path: ".spec.spec.containers[*]",
+						},
+					},
+					Volumes: ".spec.spec.volumes[*]",
+				},
+			}
+
+			for _, template := range templates {
+				_, err := pipeline.FromWorkloadResourceMappingTemplate(template)
+				Expect(err).To(HaveOccurred())
+			}
+		})
+	})
+
+	Context("Environment variables", func() {
+		It("should use $SERVICE_BINDING_ROOT if set", func() {
+			container := pipeline.MetaContainer{
+				Data: map[string]interface{}{
+					"env": []map[string]interface{}{
+						{
+							"name":  "SERVICE_BINDING_ROOT",
+							"value": "/tmp/bindings",
+						},
+					},
+				},
+				Env: []string{"env"},
+			}
+
+			result, err := container.MountPath("foo-bindings")
+			Expect(err).NotTo(HaveOccurred())
+			Expect(result).To(Equal("/tmp/bindings/foo-bindings"))
+			Expect(container.Data["env"]).To(Equal([]map[string]interface{}{{"name": "SERVICE_BINDING_ROOT", "value": "/tmp/bindings"}}))
+		})
+
+		It("should set $SERVICE_BINDING_ROOT if not set", func() {
+			container := pipeline.MetaContainer{
+				Data: map[string]interface{}{},
+				Env:  []string{"env"},
+			}
+
+			result, err := container.MountPath("foo-bindings")
+			Expect(err).NotTo(HaveOccurred())
+			Expect(result).To(Equal("/bindings/foo-bindings"))
+			Expect(container.Data["env"]).To(Equal([]map[string]interface{}{{"name": "SERVICE_BINDING_ROOT", "value": "/bindings"}}))
+		})
+
+		It("should add new environment variables", func() {
+			container := pipeline.MetaContainer{
+				Data: map[string]interface{}{},
+				Env:  []string{"env"},
+			}
+			envVars := []v1.EnvVar{
+				{
+					Name:  "FOO",
+					Value: "foo",
+				},
+				{
+					Name: "BAR",
+					ValueFrom: &v1.EnvVarSource{
+						SecretKeyRef: &v1.SecretKeySelector{
+							LocalObjectReference: v1.LocalObjectReference{
+								Name: "spam",
+							},
+							Key: "eggs",
+						},
+					},
+				},
+			}
+			var envs []map[string]interface{}
+			for _, env := range envVars {
+				data, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&env)
+				Expect(err).NotTo(HaveOccurred())
+				envs = append(envs, data)
+			}
+
+			err := container.AddEnvVars(envVars)
+			Expect(err).NotTo(HaveOccurred())
+
+			val, found, err := converter.NestedResources(&v1.EnvVar{}, container.Data, container.Env...)
+			Expect(err).NotTo(HaveOccurred())
+			Expect(found).To(BeTrue())
+			Expect(val).To(ConsistOf(envs))
+		})
+
+		It("should remove service binding environment variables", func() {
+			envVars := []v1.EnvVar{
+				{
+					Name:  "FOO",
+					Value: "foo",
+				},
+				{
+					Name: "BAR",
+					ValueFrom: &v1.EnvVarSource{
+						SecretKeyRef: &v1.SecretKeySelector{
+							LocalObjectReference: v1.LocalObjectReference{
+								Name: "spam",
+							},
+							Key: "eggs",
+						},
+					},
+				},
+			}
+			envs, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&map[string]interface{}{"env": envVars})
+			Expect(err).NotTo(HaveOccurred())
+			container := pipeline.MetaContainer{
+				Data: envs,
+				Env:  []string{"env"},
+			}
+
+			err = container.RemoveEnvVars("BAR")
+			Expect(err).NotTo(HaveOccurred())
+			Expect(container.Data).To(Equal(map[string]interface{}{
+				"env": []map[string]interface{}{
+					{
+						"name":  "FOO",
+						"value": "foo",
+					},
+				},
+			}))
+
+			err = container.RemoveEnvVars("FOO")
+			Expect(err).NotTo(HaveOccurred())
+			Expect(container.Data).To(Equal(map[string]interface{}{
+				"env": []map[string]interface{}{},
+			}))
+		})
+
+		It("should add new environment variables from a secret", func() {
+			container := pipeline.MetaContainer{
+				Data:    map[string]interface{}{},
+				EnvFrom: []string{"envFrom"},
+			}
+			envFromVars := v1.EnvFromSource{
+				SecretRef: &v1.SecretEnvSource{
+					LocalObjectReference: v1.LocalObjectReference{
+						Name: "spam",
+					},
+				},
+			}
+			env, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&envFromVars)
+			Expect(err).NotTo(HaveOccurred())
+
+			err = container.AddEnvFromVar(envFromVars)
+			Expect(err).NotTo(HaveOccurred())
+			Expect(container.Data).To(Equal(map[string]interface{}{"envFrom": []map[string]interface{}{env}}))
+		})
+
+		It("should not add new environment variables from a secret when envFrom is not set", func() {
+			container := pipeline.MetaContainer{}
+			envFromVars := v1.EnvFromSource{
+				SecretRef: &v1.SecretEnvSource{
+					LocalObjectReference: v1.LocalObjectReference{
+						Name: "spam",
+					},
+				},
+			}
+			err := container.AddEnvFromVar(envFromVars)
+			Expect(err).To(HaveOccurred())
+
+		})
+
+		It("should remove environment variables from a secret", func() {
+			container := pipeline.MetaContainer{
+				Data: map[string]interface{}{
+					"envFrom": []map[string]interface{}{
+						{
+							"secretRef": map[string]interface{}{
+								"name": "spam",
+							},
+						},
+						{
+							"secretRef": map[string]interface{}{
+								"name": "eggs",
+							},
+						},
+					},
+				},
+				EnvFrom: []string{"envFrom"},
+			}
+
+			err := container.RemoveEnvFromVars("spam")
+			Expect(err).NotTo(HaveOccurred())
+			Expect(container.Data).To(Equal(map[string]interface{}{
+				"envFrom": []map[string]interface{}{
+					{
+						"secretRef": map[string]interface{}{
+							"name": "eggs",
+						},
+					},
+				},
+			}))
+
+			err = container.RemoveEnvFromVars("eggs")
+			Expect(err).NotTo(HaveOccurred())
+			Expect(container.Data).To(Equal(map[string]interface{}{
+				"envFrom": []map[string]interface{}{},
+			}))
+		})
+	})
+
+	Context("Files", func() {
+		It("should add volumes", func() {
+			volume := v1.Volume{
+				Name: "foo",
+				VolumeSource: v1.VolumeSource{
+					Secret: &v1.SecretVolumeSource{
+						SecretName: "service-binding-data",
+					},
+				},
+			}
+
+			template := pipeline.MetaPodSpec{
+				Volume: []string{"spec", "volumes"},
+				Data:   map[string]interface{}{},
+			}
+
+			err := template.AddVolume(volume)
+			Expect(err).NotTo(HaveOccurred())
+			Expect(template.Data).To(Equal(map[string]interface{}{
+				"spec": map[string]interface{}{
+					"volumes": []map[string]interface{}{
+						{
+							"name": "foo",
+							"secret": map[string]interface{}{
+								"secretName": "service-binding-data",
+							},
+						},
+					},
+				},
+			}))
+		})
+
+		It("should not alter existing volumes when adding new volumes", func() {
+			volume := v1.Volume{
+				Name: "foo",
+				VolumeSource: v1.VolumeSource{
+					Secret: &v1.SecretVolumeSource{
+						SecretName: "service-binding-data",
+					},
+				},
+			}
+
+			template := pipeline.MetaPodSpec{
+				Volume: []string{"volumes"},
+				Data: map[string]interface{}{
+					"volumes": []map[string]interface{}{
+						{
+							"name": "spam",
+							"secret": map[string]interface{}{
+								"secretName": "eggs",
+							},
+						},
+					},
+				},
+			}
+
+			err := template.AddVolume(volume)
+			Expect(err).NotTo(HaveOccurred())
+			Expect(template.Data).To(Equal(map[string]interface{}{
+				"volumes": []map[string]interface{}{
+					{
+						"name": "spam",
+						"secret": map[string]interface{}{
+							"secretName": "eggs",
+						},
+					},
+					{
+						"name": "foo",
+						"secret": map[string]interface{}{
+							"secretName": "service-binding-data",
+						},
+					},
+				},
+			}))
+		})
+
+		It("should remove volumes", func() {
+			template := pipeline.MetaPodSpec{
+				Volume: []string{"volumes"},
+				Data: map[string]interface{}{
+					"volumes": []map[string]interface{}{
+						{
+							"name": "foo",
+							"secret": map[string]interface{}{
+								"secretName": "service-binding-data",
+							},
+						},
+					},
+				},
+			}
+
+			err := template.RemoveVolume("foo")
+			Expect(err).NotTo(HaveOccurred())
+			Expect(template.Data).To(Equal(map[string]interface{}{
+				"volumes": []map[string]interface{}{},
+			}))
+		})
+
+		It("should not alter non-service binding volumes on removal", func() {
+			template := pipeline.MetaPodSpec{
+				Volume: []string{"volumes"},
+				Data: map[string]interface{}{
+					"volumes": []map[string]interface{}{
+						{
+							"name": "spam",
+							"secret": map[string]interface{}{
+								"secretName": "eggs",
+							},
+						},
+						{
+							"name": "foo",
+							"secret": map[string]interface{}{
+								"secretName": "service-binding-data",
+							},
+						},
+					},
+				},
+			}
+
+			err := template.RemoveVolume("foo")
+			Expect(err).NotTo(HaveOccurred())
+			Expect(template.Data).To(Equal(map[string]interface{}{
+				"volumes": []map[string]interface{}{
+					{
+						"name": "spam",
+						"secret": map[string]interface{}{
+							"secretName": "eggs",
+						},
+					},
+				},
+			}))
+		})
+
+		It("should add volume mounts", func() {
+			volume := v1.VolumeMount{
+				Name:      "foo",
+				MountPath: "/bindings/foo-binding",
+			}
+
+			container := pipeline.MetaContainer{
+				Data:        map[string]interface{}{},
+				VolumeMount: []string{"spec", "volumeMounts"},
+			}
+
+			err := container.AddVolumeMount(volume)
+			Expect(err).NotTo(HaveOccurred())
+			Expect(container.Data).To(Equal(map[string]interface{}{
+				"spec": map[string]interface{}{
+					"volumeMounts": []map[string]interface{}{
+						{
+							"name":      volume.Name,
+							"mountPath": volume.MountPath,
+						},
+					},
+				},
+			}))
+		})
+
+		It("should not alter non-service binding volume mounts when adding volume mounts", func() {
+			volume := v1.VolumeMount{
+				Name:      "foo",
+				MountPath: "/bindings/foo-binding",
+			}
+
+			container := pipeline.MetaContainer{
+				Data: map[string]interface{}{
+					"spec": map[string]interface{}{
+						"volumeMounts": []map[string]interface{}{
+							{
+								"name":      "bar",
+								"mountPath": "/some/other/path",
+							},
+						},
+					},
+				},
+				VolumeMount: []string{"spec", "volumeMounts"},
+			}
+
+			err := container.AddVolumeMount(volume)
+			Expect(err).NotTo(HaveOccurred())
+			Expect(container.Data).To(Equal(map[string]interface{}{
+				"spec": map[string]interface{}{
+					"volumeMounts": []map[string]interface{}{
+						{
+							"name":      "bar",
+							"mountPath": "/some/other/path",
+						},
+						{
+							"name":      volume.Name,
+							"mountPath": volume.MountPath,
+						},
+					},
+				},
+			}))
+		})
+
+		It("should remove volume mounts", func() {
+			container := pipeline.MetaContainer{
+				Data: map[string]interface{}{
+					"volumeMounts": []map[string]interface{}{
+						{
+							"name":      "foo",
+							"mountPath": "/bindings/foo-binding",
+						},
+					},
+				},
+				VolumeMount: []string{"volumeMounts"},
+			}
+
+			err := container.RemoveVolumeMount("foo")
+			Expect(err).NotTo(HaveOccurred())
+			Expect(container.Data).To(Equal(map[string]interface{}{
+				"volumeMounts": []map[string]interface{}{},
+			}))
+		})
+
+		It("should only remove service binding volume mounts", func() {
+			container := pipeline.MetaContainer{
+				Data: map[string]interface{}{
+					"volumeMounts": []map[string]interface{}{
+						{
+							"name":      "bar",
+							"mountPath": "/some/other/path",
+						},
+						{
+							"name":      "foo",
+							"mountPath": "/bindings/foo-binding",
+						},
+					},
+				},
+				VolumeMount: []string{"volumeMounts"},
+			}
+
+			err := container.RemoveVolumeMount("foo")
+			Expect(err).NotTo(HaveOccurred())
+			Expect(container.Data).To(Equal(map[string]interface{}{
+				"volumeMounts": []map[string]interface{}{
+					{
+						"name":      "bar",
+						"mountPath": "/some/other/path",
+					},
+				},
+			}))
+		})
+	})
+})
diff --git a/test/acceptance/features/steps/steps.py b/test/acceptance/features/steps/steps.py
index d47a8bde..d2f3e9ae 100644
--- a/test/acceptance/features/steps/steps.py
+++ b/test/acceptance/features/steps/steps.py
@@ -276,6 +276,7 @@ def check_secret_key_with_ip_value(context, secret_key):
 @given(u'The Secret is present')
 @when(u'The Secret is present')
 @step(u'The Service is present')
+@step(u'The Workload Resource Mapping is present')
 def apply_yaml(context, user=None):
     openshift = Openshift()
     resource = substitute_scenario_id(context, context.text)
@@ -297,6 +298,7 @@ def apply_yaml(context, user=None):
 # STEP
 @given(u'BackingService is deleted')
 @when(u'BackingService is deleted')
+@step(u'The Workload Resource Mapping is deleted')
 def delete_yaml(context):
     openshift = Openshift()
     text = substitute_scenario_id(context, context.text)
@@ -317,9 +319,10 @@ def delete_yaml(context):
 @then(u'Secret has been injected in to CR "{cr_name}" of kind "{crd_name}" at path "{json_path}"')
 def verify_injected_secretRef(context, cr_name, crd_name, json_path):
     sb = list(context.bindings.values())[0]
+    name = substitute_scenario_id(context, cr_name)
     openshift = Openshift()
     secret = polling2.poll(lambda: sb.get_secret_name(), step=100, timeout=1000, ignore_exceptions=(ValueError,), check_success=lambda v: v is not None)
-    polling2.poll(lambda: openshift.get_resource_info_by_jsonpath(crd_name, cr_name, context.namespace.name, json_path) == secret,
+    polling2.poll(lambda: openshift.get_resource_info_by_jsonpath(crd_name, name, context.namespace.name, json_path) == secret,
                   step=5, timeout=400)
 
 
diff --git a/test/acceptance/features/workloadResourceMapping.feature b/test/acceptance/features/workloadResourceMapping.feature
new file mode 100644
index 00000000..12cb8334
--- /dev/null
+++ b/test/acceptance/features/workloadResourceMapping.feature
@@ -0,0 +1,731 @@
+Feature: Bind services to workloads based on workload resource mapping
+
+    As a user, I would like to be able to use workload resource bindings as defined by the specification.
+
+    Background:
+        Given Namespace [TEST_NAMESPACE] is used
+        And Service Binding Operator is running
+        And CustomResourceDefinition backends.stable.example.com is available
+        And OLM Operator "not_a_pod" is running
+        And OLM Operator "custom_app" is running
+        And The Workload Resource Mapping is present
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ClusterWorkloadResourceMapping
+            metadata:
+                name: notpodspecs.stable.example.com
+            spec:
+                versions:
+                  - version: "*"
+                    volumes: .spec.volumeData
+                    containers:
+                      - path: .spec.containerSpecs[*]
+                        name: .id
+                        env: .envData
+                        volumeMounts: .volumeEntries
+                      - path: .spec.initContainerSpecs[*]
+                        name: .id
+                        env: .envData
+                        volumeMounts: .volumeEntries
+            """
+
+    Scenario: Mapping with coreos api service bindings
+        Given The Secret is present
+            """
+            apiVersion: v1
+            kind: Secret
+            metadata:
+                name: $scenario_id-secret
+            stringData:
+                username: foo
+                password: bar
+                type: db
+            """
+        And The Custom Resource is present
+            """
+            apiVersion: "stable.example.com/v1"
+            kind: NotPodSpec
+            metadata:
+                name: $scenario_id-npc
+            spec:
+                containerSpecs:
+                  - id: $scenario_id-id
+            """
+        When Service Binding is applied
+            """
+            apiVersion: binding.operators.coreos.com/v1alpha1
+            kind: ServiceBinding
+            metadata:
+                name: $scenario_id-binding
+            spec:
+                bindAsFiles: true
+                application:
+                    name: $scenario_id-npc
+                    group: stable.example.com
+                    version: v1
+                    resource: notpodspecs
+                services:
+                  - version: v1
+                    group: ""
+                    kind: Secret
+                    name: $scenario_id-secret
+            """
+        Then Service Binding is ready
+        And jq ".status.secret" of Service Binding should be changed to "$scenario_id-secret"
+        And jsonpath "{.spec.containerSpecs[0].volumeEntries}" on "notpodspecs/$scenario_id-npc" should return "[{"mountPath":"/bindings/$scenario_id-binding","name":"$scenario_id-binding"}]"
+
+    Scenario: Mapping should also bind according to bindingPath values
+        Given The Secret is present
+            """
+            apiVersion: v1
+            kind: Secret
+            metadata:
+                name: $scenario_id-secret
+            stringData:
+                username: foo
+                password: bar
+                type: db
+            """
+        And The Custom Resource is present
+            """
+            apiVersion: "stable.example.com/v1"
+            kind: AppConfig
+            metadata:
+                name: $scenario_id-appconfig
+            spec:
+                template:
+                    spec:
+                        initContainers:
+                          - name: foo
+                        containers:
+                          - name: bar
+            """
+        And The Workload Resource Mapping is present
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ClusterWorkloadResourceMapping
+            metadata:
+                name: appconfigs.stable.example.com
+            spec:
+                versions:
+                  - version: "*"
+                    containers:
+                      - path: .spec.template.spec.containers[*]
+            """
+        When Service Binding is applied
+            """
+            apiVersion: binding.operators.coreos.com/v1alpha1
+            kind: ServiceBinding
+            metadata:
+                name: $scenario_id-binding
+            spec:
+                bindAsFiles: true
+                application:
+                    name: $scenario_id-appconfig
+                    group: stable.example.com
+                    version: v1
+                    resource: appconfigs
+                    bindingPath:
+                        containersPath: spec.template.spec.initContainers
+                services:
+                  - version: v1
+                    group: ""
+                    kind: Secret
+                    name: $scenario_id-secret
+            """
+        Then Service Binding is ready
+        And jq ".status.secret" of Service Binding should be changed to "$scenario_id-secret"
+        And jsonpath "{.spec.template.spec.containers[0].volumeMounts}" on "appconfigs/$scenario_id-appconfig" should return "[{"mountPath":"/bindings/$scenario_id-binding","name":"$scenario_id-binding"}]"
+        And jsonpath "{.spec.template.spec.initContainers[0].volumeMounts}" on "appconfigs/$scenario_id-appconfig" should return "[{"mountPath":"/bindings/$scenario_id-binding","name":"$scenario_id-binding"}]"
+        And jsonpath "{.spec.template.spec.volumes}" on "appconfigs/$scenario_id-appconfig" should return "[{"name":"$scenario_id-binding","secret":{"secretName":"$scenario_id-secret"}}]"
+
+    Scenario: Mapping should allow bindAsFiles: false in podspec resources
+        Given The Secret is present
+            """
+            apiVersion: v1
+            kind: Secret
+            metadata:
+                name: $scenario_id-secret
+            stringData:
+                username: foo
+                password: bar
+                type: db
+            """
+        And Generic test application is running
+        And The Workload Resource Mapping is present
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ClusterWorkloadResourceMapping
+            metadata:
+                name: deployments.apps
+            spec:
+                versions:
+                  - version: "*"
+                    containers:
+                      - path: .spec.template.spec.containers[*]
+            """
+        When Service Binding is applied
+            """
+            apiVersion: binding.operators.coreos.com/v1alpha1
+            kind: ServiceBinding
+            metadata:
+                name: $scenario_id-binding
+            spec:
+                bindAsFiles: false
+                application:
+                    name: $scenario_id
+                    group: apps
+                    version: v1
+                    resource: deployments
+                services:
+                  - version: v1
+                    group: ""
+                    kind: Secret
+                    name: $scenario_id-secret
+            """
+        Then Service Binding is ready
+        And The application env var "SECRET_USERNAME" has value "foo"
+        And The application env var "SECRET_PASSWORD" has value "bar"
+        And The application env var "SECRET_TYPE" has value "db"
+
+    Scenario: Mapping should allow bindAsFiles: false in non-podspec resources
+        Given The Secret is present
+            """
+            apiVersion: v1
+            kind: Secret
+            metadata:
+                name: $scenario_id-secret
+            stringData:
+                username: foo
+                password: bar
+                type: db
+            """
+        And The Custom Resource is present
+            """
+            apiVersion: "stable.example.com/v1"
+            kind: AppConfig
+            metadata:
+                name: $scenario_id-appconfig
+            spec:
+                spec:
+                    containers:
+                    - name: bar
+            """
+        And The Workload Resource Mapping is present
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ClusterWorkloadResourceMapping
+            metadata:
+                name: appconfigs.stable.example.com
+            spec:
+                versions:
+                  - version: "*"
+                    containers:
+                      - path: .spec.spec.containers[*]
+                        name: .name
+                        env: .env
+                        volumeMounts: .volumeMounts
+                    volumes: .spec.template.spec.volumes
+            """
+        When Service Binding is applied
+            """
+            apiVersion: binding.operators.coreos.com/v1alpha1
+            kind: ServiceBinding
+            metadata:
+                name: $scenario_id-binding
+            spec:
+                bindAsFiles: false
+                application:
+                    name: $scenario_id-appconfig
+                    group: stable.example.com
+                    version: v1
+                    resource: appconfigs
+                services:
+                  - version: v1
+                    group: ""
+                    kind: Secret
+                    name: $scenario_id-secret
+            """
+        Then Service Binding is ready
+        And Secret has been injected in to CR "$scenario_id-appconfig" of kind "appconfigs.stable.example.com" at path "{.spec.spec.containers[0].envFrom[0].secretRef.name}"
+
+    @spec
+    Scenario: Deployment identity mappings should not change binding behavior
+        Given Generic test application is running
+        And The Workload Resource Mapping is present
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ClusterWorkloadResourceMapping
+            metadata:
+                name: deployments.apps
+            spec:
+                versions:
+                  - version: "*"
+                    containers:
+                      - path: .spec.template.spec.containers[*]
+                        name: .name
+                        env: .env
+                        volumeMounts: .volumeMounts
+                      - path: .spec.template.spec.initContainers[*]
+                        name: .name
+                        env: .env
+                        volumeMounts: .volumeMounts
+                    volumes: .spec.template.spec.volumes
+            """
+        And The custom resource is present
+            """
+            apiVersion: "stable.example.com/v1"
+            kind: Backend
+            metadata:
+                name: $scenario_id-backend
+                annotations:
+                    service.binding/host: path={.spec.host}
+                    service.binding/username: path={.spec.username}
+            spec:
+                host: example.common
+                username: foo
+            """
+        When Service Binding is applied
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ServiceBinding
+            metadata:
+                name: $scenario_id-binding
+            spec:
+                type: mysql
+                service:
+                    apiVersion: stable.example.com/v1
+                    kind: Backend
+                    name: $scenario_id-backend
+                workload:
+                    name: $scenario_id
+                    apiVersion: apps/v1
+                    kind: Deployment
+            """
+        Then Service Binding is ready
+        And The application env var "SERVICE_BINDING_ROOT" has value "/bindings"
+        And Content of file "/bindings/$scenario_id-binding/host" in application pod is
+            """
+            example.common
+            """
+        And Content of file "/bindings/$scenario_id-binding/type" in application pod is
+            """
+            mysql
+            """
+        And The Workload Resource Mapping is deleted
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ClusterWorkloadResourceMapping
+            metadata:
+                name: deployments.apps
+            """
+
+    @spec
+    Scenario: Specify container path using Workload Resource Mappings in custom resource
+        Given The Secret is present
+            """
+            apiVersion: v1
+            kind: Secret
+            metadata:
+                name: $scenario_id-secret
+            stringData:
+                username: AzureDiamond
+                password: hunter2
+                type:     secret
+            """
+        And The Custom Resource is present
+            """
+            apiVersion: "stable.example.com/v1"
+            kind: NotPodSpec
+            metadata:
+                name: $scenario_id-npc
+            spec:
+                containerSpecs:
+                  - id: $scenario_id-id
+                    image: scratch
+            """
+        When Service Binding is applied
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ServiceBinding
+            metadata:
+                name: $scenario_id-binding
+            spec:
+                service:
+                    name: $scenario_id-secret
+                    kind: Secret
+                    apiVersion: v1
+                workload:
+                    apiVersion: stable.example.com/v1
+                    kind: NotPodSpec
+                    name: $scenario_id-npc
+            """
+        Then Service Binding is ready
+        And jsonpath "{.spec.containerSpecs[0].volumeEntries}" on "notpodspecs/$scenario_id-npc" should return "[{"mountPath":"/bindings/$scenario_id-binding","name":"$scenario_id-binding"}]"
+        And jsonpath "{.spec.volumeData}" on "notpodspecs/$scenario_id-npc" should return "[{"name":"$scenario_id-binding","secret":{"secretName":"$scenario_id-secret"}}]"
+
+    @spec
+    Scenario: Projecting environment variables into non-podspec fields
+        Given The Secret is present
+            """
+            apiVersion: v1
+            kind: Secret
+            metadata:
+                name: $scenario_id-secret
+            stringData:
+                username: AzureDiamond
+                password: hunter2
+                type:     secret
+            """
+        And The Custom Resource is present
+            """
+            apiVersion: "stable.example.com/v1"
+            kind: NotPodSpec
+            metadata:
+                name: $scenario_id-npc
+            spec:
+                containerSpecs:
+                  - id: $scenario_id-id
+                    image: scratch
+            """
+        When Service Binding is applied
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ServiceBinding
+            metadata:
+                name: $scenario_id-binding
+            spec:
+                service:
+                    name: $scenario_id-secret
+                    kind: Secret
+                    apiVersion: v1
+                workload:
+                    apiVersion: stable.example.com/v1
+                    kind: NotPodSpec
+                    name: $scenario_id-npc
+                env:
+                  - name: BINDING_TYPE
+                    key:  type
+                  - name: BINDING_USERNAME
+                    key:  username
+                  - name: BINDING_PASSWORD
+                    key:  password
+            """
+        Then Service Binding is ready
+        And jsonpath "{.spec.containerSpecs[0].envData}" on "notpodspecs/$scenario_id-npc" should return "[{"name":"BINDING_TYPE","valueFrom":{"secretKeyRef":{"key":"type","name":"$scenario_id-secret"}}},{"name":"BINDING_USERNAME","valueFrom":{"secretKeyRef":{"key":"username","name":"$scenario_id-secret"}}},{"name":"BINDING_PASSWORD","valueFrom":{"secretKeyRef":{"key":"password","name":"$scenario_id-secret"}}},{"name":"SERVICE_BINDING_ROOT","value":"/bindings"}]"
+
+    @spec
+    Scenario: Projecting values into a non-PodSpec resource for a specific API version
+        Given The Secret is present
+            """
+            apiVersion: v1
+            kind: Secret
+            metadata:
+                name: $scenario_id-secret
+            stringData:
+                username: AzureDiamond
+                password: hunter2
+                type:     secret
+            """
+        And The Custom Resource is present
+            """
+            apiVersion: "stable.example.com/v1"
+            kind: NotPodSpec
+            metadata:
+                name: $scenario_id-npc
+            spec:
+                containerSpecs:
+                  - id: $scenario_id
+                    image: scratch
+                initContainerSpecs:
+                  - id: $scenario_id
+                    image: scratch
+            """
+        And The Workload Resource Mapping is present
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ClusterWorkloadResourceMapping
+            metadata:
+                name: notpodspecs.stable.example.com
+            spec:
+                versions:
+                  - version: "v1"
+                    volumes: .spec.volumeData
+                    containers:
+                      - path: .spec.containerSpecs[*]
+                        name: .id
+                        env: .envData
+                        volumeMounts: .volumeEntries
+                  - version: "*"
+                    volumes: .spec.volumeData
+                    containers:
+                      - path: .spec.initContainerSpecs[*]
+                        name: .id
+                        env: .envData
+                        volumeMounts: .volumeEntries
+            """
+        When Service Binding is applied
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ServiceBinding
+            metadata:
+                name: $scenario_id-binding
+            spec:
+                service:
+                    name: $scenario_id-secret
+                    kind: Secret
+                    apiVersion: v1
+                workload:
+                    apiVersion: stable.example.com/v1
+                    kind: NotPodSpec
+                    name: $scenario_id-npc
+            """
+        Then Service Binding is ready
+        And jsonpath "{.spec.containerSpecs[0].volumeEntries}" on "notpodspecs/$scenario_id-npc" should return "[{"mountPath":"/bindings/$scenario_id-binding","name":"$scenario_id-binding"}]"
+        And jsonpath "{.spec.initContainerSpecs[0].volumeEntries}" on "notpodspecs/$scenario_id-npc" should return no value
+        And jsonpath "{.spec.volumeData}" on "notpodspecs/$scenario_id-npc" should return "[{"name":"$scenario_id-binding","secret":{"secretName":"$scenario_id-secret"}}]"
+
+    @spec
+    Scenario: A workload resource mapping that doesn't specify defaults should use PodSpec-compatible defaults
+        Given The Secret is present
+            """
+            apiVersion: v1
+            kind: Secret
+            metadata:
+                name: $scenario_id-secret
+            stringData:
+                username: AzureDiamond
+                password: hunter2
+                type:     secret
+            """
+        And The Workload Resource Mapping is present
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ClusterWorkloadResourceMapping
+            metadata:
+                name: appconfigs.stable.example.com
+            spec:
+                versions:
+                  - version: "*"
+            """
+        And The Custom Resource is present
+            """
+            apiVersion: "stable.example.com/v1"
+            kind: AppConfig
+            metadata:
+                name: $scenario_id-appconfig
+            spec:
+                template:
+                    spec:
+                        initContainers:
+                          - name: foo
+                        containers:
+                          - name: bar
+            """
+        When Service Binding is applied
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ServiceBinding
+            metadata:
+                name: $scenario_id-binding
+            spec:
+                service:
+                    name: $scenario_id-secret
+                    kind: Secret
+                    apiVersion: v1
+                workload:
+                    apiVersion: stable.example.com/v1
+                    kind: AppConfig
+                    name: $scenario_id-appconfig
+            """
+        Then Service Binding is ready
+        And jsonpath "{.spec.template.spec.containers[0].volumeMounts}" on "appconfigs/$scenario_id-appconfig" should return "[{"mountPath":"/bindings/$scenario_id-binding","name":"$scenario_id-binding"}]"
+        And jsonpath "{.spec.template.spec.initContainers[0].volumeMounts}" on "appconfigs/$scenario_id-appconfig" should return "[{"mountPath":"/bindings/$scenario_id-binding","name":"$scenario_id-binding"}]"
+        And jsonpath "{.spec.template.spec.volumes}" on "appconfigs/$scenario_id-appconfig" should return "[{"name":"$scenario_id-binding","secret":{"secretName":"$scenario_id-secret"}}]"
+        And The Workload Resource Mapping is deleted
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ClusterWorkloadResourceMapping
+            metadata:
+                name: appconfigs.stable.example.com
+            """
+
+    @spec
+    Scenario: Binding filtering uses data from workload resource mappings
+        Given The Secret is present
+            """
+            apiVersion: v1
+            kind: Secret
+            metadata:
+                name: $scenario_id-secret
+            stringData:
+                username: foo
+                password: bar
+                type: db
+            """
+        And The Custom Resource is present
+            """
+            apiVersion: "stable.example.com/v1"
+            kind: NotPodSpec
+            metadata:
+                name: $scenario_id-npc
+            spec:
+                initContainerSpecs:
+                  - id: "foo"
+                    image: init:latest
+                  - id: "baz"
+                    image: setup:latest
+                containerSpecs:
+                  - id: "baz"
+                    image: some/image
+                  - id: "foo"
+                    image: foo:latest
+                  - id: "bar"
+                    image: bar:latest
+                  - id: "quux"
+                    image: some/image
+            """
+        When Service Binding is applied
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ServiceBinding
+            metadata:
+                name: $scenario_id-binding
+            spec:
+                service:
+                    apiVersion: v1
+                    kind: Secret
+                    name: $scenario_id-secret
+                workload:
+                    name: $scenario_id-npc
+                    apiVersion: stable.example.com/v1
+                    kind: NotPodSpec
+                    containers:
+                        - foo
+                        - bar
+                        - bla
+            """
+        Then Service Binding is ready
+        And jq ".status.binding.name" of Service Binding should be changed to "$scenario_id-secret"
+        And jsonpath "{.spec.containerSpecs[0].volumeEntries}" on "notpodspecs/$scenario_id-npc" should return no value
+        And jsonpath "{.spec.containerSpecs[1].volumeEntries}" on "notpodspecs/$scenario_id-npc" should return "[{"mountPath":"/bindings/$scenario_id-binding","name":"$scenario_id-binding"}]"
+        And jsonpath "{.spec.containerSpecs[2].volumeEntries}" on "notpodspecs/$scenario_id-npc" should return "[{"mountPath":"/bindings/$scenario_id-binding","name":"$scenario_id-binding"}]"
+        And jsonpath "{.spec.containerSpecs[3].volumeEntries}" on "notpodspecs/$scenario_id-npc" should return no value
+        And jsonpath "{.spec.initContainerSpecs[0].volumeEntries}" on "notpodspecs/$scenario_id-npc" should return "[{"mountPath":"/bindings/$scenario_id-binding","name":"$scenario_id-binding"}]"
+        And jsonpath "{.spec.initContainerSpecs[1].volumeEntries}" on "notpodspecs/$scenario_id-npc" should return no value
+
+    @spec
+    Scenario: Fall back to default volumes when not specified
+        Given The Secret is present
+            """
+            apiVersion: v1
+            kind: Secret
+            metadata:
+                name: $scenario_id-secret
+            stringData:
+                username: foo
+                password: bar
+                type: db
+            """
+        And The Custom Resource is present
+            """
+            apiVersion: "stable.example.com/v1"
+            kind: AppConfig
+            metadata:
+                name: $scenario_id-appconfig
+            spec:
+                spec:
+                    containers:
+                        - name: bar
+            """
+        And The Workload Resource Mapping is present
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ClusterWorkloadResourceMapping
+            metadata:
+                name: appconfigs.stable.example.com
+            spec:
+                versions:
+                  - version: "*"
+                    containers:
+                      - path: .spec.spec.containers[*]
+            """
+        When Service Binding is applied
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ServiceBinding
+            metadata:
+                name: $scenario_id-binding
+            spec:
+                service:
+                    apiVersion: v1
+                    kind: Secret
+                    name: $scenario_id-secret
+                workload:
+                    name: $scenario_id-appconfig
+                    apiVersion: stable.example.com/v1
+                    kind: AppConfig
+            """
+        Then Service Binding is ready
+        And jsonpath "{.spec.spec.containers[0].volumeMounts}" on "appconfigs/$scenario_id-appconfig" should return "[{"mountPath":"/bindings/$scenario_id-binding","name":"$scenario_id-binding"}]"
+        And jsonpath "{.spec.template.spec.volumes}" on "appconfigs/$scenario_id-appconfig" should return "[{"name":"$scenario_id-binding","secret":{"secretName":"$scenario_id-secret"}}]"
+        And jsonpath "{.spec.template.spec.containers}" on "appconfigs/$scenario_id-appconfig" should return no value
+        And jsonpath "{.spec.spec.volumes}" on "appconfigs/$scenario_id-appconfig" should return no value
+
+    @spec
+    Scenario: Fall back to default container paths when not specified
+        Given The Secret is present
+            """
+            apiVersion: v1
+            kind: Secret
+            metadata:
+                name: $scenario_id-secret
+            stringData:
+                username: foo
+                password: bar
+                type: db
+            """
+        And The Custom Resource is present
+            """
+            apiVersion: "stable.example.com/v1"
+            kind: AppConfig
+            metadata:
+                name: $scenario_id-appconfig
+            spec:
+                template:
+                    spec:
+                        containers:
+                            - name: bar
+            """
+        And The Workload Resource Mapping is present
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ClusterWorkloadResourceMapping
+            metadata:
+                name: appconfigs.stable.example.com
+            spec:
+                versions:
+                  - version: "*"
+                    volumes: .spec.spec.volumes
+            """
+        When Service Binding is applied
+            """
+            apiVersion: servicebinding.io/v1alpha3
+            kind: ServiceBinding
+            metadata:
+                name: $scenario_id-binding
+            spec:
+                service:
+                    apiVersion: v1
+                    kind: Secret
+                    name: $scenario_id-secret
+                workload:
+                    name: $scenario_id-appconfig
+                    apiVersion: stable.example.com/v1
+                    kind: AppConfig
+            """
+        Then Service Binding is ready
+        And jsonpath "{.spec.template.spec.volumes}" on "appconfigs/$scenario_id-appconfig" should return no value
+        And jsonpath "{.spec.spec.containers}" on "appconfigs/$scenario_id-appconfig" should return no value
+        And jsonpath "{.spec.template.spec.containers[0].volumeMounts}" on "appconfigs/$scenario_id-appconfig" should return "[{"mountPath":"/bindings/$scenario_id-binding","name":"$scenario_id-binding"}]"
+        And jsonpath "{.spec.spec.volumes}" on "appconfigs/$scenario_id-appconfig" should return "[{"name":"$scenario_id-binding","secret":{"secretName":"$scenario_id-secret"}}]"
diff --git a/test/acceptance/resources/custom_app.operator.manifest.yaml b/test/acceptance/resources/custom_app.operator.manifest.yaml
index 5fb815a7..4804e792 100644
--- a/test/acceptance/resources/custom_app.operator.manifest.yaml
+++ b/test/acceptance/resources/custom_app.operator.manifest.yaml
@@ -46,6 +46,15 @@ spec:
                               properties:
                                 containerPort:
                                   type: integer
+                          volumeMounts:
+                            type: array
+                            items:
+                              type: object
+                              properties:
+                                mountPath:
+                                  type: string
+                                name:
+                                  type: string
                           envFrom:
                             type: array
                             items:
@@ -58,6 +67,20 @@ spec:
                                       type: string
                     secret:
                       type: string
+                    volumes:
+                      type: array
+                      items:
+                        type: object
+                        properties:
+                          name:
+                            type: string
+                          secret:
+                            type: object
+                            properties:
+                              defaultMode:
+                                type: integer
+                              secretName:
+                                type: string
                 template:
                   type: object
                   properties:
@@ -100,6 +123,20 @@ spec:
                                       type: string
                                     name:
                                       type: string
+                        volumes:
+                          type: array
+                          items:
+                            type: object
+                            properties:
+                              name:
+                                type: string
+                              secret:
+                                type: object
+                                properties:
+                                  defaultMode:
+                                    type: integer
+                                  secretName:
+                                    type: string
   scope: Namespaced
   names:
     plural: appconfigs
@@ -117,4 +154,4 @@ metadata:
 rules:
   - apiGroups: ["stable.example.com"]
     resources: ["appconfigs"]
-    verbs: ["get", "list", "update"]
\ No newline at end of file
+    verbs: ["get", "list", "update"]
diff --git a/test/acceptance/resources/not_a_pod.operator.manifest.yaml b/test/acceptance/resources/not_a_pod.operator.manifest.yaml
new file mode 100644
index 00000000..0199c3d7
--- /dev/null
+++ b/test/acceptance/resources/not_a_pod.operator.manifest.yaml
@@ -0,0 +1,150 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+  name: notpodspecs.stable.example.com
+spec:
+  group: stable.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:
+                volumeData:
+                  type: array
+                  items:
+                    type: object
+                    properties:
+                      name:
+                        type: string
+                      secret:
+                        type: object
+                        properties:
+                          defaultMode:
+                            type: integer
+                          secretName:
+                            type: string
+                initContainerSpecs:
+                  type: array
+                  items:
+                    type: object
+                    properties:
+                      image:
+                        type: string
+                      id:
+                        type: string
+                      envFrom:
+                        type: array
+                        items:
+                          type: object
+                          properties:
+                            secretRef:
+                              type: object
+                              properties:
+                                name:
+                                  type: string
+                      envData:
+                        type: array
+                        items:
+                          type: object
+                          properties:
+                            name:
+                              type: string
+                            value:
+                              type: string
+                            valueFrom:
+                              type: object
+                              properties:
+                                secretKeyRef:
+                                  type: object
+                                  properties:
+                                    key:
+                                      type: string
+                                    name:
+                                      type: string
+                      volumeEntries:
+                        type: array
+                        items:
+                          type: object
+                          properties:
+                            mountPath:
+                              type: string
+                            name:
+                              type: string
+                containerSpecs:
+                  type: array
+                  items:
+                    type: object
+                    properties:
+                      image:
+                        type: string
+                      id:
+                        type: string
+                      envFrom:
+                        type: array
+                        items:
+                          type: object
+                          properties:
+                            secretRef:
+                              type: object
+                              properties:
+                                name:
+                                  type: string
+                      envData:
+                        type: array
+                        items:
+                          type: object
+                          properties:
+                            name:
+                              type: string
+                            value:
+                              type: string
+                            valueFrom:
+                              type: object
+                              properties:
+                                secretKeyRef:
+                                  type: object
+                                  properties:
+                                    key:
+                                      type: string
+                                    name:
+                                      type: string
+                      volumeEntries:
+                        type: array
+                        items:
+                          type: object
+                          properties:
+                            mountPath:
+                              type: string
+                            name:
+                              type: string
+
+  scope: Namespaced
+  names:
+    plural: notpodspecs
+    singular: notpodspec
+    kind: NotPodSpec
+    shortNames:
+      - npc
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: admin-to-notpodspec
+  labels:
+    servicebinding.io/controller: "true"
+rules:
+  - apiGroups: ["stable.example.com"]
+    resources: ["notpodspecs"]
+    verbs: ["get", "list", "update", "patch"]