feat: 'one PVC per-workspace' storage class - #818

Merged
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace
Apr 26, 2022
Merged

feat: 'one PVC per-workspace' storage class#818
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace

Conversation

@AObuchow

@AObuchowAObuchow commented Apr 13, 2022

Copy link
Copy Markdown
Collaborator

What does this PR do?

This PR adds a new storage class called 'perWorkspace'. When in use in the devfile, every workspace gets its own PVC.

What issues does this PR fix or reference?

Fix#792

Is it tested? How?

In order to enable the 'perWorkspace' storage class, the controller.devfile.io/storage-type devfile attribute must be set to per-workspace.

Eg.

spec:
template:
attributes:
controller.devfile.io/storage-type: per-workspace

Manual testing:

  • Start up DWO (i.e. make run)
  • Apply the sample devfile that uses the perWorkspace storage class: kubectl apply -f ./samples/theia-next_per-workspaceStorage.yaml -n $NAMESPACE
  • Check K8s status (through terminal or dashboard) and ensure a PVC has been created for the workspace. The naming of the PVC should be of the form storage-[workspaceID]
  • Delete the workspace: kubectl delete dw theia-next -n $NAMESPACE
  • Ensure the PVC is also deleted shortly after (check K8s dashboard for PVC or use terminal commands)

Automated testing:
There is also a new test file, pkg/provision/storage/perWorkspaceStorage_test.go.
It is based off of pkg/provision/storage/CommonStorage_test.go with slight adaptions. It also ensures that the owner reference is set for the perWorkspace PVC, which is required for automatic PVC deletion with cluster garbage collection.

PR Checklist

  • E2E tests pass (when PR is ready, comment /test v8-devworkspace-operator-e2e, v8-che-happy-path to trigger)
    • v8-devworkspace-operator-e2e: DevWorkspace e2e test
    • v8-che-happy-path: Happy path for verification integration with Che

@openshift-ci

Copy link
Copy Markdown

Hi @AObuchow. Thanks for your PR.

I'm waiting for a devfile member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First pass at review -- generally looks good!

I'll get around to deeper review and testing later.

Comment threaddocs/additional-configuration.adoc Outdated
Comment threadpkg/common/naming.go Outdated
Comment threadpkg/constants/constants.go Outdated
Comment threadsamples/flattened_theia-next_perWorkspaceStorage.yaml Outdated
Comment threadpkg/provision/storage/shared.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 8810b3f to 54e9f04CompareApril 13, 2022 21:51
Comment threadpkg/constants/constants.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch 2 times, most recently from 53c8e9b to 51e660bCompareApril 14, 2022 03:54
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 51e660b to ba4c27bCompareApril 14, 2022 15:44
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from ba4c27b to b2ee4e4CompareApril 19, 2022 15:46
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from b2ee4e4 to 8d65602CompareApril 19, 2022 15:50
@AObuchow
AObuchow requested a review from amisevskApril 19, 2022 15:55

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected 👍

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/shared.go Outdated
@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected +1

Awesome, thank you so much for the help & reviews @amisevsk 😁
I made the requested changes.

@AObuchow
AObuchow requested a review from amisevskApril 20, 2022 15:42
@amisevsk

Copy link
Copy Markdown
Collaborator

Well done 👍

Comment threadpkg/common/naming.go
Comment threadpkg/common/naming.go
}

func PerWorkspacePVCName(workspaceId string) string {
return fmt.Sprintf("storage-%s", workspaceId)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
returnfmt.Sprintf("storage-%s", workspaceId)
returnfmt.Sprintf("claim-%s", workspaceId)

Comment on lines +158 to +159
// TODO: Determine the storage size that is needed by iterating through workspace volumes,
// adding the sizes specified and figuring out overrides/defaults

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This TODO is planned to be addressed as part of #740, right?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, or at the least, it might end up being a separate but related issue

@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from dd4baca to 15b6705CompareApril 21, 2022 14:30
@openshift-ciopenshift-ciBot removed the lgtm label Apr 21, 2022
@AObuchow
AObuchow requested a review from ibuziukApril 21, 2022 14:53

@ibuziukibuziuk left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job 👍

Fixdevfile#792.
Signed-off-by: Andrew Obuchowicz <aobuchow@redhat.com>
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 15b6705 to 7b89ee5CompareApril 22, 2022 16:21
@openshift-ciopenshift-ciBot removed the lgtm label Apr 22, 2022
@amisevsk

Copy link
Copy Markdown
Collaborator

/test v8-devworkspace-operator-e2e, v8-che-happy-path

@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: Cannot trigger testing until a trusted user reviews the PR and leaves an /ok-to-test message.

Details

In response to this:

/retest

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@ibuziuk

Copy link
Copy Markdown
Contributor

/retest

@ibuziuk

Copy link
Copy Markdown
Contributor

I believe we can merge with the failed test
@musienko-maxim do you happen to know the state of the happy path?

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We generally treat happy path as optional; the QE folks have had their plate full with other projects and its been unhealthy for a while now.

👍 to merge

@openshift-ci

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: amisevsk, AObuchow, ibuziuk

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@amisevsk

Copy link
Copy Markdown
Collaborator

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test nameCommitDetailsRequiredRerun command
ci/prow/v8-che-happy-path7b89ee5linktrue/test v8-che-happy-path

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support 'per-workspace' storage-class (one PVC per workspace)

3 participants

@AObuchow@amisevsk@ibuziuk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat: 'one PVC per-workspace' storage class - #818

Merged
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace
Apr 26, 2022
Merged

feat: 'one PVC per-workspace' storage class#818
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace

Conversation

@AObuchow

@AObuchowAObuchow commented Apr 13, 2022

Copy link
Copy Markdown
Collaborator

What does this PR do?

This PR adds a new storage class called 'perWorkspace'. When in use in the devfile, every workspace gets its own PVC.

What issues does this PR fix or reference?

Fix#792

Is it tested? How?

In order to enable the 'perWorkspace' storage class, the controller.devfile.io/storage-type devfile attribute must be set to per-workspace.

Eg.

spec:
template:
attributes:
controller.devfile.io/storage-type: per-workspace

Manual testing:

  • Start up DWO (i.e. make run)
  • Apply the sample devfile that uses the perWorkspace storage class: kubectl apply -f ./samples/theia-next_per-workspaceStorage.yaml -n $NAMESPACE
  • Check K8s status (through terminal or dashboard) and ensure a PVC has been created for the workspace. The naming of the PVC should be of the form storage-[workspaceID]
  • Delete the workspace: kubectl delete dw theia-next -n $NAMESPACE
  • Ensure the PVC is also deleted shortly after (check K8s dashboard for PVC or use terminal commands)

Automated testing:
There is also a new test file, pkg/provision/storage/perWorkspaceStorage_test.go.
It is based off of pkg/provision/storage/CommonStorage_test.go with slight adaptions. It also ensures that the owner reference is set for the perWorkspace PVC, which is required for automatic PVC deletion with cluster garbage collection.

PR Checklist

  • E2E tests pass (when PR is ready, comment /test v8-devworkspace-operator-e2e, v8-che-happy-path to trigger)
    • v8-devworkspace-operator-e2e: DevWorkspace e2e test
    • v8-che-happy-path: Happy path for verification integration with Che

@openshift-ci

Copy link
Copy Markdown

Hi @AObuchow. Thanks for your PR.

I'm waiting for a devfile member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First pass at review -- generally looks good!

I'll get around to deeper review and testing later.

Comment threaddocs/additional-configuration.adoc Outdated
Comment threadpkg/common/naming.go Outdated
Comment threadpkg/constants/constants.go Outdated
Comment threadsamples/flattened_theia-next_perWorkspaceStorage.yaml Outdated
Comment threadpkg/provision/storage/shared.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 8810b3f to 54e9f04CompareApril 13, 2022 21:51
Comment threadpkg/constants/constants.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch 2 times, most recently from 53c8e9b to 51e660bCompareApril 14, 2022 03:54
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 51e660b to ba4c27bCompareApril 14, 2022 15:44
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from ba4c27b to b2ee4e4CompareApril 19, 2022 15:46
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from b2ee4e4 to 8d65602CompareApril 19, 2022 15:50
@AObuchow
AObuchow requested a review from amisevskApril 19, 2022 15:55

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected 👍

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/shared.go Outdated
@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected +1

Awesome, thank you so much for the help & reviews @amisevsk 😁
I made the requested changes.

@AObuchow
AObuchow requested a review from amisevskApril 20, 2022 15:42
@amisevsk

Copy link
Copy Markdown
Collaborator

Well done 👍

Comment threadpkg/common/naming.go
Comment threadpkg/common/naming.go
}

func PerWorkspacePVCName(workspaceId string) string {
return fmt.Sprintf("storage-%s", workspaceId)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
returnfmt.Sprintf("storage-%s", workspaceId)
returnfmt.Sprintf("claim-%s", workspaceId)

Comment on lines +158 to +159
// TODO: Determine the storage size that is needed by iterating through workspace volumes,
// adding the sizes specified and figuring out overrides/defaults

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This TODO is planned to be addressed as part of #740, right?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, or at the least, it might end up being a separate but related issue

@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from dd4baca to 15b6705CompareApril 21, 2022 14:30
@openshift-ciopenshift-ciBot removed the lgtm label Apr 21, 2022
@AObuchow
AObuchow requested a review from ibuziukApril 21, 2022 14:53

@ibuziukibuziuk left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job 👍

Fixdevfile#792.
Signed-off-by: Andrew Obuchowicz <aobuchow@redhat.com>
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 15b6705 to 7b89ee5CompareApril 22, 2022 16:21
@openshift-ciopenshift-ciBot removed the lgtm label Apr 22, 2022
@amisevsk

Copy link
Copy Markdown
Collaborator

/test v8-devworkspace-operator-e2e, v8-che-happy-path

@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: Cannot trigger testing until a trusted user reviews the PR and leaves an /ok-to-test message.

Details

In response to this:

/retest

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@ibuziuk

Copy link
Copy Markdown
Contributor

/retest

@ibuziuk

Copy link
Copy Markdown
Contributor

I believe we can merge with the failed test
@musienko-maxim do you happen to know the state of the happy path?

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We generally treat happy path as optional; the QE folks have had their plate full with other projects and its been unhealthy for a while now.

👍 to merge

@openshift-ci

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: amisevsk, AObuchow, ibuziuk

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@amisevsk

Copy link
Copy Markdown
Collaborator

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test nameCommitDetailsRequiredRerun command
ci/prow/v8-che-happy-path7b89ee5linktrue/test v8-che-happy-path

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support 'per-workspace' storage-class (one PVC per workspace)

3 participants

@AObuchow@amisevsk@ibuziuk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: 'one PVC per-workspace' storage class - #818

Merged
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace
Apr 26, 2022
Merged

feat: 'one PVC per-workspace' storage class#818
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace

Conversation

@AObuchow

@AObuchowAObuchow commented Apr 13, 2022

Copy link
Copy Markdown
Collaborator

What does this PR do?

This PR adds a new storage class called 'perWorkspace'. When in use in the devfile, every workspace gets its own PVC.

What issues does this PR fix or reference?

Fix#792

Is it tested? How?

In order to enable the 'perWorkspace' storage class, the controller.devfile.io/storage-type devfile attribute must be set to per-workspace.

Eg.

spec:
template:
attributes:
controller.devfile.io/storage-type: per-workspace

Manual testing:

  • Start up DWO (i.e. make run)
  • Apply the sample devfile that uses the perWorkspace storage class: kubectl apply -f ./samples/theia-next_per-workspaceStorage.yaml -n $NAMESPACE
  • Check K8s status (through terminal or dashboard) and ensure a PVC has been created for the workspace. The naming of the PVC should be of the form storage-[workspaceID]
  • Delete the workspace: kubectl delete dw theia-next -n $NAMESPACE
  • Ensure the PVC is also deleted shortly after (check K8s dashboard for PVC or use terminal commands)

Automated testing:
There is also a new test file, pkg/provision/storage/perWorkspaceStorage_test.go.
It is based off of pkg/provision/storage/CommonStorage_test.go with slight adaptions. It also ensures that the owner reference is set for the perWorkspace PVC, which is required for automatic PVC deletion with cluster garbage collection.

PR Checklist

  • E2E tests pass (when PR is ready, comment /test v8-devworkspace-operator-e2e, v8-che-happy-path to trigger)
    • v8-devworkspace-operator-e2e: DevWorkspace e2e test
    • v8-che-happy-path: Happy path for verification integration with Che

@openshift-ci

Copy link
Copy Markdown

Hi @AObuchow. Thanks for your PR.

I'm waiting for a devfile member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First pass at review -- generally looks good!

I'll get around to deeper review and testing later.

Comment threaddocs/additional-configuration.adoc Outdated
Comment threadpkg/common/naming.go Outdated
Comment threadpkg/constants/constants.go Outdated
Comment threadsamples/flattened_theia-next_perWorkspaceStorage.yaml Outdated
Comment threadpkg/provision/storage/shared.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 8810b3f to 54e9f04CompareApril 13, 2022 21:51
Comment threadpkg/constants/constants.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch 2 times, most recently from 53c8e9b to 51e660bCompareApril 14, 2022 03:54
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 51e660b to ba4c27bCompareApril 14, 2022 15:44
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from ba4c27b to b2ee4e4CompareApril 19, 2022 15:46
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from b2ee4e4 to 8d65602CompareApril 19, 2022 15:50
@AObuchow
AObuchow requested a review from amisevskApril 19, 2022 15:55

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected 👍

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/shared.go Outdated
@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected +1

Awesome, thank you so much for the help & reviews @amisevsk 😁
I made the requested changes.

@AObuchow
AObuchow requested a review from amisevskApril 20, 2022 15:42
@amisevsk

Copy link
Copy Markdown
Collaborator

Well done 👍

Comment threadpkg/common/naming.go
Comment threadpkg/common/naming.go
}

func PerWorkspacePVCName(workspaceId string) string {
return fmt.Sprintf("storage-%s", workspaceId)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
returnfmt.Sprintf("storage-%s", workspaceId)
returnfmt.Sprintf("claim-%s", workspaceId)

Comment on lines +158 to +159
// TODO: Determine the storage size that is needed by iterating through workspace volumes,
// adding the sizes specified and figuring out overrides/defaults

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This TODO is planned to be addressed as part of #740, right?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, or at the least, it might end up being a separate but related issue

@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from dd4baca to 15b6705CompareApril 21, 2022 14:30
@openshift-ciopenshift-ciBot removed the lgtm label Apr 21, 2022
@AObuchow
AObuchow requested a review from ibuziukApril 21, 2022 14:53

@ibuziukibuziuk left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job 👍

Fixdevfile#792.
Signed-off-by: Andrew Obuchowicz <aobuchow@redhat.com>
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 15b6705 to 7b89ee5CompareApril 22, 2022 16:21
@openshift-ciopenshift-ciBot removed the lgtm label Apr 22, 2022
@amisevsk

Copy link
Copy Markdown
Collaborator

/test v8-devworkspace-operator-e2e, v8-che-happy-path

@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: Cannot trigger testing until a trusted user reviews the PR and leaves an /ok-to-test message.

Details

In response to this:

/retest

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@ibuziuk

Copy link
Copy Markdown
Contributor

/retest

@ibuziuk

Copy link
Copy Markdown
Contributor

I believe we can merge with the failed test
@musienko-maxim do you happen to know the state of the happy path?

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We generally treat happy path as optional; the QE folks have had their plate full with other projects and its been unhealthy for a while now.

👍 to merge

@openshift-ci

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: amisevsk, AObuchow, ibuziuk

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@amisevsk

Copy link
Copy Markdown
Collaborator

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test nameCommitDetailsRequiredRerun command
ci/prow/v8-che-happy-path7b89ee5linktrue/test v8-che-happy-path

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support 'per-workspace' storage-class (one PVC per workspace)

3 participants

@AObuchow@amisevsk@ibuziuk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: 'one PVC per-workspace' storage class - #818

Merged
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace
Apr 26, 2022
Merged

feat: 'one PVC per-workspace' storage class#818
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace

Conversation

@AObuchow

@AObuchowAObuchow commented Apr 13, 2022

Copy link
Copy Markdown
Collaborator

What does this PR do?

This PR adds a new storage class called 'perWorkspace'. When in use in the devfile, every workspace gets its own PVC.

What issues does this PR fix or reference?

Fix#792

Is it tested? How?

In order to enable the 'perWorkspace' storage class, the controller.devfile.io/storage-type devfile attribute must be set to per-workspace.

Eg.

spec:
template:
attributes:
controller.devfile.io/storage-type: per-workspace

Manual testing:

  • Start up DWO (i.e. make run)
  • Apply the sample devfile that uses the perWorkspace storage class: kubectl apply -f ./samples/theia-next_per-workspaceStorage.yaml -n $NAMESPACE
  • Check K8s status (through terminal or dashboard) and ensure a PVC has been created for the workspace. The naming of the PVC should be of the form storage-[workspaceID]
  • Delete the workspace: kubectl delete dw theia-next -n $NAMESPACE
  • Ensure the PVC is also deleted shortly after (check K8s dashboard for PVC or use terminal commands)

Automated testing:
There is also a new test file, pkg/provision/storage/perWorkspaceStorage_test.go.
It is based off of pkg/provision/storage/CommonStorage_test.go with slight adaptions. It also ensures that the owner reference is set for the perWorkspace PVC, which is required for automatic PVC deletion with cluster garbage collection.

PR Checklist

  • E2E tests pass (when PR is ready, comment /test v8-devworkspace-operator-e2e, v8-che-happy-path to trigger)
    • v8-devworkspace-operator-e2e: DevWorkspace e2e test
    • v8-che-happy-path: Happy path for verification integration with Che

@openshift-ci

Copy link
Copy Markdown

Hi @AObuchow. Thanks for your PR.

I'm waiting for a devfile member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First pass at review -- generally looks good!

I'll get around to deeper review and testing later.

Comment threaddocs/additional-configuration.adoc Outdated
Comment threadpkg/common/naming.go Outdated
Comment threadpkg/constants/constants.go Outdated
Comment threadsamples/flattened_theia-next_perWorkspaceStorage.yaml Outdated
Comment threadpkg/provision/storage/shared.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 8810b3f to 54e9f04CompareApril 13, 2022 21:51
Comment threadpkg/constants/constants.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch 2 times, most recently from 53c8e9b to 51e660bCompareApril 14, 2022 03:54
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 51e660b to ba4c27bCompareApril 14, 2022 15:44
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from ba4c27b to b2ee4e4CompareApril 19, 2022 15:46
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from b2ee4e4 to 8d65602CompareApril 19, 2022 15:50
@AObuchow
AObuchow requested a review from amisevskApril 19, 2022 15:55

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected 👍

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/shared.go Outdated
@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected +1

Awesome, thank you so much for the help & reviews @amisevsk 😁
I made the requested changes.

@AObuchow
AObuchow requested a review from amisevskApril 20, 2022 15:42
@amisevsk

Copy link
Copy Markdown
Collaborator

Well done 👍

Comment threadpkg/common/naming.go
Comment threadpkg/common/naming.go
}

func PerWorkspacePVCName(workspaceId string) string {
return fmt.Sprintf("storage-%s", workspaceId)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
returnfmt.Sprintf("storage-%s", workspaceId)
returnfmt.Sprintf("claim-%s", workspaceId)

Comment on lines +158 to +159
// TODO: Determine the storage size that is needed by iterating through workspace volumes,
// adding the sizes specified and figuring out overrides/defaults

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This TODO is planned to be addressed as part of #740, right?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, or at the least, it might end up being a separate but related issue

@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from dd4baca to 15b6705CompareApril 21, 2022 14:30
@openshift-ciopenshift-ciBot removed the lgtm label Apr 21, 2022
@AObuchow
AObuchow requested a review from ibuziukApril 21, 2022 14:53

@ibuziukibuziuk left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job 👍

Fixdevfile#792.
Signed-off-by: Andrew Obuchowicz <aobuchow@redhat.com>
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 15b6705 to 7b89ee5CompareApril 22, 2022 16:21
@openshift-ciopenshift-ciBot removed the lgtm label Apr 22, 2022
@amisevsk

Copy link
Copy Markdown
Collaborator

/test v8-devworkspace-operator-e2e, v8-che-happy-path

@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: Cannot trigger testing until a trusted user reviews the PR and leaves an /ok-to-test message.

Details

In response to this:

/retest

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@ibuziuk

Copy link
Copy Markdown
Contributor

/retest

@ibuziuk

Copy link
Copy Markdown
Contributor

I believe we can merge with the failed test
@musienko-maxim do you happen to know the state of the happy path?

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We generally treat happy path as optional; the QE folks have had their plate full with other projects and its been unhealthy for a while now.

👍 to merge

@openshift-ci

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: amisevsk, AObuchow, ibuziuk

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@amisevsk

Copy link
Copy Markdown
Collaborator

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test nameCommitDetailsRequiredRerun command
ci/prow/v8-che-happy-path7b89ee5linktrue/test v8-che-happy-path

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support 'per-workspace' storage-class (one PVC per workspace)

3 participants

@AObuchow@amisevsk@ibuziuk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat: 'one PVC per-workspace' storage class - #818

Merged
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace
Apr 26, 2022
Merged

feat: 'one PVC per-workspace' storage class#818
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace

Conversation

@AObuchow

@AObuchowAObuchow commented Apr 13, 2022

Copy link
Copy Markdown
Collaborator

What does this PR do?

This PR adds a new storage class called 'perWorkspace'. When in use in the devfile, every workspace gets its own PVC.

What issues does this PR fix or reference?

Fix#792

Is it tested? How?

In order to enable the 'perWorkspace' storage class, the controller.devfile.io/storage-type devfile attribute must be set to per-workspace.

Eg.

spec:
template:
attributes:
controller.devfile.io/storage-type: per-workspace

Manual testing:

  • Start up DWO (i.e. make run)
  • Apply the sample devfile that uses the perWorkspace storage class: kubectl apply -f ./samples/theia-next_per-workspaceStorage.yaml -n $NAMESPACE
  • Check K8s status (through terminal or dashboard) and ensure a PVC has been created for the workspace. The naming of the PVC should be of the form storage-[workspaceID]
  • Delete the workspace: kubectl delete dw theia-next -n $NAMESPACE
  • Ensure the PVC is also deleted shortly after (check K8s dashboard for PVC or use terminal commands)

Automated testing:
There is also a new test file, pkg/provision/storage/perWorkspaceStorage_test.go.
It is based off of pkg/provision/storage/CommonStorage_test.go with slight adaptions. It also ensures that the owner reference is set for the perWorkspace PVC, which is required for automatic PVC deletion with cluster garbage collection.

PR Checklist

  • E2E tests pass (when PR is ready, comment /test v8-devworkspace-operator-e2e, v8-che-happy-path to trigger)
    • v8-devworkspace-operator-e2e: DevWorkspace e2e test
    • v8-che-happy-path: Happy path for verification integration with Che

@openshift-ci

Copy link
Copy Markdown

Hi @AObuchow. Thanks for your PR.

I'm waiting for a devfile member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First pass at review -- generally looks good!

I'll get around to deeper review and testing later.

Comment threaddocs/additional-configuration.adoc Outdated
Comment threadpkg/common/naming.go Outdated
Comment threadpkg/constants/constants.go Outdated
Comment threadsamples/flattened_theia-next_perWorkspaceStorage.yaml Outdated
Comment threadpkg/provision/storage/shared.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 8810b3f to 54e9f04CompareApril 13, 2022 21:51
Comment threadpkg/constants/constants.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch 2 times, most recently from 53c8e9b to 51e660bCompareApril 14, 2022 03:54
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 51e660b to ba4c27bCompareApril 14, 2022 15:44
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from ba4c27b to b2ee4e4CompareApril 19, 2022 15:46
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from b2ee4e4 to 8d65602CompareApril 19, 2022 15:50
@AObuchow
AObuchow requested a review from amisevskApril 19, 2022 15:55

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected 👍

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/shared.go Outdated
@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected +1

Awesome, thank you so much for the help & reviews @amisevsk 😁
I made the requested changes.

@AObuchow
AObuchow requested a review from amisevskApril 20, 2022 15:42
@amisevsk

Copy link
Copy Markdown
Collaborator

Well done 👍

Comment threadpkg/common/naming.go
Comment threadpkg/common/naming.go
}

func PerWorkspacePVCName(workspaceId string) string {
return fmt.Sprintf("storage-%s", workspaceId)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
returnfmt.Sprintf("storage-%s", workspaceId)
returnfmt.Sprintf("claim-%s", workspaceId)

Comment on lines +158 to +159
// TODO: Determine the storage size that is needed by iterating through workspace volumes,
// adding the sizes specified and figuring out overrides/defaults

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This TODO is planned to be addressed as part of #740, right?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, or at the least, it might end up being a separate but related issue

@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from dd4baca to 15b6705CompareApril 21, 2022 14:30
@openshift-ciopenshift-ciBot removed the lgtm label Apr 21, 2022
@AObuchow
AObuchow requested a review from ibuziukApril 21, 2022 14:53

@ibuziukibuziuk left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job 👍

Fixdevfile#792.
Signed-off-by: Andrew Obuchowicz <aobuchow@redhat.com>
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 15b6705 to 7b89ee5CompareApril 22, 2022 16:21
@openshift-ciopenshift-ciBot removed the lgtm label Apr 22, 2022
@amisevsk

Copy link
Copy Markdown
Collaborator

/test v8-devworkspace-operator-e2e, v8-che-happy-path

@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: Cannot trigger testing until a trusted user reviews the PR and leaves an /ok-to-test message.

Details

In response to this:

/retest

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@ibuziuk

Copy link
Copy Markdown
Contributor

/retest

@ibuziuk

Copy link
Copy Markdown
Contributor

I believe we can merge with the failed test
@musienko-maxim do you happen to know the state of the happy path?

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We generally treat happy path as optional; the QE folks have had their plate full with other projects and its been unhealthy for a while now.

👍 to merge

@openshift-ci

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: amisevsk, AObuchow, ibuziuk

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@amisevsk

Copy link
Copy Markdown
Collaborator

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test nameCommitDetailsRequiredRerun command
ci/prow/v8-che-happy-path7b89ee5linktrue/test v8-che-happy-path

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support 'per-workspace' storage-class (one PVC per workspace)

3 participants

@AObuchow@amisevsk@ibuziuk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: 'one PVC per-workspace' storage class - #818

Merged
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace
Apr 26, 2022
Merged

feat: 'one PVC per-workspace' storage class#818
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace

Conversation

@AObuchow

@AObuchowAObuchow commented Apr 13, 2022

Copy link
Copy Markdown
Collaborator

What does this PR do?

This PR adds a new storage class called 'perWorkspace'. When in use in the devfile, every workspace gets its own PVC.

What issues does this PR fix or reference?

Fix#792

Is it tested? How?

In order to enable the 'perWorkspace' storage class, the controller.devfile.io/storage-type devfile attribute must be set to per-workspace.

Eg.

spec:
template:
attributes:
controller.devfile.io/storage-type: per-workspace

Manual testing:

  • Start up DWO (i.e. make run)
  • Apply the sample devfile that uses the perWorkspace storage class: kubectl apply -f ./samples/theia-next_per-workspaceStorage.yaml -n $NAMESPACE
  • Check K8s status (through terminal or dashboard) and ensure a PVC has been created for the workspace. The naming of the PVC should be of the form storage-[workspaceID]
  • Delete the workspace: kubectl delete dw theia-next -n $NAMESPACE
  • Ensure the PVC is also deleted shortly after (check K8s dashboard for PVC or use terminal commands)

Automated testing:
There is also a new test file, pkg/provision/storage/perWorkspaceStorage_test.go.
It is based off of pkg/provision/storage/CommonStorage_test.go with slight adaptions. It also ensures that the owner reference is set for the perWorkspace PVC, which is required for automatic PVC deletion with cluster garbage collection.

PR Checklist

  • E2E tests pass (when PR is ready, comment /test v8-devworkspace-operator-e2e, v8-che-happy-path to trigger)
    • v8-devworkspace-operator-e2e: DevWorkspace e2e test
    • v8-che-happy-path: Happy path for verification integration with Che

@openshift-ci

Copy link
Copy Markdown

Hi @AObuchow. Thanks for your PR.

I'm waiting for a devfile member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First pass at review -- generally looks good!

I'll get around to deeper review and testing later.

Comment threaddocs/additional-configuration.adoc Outdated
Comment threadpkg/common/naming.go Outdated
Comment threadpkg/constants/constants.go Outdated
Comment threadsamples/flattened_theia-next_perWorkspaceStorage.yaml Outdated
Comment threadpkg/provision/storage/shared.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 8810b3f to 54e9f04CompareApril 13, 2022 21:51
Comment threadpkg/constants/constants.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch 2 times, most recently from 53c8e9b to 51e660bCompareApril 14, 2022 03:54
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 51e660b to ba4c27bCompareApril 14, 2022 15:44
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from ba4c27b to b2ee4e4CompareApril 19, 2022 15:46
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from b2ee4e4 to 8d65602CompareApril 19, 2022 15:50
@AObuchow
AObuchow requested a review from amisevskApril 19, 2022 15:55

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected 👍

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/shared.go Outdated
@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected +1

Awesome, thank you so much for the help & reviews @amisevsk 😁
I made the requested changes.

@AObuchow
AObuchow requested a review from amisevskApril 20, 2022 15:42
@amisevsk

Copy link
Copy Markdown
Collaborator

Well done 👍

Comment threadpkg/common/naming.go
Comment threadpkg/common/naming.go
}

func PerWorkspacePVCName(workspaceId string) string {
return fmt.Sprintf("storage-%s", workspaceId)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
returnfmt.Sprintf("storage-%s", workspaceId)
returnfmt.Sprintf("claim-%s", workspaceId)

Comment on lines +158 to +159
// TODO: Determine the storage size that is needed by iterating through workspace volumes,
// adding the sizes specified and figuring out overrides/defaults

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This TODO is planned to be addressed as part of #740, right?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, or at the least, it might end up being a separate but related issue

@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from dd4baca to 15b6705CompareApril 21, 2022 14:30
@openshift-ciopenshift-ciBot removed the lgtm label Apr 21, 2022
@AObuchow
AObuchow requested a review from ibuziukApril 21, 2022 14:53

@ibuziukibuziuk left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job 👍

Fixdevfile#792.
Signed-off-by: Andrew Obuchowicz <aobuchow@redhat.com>
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 15b6705 to 7b89ee5CompareApril 22, 2022 16:21
@openshift-ciopenshift-ciBot removed the lgtm label Apr 22, 2022
@amisevsk

Copy link
Copy Markdown
Collaborator

/test v8-devworkspace-operator-e2e, v8-che-happy-path

@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: Cannot trigger testing until a trusted user reviews the PR and leaves an /ok-to-test message.

Details

In response to this:

/retest

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@ibuziuk

Copy link
Copy Markdown
Contributor

/retest

@ibuziuk

Copy link
Copy Markdown
Contributor

I believe we can merge with the failed test
@musienko-maxim do you happen to know the state of the happy path?

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We generally treat happy path as optional; the QE folks have had their plate full with other projects and its been unhealthy for a while now.

👍 to merge

@openshift-ci

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: amisevsk, AObuchow, ibuziuk

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@amisevsk

Copy link
Copy Markdown
Collaborator

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test nameCommitDetailsRequiredRerun command
ci/prow/v8-che-happy-path7b89ee5linktrue/test v8-che-happy-path

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support 'per-workspace' storage-class (one PVC per workspace)

3 participants

@AObuchow@amisevsk@ibuziuk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: 'one PVC per-workspace' storage class - #818

Merged
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace
Apr 26, 2022
Merged

feat: 'one PVC per-workspace' storage class#818
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace

Conversation

@AObuchow

@AObuchowAObuchow commented Apr 13, 2022

Copy link
Copy Markdown
Collaborator

What does this PR do?

This PR adds a new storage class called 'perWorkspace'. When in use in the devfile, every workspace gets its own PVC.

What issues does this PR fix or reference?

Fix#792

Is it tested? How?

In order to enable the 'perWorkspace' storage class, the controller.devfile.io/storage-type devfile attribute must be set to per-workspace.

Eg.

spec:
template:
attributes:
controller.devfile.io/storage-type: per-workspace

Manual testing:

  • Start up DWO (i.e. make run)
  • Apply the sample devfile that uses the perWorkspace storage class: kubectl apply -f ./samples/theia-next_per-workspaceStorage.yaml -n $NAMESPACE
  • Check K8s status (through terminal or dashboard) and ensure a PVC has been created for the workspace. The naming of the PVC should be of the form storage-[workspaceID]
  • Delete the workspace: kubectl delete dw theia-next -n $NAMESPACE
  • Ensure the PVC is also deleted shortly after (check K8s dashboard for PVC or use terminal commands)

Automated testing:
There is also a new test file, pkg/provision/storage/perWorkspaceStorage_test.go.
It is based off of pkg/provision/storage/CommonStorage_test.go with slight adaptions. It also ensures that the owner reference is set for the perWorkspace PVC, which is required for automatic PVC deletion with cluster garbage collection.

PR Checklist

  • E2E tests pass (when PR is ready, comment /test v8-devworkspace-operator-e2e, v8-che-happy-path to trigger)
    • v8-devworkspace-operator-e2e: DevWorkspace e2e test
    • v8-che-happy-path: Happy path for verification integration with Che

@openshift-ci

Copy link
Copy Markdown

Hi @AObuchow. Thanks for your PR.

I'm waiting for a devfile member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First pass at review -- generally looks good!

I'll get around to deeper review and testing later.

Comment threaddocs/additional-configuration.adoc Outdated
Comment threadpkg/common/naming.go Outdated
Comment threadpkg/constants/constants.go Outdated
Comment threadsamples/flattened_theia-next_perWorkspaceStorage.yaml Outdated
Comment threadpkg/provision/storage/shared.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 8810b3f to 54e9f04CompareApril 13, 2022 21:51
Comment threadpkg/constants/constants.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch 2 times, most recently from 53c8e9b to 51e660bCompareApril 14, 2022 03:54
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 51e660b to ba4c27bCompareApril 14, 2022 15:44
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from ba4c27b to b2ee4e4CompareApril 19, 2022 15:46
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from b2ee4e4 to 8d65602CompareApril 19, 2022 15:50
@AObuchow
AObuchow requested a review from amisevskApril 19, 2022 15:55

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected 👍

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/shared.go Outdated
@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected +1

Awesome, thank you so much for the help & reviews @amisevsk 😁
I made the requested changes.

@AObuchow
AObuchow requested a review from amisevskApril 20, 2022 15:42
@amisevsk

Copy link
Copy Markdown
Collaborator

Well done 👍

Comment threadpkg/common/naming.go
Comment threadpkg/common/naming.go
}

func PerWorkspacePVCName(workspaceId string) string {
return fmt.Sprintf("storage-%s", workspaceId)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
returnfmt.Sprintf("storage-%s", workspaceId)
returnfmt.Sprintf("claim-%s", workspaceId)

Comment on lines +158 to +159
// TODO: Determine the storage size that is needed by iterating through workspace volumes,
// adding the sizes specified and figuring out overrides/defaults

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This TODO is planned to be addressed as part of #740, right?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, or at the least, it might end up being a separate but related issue

@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from dd4baca to 15b6705CompareApril 21, 2022 14:30
@openshift-ciopenshift-ciBot removed the lgtm label Apr 21, 2022
@AObuchow
AObuchow requested a review from ibuziukApril 21, 2022 14:53

@ibuziukibuziuk left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job 👍

Fixdevfile#792.
Signed-off-by: Andrew Obuchowicz <aobuchow@redhat.com>
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 15b6705 to 7b89ee5CompareApril 22, 2022 16:21
@openshift-ciopenshift-ciBot removed the lgtm label Apr 22, 2022
@amisevsk

Copy link
Copy Markdown
Collaborator

/test v8-devworkspace-operator-e2e, v8-che-happy-path

@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: Cannot trigger testing until a trusted user reviews the PR and leaves an /ok-to-test message.

Details

In response to this:

/retest

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@ibuziuk

Copy link
Copy Markdown
Contributor

/retest

@ibuziuk

Copy link
Copy Markdown
Contributor

I believe we can merge with the failed test
@musienko-maxim do you happen to know the state of the happy path?

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We generally treat happy path as optional; the QE folks have had their plate full with other projects and its been unhealthy for a while now.

👍 to merge

@openshift-ci

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: amisevsk, AObuchow, ibuziuk

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@amisevsk

Copy link
Copy Markdown
Collaborator

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test nameCommitDetailsRequiredRerun command
ci/prow/v8-che-happy-path7b89ee5linktrue/test v8-che-happy-path

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support 'per-workspace' storage-class (one PVC per workspace)

3 participants

@AObuchow@amisevsk@ibuziuk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat: 'one PVC per-workspace' storage class - #818

Merged
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace
Apr 26, 2022
Merged

feat: 'one PVC per-workspace' storage class#818
amisevsk merged 1 commit into
devfile:mainfrom
AObuchow:one_pvc_per_workspace

Conversation

@AObuchow

@AObuchowAObuchow commented Apr 13, 2022

Copy link
Copy Markdown
Collaborator

What does this PR do?

This PR adds a new storage class called 'perWorkspace'. When in use in the devfile, every workspace gets its own PVC.

What issues does this PR fix or reference?

Fix#792

Is it tested? How?

In order to enable the 'perWorkspace' storage class, the controller.devfile.io/storage-type devfile attribute must be set to per-workspace.

Eg.

spec:
template:
attributes:
controller.devfile.io/storage-type: per-workspace

Manual testing:

  • Start up DWO (i.e. make run)
  • Apply the sample devfile that uses the perWorkspace storage class: kubectl apply -f ./samples/theia-next_per-workspaceStorage.yaml -n $NAMESPACE
  • Check K8s status (through terminal or dashboard) and ensure a PVC has been created for the workspace. The naming of the PVC should be of the form storage-[workspaceID]
  • Delete the workspace: kubectl delete dw theia-next -n $NAMESPACE
  • Ensure the PVC is also deleted shortly after (check K8s dashboard for PVC or use terminal commands)

Automated testing:
There is also a new test file, pkg/provision/storage/perWorkspaceStorage_test.go.
It is based off of pkg/provision/storage/CommonStorage_test.go with slight adaptions. It also ensures that the owner reference is set for the perWorkspace PVC, which is required for automatic PVC deletion with cluster garbage collection.

PR Checklist

  • E2E tests pass (when PR is ready, comment /test v8-devworkspace-operator-e2e, v8-che-happy-path to trigger)
    • v8-devworkspace-operator-e2e: DevWorkspace e2e test
    • v8-che-happy-path: Happy path for verification integration with Che

@openshift-ci

Copy link
Copy Markdown

Hi @AObuchow. Thanks for your PR.

I'm waiting for a devfile member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First pass at review -- generally looks good!

I'll get around to deeper review and testing later.

Comment threaddocs/additional-configuration.adoc Outdated
Comment threadpkg/common/naming.go Outdated
Comment threadpkg/constants/constants.go Outdated
Comment threadsamples/flattened_theia-next_perWorkspaceStorage.yaml Outdated
Comment threadpkg/provision/storage/shared.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 8810b3f to 54e9f04CompareApril 13, 2022 21:51
Comment threadpkg/constants/constants.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch 2 times, most recently from 53c8e9b to 51e660bCompareApril 14, 2022 03:54
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 51e660b to ba4c27bCompareApril 14, 2022 15:44
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from ba4c27b to b2ee4e4CompareApril 19, 2022 15:46
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from b2ee4e4 to 8d65602CompareApril 19, 2022 15:50
@AObuchow
AObuchow requested a review from amisevskApril 19, 2022 15:55

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected 👍

Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage.go Outdated
Comment threadpkg/provision/storage/perWorkspaceStorage_test.go Outdated
Comment threadpkg/provision/storage/shared.go Outdated
@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

Mostly just minor nitpicks and polish at this point. Well done!

Tested on OpenShift 4.10 and works as expected +1

Awesome, thank you so much for the help & reviews @amisevsk 😁
I made the requested changes.

@AObuchow
AObuchow requested a review from amisevskApril 20, 2022 15:42
@amisevsk

Copy link
Copy Markdown
Collaborator

Well done 👍

Comment threadpkg/common/naming.go
Comment threadpkg/common/naming.go
}

func PerWorkspacePVCName(workspaceId string) string {
return fmt.Sprintf("storage-%s", workspaceId)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
returnfmt.Sprintf("storage-%s", workspaceId)
returnfmt.Sprintf("claim-%s", workspaceId)

Comment on lines +158 to +159
// TODO: Determine the storage size that is needed by iterating through workspace volumes,
// adding the sizes specified and figuring out overrides/defaults

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This TODO is planned to be addressed as part of #740, right?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, or at the least, it might end up being a separate but related issue

@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from dd4baca to 15b6705CompareApril 21, 2022 14:30
@openshift-ciopenshift-ciBot removed the lgtm label Apr 21, 2022
@AObuchow
AObuchow requested a review from ibuziukApril 21, 2022 14:53

@ibuziukibuziuk left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job 👍

Fixdevfile#792.
Signed-off-by: Andrew Obuchowicz <aobuchow@redhat.com>
@AObuchow
AObuchowforce-pushed the one_pvc_per_workspace branch from 15b6705 to 7b89ee5CompareApril 22, 2022 16:21
@openshift-ciopenshift-ciBot removed the lgtm label Apr 22, 2022
@amisevsk

Copy link
Copy Markdown
Collaborator

/test v8-devworkspace-operator-e2e, v8-che-happy-path

@AObuchow

Copy link
Copy Markdown
CollaboratorAuthor

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: Cannot trigger testing until a trusted user reviews the PR and leaves an /ok-to-test message.

Details

In response to this:

/retest

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@ibuziuk

Copy link
Copy Markdown
Contributor

/retest

@ibuziuk

Copy link
Copy Markdown
Contributor

I believe we can merge with the failed test
@musienko-maxim do you happen to know the state of the happy path?

@amisevskamisevsk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We generally treat happy path as optional; the QE folks have had their plate full with other projects and its been unhealthy for a while now.

👍 to merge

@openshift-ci

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: amisevsk, AObuchow, ibuziuk

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@amisevsk

Copy link
Copy Markdown
Collaborator

/retest

@openshift-ci

Copy link
Copy Markdown

@AObuchow: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test nameCommitDetailsRequiredRerun command
ci/prow/v8-che-happy-path7b89ee5linktrue/test v8-che-happy-path

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support 'per-workspace' storage-class (one PVC per workspace)

3 participants

@AObuchow@amisevsk@ibuziuk