Repository: openshift/odo
Pull request #5077 (2021-09-16 16:37:16)

fixed JOB_NAME
**What type of PR is this?**
 /kind tests

**What does this PR do / why we need it**:
JOB_NAME for running tests in IBM Cloud Cluster was incorrect
**Which issue(s) this PR fixes**:

Fixes #?

**PR acceptance criteria**:

- [x] Unit test 

- [ ] Integration test 

- [ ] Documentation 

- [x] I have read the [test guidelines](https://github.com/openshift/odo/blob/master/docs/dev/test-architecture.adoc)

**How to test changes / Special notes to the reviewer**:


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 assign **mohammedzee1000** after the PR has been reviewed.
You can assign the PR to them by writing `/assign @mohammedzee1000` in a comment when ready.

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

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

- **[scripts/OWNERS](https://github.com/openshift/odo/blob/main/scripts/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":["mohammedzee1000"]} -->
sonarcloud[bot]: Kudos, SonarCloud Quality Gate passed!&nbsp; &nbsp; ![Quality Gate passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/passed-16px.png 'Quality Gate passed')

[![Bug](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug-16px.png 'Bug')](https://sonarcloud.io/project/issues?id=openshift_odo&pullRequest=5077&resolved=false&types=BUG) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=openshift_odo&pullRequest=5077&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=openshift_odo&pullRequest=5077&resolved=false&types=BUG)  
[![Vulnerability](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability-16px.png 'Vulnerability')](https://sonarcloud.io/project/issues?id=openshift_odo&pullRequest=5077&resolved=false&types=VULNERABILITY) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=openshift_odo&pullRequest=5077&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=openshift_odo&pullRequest=5077&resolved=false&types=VULNERABILITY)  
[![Security Hotspot](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot-16px.png 'Security Hotspot')](https://sonarcloud.io/project/security_hotspots?id=openshift_odo&pullRequest=5077&resolved=false&types=SECURITY_HOTSPOT) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/security_hotspots?id=openshift_odo&pullRequest=5077&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=openshift_odo&pullRequest=5077&resolved=false&types=SECURITY_HOTSPOT)  
[![Code Smell](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell-16px.png 'Code Smell')](https://sonarcloud.io/project/issues?id=openshift_odo&pullRequest=5077&resolved=false&types=CODE_SMELL) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=openshift_odo&pullRequest=5077&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=openshift_odo&pullRequest=5077&resolved=false&types=CODE_SMELL)

[![No Coverage information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/NoCoverageInfo-16px.png 'No Coverage information')](https://sonarcloud.io/component_measures?id=openshift_odo&pullRequest=5077) No Coverage information  
[![No Duplication information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/NoDuplicationInfo-16px.png 'No Duplication information')](https://sonarcloud.io/component_measures?id=openshift_odo&pullRequest=5077&metric=duplicated_lines_density&view=list) No Duplication information


openshift-ci[bot]: @rnapoles-rh: The following test **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

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

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1438542520324722688) | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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 -->
prietyc123: /approve
openshift-ci[bot]: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/openshift/odo/pull/5077#issuecomment-921516670" title="Approved">prietyc123</a>*

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

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

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

- ~~[scripts/OWNERS](https://github.com/openshift/odo/blob/main/scripts/OWNERS)~~ [prietyc123]

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

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: The following tests **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1438743874209058816) | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: The following tests **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1438808292439625728) | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: The following tests **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ci/prow/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1438887067277856768) | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: 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/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1438958787175124992) | unknown | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: 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/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1439021388038934528) | true | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: 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/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1439091087552548864) | true | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: 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/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1439143129776132096) | true | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: 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/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1439206167694807040) | true | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: 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/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1439275621367681024) | true | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: 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/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1439330231478390784) | true | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: 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/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1439399945877590016) | true | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: 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/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1439463866974081024) | true | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: 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/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1439515210724413440) | true | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: 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/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1439578650058952704) | true | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: 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/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1439642051237908480) | true | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: 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/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1439705213752578048) | true | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: 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/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1439772904077135872) | true | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
openshift-ci[bot]: @rnapoles-rh: 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/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1438542520534437888) | `/test psi-unit-test-windows`
ci/prow/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1439836329914404864) | true | `/test psi-k8s-ibmc-integration-e2e`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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-bot: /retest-required

Please review the [full test history](https://prow.ci.openshift.org/pr-history/?org=openshift&repo=odo&pr=5077) for this PR and help us cut down flakes.
anandrkskd: /test psi-unit-test-windows
openshift-ci[bot]: @rnapoles-rh: 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/psi-k8s-ibmc-integration-e2e | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-k8s-ibmc-integration-e2e/1439836329914404864) | true | `/test psi-k8s-ibmc-integration-e2e`
ci/prow/psi-unit-test-windows | f887cb2850a0b5bffe5d20baee393288e9f8777c | [link](https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/openshift_odo/5077/pull-ci-openshift-odo-main-psi-unit-test-windows/1439896093147009024) | false | `/test psi-unit-test-windows`

[Full PR test history](https://prow.ci.openshift.org/pr-history?org=openshift&repo=odo&pr=5077). [Your PR dashboard](https://prow.ci.openshift.org/pr?query=is:pr+state:open+author:rnapoles-rh).

<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 -->
anandrkskd: /test psi-unit-test-windows

anandrkskd: /test psi-unit-test-windows

Patch:
diff --git a/docs/public/operator-hub.adoc b/docs/public/operator-hub.adoc
index 54c7bf8ba..c2e286ad1 100644
--- a/docs/public/operator-hub.adoc
+++ b/docs/public/operator-hub.adoc
@@ -87,6 +87,11 @@ In above output, `etcdoperator.v0.9.4` is the Operator while `EtcdCluster`,
 
 In this example, we will be deploying `EtcdCluster` service from link:https://operatorhub.io/operator/etcd[etcd Operator] to an OpenShift / Kubernetes cluster. This service is provided by the Operator `etcdoperator`. Please ensure that this Operator is installed on your OpenShift / Kubernetes cluster before trying to create `EtcdCluster` service from it. If it's not installed, please install it by logging into your OpenShift / Kubernetes cluster as `kube:admin` user.
 
+[IMPORTANT]
+====
+By default, the service definition is persisted in a separate file. We can use the `--inlined` flag to save it in the devfile instead.
+====
+
 . Create an `EtcdCluster` service from the `etcdoperator.v0.9.4` Operator:
 +
 [source,sh]
@@ -196,7 +201,7 @@ $ odo push
 
 [IMPORTANT]
 ====
-For the link between a component and Operator Hub backed service to take effect, make sure you do `odo push`. The link won't be effective otherwise.
+For the link between a component and Operator Hub backed service to take effect, make sure you do `odo push`. The link won't be effective otherwise. By default, the link definition is persisted in a separate file. We can use the `--inlined` flag to save it in the devfile instead.
 ====
 
 === Unlinking an odo component from an Operator backed service
diff --git a/pkg/component/component_full_description.go b/pkg/component/component_full_description.go
index 80b049a42..5263ef692 100644
--- a/pkg/component/component_full_description.go
+++ b/pkg/component/component_full_description.go
@@ -109,7 +109,7 @@ func (cfd *ComponentFullDescription) fillEmptyFields(componentDesc Component, co
 }
 
 // NewComponentFullDescriptionFromClientAndLocalConfig gets the complete description of the component from both localconfig and cluster
-func NewComponentFullDescriptionFromClientAndLocalConfig(client *occlient.Client, localConfigInfo *config.LocalConfigInfo, envInfo *envinfo.EnvSpecificInfo, componentName string, applicationName string, projectName string) (*ComponentFullDescription, error) {
+func NewComponentFullDescriptionFromClientAndLocalConfig(client *occlient.Client, localConfigInfo *config.LocalConfigInfo, envInfo *envinfo.EnvSpecificInfo, componentName string, applicationName string, projectName string, context string) (*ComponentFullDescription, error) {
 	cfd := &ComponentFullDescription{}
 	var state State
 	if client == nil {
@@ -126,7 +126,7 @@ func NewComponentFullDescriptionFromClientAndLocalConfig(client *occlient.Client
 		if err != nil {
 			return cfd, err
 		}
-		configLinks, err = service.ListDevfileLinks(devfile)
+		configLinks, err = service.ListDevfileLinks(devfile, context)
 	} else {
 		componentDesc, err = GetComponentFromConfig(localConfigInfo)
 	}
diff --git a/pkg/devfile/adapters/common/utils.go b/pkg/devfile/adapters/common/utils.go
index 4f869897a..288432a4f 100644
--- a/pkg/devfile/adapters/common/utils.go
+++ b/pkg/devfile/adapters/common/utils.go
@@ -1,6 +1,7 @@
 package common
 
 import (
+	"net/url"
 	"os"
 	"path/filepath"
 	"strings"
@@ -8,7 +9,9 @@ import (
 	"k8s.io/klog"
 
 	devfilev1 "github.com/devfile/api/v2/pkg/apis/workspaces/v1alpha2"
+	devfileParser "github.com/devfile/library/pkg/devfile/parser"
 	parsercommon "github.com/devfile/library/pkg/devfile/parser/data/v2/common"
+	devfilefs "github.com/devfile/library/pkg/testingutil/filesystem"
 )
 
 // PredefinedDevfileCommands encapsulates constants for predefined devfile commands
@@ -219,3 +222,45 @@ func GetSyncFilesFromAttributes(commandsMap PushCommandsMap) map[string]string {
 	}
 	return syncMap
 }
+
+// RemoveDevfileURIContents removes contents
+// which are used via a URI in the devfile
+func RemoveDevfileURIContents(devfile devfileParser.DevfileObj, componentContext string) error {
+	return removeDevfileURIContents(devfile, componentContext, devfilefs.DefaultFs{})
+}
+
+func removeDevfileURIContents(devfile devfileParser.DevfileObj, componentContext string, fs devfilefs.Filesystem) error {
+	components, err := devfile.Data.GetComponents(parsercommon.DevfileOptions{})
+	if err != nil {
+		return err
+	}
+	for _, component := range components {
+		var uri string
+		if component.Kubernetes != nil && component.Kubernetes.Uri != "" {
+			uri = component.Kubernetes.Uri
+		}
+
+		if component.Openshift != nil && component.Openshift.Uri != "" {
+			uri = component.Openshift.Uri
+		}
+
+		if uri == "" {
+			continue
+		}
+
+		parsedURL, err := url.Parse(uri)
+		if err != nil {
+			continue
+		}
+		if len(parsedURL.Host) != 0 && len(parsedURL.Scheme) != 0 {
+			continue
+		}
+
+		completePath := filepath.Join(componentContext, uri)
+		err = fs.Remove(completePath)
+		if err != nil {
+			return err
+		}
+	}
+	return nil
+}
diff --git a/pkg/devfile/adapters/kubernetes/component/adapter.go b/pkg/devfile/adapters/kubernetes/component/adapter.go
index 9beef7e07..9a4b09439 100644
--- a/pkg/devfile/adapters/kubernetes/component/adapter.go
+++ b/pkg/devfile/adapters/kubernetes/component/adapter.go
@@ -189,7 +189,7 @@ func (a Adapter) Push(parameters common.PushParameters) (err error) {
 	log.Infof("\nCreating Services for component %s", a.ComponentName)
 
 	// create the Kubernetes objects from the manifest and delete the ones not in the devfile
-	err = service.PushServices(a.Client.GetKubeClient(), k8sComponents, labels)
+	err = service.PushServices(a.Client.GetKubeClient(), k8sComponents, labels, a.Context)
 	if err != nil {
 		return errors.Wrap(err, "failed to create service(s) associated with the component")
 	}
@@ -230,13 +230,13 @@ func (a Adapter) Push(parameters common.PushParameters) (err error) {
 		}
 	}
 
-	err = service.UpdateServicesWithOwnerReferences(a.Client.GetKubeClient(), k8sComponents, ownerReference)
+	err = service.UpdateServicesWithOwnerReferences(a.Client.GetKubeClient(), k8sComponents, ownerReference, a.Context)
 	if err != nil {
 		return err
 	}
 
 	// create the Kubernetes objects from the manifest and delete the ones not in the devfile
-	needRestart, err := service.PushLinks(a.Client.GetKubeClient(), k8sComponents, labels, a.deployment)
+	needRestart, err := service.PushLinks(a.Client.GetKubeClient(), k8sComponents, labels, a.deployment, a.Context)
 	if err != nil {
 		return errors.Wrap(err, "failed to create service(s) associated with the component")
 	}
diff --git a/pkg/odo/cli/component/common_link.go b/pkg/odo/cli/component/common_link.go
index 2f3e4858c..4c60dbf90 100644
--- a/pkg/odo/cli/component/common_link.go
+++ b/pkg/odo/cli/component/common_link.go
@@ -45,6 +45,8 @@ type commonLinkOptions struct {
 	*genericclioptions.Context
 	// choose between Operator Hub and Service Catalog. If true, Operator Hub
 	csvSupport bool
+
+	inlined bool
 }
 
 func newCommonLinkOptions() *commonLinkOptions {
@@ -327,7 +329,7 @@ func (o *commonLinkOptions) validateForOperator() (err error) {
 	}
 
 	if o.operationName == unlink {
-		_, found, err := svc.FindDevfileServiceBinding(o.EnvSpecificInfo.GetDevfileObj(), o.serviceType, o.serviceName)
+		_, found, err := svc.FindDevfileServiceBinding(o.EnvSpecificInfo.GetDevfileObj(), o.serviceType, o.serviceName, o.ComponentContext)
 		if err != nil {
 			return err
 		}
@@ -402,16 +404,24 @@ func (o *commonLinkOptions) linkOperator() (err error) {
 		return err
 	}
 
-	_, found, err := svc.FindDevfileServiceBinding(o.EnvSpecificInfo.GetDevfileObj(), o.serviceType, o.serviceName)
+	_, found, err := svc.FindDevfileServiceBinding(o.EnvSpecificInfo.GetDevfileObj(), o.serviceType, o.serviceName, o.ComponentContext)
 	if err != nil {
 		return err
 	}
 	if found {
 		return fmt.Errorf("component %q is already linked with the %s %q", o.Context.EnvSpecificInfo.GetName(), o.getLinkType(), o.suppliedName)
 	}
-	err = svc.AddKubernetesComponentToDevfile(string(yamlDesc), o.serviceBinding.Name, o.EnvSpecificInfo.GetDevfileObj())
-	if err != nil {
-		return err
+
+	if o.inlined {
+		err = svc.AddKubernetesComponentToDevfile(string(yamlDesc), o.serviceBinding.Name, o.EnvSpecificInfo.GetDevfileObj())
+		if err != nil {
+			return err
+		}
+	} else {
+		err = svc.AddKubernetesComponent(string(yamlDesc), o.serviceBinding.Name, o.ComponentContext, o.EnvSpecificInfo.GetDevfileObj())
+		if err != nil {
+			return err
+		}
 	}
 
 	log.Successf("Successfully created link between component %q and %s %q\n", o.Context.EnvSpecificInfo.GetName(), o.getLinkType(), o.suppliedName)
@@ -423,12 +433,12 @@ func (o *commonLinkOptions) linkOperator() (err error) {
 func (o *commonLinkOptions) unlinkOperator() (err error) {
 
 	// We already tested `found` in `validateForOperator`
-	name, _, err := svc.FindDevfileServiceBinding(o.EnvSpecificInfo.GetDevfileObj(), o.serviceType, o.serviceName)
+	name, _, err := svc.FindDevfileServiceBinding(o.EnvSpecificInfo.GetDevfileObj(), o.serviceType, o.serviceName, o.ComponentContext)
 	if err != nil {
 		return err
 	}
 
-	err = svc.DeleteKubernetesComponentFromDevfile(name, o.EnvSpecificInfo.GetDevfileObj())
+	err = svc.DeleteKubernetesComponentFromDevfile(name, o.EnvSpecificInfo.GetDevfileObj(), o.ComponentContext)
 	if err != nil {
 		return err
 	}
diff --git a/pkg/odo/cli/component/create_helpers.go b/pkg/odo/cli/component/create_helpers.go
index 51828c52f..2e45875fe 100644
--- a/pkg/odo/cli/component/create_helpers.go
+++ b/pkg/odo/cli/component/create_helpers.go
@@ -84,7 +84,7 @@ func (co *CreateOptions) DevfileJSON() error {
 		return err
 	}
 
-	cfd, err := component.NewComponentFullDescriptionFromClientAndLocalConfig(co.Client, co.LocalConfigInfo, envInfo, envInfo.GetName(), envInfo.GetApplication(), co.Project)
+	cfd, err := component.NewComponentFullDescriptionFromClientAndLocalConfig(co.Client, co.LocalConfigInfo, envInfo, envInfo.GetName(), envInfo.GetApplication(), co.Project, co.ComponentContext)
 	if err != nil {
 		return err
 	}
diff --git a/pkg/odo/cli/component/delete.go b/pkg/odo/cli/component/delete.go
index 868391d25..92afb011f 100644
--- a/pkg/odo/cli/component/delete.go
+++ b/pkg/odo/cli/component/delete.go
@@ -14,6 +14,8 @@ import (
 
 	"github.com/openshift/odo/pkg/component"
 	"github.com/openshift/odo/pkg/config"
+	"github.com/openshift/odo/pkg/devfile"
+	"github.com/openshift/odo/pkg/devfile/adapters/common"
 	"github.com/openshift/odo/pkg/log"
 	appCmd "github.com/openshift/odo/pkg/odo/cli/application"
 	projectCmd "github.com/openshift/odo/pkg/odo/cli/project"
@@ -21,7 +23,7 @@ import (
 	"github.com/openshift/odo/pkg/odo/genericclioptions"
 	odoutil "github.com/openshift/odo/pkg/odo/util"
 	"github.com/openshift/odo/pkg/odo/util/completion"
-
+	"github.com/openshift/odo/pkg/service"
 	ktemplates "k8s.io/kubectl/pkg/util/templates"
 )
 
@@ -83,9 +85,13 @@ func NewDeleteOptions() *DeleteOptions {
 
 // Complete completes log args
 func (do *DeleteOptions) Complete(name string, cmd *cobra.Command, args []string) (err error) {
-
 	if do.componentContext == "" {
-		do.componentContext = LocalDirectoryDefaultLocation
+		dir, err := os.Getwd()
+		if err != nil {
+			return err
+		}
+
+		do.componentContext = dir
 	}
 
 	do.devfilePath = filepath.Join(do.componentContext, DevfilePath)
@@ -252,6 +258,30 @@ func (do *DeleteOptions) DevFileRun() (err error) {
 				return fmt.Errorf("devfile.yaml does not exist in the current directory")
 			}
 			if !do.EnvSpecificInfo.IsUserCreatedDevfile() {
+
+				// first remove the uri based files mentioned in the devfile
+				devfileObj, err := devfile.ParseFromFile(do.devfilePath)
+				if err != nil {
+					return err
+				}
+
+				err = common.RemoveDevfileURIContents(devfileObj, do.componentContext)
+				if err != nil {
+					return err
+				}
+
+				empty, err := util.IsEmpty(filepath.Join(do.componentContext, service.UriFolder))
+				if err != nil && !os.IsNotExist(err) {
+					return err
+				}
+
+				if !os.IsNotExist(err) && empty {
+					err = os.RemoveAll(filepath.Join(do.componentContext, service.UriFolder))
+					if err != nil {
+						return err
+					}
+				}
+
 				err = util.DeletePath(do.devfilePath)
 				if err != nil {
 					return err
diff --git a/pkg/odo/cli/component/describe.go b/pkg/odo/cli/component/describe.go
index a63ec4bac..219063b26 100644
--- a/pkg/odo/cli/component/describe.go
+++ b/pkg/odo/cli/component/describe.go
@@ -2,10 +2,10 @@ package component
 
 import (
 	"fmt"
-
 	"github.com/openshift/odo/pkg/log"
 	"github.com/openshift/odo/pkg/machineoutput"
 	"github.com/openshift/odo/pkg/odo/genericclioptions"
+	"os"
 
 	"github.com/openshift/odo/pkg/component"
 	appCmd "github.com/openshift/odo/pkg/odo/cli/application"
@@ -38,6 +38,12 @@ func NewDescribeOptions() *DescribeOptions {
 
 // Complete completes describe args
 func (do *DescribeOptions) Complete(name string, cmd *cobra.Command, args []string) (err error) {
+	if do.componentContext == "" {
+		do.componentContext, err = os.Getwd()
+		if err != nil {
+			return err
+		}
+	}
 	err = do.ComponentOptions.Complete(name, cmd, args)
 	if err != nil {
 		return err
@@ -58,7 +64,7 @@ func (do *DescribeOptions) Validate() (err error) {
 // Run has the logic to perform the required actions as part of command
 func (do *DescribeOptions) Run(cmd *cobra.Command) (err error) {
 
-	cfd, err := component.NewComponentFullDescriptionFromClientAndLocalConfig(do.Context.Client, do.LocalConfigInfo, do.EnvSpecificInfo, do.componentName, do.Context.Application, do.Context.Project)
+	cfd, err := component.NewComponentFullDescriptionFromClientAndLocalConfig(do.Context.Client, do.LocalConfigInfo, do.EnvSpecificInfo, do.componentName, do.Context.Application, do.Context.Project, do.componentContext)
 	if err != nil {
 		return err
 	}
diff --git a/pkg/odo/cli/component/link.go b/pkg/odo/cli/component/link.go
index 82e3c7ca6..3ff3dc30c 100644
--- a/pkg/odo/cli/component/link.go
+++ b/pkg/odo/cli/component/link.go
@@ -27,6 +27,9 @@ var (
 # Link current component to the 'backend' component (backend must have a single exposed port)
 %[1]s backend
 
+# Link current component to the 'backend' component and puts the link definition in the devfile instead of a separate file
+%[1]s backend --inlined
+
 # Link component 'nodejs' to the 'backend' component
 %[1]s backend --component nodejs
 
@@ -140,6 +143,7 @@ func NewCmdLink(name, fullName string) *cobra.Command {
 		},
 	}
 
+	linkCmd.PersistentFlags().BoolVarP(&o.inlined, "inlined", "", false, "Puts the link definition in the devfile instead of a separate file")
 	linkCmd.PersistentFlags().StringVar(&o.port, "port", "", "Port of the backend to which to link")
 	linkCmd.PersistentFlags().BoolVarP(&o.wait, "wait", "w", false, "If enabled the link will return only when the component is fully running after the link is created")
 	linkCmd.PersistentFlags().BoolVar(&o.waitForTarget, "wait-for-target", false, "If enabled, the link command will wait for the service to be provisioned (has no effect when linking to a component)")
diff --git a/pkg/odo/cli/service/create.go b/pkg/odo/cli/service/create.go
index 7770be183..e49ed8a25 100644
--- a/pkg/odo/cli/service/create.go
+++ b/pkg/odo/cli/service/create.go
@@ -19,7 +19,10 @@ const (
 var (
 	createOperatorExample = ktemplates.Examples(`
 	# Create new EtcdCluster service from etcdoperator.v0.9.4 operator.
-	%[1]s etcdoperator.v0.9.4/EtcdCluster`)
+	%[1]s etcdoperator.v0.9.4/EtcdCluster
+	
+	# Create new EtcdCluster service from etcdoperator.v0.9.4 operator and puts the service definition in the devfile instead of a separate file.
+	%[1]s etcdoperator.v0.9.4/EtcdCluster --inlined`)
 
 	createShortDesc = `Create a new service from Operator Hub and deploy it on Kubernetes or OpenShift.`
 
@@ -61,6 +64,8 @@ type CreateOptions struct {
 	fromFile string
 	// Backend is the service provider backend providing the service requested by the user
 	Backend ServiceProviderBackend
+
+	inlined bool
 }
 
 // NewCreateOptions creates a new CreateOptions instance
@@ -139,6 +144,7 @@ func NewCmdServiceCreate(name, fullName string) *cobra.Command {
 		},
 	}
 
+	serviceCreateCmd.Flags().BoolVar(&o.inlined, "inlined", false, "Puts the service definition in the devfile instead of a separate file")
 	serviceCreateCmd.Flags().BoolVar(&o.DryRun, "dry-run", false, "Print the yaml specificiation that will be used to create the operator backed service")
 	// remove this feature after enabling service create interactive mode for operator backed services
 	serviceCreateCmd.Flags().StringVar(&o.fromFile, "from-file", "", "Path to the file containing yaml specification to use to start operator backed service")
diff --git a/pkg/odo/cli/service/list_operator.go b/pkg/odo/cli/service/list_operator.go
index 3dbf9bc37..3d9eee575 100644
--- a/pkg/odo/cli/service/list_operator.go
+++ b/pkg/odo/cli/service/list_operator.go
@@ -68,7 +68,7 @@ func (o *ServiceListOptions) listOperatorServices() (err error) {
 	var devfileList map[string]unstructured.Unstructured
 	var devfileComponent string
 	if o.EnvSpecificInfo != nil {
-		devfileList, err = svc.ListDevfileServices(o.EnvSpecificInfo.GetDevfileObj())
+		devfileList, err = svc.ListDevfileServices(o.EnvSpecificInfo.GetDevfileObj(), o.componentContext)
 		if err != nil {
 			return fmt.Errorf("error reading devfile")
 		}
diff --git a/pkg/odo/cli/service/operator_backend.go b/pkg/odo/cli/service/operator_backend.go
index 86256d10e..723ba6605 100644
--- a/pkg/odo/cli/service/operator_backend.go
+++ b/pkg/odo/cli/service/operator_backend.go
@@ -24,7 +24,7 @@ import (
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 )
 
-// This CompleteServiceCreate contains logic to complete the "odo service create" call for the case of Operator backend
+// CompleteServiceCreate contains logic to complete the "odo service create" call for the case of Operator backend
 func (b *OperatorBackend) CompleteServiceCreate(o *CreateOptions, cmd *cobra.Command, args []string) (err error) {
 	// since interactive mode is not supported for Operators yet, set it to false
 	o.interactive = false
@@ -215,14 +215,28 @@ func (b *OperatorBackend) RunServiceCreate(o *CreateOptions) (err error) {
 
 		return nil
 	} else {
-		crdYaml, err := yaml.Marshal(b.CustomResourceDefinition)
-		if err != nil {
-			return err
-		}
 
-		err = svc.AddKubernetesComponentToDevfile(string(crdYaml), o.ServiceName, o.EnvSpecificInfo.GetDevfileObj())
-		if err != nil {
-			return err
+		if o.inlined {
+			crdYaml, err := yaml.Marshal(b.CustomResourceDefinition)
+			if err != nil {
+				return err
+			}
+
+			err = svc.AddKubernetesComponentToDevfile(string(crdYaml), o.ServiceName, o.EnvSpecificInfo.GetDevfileObj())
+			if err != nil {
+				return err
+			}
+
+		} else {
+			crdYaml, err := yaml.Marshal(b.CustomResourceDefinition)
+			if err != nil {
+				return err
+			}
+
+			err = svc.AddKubernetesComponent(string(crdYaml), o.ServiceName, o.componentContext, o.EnvSpecificInfo.GetDevfileObj())
+			if err != nil {
+				return err
+			}
 		}
 
 		if log.IsJSON() {
@@ -253,7 +267,7 @@ func (b *OperatorBackend) DeleteService(o *DeleteOptions, name string, applicati
 		return err
 	}
 
-	err = svc.DeleteKubernetesComponentFromDevfile(instanceName, o.EnvSpecificInfo.GetDevfileObj())
+	err = svc.DeleteKubernetesComponentFromDevfile(instanceName, o.EnvSpecificInfo.GetDevfileObj(), o.componentContext)
 	if err != nil {
 		return errors.Wrap(err, "failed to delete service from the devfile")
 	}
@@ -285,7 +299,7 @@ func (b *OperatorBackend) DescribeService(o *DescribeOptions, serviceName, app s
 		}
 	}
 
-	devfileList, err := svc.ListDevfileServices(o.EnvSpecificInfo.GetDevfileObj())
+	devfileList, err := svc.ListDevfileServices(o.EnvSpecificInfo.GetDevfileObj(), o.componentContext)
 	if err != nil {
 		return err
 	}
diff --git a/pkg/service/link.go b/pkg/service/link.go
index 1b08eed07..74dbab6ed 100644
--- a/pkg/service/link.go
+++ b/pkg/service/link.go
@@ -7,6 +7,7 @@ import (
 
 	devfile "github.com/devfile/api/v2/pkg/apis/workspaces/v1alpha2"
 	"github.com/devfile/library/pkg/devfile/generator"
+	devfilefs "github.com/devfile/library/pkg/testingutil/filesystem"
 	"github.com/ghodss/yaml"
 	applabels "github.com/openshift/odo/pkg/application/labels"
 	componentlabels "github.com/openshift/odo/pkg/component/labels"
@@ -26,22 +27,22 @@ import (
 // PushLinks updates Link(s) from Kubernetes Inlined component in a devfile by creating new ones or removing old ones
 // returns true if the component needs to be restarted (when a link has been created or deleted)
 // if service binding operator is not present, it will call pushLinksWithoutOperator to create the links without it.
-func PushLinks(client *kclient.Client, k8sComponents []devfile.Component, labels map[string]string, deployment *v1.Deployment) (bool, error) {
+func PushLinks(client *kclient.Client, k8sComponents []devfile.Component, labels map[string]string, deployment *v1.Deployment, context string) (bool, error) {
 	serviceBindingSupport, err := client.IsServiceBindingSupported()
 	if err != nil {
 		return false, err
 	}
 
 	if !serviceBindingSupport {
-		return pushLinksWithoutOperator(client, k8sComponents, labels, deployment)
+		return pushLinksWithoutOperator(client, k8sComponents, labels, deployment, context)
 	}
 
-	return pushLinksWithOperator(client, k8sComponents, labels, deployment)
+	return pushLinksWithOperator(client, k8sComponents, labels, deployment, context)
 }
 
 // pushLinksWithOperator creates links or deletes links (if service binding operator is installed) between components and services
 // returns true if the component needs to be restarted (a secret was generated and added to the deployment)
-func pushLinksWithOperator(client *kclient.Client, k8sComponents []devfile.Component, labels map[string]string, deployment *v1.Deployment) (bool, error) {
+func pushLinksWithOperator(client *kclient.Client, k8sComponents []devfile.Component, labels map[string]string, deployment *v1.Deployment, context string) (bool, error) {
 
 	ownerReference := generator.GetOwnerReference(deployment)
 	deployed, err := ListDeployedServices(client, labels)
@@ -61,6 +62,12 @@ func pushLinksWithOperator(client *kclient.Client, k8sComponents []devfile.Compo
 	for _, c := range k8sComponents {
 		// get the string representation of the YAML definition of a CRD
 		strCRD := c.Kubernetes.Inlined
+		if c.Kubernetes.Uri != "" {
+			strCRD, err = getDataFromURI(c.Kubernetes.Uri, context, devfilefs.DefaultFs{})
+			if err != nil {
+				return false, err
+			}
+		}
 
 		// convert the YAML definition into map[string]interface{} since it's needed to create dynamic resource
 		d := NewDynamicCRD()
@@ -119,7 +126,7 @@ func pushLinksWithOperator(client *kclient.Client, k8sComponents []devfile.Compo
 
 // pushLinksWithoutOperator creates links or deletes links (if service binding operator is not installed) between components and services
 // returns true if the component needs to be restarted (a secret was generated and added to the deployment)
-func pushLinksWithoutOperator(client *kclient.Client, k8sComponents []devfile.Component, labels map[string]string, deployment *v1.Deployment) (bool, error) {
+func pushLinksWithoutOperator(client *kclient.Client, k8sComponents []devfile.Component, labels map[string]string, deployment *v1.Deployment, context string) (bool, error) {
 
 	// check csv support before proceeding
 	csvSupport, err := IsCSVSupported()
@@ -146,6 +153,12 @@ func pushLinksWithoutOperator(client *kclient.Client, k8sComponents []devfile.Co
 	for _, c := range k8sComponents {
 		// get the string representation of the YAML definition of a CRD
 		strCRD := c.Kubernetes.Inlined
+		if c.Kubernetes.Uri != "" {
+			strCRD, err = getDataFromURI(c.Kubernetes.Uri, context, devfilefs.DefaultFs{})
+			if err != nil {
+				return false, err
+			}
+		}
 
 		// convert the YAML definition into map[string]interface{} since it's needed to create dynamic resource
 		d := NewDynamicCRD()
diff --git a/pkg/service/service.go b/pkg/service/service.go
index 22a8876e3..b649643bc 100644
--- a/pkg/service/service.go
+++ b/pkg/service/service.go
@@ -3,13 +3,18 @@ package service
 import (
 	"encoding/json"
 	"fmt"
+	"net/url"
+	"os"
+	"path/filepath"
 	"strings"
 
 	devfile "github.com/devfile/api/v2/pkg/apis/workspaces/v1alpha2"
 	"github.com/devfile/library/pkg/devfile/parser/data/v2/common"
 	parsercommon "github.com/devfile/library/pkg/devfile/parser/data/v2/common"
+	devfilefs "github.com/devfile/library/pkg/testingutil/filesystem"
 	"github.com/openshift/odo/pkg/kclient"
 	"github.com/openshift/odo/pkg/log"
+	"github.com/openshift/odo/pkg/util"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/klog"
@@ -36,6 +41,10 @@ const ServiceLabel = "app.kubernetes.io/service-name"
 // ServiceKind is the kind of the service in the service binding object
 const ServiceKind = "app.kubernetes.io/service-kind"
 
+const UriFolder = "kubernetes"
+
+const filePrefix = "odo-service-"
+
 // GetCSV checks if the CR provided by the user in the YAML file exists in the namesapce
 // It returns a CR (string representation) and CSV (Operator) upon successfully
 // able to find them, an error otherwise.
@@ -362,7 +371,11 @@ func IsDefined(name string, devfileObj parser.DevfileObj) (bool, error) {
 }
 
 // ListDevfileLinks returns the names of the links defined in a Devfile
-func ListDevfileLinks(devfileObj parser.DevfileObj) ([]string, error) {
+func ListDevfileLinks(devfileObj parser.DevfileObj, context string) ([]string, error) {
+	return listDevfileLinks(devfileObj, context, devfilefs.DefaultFs{})
+}
+
+func listDevfileLinks(devfileObj parser.DevfileObj, context string, fs devfilefs.Filesystem) ([]string, error) {
 	if devfileObj.Data == nil {
 		return nil, nil
 	}
@@ -374,8 +387,15 @@ func ListDevfileLinks(devfileObj parser.DevfileObj) ([]string, error) {
 	}
 	var services []string
 	for _, c := range components {
+		inlined := c.Kubernetes.Inlined
+		if c.Kubernetes.Uri != "" {
+			inlined, err = getDataFromURI(c.Kubernetes.Uri, context, fs)
+			if err != nil {
+				return []string{}, err
+			}
+		}
 		var u unstructured.Unstructured
-		err = yaml.Unmarshal([]byte(c.Kubernetes.Inlined), &u)
+		err = yaml.Unmarshal([]byte(inlined), &u)
 		if err != nil {
 			return nil, err
 		}
@@ -405,8 +425,12 @@ func ListDevfileLinks(devfileObj parser.DevfileObj) ([]string, error) {
 	return services, nil
 }
 
-// ListDevfileServices returns the services defined in a Devfile
-func ListDevfileServices(devfileObj parser.DevfileObj) (map[string]unstructured.Unstructured, error) {
+// ListDevfileServices returns the names of the services defined in a Devfile
+func ListDevfileServices(devfileObj parser.DevfileObj, componentContext string) (map[string]unstructured.Unstructured, error) {
+	return listDevfileServices(devfileObj, componentContext, devfilefs.DefaultFs{})
+}
+
+func listDevfileServices(devfileObj parser.DevfileObj, componentContext string, fs devfilefs.Filesystem) (map[string]unstructured.Unstructured, error) {
 	if devfileObj.Data == nil {
 		return nil, nil
 	}
@@ -418,8 +442,15 @@ func ListDevfileServices(devfileObj parser.DevfileObj) (map[string]unstructured.
 	}
 	services := map[string]unstructured.Unstructured{}
 	for _, c := range components {
+		inlined := c.Kubernetes.Inlined
+		if c.Kubernetes.Uri != "" {
+			inlined, err = getDataFromURI(c.Kubernetes.Uri, componentContext, fs)
+			if err != nil {
+				return nil, err
+			}
+		}
 		var u unstructured.Unstructured
-		err = yaml.Unmarshal([]byte(c.Kubernetes.Inlined), &u)
+		err = yaml.Unmarshal([]byte(inlined), &u)
 		if err != nil {
 			return nil, err
 		}
@@ -429,7 +460,11 @@ func ListDevfileServices(devfileObj parser.DevfileObj) (map[string]unstructured.
 }
 
 // FindDevfileServiceBinding returns the name of the ServiceBinding defined in a Devfile matching kind and name
-func FindDevfileServiceBinding(devfileObj parser.DevfileObj, kind string, name string) (string, bool, error) {
+func FindDevfileServiceBinding(devfileObj parser.DevfileObj, kind string, name, context string) (string, bool, error) {
+	return findDevfileServiceBinding(devfileObj, kind, name, context, devfilefs.DefaultFs{})
+}
+
+func findDevfileServiceBinding(devfileObj parser.DevfileObj, kind string, name, context string, fs devfilefs.Filesystem) (string, bool, error) {
 	if devfileObj.Data == nil {
 		return "", false, nil
 	}
@@ -441,15 +476,22 @@ func FindDevfileServiceBinding(devfileObj parser.DevfileObj, kind string, name s
 	}
 
 	for _, c := range components {
+		inlined := c.Kubernetes.Inlined
+		if c.Kubernetes.Uri != "" {
+			inlined, err = getDataFromURI(c.Kubernetes.Uri, context, fs)
+			if err != nil {
+				return "", false, err
+			}
+		}
 		var u unstructured.Unstructured
-		err = yaml.Unmarshal([]byte(c.Kubernetes.Inlined), &u)
+		err = yaml.Unmarshal([]byte(inlined), &u)
 		if err != nil {
 			return "", false, err
 		}
 
 		if isLinkResource(u.GetKind()) {
 			var sbr servicebinding.ServiceBinding
-			err = yaml.Unmarshal([]byte(c.Kubernetes.Inlined), &sbr)
+			err = yaml.Unmarshal([]byte(inlined), &sbr)
 			if err != nil {
 				return "", false, err
 			}
@@ -488,8 +530,57 @@ func AddKubernetesComponentToDevfile(crd, name string, devfileObj parser.Devfile
 	return devfileObj.WriteYamlDevfile()
 }
 
+// AddKubernetesComponent adds the crd information to a separate file and adds the uri information to a devfile component
+func AddKubernetesComponent(crd, name, componentContext string, devfile parser.DevfileObj) error {
+	return addKubernetesComponent(crd, name, componentContext, devfile, devfilefs.DefaultFs{})
+}
+
+// AddKubernetesComponent adds the crd information to a separate file and adds the uri information to a devfile component
+func addKubernetesComponent(crd, name, componentContext string, devfileObj parser.DevfileObj, fs devfilefs.Filesystem) error {
+	filePath := filepath.Join(componentContext, UriFolder, filePrefix+name+".yaml")
+	if _, err := fs.Stat(filepath.Join(componentContext, UriFolder)); os.IsNotExist(err) {
+		err = fs.MkdirAll(filepath.Join(componentContext, UriFolder), os.ModePerm)
+		if err != nil {
+			return err
+		}
+	}
+
+	if _, err := fs.Stat(filePath); !os.IsNotExist(err) {
+		return fmt.Errorf("the file %q already exists", filePath)
+	}
+
+	err := fs.WriteFile(filePath, []byte(crd), 0755)
+	if err != nil {
+		return err
+	}
+
+	err = devfileObj.Data.AddComponents([]devfile.Component{{
+		Name: name,
+		ComponentUnion: devfile.ComponentUnion{
+			Kubernetes: &devfile.KubernetesComponent{
+				K8sLikeComponent: devfile.K8sLikeComponent{
+					BaseComponent: devfile.BaseComponent{},
+					K8sLikeComponentLocation: devfile.K8sLikeComponentLocation{
+						Uri: filepath.Join(UriFolder, filePrefix+name+".yaml"),
+					},
+				},
+			},
+		},
+	}})
+	if err != nil {
+		return err
+	}
+
+	return devfileObj.WriteYamlDevfile()
+}
+
 // DeleteKubernetesComponentFromDevfile deletes an inlined Kubernetes component from devfile, if one exists
-func DeleteKubernetesComponentFromDevfile(name string, devfileObj parser.DevfileObj) error {
+func DeleteKubernetesComponentFromDevfile(name string, devfileObj parser.DevfileObj, componentContext string) error {
+	return deleteKubernetesComponentFromDevfile(name, devfileObj, componentContext, devfilefs.DefaultFs{})
+}
+
+// deleteKubernetesComponentFromDevfile deletes an inlined Kubernetes component from devfile, if one exists
+func deleteKubernetesComponentFromDevfile(name string, devfileObj parser.DevfileObj, componentContext string, fs devfilefs.Filesystem) error {
 	components, err := devfileObj.Data.GetComponents(common.DevfileOptions{})
 	if err != nil {
 		return err
@@ -502,6 +593,19 @@ func DeleteKubernetesComponentFromDevfile(name string, devfileObj parser.Devfile
 			if err != nil {
 				return err
 			}
+
+			if c.Kubernetes.Uri != "" {
+				parsedURL, err := url.Parse(c.Kubernetes.Uri)
+				if err != nil {
+					return err
+				}
+				if len(parsedURL.Host) == 0 || len(parsedURL.Scheme) == 0 {
+					err := fs.Remove(filepath.Join(componentContext, c.Kubernetes.Uri))
+					if err != nil {
+						return err
+					}
+				}
+			}
 			found = true
 			break
 		}
@@ -588,7 +692,7 @@ func (d *DynamicCRD) AddComponentLabelsToCRD(labels map[string]string) {
 }
 
 // PushServices updates service(s) from Kubernetes Inlined component in a devfile by creating new ones or removing old ones
-func PushServices(client *kclient.Client, k8sComponents []devfile.Component, labels map[string]string) error {
+func PushServices(client *kclient.Client, k8sComponents []devfile.Component, labels map[string]string, context string) error {
 
 	// check csv support before proceeding
 	csvSupported, err := IsCSVSupported()
@@ -611,8 +715,15 @@ func PushServices(client *kclient.Client, k8sComponents []devfile.Component, lab
 
 	// create an object on the kubernetes cluster for all the Kubernetes Inlined components
 	for _, c := range k8sComponents {
+		inlined := c.Kubernetes.Inlined
+		if c.Kubernetes.Uri != "" {
+			inlined, err = getDataFromURI(c.Kubernetes.Uri, context, devfilefs.DefaultFs{})
+			if err != nil {
+				return err
+			}
+		}
 		// get the string representation of the YAML definition of a CRD
-		strCRD := c.Kubernetes.Inlined
+		strCRD := inlined
 
 		// convert the YAML definition into map[string]interface{} since it's needed to create dynamic resource
 		d := NewDynamicCRD()
@@ -703,7 +814,7 @@ func ListDeployedServices(client *kclient.Client, labels map[string]string) (map
 
 // UpdateServicesWithOwnerReferences adds an owner reference to an inlined Kubernetes resource (except service binding objects)
 // if not already present in the list of owner references
-func UpdateServicesWithOwnerReferences(client *kclient.Client, k8sComponents []devfile.Component, ownerReference metav1.OwnerReference) error {
+func UpdateServicesWithOwnerReferences(client *kclient.Client, k8sComponents []devfile.Component, ownerReference metav1.OwnerReference, context string) error {
 	csvSupport, err := client.IsCSVSupported()
 	if err != nil {
 		return err
@@ -716,6 +827,12 @@ func UpdateServicesWithOwnerReferences(client *kclient.Client, k8sComponents []d
 	for _, c := range k8sComponents {
 		// get the string representation of the YAML definition of a CRD
 		strCRD := c.Kubernetes.Inlined
+		if c.Kubernetes.Uri != "" {
+			strCRD, err = getDataFromURI(c.Kubernetes.Uri, context, devfilefs.DefaultFs{})
+			if err != nil {
+				return err
+			}
+		}
 
 		// convert the YAML definition into map[string]interface{} since it's needed to create dynamic resource
 		d := NewDynamicCRD()
@@ -821,3 +938,29 @@ func createOperatorService(client *kclient.Client, d *DynamicCRD, labels map[str
 	}
 	return cr, kind, err
 }
+
+// getDataFromURI gets the data from the given URI
+// if the uri is a local path, we use the componentContext to complete the local path
+func getDataFromURI(uri, componentContext string, fs devfilefs.Filesystem) (string, error) {
+
+	parsedURL, err := url.Parse(uri)
+	if err != nil {
+		return "", err
+	}
+	if len(parsedURL.Host) != 0 && len(parsedURL.Scheme) != 0 {
+		params := util.HTTPRequestParams{
+			URL: uri,
+		}
+		dataBytes, err := util.DownloadFileInMemoryWithCache(params, 1)
+		if err != nil {
+			return "", err
+		}
+		return string(dataBytes), nil
+	} else {
+		dataBytes, err := fs.ReadFile(filepath.Join(componentContext, uri))
+		if err != nil {
+			return "", err
+		}
+		return string(dataBytes), nil
+	}
+}


Test patch:
diff --git a/pkg/devfile/adapters/common/utils_test.go b/pkg/devfile/adapters/common/utils_test.go
index 8e6768ed6..92d69273b 100644
--- a/pkg/devfile/adapters/common/utils_test.go
+++ b/pkg/devfile/adapters/common/utils_test.go
@@ -2,6 +2,7 @@ package common
 
 import (
 	"os"
+	"path/filepath"
 	"reflect"
 	"testing"
 
@@ -11,6 +12,8 @@ import (
 	devfileParser "github.com/devfile/library/pkg/devfile/parser"
 	parsercommon "github.com/devfile/library/pkg/devfile/parser/data/v2/common"
 	"github.com/devfile/library/pkg/testingutil"
+	devfileFileSystem "github.com/devfile/library/pkg/testingutil/filesystem"
+	odotestingutil "github.com/openshift/odo/pkg/testingutil"
 )
 
 func TestIsEnvPresent(t *testing.T) {
@@ -576,3 +579,112 @@ func TestGetCommandsFromEvent(t *testing.T) {
 	}
 
 }
+
+func Test_removeDevfileURIContents(t *testing.T) {
+	fs := devfileFileSystem.NewFakeFs()
+
+	uriFolderName := "kubernetes"
+
+	fileName0 := "odo-service-some-service.yaml"
+	fileName1 := "odo-url-some-url.yaml"
+
+	err := fs.MkdirAll(uriFolderName, os.ModePerm)
+	if err != nil {
+		t.Errorf("unexpected error: %v", err)
+	}
+
+	file0, err := fs.Create(filepath.Join(uriFolderName, fileName0))
+	if err != nil {
+		t.Errorf("unexpected error: %v", err)
+	}
+
+	file1, err := fs.Create(filepath.Join(uriFolderName, fileName1))
+	if err != nil {
+		t.Errorf("unexpected error: %v", err)
+	}
+
+	addURIComponents := func(obj devfileParser.DevfileObj, name, uri string) error {
+		err = obj.Data.AddComponents([]devfilev1.Component{{
+			Name: name,
+			ComponentUnion: devfilev1.ComponentUnion{
+				Kubernetes: &devfilev1.KubernetesComponent{
+					K8sLikeComponent: devfilev1.K8sLikeComponent{
+						BaseComponent: devfilev1.BaseComponent{},
+						K8sLikeComponentLocation: devfilev1.K8sLikeComponentLocation{
+							Uri: uri,
+						},
+					},
+				},
+			},
+		}})
+		if err != nil {
+			return err
+		}
+		return nil
+	}
+
+	devfileObj := odotestingutil.GetTestDevfileObj(fs)
+	err = addURIComponents(devfileObj, "some-service.yaml", file0.Name())
+	if err != nil {
+		t.Errorf("unexpected error: %v", err)
+	}
+	err = addURIComponents(devfileObj, "some-ingress.yaml", file1.Name())
+	if err != nil {
+		t.Errorf("unexpected error: %v", err)
+	}
+	err = addURIComponents(devfileObj, "some-route.yaml", "https://example.com")
+	if err != nil {
+		t.Errorf("unexpected error: %v", err)
+	}
+
+	devfileObjWithMissingFiles := odotestingutil.GetTestDevfileObj(fs)
+	err = addURIComponents(devfileObjWithMissingFiles, "some-blah.yaml", file0.Name()+"blah")
+	if err != nil {
+		t.Errorf("unexpected error: %v", err)
+	}
+
+	type args struct {
+		devfile          devfileParser.DevfileObj
+		componentContext string
+	}
+	tests := []struct {
+		name    string
+		args    args
+		wantErr bool
+	}{
+		{
+			name: "case 1: the files mentioned in the URI exists",
+			args: args{
+				devfile:          devfileObj,
+				componentContext: "",
+			},
+		},
+		{
+			name: "case 2: the files mentioned in the URI don't exists",
+			args: args{
+				devfile:          devfileObjWithMissingFiles,
+				componentContext: "",
+			},
+			wantErr: true,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			if err := removeDevfileURIContents(tt.args.devfile, tt.args.componentContext, fs); (err != nil) != tt.wantErr {
+				t.Errorf("RemoveDevfileURIContents() error = %v, wantErr %v", err, tt.wantErr)
+			}
+
+			if !tt.wantErr {
+				files, err := fs.ReadDir(uriFolderName)
+				if err != nil {
+					t.Errorf("unexpected error: %v", err)
+				}
+				if len(files) != 0 {
+					t.Errorf("some files were not removed from the folder %v", uriFolderName)
+				}
+			}
+
+			_ = fs.RemoveAll(uriFolderName)
+		})
+	}
+}
diff --git a/pkg/service/service_test.go b/pkg/service/service_test.go
index 488267207..d241114a8 100644
--- a/pkg/service/service_test.go
+++ b/pkg/service/service_test.go
@@ -1,16 +1,18 @@
 package service
 
 import (
+	"os"
+	"path/filepath"
+	"reflect"
 	"sort"
+	"testing"
 
 	"github.com/devfile/api/v2/pkg/apis/workspaces/v1alpha2"
 	devfile "github.com/devfile/api/v2/pkg/apis/workspaces/v1alpha2"
 	"github.com/devfile/library/pkg/devfile/parser/data/v2/common"
+	"github.com/openshift/odo/pkg/testingutil"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 
-	"reflect"
-	"testing"
-
 	"github.com/devfile/library/pkg/devfile/parser"
 	devfileCtx "github.com/devfile/library/pkg/devfile/parser/context"
 	"github.com/devfile/library/pkg/devfile/parser/data"
@@ -22,7 +24,12 @@ type inlinedComponent struct {
 	inlined string
 }
 
-func getDevfileData(t *testing.T, inlined []inlinedComponent) data.DevfileData {
+type uriComponent struct {
+	name string
+	uri  string
+}
+
+func getDevfileData(t *testing.T, inlined []inlinedComponent, uriComp []uriComponent) data.DevfileData {
 	devfileData, err := data.NewDevfileData(string(data.APISchemaVersion200))
 	if err != nil {
 		t.Error(err)
@@ -46,6 +53,25 @@ func getDevfileData(t *testing.T, inlined []inlinedComponent) data.DevfileData {
 			t.Error(err)
 		}
 	}
+	for _, component := range uriComp {
+		err = devfileData.AddComponents([]v1alpha2.Component{{
+			Name: component.name,
+			ComponentUnion: devfile.ComponentUnion{
+				Kubernetes: &devfile.KubernetesComponent{
+					K8sLikeComponent: devfile.K8sLikeComponent{
+						BaseComponent: devfile.BaseComponent{},
+						K8sLikeComponentLocation: devfile.K8sLikeComponentLocation{
+							Uri: component.uri,
+						},
+					},
+				},
+			},
+		},
+		})
+		if err != nil {
+			t.Error(err)
+		}
+	}
 	return devfileData
 }
 
@@ -69,7 +95,7 @@ func TestAddKubernetesComponentToDevfile(t *testing.T) {
 				crd:  "test CRD",
 				name: "testName",
 				devfileObj: parser.DevfileObj{
-					Data: getDevfileData(t, nil),
+					Data: getDevfileData(t, nil, nil),
 					Ctx:  devfileCtx.FakeContext(fs, parser.OutputDevfileYamlPath),
 				},
 			},
@@ -109,6 +135,13 @@ func TestAddKubernetesComponentToDevfile(t *testing.T) {
 func TestDeleteKubernetesComponentFromDevfile(t *testing.T) {
 	fs := devfileFileSystem.NewFakeFs()
 
+	testFolderName := "someFolder"
+	testFileName, err := setup(testFolderName, fs)
+	if err != nil {
+		t.Errorf("unexpected error : %v", err)
+		return
+	}
+
 	type args struct {
 		name       string
 		devfileObj parser.DevfileObj
@@ -129,7 +162,42 @@ func TestDeleteKubernetesComponentFromDevfile(t *testing.T) {
 							name:    "testName",
 							inlined: "test CRD",
 						},
-					}),
+					}, nil),
+					Ctx: devfileCtx.FakeContext(fs, parser.OutputDevfileYamlPath),
+				},
+			},
+			wantErr: false,
+			want:    []v1alpha2.Component{},
+		},
+		{
+			name: "Case 2: Remove a uri based component from devfile.yaml",
+			args: args{
+				name: "testName",
+				devfileObj: parser.DevfileObj{
+					Data: func() data.DevfileData {
+						devfileData, err := data.NewDevfileData(string(data.APISchemaVersion200))
+						if err != nil {
+							t.Error(err)
+						}
+						err = devfileData.AddComponents([]v1alpha2.Component{{
+							Name: "testName",
+							ComponentUnion: devfile.ComponentUnion{
+								Kubernetes: &devfile.KubernetesComponent{
+									K8sLikeComponent: devfile.K8sLikeComponent{
+										BaseComponent: devfile.BaseComponent{},
+										K8sLikeComponentLocation: devfile.K8sLikeComponentLocation{
+											Uri: filepath.Join(UriFolder, filepath.Base(testFileName.Name())),
+										},
+									},
+								},
+							},
+						},
+						})
+						if err != nil {
+							t.Error(err)
+						}
+						return devfileData
+					}(),
 					Ctx: devfileCtx.FakeContext(fs, parser.OutputDevfileYamlPath),
 				},
 			},
@@ -139,7 +207,7 @@ func TestDeleteKubernetesComponentFromDevfile(t *testing.T) {
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			if err := DeleteKubernetesComponentFromDevfile(tt.args.name, tt.args.devfileObj); (err != nil) != tt.wantErr {
+			if err := deleteKubernetesComponentFromDevfile(tt.args.name, tt.args.devfileObj, testFolderName, fs); (err != nil) != tt.wantErr {
 				t.Errorf("DeleteKubernetesComponentFromDevfile() error = %v, wantErr %v", err, tt.wantErr)
 			}
 			got, err := tt.args.devfileObj.Data.GetComponents(common.DevfileOptions{})
@@ -155,6 +223,28 @@ func TestDeleteKubernetesComponentFromDevfile(t *testing.T) {
 
 func TestListDevfileServices(t *testing.T) {
 	fs := devfileFileSystem.NewFakeFs()
+
+	testFolderName := "someFolder"
+	testFileName, err := setup(testFolderName, fs)
+	if err != nil {
+		t.Errorf("unexpected error : %v", err)
+		return
+	}
+
+	uriData := `
+apiVersion: redis.redis.opstreelabs.in/v1beta1
+kind: Redis
+metadata:
+  name: redis
+spec:
+  kubernetesConfig:
+    image: quay.io/opstree/redis:v6.2`
+
+	err = fs.WriteFile(testFileName.Name(), []byte(uriData), os.ModePerm)
+	if err != nil {
+		t.Errorf("unexpected error: %v", err)
+	}
+
 	tests := []struct {
 		name       string
 		devfileObj parser.DevfileObj
@@ -164,7 +254,7 @@ func TestListDevfileServices(t *testing.T) {
 		{
 			name: "No service in devfile",
 			devfileObj: parser.DevfileObj{
-				Data: getDevfileData(t, nil),
+				Data: getDevfileData(t, nil, nil),
 				Ctx:  devfileCtx.FakeContext(fs, parser.OutputDevfileYamlPath),
 			},
 			wantKeys: []string{},
@@ -174,17 +264,6 @@ func TestListDevfileServices(t *testing.T) {
 			name: "Services including service bindings in devfile",
 			devfileObj: parser.DevfileObj{
 				Data: getDevfileData(t, []inlinedComponent{
-					{
-						name: "service1",
-						inlined: `
-apiVersion: redis.redis.opstreelabs.in/v1beta1
-kind: Redis
-metadata:
-  name: redis
-spec:
-  kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2`,
-					},
 					{
 						name: "link1",
 						inlined: `
@@ -206,6 +285,11 @@ spec:
     name: redis
     version: v1beta1`,
 					},
+				}, []uriComponent{
+					{
+						name: "service1",
+						uri:  filepath.Join(UriFolder, filepath.Base(testFileName.Name())),
+					},
 				}),
 			},
 			wantKeys: []string{"Redis/service1", "ServiceBinding/link1"},
@@ -225,7 +309,7 @@ spec:
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			got, gotErr := ListDevfileServices(tt.devfileObj)
+			got, gotErr := listDevfileServices(tt.devfileObj, testFolderName, fs)
 			gotKeys := getKeys(got)
 			if !reflect.DeepEqual(gotKeys, tt.wantKeys) {
 				t.Errorf("%s: got %v, expect %v", t.Name(), gotKeys, tt.wantKeys)
@@ -239,6 +323,28 @@ spec:
 
 func TestListDevfileLinks(t *testing.T) {
 	fs := devfileFileSystem.NewFakeFs()
+
+	testFolderName := "someFolder"
+	testFileName, err := setup(testFolderName, fs)
+	if err != nil {
+		t.Errorf("unexpected error : %v", err)
+		return
+	}
+
+	uriData := `
+apiVersion: redis.redis.opstreelabs.in/v1beta1
+kind: Redis
+metadata:
+ name: redis
+spec:
+ kubernetesConfig:
+   image: quay.io/opstree/redis:v6.2`
+
+	err = fs.WriteFile(testFileName.Name(), []byte(uriData), os.ModePerm)
+	if err != nil {
+		t.Errorf("unexpected error: %v", err)
+	}
+
 	tests := []struct {
 		name       string
 		devfileObj parser.DevfileObj
@@ -248,7 +354,7 @@ func TestListDevfileLinks(t *testing.T) {
 		{
 			name: "No service in devfile",
 			devfileObj: parser.DevfileObj{
-				Data: getDevfileData(t, nil),
+				Data: getDevfileData(t, nil, nil),
 				Ctx:  devfileCtx.FakeContext(fs, parser.OutputDevfileYamlPath),
 			},
 			want:    nil,
@@ -258,37 +364,26 @@ func TestListDevfileLinks(t *testing.T) {
 			name: "Services including service bindings in devfile",
 			devfileObj: parser.DevfileObj{
 				Data: getDevfileData(t, []inlinedComponent{
-					{
-						name: "service1",
-						inlined: `
-apiVersion: redis.redis.opstreelabs.in/v1beta1
-kind: Redis
-metadata:
-  name: redis
-spec:
-  kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2`,
-					},
 					{
 						name: "link1",
 						inlined: `
 apiVersion: binding.operators.coreos.com/v1alpha1
 kind: ServiceBinding
 metadata:
-  name: nodejs-prj1-api-vtzg-redis-redis
+ name: nodejs-prj1-api-vtzg-redis-redis
 spec:
-  application:
-    group: apps
-    name: nodejs-prj1-api-vtzg-app
-    resource: deployments
-    version: v1
-  bindAsFiles: false
-  detectBindingResources: true
-  services:
-  - group: redis.redis.opstreelabs.in
-    kind: Redis
-    name: redis
-    version: v1beta1`,
+ application:
+   group: apps
+   name: nodejs-prj1-api-vtzg-app
+   resource: deployments
+   version: v1
+ bindAsFiles: false
+ detectBindingResources: true
+ services:
+ - group: redis.redis.opstreelabs.in
+   kind: Redis
+   name: redis
+   version: v1beta1`,
 					},
 					{
 						name: "link2",
@@ -296,20 +391,25 @@ spec:
 apiVersion: binding.operators.coreos.com/v1alpha1
 kind: ServiceBinding
 metadata:
-  name: nodejs-prj1-api-vtzg-redis-redis
+ name: nodejs-prj1-api-vtzg-redis-redis
 spec:
-  application:
-    group: apps
-    name: nodejs-prj1-api-vtzg-app
-    resource: deployments
-    version: v1
-  bindAsFiles: false
-  detectBindingResources: true
-  services:
-  - group: redis.redis.opstreelabs.in
-    kind: Service
-    name: other
-    version: v1beta1`,
+ application:
+   group: apps
+   name: nodejs-prj1-api-vtzg-app
+   resource: deployments
+   version: v1
+ bindAsFiles: false
+ detectBindingResources: true
+ services:
+ - group: redis.redis.opstreelabs.in
+   kind: Service
+   name: other
+   version: v1beta1`,
+					},
+				}, []uriComponent{
+					{
+						name: "service1",
+						uri:  filepath.Join(UriFolder, filepath.Base(testFileName.Name())),
 					},
 				}),
 				Ctx: devfileCtx.FakeContext(fs, parser.OutputDevfileYamlPath),
@@ -321,7 +421,7 @@ spec:
 
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			got, gotErr := ListDevfileLinks(tt.devfileObj)
+			got, gotErr := listDevfileLinks(tt.devfileObj, testFolderName, fs)
 			if !reflect.DeepEqual(got, tt.want) {
 				t.Errorf("%s: got %v, expect %v", t.Name(), got, tt.want)
 			}
@@ -334,39 +434,50 @@ spec:
 
 func TestFindDevfileServiceBinding(t *testing.T) {
 	fs := devfileFileSystem.NewFakeFs()
-	devfileObj := parser.DevfileObj{
-		Data: getDevfileData(t, []inlinedComponent{
-			{
-				name: "service1",
-				inlined: `
+
+	testFolderName := "someFolder"
+	testFileName, err := setup(testFolderName, fs)
+	if err != nil {
+		t.Errorf("unexpected error : %v", err)
+		return
+	}
+
+	uriData := `
 apiVersion: redis.redis.opstreelabs.in/v1beta1
 kind: Redis
 metadata:
-  name: redis
+ name: redis
 spec:
-  kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2`,
-			},
+ kubernetesConfig:
+   image: quay.io/opstree/redis:v6.2`
+
+	err = fs.WriteFile(testFileName.Name(), []byte(uriData), os.ModePerm)
+	if err != nil {
+		t.Errorf("unexpected error: %v", err)
+	}
+
+	devfileObj := parser.DevfileObj{
+		Data: getDevfileData(t, []inlinedComponent{
 			{
 				name: "link1",
 				inlined: `
 apiVersion: binding.operators.coreos.com/v1alpha1
 kind: ServiceBinding
 metadata:
-  name: nodejs-prj1-api-vtzg-redis-redis
+ name: nodejs-prj1-api-vtzg-redis-redis
 spec:
-  application:
-    group: apps
-    name: nodejs-prj1-api-vtzg-app
-    resource: deployments
-    version: v1
-  bindAsFiles: false
-  detectBindingResources: true
-  services:
-  - group: redis.redis.opstreelabs.in
-    kind: Redis
-    name: redis
-    version: v1beta1`,
+ application:
+   group: apps
+   name: nodejs-prj1-api-vtzg-app
+   resource: deployments
+   version: v1
+ bindAsFiles: false
+ detectBindingResources: true
+ services:
+ - group: redis.redis.opstreelabs.in
+   kind: Redis
+   name: redis
+   version: v1beta1`,
 			},
 			{
 				name: "link2",
@@ -374,20 +485,25 @@ spec:
 apiVersion: binding.operators.coreos.com/v1alpha1
 kind: ServiceBinding
 metadata:
-  name: nodejs-prj1-api-vtzg-redis-redis
+ name: nodejs-prj1-api-vtzg-redis-redis
 spec:
-  application:
-    group: apps
-    name: nodejs-prj1-api-vtzg-app
-    resource: deployments
-    version: v1
-  bindAsFiles: false
-  detectBindingResources: true
-  services:
-    - group: redis.redis.opstreelabs.in
-      kind: Service
-      name: other
-      version: v1beta1`,
+ application:
+   group: apps
+   name: nodejs-prj1-api-vtzg-app
+   resource: deployments
+   version: v1
+ bindAsFiles: false
+ detectBindingResources: true
+ services:
+   - group: redis.redis.opstreelabs.in
+     kind: Service
+     name: other
+     version: v1beta1`,
+			},
+		}, []uriComponent{
+			{
+				name: "service1",
+				uri:  filepath.Join(UriFolder, filepath.Base(testFileName.Name())),
 			},
 		}),
 		Ctx: devfileCtx.FakeContext(fs, parser.OutputDevfileYamlPath),
@@ -428,7 +544,7 @@ spec:
 
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			got, gotOK, gotErr := FindDevfileServiceBinding(devfileObj, tt.args.kind, tt.args.name)
+			got, gotOK, gotErr := findDevfileServiceBinding(devfileObj, tt.args.kind, tt.args.name, testFolderName, fs)
 			if !reflect.DeepEqual(got, tt.want) {
 				t.Errorf("%s: got %v, expect %v", t.Name(), got, tt.want)
 			}
@@ -441,3 +557,92 @@ spec:
 		})
 	}
 }
+
+func setup(testFolderName string, fs devfileFileSystem.Filesystem) (devfileFileSystem.File, error) {
+	err := fs.MkdirAll(testFolderName, os.ModePerm)
+	if err != nil {
+		return nil, err
+	}
+	err = fs.MkdirAll(filepath.Join(testFolderName, UriFolder), os.ModePerm)
+	if err != nil {
+		return nil, err
+	}
+	testFileName, err := fs.Create(filepath.Join(testFolderName, UriFolder, "example.yaml"))
+	if err != nil {
+		return nil, err
+	}
+	return testFileName, nil
+}
+
+func Test_addKubernetesComponent(t *testing.T) {
+
+	type args struct {
+		crd               string
+		name              string
+		componentContext  string
+		devfileObj        parser.DevfileObj
+		fs                devfileFileSystem.Filesystem
+		uriFolderExists   bool
+		fileAlreadyExists bool
+	}
+	tests := []struct {
+		name    string
+		args    args
+		wantErr bool
+	}{
+		{
+			name: "case 1: the uri folder doesn't exist",
+			args: args{
+				crd:              "example",
+				name:             "redis-service",
+				componentContext: "/",
+			},
+		},
+		{
+			name: "case 2: the uri folder exist",
+			args: args{
+				crd:             "example",
+				name:            "redis-service",
+				uriFolderExists: true,
+			},
+		},
+		{
+			name: "case 3: the file already exists",
+			args: args{
+				crd:               "example",
+				name:              "redis-service",
+				uriFolderExists:   true,
+				fileAlreadyExists: true,
+			},
+			wantErr: true,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			fs := devfileFileSystem.NewFakeFs()
+			tt.args.devfileObj = testingutil.GetTestDevfileObj(fs)
+			tt.args.fs = fs
+
+			if tt.args.uriFolderExists || tt.args.fileAlreadyExists {
+				err := fs.MkdirAll(UriFolder, os.ModePerm)
+				if err != nil {
+					t.Errorf("unexpected error: %v", err)
+				}
+				defer os.RemoveAll(UriFolder)
+			}
+
+			if tt.args.fileAlreadyExists {
+				testFileName, err := fs.Create(filepath.Join(UriFolder, filePrefix+tt.args.name+".yaml"))
+				if err != nil {
+					t.Errorf("unexpected error: %v", err)
+				}
+
+				defer os.RemoveAll(testFileName.Name())
+			}
+
+			if err := addKubernetesComponent(tt.args.crd, tt.args.name, tt.args.componentContext, tt.args.devfileObj, tt.args.fs); (err != nil) != tt.wantErr {
+				t.Errorf("addKubernetesComponent() error = %v, wantErr %v", err, tt.wantErr)
+			}
+		})
+	}
+}
diff --git a/scripts/minici-presubmit-all-tests.sh b/scripts/minici-presubmit-all-tests.sh
index 007a78963..d3618074b 100755
--- a/scripts/minici-presubmit-all-tests.sh
+++ b/scripts/minici-presubmit-all-tests.sh
@@ -24,7 +24,7 @@ case $1 in
         ;;
     k8s)
         #Removing minishift (dropped support for 3.11) and adding K8S on IBM Cloud
-        export JOB_NAME="odo-k8s-ibmc-pr-tests"
+        export JOB_NAME="odo-k8s-ibmc-pr-build"
         export SENDQUEUE="amqp.ci.queue.k8sibmc.send"
         export SENDTOPIC="amqp.ci.topic.k8sibmc.send"
         export EXCHANGE="amqp.ci.exchange.k8sibmc.send"
diff --git a/tests/integration/operatorhub/cmd_link_test.go b/tests/integration/operatorhub/cmd_link_test.go
index 03228b005..52cf84597 100644
--- a/tests/integration/operatorhub/cmd_link_test.go
+++ b/tests/integration/operatorhub/cmd_link_test.go
@@ -2,6 +2,7 @@ package integration
 
 import (
 	"fmt"
+	"io/ioutil"
 	"os"
 	"path/filepath"
 	"regexp"
@@ -98,6 +99,14 @@ var _ = Describe("odo link command tests for OperatorHub", func() {
 					Expect(stdOut).To(ContainSubstring(svcFullName))
 				})
 
+				It("should not insert the link definition in devfile.yaml when the inlined flag is not used", func() {
+					devfilePath := filepath.Join(commonVar.Context, "devfile.yaml")
+					content, err := ioutil.ReadFile(devfilePath)
+					Expect(err).To(BeNil())
+					matchInOutput := []string{"inlined", "ServiceBinding"}
+					helper.DontMatchAllInOutput(string(content), matchInOutput)
+				})
+
 				When("odo push is executed", func() {
 					BeforeEach(func() {
 						helper.Cmd("odo", "push", "--context", commonVar.Context).ShouldPass()
@@ -141,6 +150,14 @@ var _ = Describe("odo link command tests for OperatorHub", func() {
 					Expect(stdOut).To(ContainSubstring(svcFullName))
 				})
 
+				It("should not insert the link definition in devfile.yaml when the inlined flag is not used", func() {
+					devfilePath := filepath.Join(commonVar.Context, "devfile.yaml")
+					content, err := ioutil.ReadFile(devfilePath)
+					Expect(err).To(BeNil())
+					matchInOutput := []string{"inlined", "Redis", "redis", "ServiceBinding"}
+					helper.DontMatchAllInOutput(string(content), matchInOutput)
+				})
+
 				When("odo push is executed", func() {
 					BeforeEach(func() {
 						helper.Cmd("odo", "push", "--context", commonVar.Context).ShouldPass()
@@ -164,6 +181,78 @@ var _ = Describe("odo link command tests for OperatorHub", func() {
 					})
 				})
 			})
+
+			When("a link between the component and the service is created inline", func() {
+
+				BeforeEach(func() {
+					helper.Cmd("odo", "link", svcFullName, "--context", commonVar.Context, "--inlined").ShouldPass()
+				})
+
+				It("should insert service definition in devfile.yaml when the inlined flag is used", func() {
+					devfilePath := filepath.Join(commonVar.Context, "devfile.yaml")
+					content, err := ioutil.ReadFile(devfilePath)
+					Expect(err).To(BeNil())
+					matchInOutput := []string{"kubernetes", "inlined", "ServiceBinding"}
+					helper.MatchAllInOutput(string(content), matchInOutput)
+				})
+
+				It("should find the link in odo describe", func() {
+					stdOut := helper.Cmd("odo", "describe", "--context", commonVar.Context).ShouldPass().Out()
+					Expect(stdOut).To(ContainSubstring(svcFullName))
+				})
+
+				When("odo push is executed", func() {
+					BeforeEach(func() {
+						helper.Cmd("odo", "push", "--context", commonVar.Context).ShouldPass()
+						name := commonVar.CliRunner.GetRunningPodNameByComponent(componentName, commonVar.Project)
+						Expect(name).To(Not(BeEmpty()))
+					})
+
+					It("should find the link in odo describe", func() {
+						stdOut := helper.Cmd("odo", "describe", "--context", commonVar.Context).ShouldPass().Out()
+						Expect(stdOut).To(ContainSubstring(svcFullName))
+						Expect(stdOut).To(ContainSubstring("Environment Variables"))
+						Expect(stdOut).To(ContainSubstring("REDIS_CLUSTERIP"))
+					})
+				})
+			})
+
+			When("a link with between the component and the service is created with --bind-as-files and --inlined", func() {
+
+				var bindingName string
+				BeforeEach(func() {
+					bindingName = "sbr-" + helper.RandString(6)
+					helper.Cmd("odo", "link", svcFullName, "--bind-as-files", "--name", bindingName, "--context", commonVar.Context, "--inlined").ShouldPass()
+				})
+
+				It("should insert service definition in devfile.yaml when the inlined flag is used", func() {
+					devfilePath := filepath.Join(commonVar.Context, "devfile.yaml")
+					content, err := ioutil.ReadFile(devfilePath)
+					Expect(err).To(BeNil())
+					matchInOutput := []string{"kubernetes", "inlined", "Redis", "redis", "ServiceBinding"}
+					helper.MatchAllInOutput(string(content), matchInOutput)
+				})
+
+				It("should display the link in odo describe", func() {
+					stdOut := helper.Cmd("odo", "describe", "--context", commonVar.Context).ShouldPass().Out()
+					Expect(stdOut).To(ContainSubstring(svcFullName))
+				})
+
+				When("odo push is executed", func() {
+					BeforeEach(func() {
+						helper.Cmd("odo", "push", "--context", commonVar.Context).ShouldPass()
+						name := commonVar.CliRunner.GetRunningPodNameByComponent(componentName, commonVar.Project)
+						Expect(name).To(Not(BeEmpty()))
+					})
+
+					It("should display the link in odo describe", func() {
+						stdOut := helper.Cmd("odo", "describe", "--context", commonVar.Context).ShouldPass().Out()
+						Expect(stdOut).To(ContainSubstring(svcFullName))
+						Expect(stdOut).To(ContainSubstring("Files"))
+						Expect(stdOut).To(ContainSubstring("/bindings/" + bindingName + "/clusterIP"))
+					})
+				})
+			})
 		})
 
 		When("getting sources, a devfile defining a component, a service and a link, and executing odo push", func() {
diff --git a/tests/integration/operatorhub/cmd_service_test.go b/tests/integration/operatorhub/cmd_service_test.go
index 3935e36e0..dbc50e9bc 100644
--- a/tests/integration/operatorhub/cmd_service_test.go
+++ b/tests/integration/operatorhub/cmd_service_test.go
@@ -266,14 +266,14 @@ var _ = Describe("odo service command tests for OperatorHub", func() {
 					})
 				})
 
-				When("a Redis instance is created with no name", func() {
+				When("a Redis instance is created with no name and inlined flag is used", func() {
 					var stdOut string
 					BeforeEach(func() {
-						stdOut = helper.Cmd("odo", "service", "create", fmt.Sprintf("%s/Redis", redisOperator), "--project", commonVar.Project).ShouldPass().Out()
+						stdOut = helper.Cmd("odo", "service", "create", fmt.Sprintf("%s/Redis", redisOperator), "--project", commonVar.Project, "--inlined").ShouldPass().Out()
 						Expect(stdOut).To(ContainSubstring("Successfully added service to the configuration"))
 					})
 
-					It("should insert service definition in devfile.yaml", func() {
+					It("should insert service definition in devfile.yaml when the inlined flag is used", func() {
 						devfilePath := filepath.Join(commonVar.Context, "devfile.yaml")
 						content, err := ioutil.ReadFile(devfilePath)
 						Expect(err).To(BeNil())
@@ -410,6 +410,14 @@ var _ = Describe("odo service command tests for OperatorHub", func() {
 						helper.Cmd("odo", "service", "delete", svcFullName, "-f").ShouldRun()
 					})
 
+					It("should not insert service definition in devfile.yaml when the inlined flag is not used", func() {
+						devfilePath := filepath.Join(commonVar.Context, "devfile.yaml")
+						content, err := ioutil.ReadFile(devfilePath)
+						Expect(err).To(BeNil())
+						matchInOutput := []string{"redis", "Redis", "inlined"}
+						helper.DontMatchAllInOutput(string(content), matchInOutput)
+					})
+
 					It("should be listed as Not pushed", func() {
 						stdOut := helper.Cmd("odo", "service", "list").ShouldPass().Out()
 						helper.MatchAllInOutput(stdOut, []string{svcFullName, "Not pushed"})