Skip to content

Commit

Permalink
Merge branch 'release-0.48.x' into auto-update/renku-core-2.9.2
Browse files Browse the repository at this point in the history
  • Loading branch information
Panaetius authored Feb 7, 2024
2 parents 7737e6f + f24f176 commit 3a76d47
Show file tree
Hide file tree
Showing 3 changed files with 113 additions and 82 deletions.
36 changes: 27 additions & 9 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
.. _changelog:

0.48.0
------

This release contains bug fixes to renku core service.

User-Facing Changes
~~~~~~~~~~~~~~~~~~~

**🐞 Bug Fixes**

- **Core Service**: Fix issue with having to run project migration twice to migrate the Dockerfile/project template.
(`#3690 <https://github.com/SwissDataScienceCenter/renku-python/issues/3690>`__)

Individual Components
~~~~~~~~~~~~~~~~~~~~~

- `renku-python 2.9.2 <https://github.com/SwissDataScienceCenter/renku-python/releases/tag/2.9.2>`_

0.47.1
------

Expand All @@ -12,11 +30,11 @@ It doesn't bring any new features or bug fixes.
This release expands Renku's cloud storage functionality in two key ways: First, mounted storages
are now read **and write**, so you can use mounted storage as an active workspace for your data in a RenkuLab
session. Second, we have expanded the cloud storage services you can integrate with RenkuLab. You can now
mount not only S3 buckets, but also WebDAV-based storages and Azure Blobs.
mount not only S3 buckets, but also WebDAV-based storages and Azure Blobs.

If you use SSH sessions via the CLI, you can use cloud storage there too! Configure cloud storage for your
project on RenkuLab.io, and those storages will be mounted in your remote session. Support for cloud
storage in local Renku sessions is still on our roadmap.
storage in local Renku sessions is still on our roadmap.

This release also adds the ability to change which resource class your session uses when you unpause the
session, in case the original resource class is now full.
Expand Down Expand Up @@ -147,15 +165,15 @@ Internal Changes
Individual components
~~~~~~~~~~~~~~~~~~~~~

- `renku-python 2.8.2 <https://github.com/SwissDataScienceCenter/renku-python/releases/tag/2.8.2>`_
- `renku-python 2.8.2 <https://github.com/SwissDataScienceCenter/renku-python/releases/tag/2.8.2>`_
- `renku-ui 3.17.2 <https://github.com/SwissDataScienceCenter/renku-ui/releases/tag/3.17.2>`_
- `renku-graph 2.48.2 <https://github.com/SwissDataScienceCenter/renku-graph/releases/tag/2.48.2>`_
- `renku-graph 2.48.2 <https://github.com/SwissDataScienceCenter/renku-graph/releases/tag/2.48.2>`_


0.45.1
------
This is a bugfix release that updates the helm chart to work with new
prometheus metrics in the renku core service, which was preventing it from
This is a bugfix release that updates the helm chart to work with new
prometheus metrics in the renku core service, which was preventing it from
starting properly if metrics were enabled. In addition this release
also addresses problems with expiring Gitlab access tokens when sessions
are paused and resumed which caused resumed session to not be able to push to Gitlab
Expand All @@ -166,8 +184,8 @@ Internal Changes

**🐞 Bug Fixes**

- **Helm Chart**: update core-service deployment to allow service and rq
metrics to run side-by-side (`#3303
- **Helm Chart**: update core-service deployment to allow service and rq
metrics to run side-by-side (`#3303
<https://github.com/SwissDataScienceCenter/renku/pull/3303>`_).
- **Notebooks**: use a larger /dev/shm folder in sessions
(`#1723 <https://github.com/SwissDataScienceCenter/renku-notebooks/issues/1723>`_)
Expand Down
141 changes: 77 additions & 64 deletions cypress-tests/cypress/e2e/useSession.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -233,74 +233,87 @@ describe("Basic public project functionality", () => {
return;
}

cy.stopAllSessionsForProject(projectIdentifier);
cy.intercept("/ui-server/api/data/storage*").as("getProjectCloudStorage");
cy.getDataCy("cloud-storage-section")
.find("button")
.contains("Add Cloud Storage")
.should("be.visible")
.click();
cy.getDataCy("cloud-storage-edit-header")
.contains("Add Cloud Storage")
.should("be.visible");

cy.getProjectSection("Settings").click();
cy.getDataCy("settings-navbar")
.contains("a.nav-link", "Cloud Storage")
cy.getDataCy("cloud-storage-edit-schema")
.contains("s3")
.should("be.visible")
.click();
cy.getDataCy("cloud-storage-edit-providers")
.contains("AWS")
.should("be.visible")
.click();
cy.getDataCy("cloud-storage-edit-next-button").should("be.visible").click();

cy.getDataCy("cloud-storage-edit-options").should("be.visible");
cy.get("#sourcePath").should("have.value", "").type("giab");
cy.get("#endpoint")
.should("have.value", "")
.type("http://s3.amazonaws.com");
cy.getDataCy("cloud-storage-edit-next-button").should("be.visible").click();

cy.getDataCy("cloud-storage-edit-mount").should("be.visible");
cy.get("#name").should("have.value", "").type("data_s3");
cy.get("#mountPoint")
.should("have.value", "external_storage/data_s3")
.type("{selectAll}data_s3");
cy.get("#readOnly").should("not.be.checked").check();

cy.getDataCy("cloud-storage-edit-update-button")
.should("be.visible")
.contains("Add")
.click();

// Add a S3 storage configuration if it doesn't exist
cy.wait("@getProjectCloudStorage").then(({ response }) => {
const storages = response.body as { storage: { name: string } }[];
if (storages.find(({ storage }) => storage.name === "data_s3")) {
return;
}

cy.getDataCy("cloud-storage-section")
.find("button")
.contains("Add Cloud Storage")
.should("be.visible")
.click();
cy.getDataCy("cloud-storage-edit-header")
.contains("Add Cloud Storage")
.should("be.visible");

cy.getDataCy("cloud-storage-edit-schema")
.contains("s3")
.should("be.visible")
.click();
cy.getDataCy("cloud-storage-edit-providers")
.contains("AWS")
.should("be.visible")
.click();
cy.getDataCy("cloud-storage-edit-next-button")
.should("be.visible")
.click();

cy.getDataCy("cloud-storage-edit-options").should("be.visible");
cy.get("#sourcePath").should("have.value", "").type("giab");
cy.get("#endpoint")
.should("have.value", "")
.type("http://s3.amazonaws.com");
cy.getDataCy("cloud-storage-edit-next-button")
.should("be.visible")
.click();

cy.getDataCy("cloud-storage-edit-mount").should("be.visible");
cy.get("#name").should("have.value", "").type("data_s3");
cy.get("#mountPoint")
.should("have.value", "external_storage/data_s3")
.type("{selectAll}data_s3");
cy.get("#readOnly").should("not.be.checked").check();

cy.getDataCy("cloud-storage-edit-update-button")
.should("be.visible")
.contains("Add")
.click();

cy.getDataCy("cloud-storage-edit-body").contains(
"storage data_s3 has been succesfully added"
);
cy.getDataCy("cloud-storage-edit-close-button")
.should("be.visible")
.click();
});

cy.getDataCy("more-menu").should("be.visible").click();
cy.getProjectPageLink(projectIdentifier, "sessions/new")
cy.getDataCy("cloud-storage-edit-body").contains(
"storage data_s3 has been succesfully added"
);
cy.getDataCy("cloud-storage-edit-close-button")
.should("be.visible")
.click();

// Wait for the image to be ready and start a session
cy.get(".renku-container")
.contains("A session gives you an environment")
.should("exist");
cy.get(".renku-container .badge.bg-success", { timeout: TIMEOUTS.vlong })
.contains("available")
.should("exist");
cy.getDataCy("cloud-storage-item").contains("data_s3").should("exist");
cy.get("#cloud-storage-data_s3-active").should("be.checked");
cy.get(".renku-container button.btn-secondary", { timeout: TIMEOUTS.long })
.contains("Start Session")
.should("exist")
.click();
cy.get(".progress-box .progress-title").should("exist"); //.contains("Step 2 of 2");
cy.get("button")
.contains(projectTestConfig.projectName)
.should("be.visible");
cy.get(".progress-box .progress-title")
.contains("Starting Session")
.should("exist");
cy.get(".progress-box .progress-title", { timeout: TIMEOUTS.vlong }).should(
"not.exist"
);

// Verify that the S3 data is mounted
cy.getIframe("iframe#session-iframe").within(() => {
cy.get(".jp-DirListing-content", { timeout: TIMEOUTS.long }).should(
"be.visible"
);
cy.get(".jp-DirListing-item")
.contains("data_s3")
.should("be.visible")
.dblclick();

cy.get(".jp-DirListing-item")
.contains("README.s3_structure")
.should("be.visible")
.first()
.click();
Expand Down
18 changes: 9 additions & 9 deletions helm-chart/renku/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -855,15 +855,15 @@ dlf-chart:
dataset-operator-chart:
enabled: true
csi-rclone: {}
# This section is only relevant if you are installing csi-rclone as part of Renku
## Name of the csi storage class to use for RClone/Cloudstorage. Should be unique per cluster.
# storageClassName: csi-rclone
# csiNodepluginRclone:
# nodeSelector: {}
# Set tolerations if you have taints on your user session nodes. The csi has to run on every node
# where it is used.
# tolerations: []
# affinity: {}
# This section is only relevant if you are installing csi-rclone as part of Renku
## Name of the csi storage class to use for RClone/Cloudstorage. Should be unique per cluster.
# storageClassName: csi-rclone
# csiNodepluginRclone:
# nodeSelector: {}
# Set tolerations if you have taints on your user session nodes. The csi has to run on every node
# where it is used.
# tolerations: []
# affinity: {}
notebooks:
cloudstorage:
## If enabled this will allow mounting of rclone cloudstorage
Expand Down

0 comments on commit 3a76d47

Please sign in to comment.