-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Prepare environment for async storage of project sources #16972
Conversation
❌ E2E Happy path tests failed ❗ See Details
Tested with Eclipse Che Multiuser User on K8S (minikube v1.1.1) ℹ️ |
✅ E2E Happy path tests succeed 🎉 See Details
Tested with Eclipse Che Multiuser User on K8S (minikube v1.1.1) |
✅ E2E Happy path tests succeed 🎉 See Details
Tested with Eclipse Che Multiuser User on K8S (minikube v1.1.1) |
✅ E2E Happy path tests succeed 🎉 See Details
Tested with Eclipse Che Multiuser User on K8S (minikube v1.1.1) |
assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
Outdated
Show resolved
Hide resolved
...java/org/eclipse/che/workspace/infrastructure/openshift/OpenShiftEnvironmentProvisioner.java
Outdated
Show resolved
Hide resolved
...va/org/eclipse/che/workspace/infrastructure/openshift/provision/AsyncStorageProvisioner.java
Outdated
Show resolved
Hide resolved
...st/java/org/eclipse/che/workspace/infrastructure/openshift/OpenShiftInternalRuntimeTest.java
Outdated
Show resolved
Hide resolved
✅ E2E Happy path tests succeed 🎉 See Details
Tested with Eclipse Che Multiuser User on K8S (minikube v1.1.1) |
❌ E2E Happy path tests failed ❗ See Details
Tested with Eclipse Che Multiuser User on K8S (minikube v1.1.1) ℹ️ |
❌ E2E Happy path tests failed ❗ See Details
Tested with Eclipse Che Multiuser User on K8S (minikube v1.1.1) ℹ️ |
❌ E2E Happy path tests failed ❗ See Details
Tested with Eclipse Che Multiuser User on K8S (minikube v1.1.1) ℹ️ |
✅ E2E Happy path tests succeed 🎉 See Details
Tested with Eclipse Che Multiuser User on K8S (minikube v1.1.1) |
✅ E2E Happy path tests succeed 🎉 See Details
Tested with Eclipse Che Multiuser User on K8S (minikube v1.1.1) |
Signed-off-by: Vitalii Parfonov <[email protected]>
...va/org/eclipse/che/workspace/infrastructure/openshift/provision/AsyncStorageProvisioner.java
Outdated
Show resolved
Hide resolved
...va/org/eclipse/che/workspace/infrastructure/openshift/provision/AsyncStorageProvisioner.java
Show resolved
Hide resolved
Does it work only on OpenShift? |
Yes, at the moment |
…at() Signed-off-by: Vitalii Parfonov <[email protected]>
@vparfonov could you please create an issue for the k8s support |
Is there any hard technical reason? Like are you using some OpenShift only stuff? I would assume to go k8s first. |
❌ E2E Happy path tests failed ❗ See Details
Tested with Eclipse Che Multiuser User on K8S (minikube v1.1.1) ℹ️ |
Any technical reason, we want to try it this on che.openshift.io firstly |
|
[crw-ci-test] |
✅ E2E Happy path tests succeed 🎉 See Details
Tested with Eclipse Che Multiuser User on K8S (minikube v1.1.1) |
yes, but usually, the base code implements k8s and only places where there are any OpenShift specifics we extend k8s class with OpenShift stuff. This looks like #17408 will be fixed by moving OpenShift classes into kubernetes module and bind them in KubernetesInfraModule. It's not a blocker, it just look like unnecessary complication and does not follow usual procedure. |
@metlos @skabashnyuk @sparkoo @mshaposhnik any other comments ? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't like that documentation is moved to another issue. It violates the "definition of done" what we're trying to define and honor. But let's move this forward.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a few nitpicks in the validator + guarding against NPEs in map lookups. Otherwise LGTM.
.../main/java/org/eclipse/che/workspace/infrastructure/openshift/AsyncStorageModeValidator.java
Show resolved
Hide resolved
} | ||
|
||
private void runtimesPerUserValidation() throws ValidationException { | ||
if (runtimesPerUser > 1) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This can be evaluated in the constructor just once.
.../main/java/org/eclipse/che/workspace/infrastructure/openshift/AsyncStorageModeValidator.java
Show resolved
Hide resolved
.../main/java/org/eclipse/che/workspace/infrastructure/openshift/AsyncStorageModeValidator.java
Show resolved
Hide resolved
} | ||
|
||
private void pvcStrategyValidation() throws ValidationException { | ||
if (!COMMON_STRATEGY.equals(pvcStrategy)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This can be evaluated in the constructor just once.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
.../main/java/org/eclipse/che/workspace/infrastructure/openshift/AsyncStorageModeValidator.java
Show resolved
Hide resolved
...va/org/eclipse/che/workspace/infrastructure/openshift/provision/AsyncStorageProvisioner.java
Show resolved
Hide resolved
Create issue for these changes #17420 |
Signed-off-by: Vitalii Parfonov <[email protected]>
* Various fixes after meging PR #16972 * Improving condition for che.limits.user.workspaces.run.count checking Signed-off-by: Vitalii Parfonov <[email protected]>
Signed-off-by: Vitalii Parfonov [email protected]
What does this PR do?
This PR will introduce a new experimental feature which should provide fast I/O and give ability to persist your changes. In other words this is new kind of storage with fast I/O like in Ephemeral Mode but with saving changes like in traditional Persistent Mode.
For this we introduce special plugin which will be automatically added to workspace configuration in case user select this type of storage. Plugin will initiate restore command on workspace startup and backup all sources on workspace stop, also changes will be periodically backup during workspace is running (e.g. each 5 or 10 minutes).
During restore procedure events with information about restore process sent via WebScoket connection and client (like Che Theia) can show this information in UI.
For backup/restore procedure used rsync (https://rsync.samba.org/) via SSH connection.
The special pod will start in OpenShift environment in user namespace, it will respond for storing files. In other words plugin it’s rsync client, storage pod - rsync server.
Here initial for plugin and storage: Initial contribution for workspace sync feature #2
For establishing secure connection special pair of SSH keys will be generated if they don't exist and mount to the plugin container (private part) and to the storage pod (public part).
IMPORTANT: This feature at the moment will work only with common PVC strategy.
If other (or current workspace) configured to the to use the traditional persistent mode,
to prevent getting 'Multi-Attach error for volume' asynchronous storage pod will be shutdown. After deleting asynchronous storage pod procedure of starting workspace will be continued as usual.
To try this PR you can use this devfile:
Ready to use images:
che-server:
vparfonov/che-server:0708
che-plugin-registry:
vparfonov/che-plugin-registry:0708
What issues does this PR fix or reference?
Release Notes
Docs PR