Skip to content

Commit

Permalink
release 0.58.0 (#3775)
Browse files Browse the repository at this point in the history
* chore: create release 0.58.0

* fix: update more GitLab redirect URLs (#3780)

* refactor: polish Renku 2.0 pages according to the latest design (#3786)

* docs: fix changelog (#3789)

* Update search services to 0.6.1 (#3790)

* docs: Fix changelog (#3794)

The "Individual Components" section was repeated during a merge.

* chore: add rbac for new AmaltheaSessions CR

* feat: update gateway to 1.1.0

Adds new credentials for new Amalthea version and removes obsolete
Python code.

* feat: update data service to 0.21.0 (#3796)

Adds search reprovisioning.

* feat: parametrize clusterRoles (#3785)

Signed-off-by: Julien Godin <[email protected]>
Co-authored-by: Julien Godin <[email protected]>
Co-authored-by: Rok Roškar <[email protected]>
Co-authored-by: Flora Thiebaut <[email protected]>

* test: add dashboard v2 e2e tests (#3781)



Co-authored-by: Renku Bot <[email protected]>
Co-authored-by: Flora Thiebaut <[email protected]>

* feat: renku v2 dashboard improvements (#3798)

* feat: update data service to 0.22.0

feat: add support for filtering project and group listing by direct
membership
fix: allow unsetting storage secrets

* feat: update renku-ui to 3.37.0

* docs: update changelog

---------

Co-authored-by: Andrea Cordoba <[email protected]>
Co-authored-by: Lorenzo <[email protected]>

* update changelog (#3799)

* bump notebooks version

* fix: increase timeout for Authzed DB health probes (#3800)

The timeout in k8s was increasesd in a recent PR. But this increases the
timeout of the CLI we call in the Authzed DB image to actuall do the
health checks. And since this CLI had a default timeout of 1s it was
timing out even before the k8s timeout could take effect. We noticed
that Authzed on renkulab.io was in a restart loop because of this.

* fix: update renku-ui to 3.37.1 (#3801)

Updates the UI to fix the HTTP 500 upon logging in with gateway 1.1.0.

---------

Signed-off-by: Julien Godin <[email protected]>
Co-authored-by: Flora Thiebaut <[email protected]>
Co-authored-by: Lorenzo Cavazzi <[email protected]>
Co-authored-by: eikek <[email protected]>
Co-authored-by: Tasko Olevski <[email protected]>
Co-authored-by: Julien Godin <[email protected]>
Co-authored-by: Julien Godin <[email protected]>
Co-authored-by: Rok Roškar <[email protected]>
Co-authored-by: Flora Thiebaut <[email protected]>
Co-authored-by: Andrea Cordoba <[email protected]>
Co-authored-by: Andrea Cordoba <[email protected]>
Co-authored-by: Lorenzo <[email protected]>
Co-authored-by: Laura <[email protected]>
Co-authored-by: Ralf Grubenmann <[email protected]>
  • Loading branch information
14 people authored Oct 10, 2024
1 parent 67b64b9 commit a6ebf7f
Show file tree
Hide file tree
Showing 15 changed files with 269 additions and 45 deletions.
1 change: 1 addition & 0 deletions .github/workflows/pull-request-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ jobs:
useSession,
checkWorkflows,
rstudioSession,
dashboardV2,
]

steps:
Expand Down
58 changes: 56 additions & 2 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,59 @@
.. _changelog:

0.58.0
------

Renku ``0.58.0`` fixes several issues related to Renku 2.0 search, and also squashes a bug where the
Renku 2.0 dashboard displayed content not related to you.


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

**✨ Improvements**

- **UI**: Polish Renku 2.0 pages and elements according to the latest design changes (`#3254 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3254>`__).

**🐞 Bug Fixes**

- **Search Services**: Resolve issues that caused items to be missing from Renku 2.0 search, including the search for members when adding members to projects and groups.
- **UI**: Resolve an issue where the Renku 2.0 dashboard displayed projects and groups that the user was not a member of (`#3289 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3289>`__)
- **UI**: Fix a bug where clicking on 'Show all my projects' on the Renku 2.0 dashboard redirected to a page displaying not only the user's projects but also others' projects (`#3289 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3289>`__)
- **UI**: Prevent glitches in the new session details sections (`#3313 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3313>`__).

Internal Changes
~~~~~~~~~~~~~~~~

**Improvements**

- **UI**: Update Storybook to show Renku 2.0 re-usable elements (`#3254 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3254>`__).
- **UI**: Add and edit connected services from the admin panel (`#3329 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3329>`__).
- **Search Services**: Allow to re-provision the index from data-services and as part of a SOLR schema migration
- **Helm chart**: Add RBAC for K8s cache for new AmaltheaSessions custom resource
- **Gateway**: Add extra credentials for the data service for the new AmaltheaSessions
- **Gateway**: Remove unused Python code
- **Data services**: Support event queue re-provisioning
- **Data services**: Support listing projects and groups by direct membership

**🐞 Bug Fixes**

- **Data services**: Do not use gather() in when listing projects
- **Data services**: Order resource classes by GPU, CPU, RAM and storage
- **Data services**: Following redirects when sending requests to git repositories
- **Data services**: Allow unsetting secrets for cloud storage
- **Helm chart**: Increase the connection timeout for the Authzed database health checks

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

- `renku-search 0.6.1 <https://github.com/SwissDataScienceCenter/renku-search/releases/tag/v0.6.0>`_
- `renku-ui 3.36.0 <https://github.com/SwissDataScienceCenter/renku-ui/releases/tag/3.36.0>`_
- `renku-ui 3.37.0 <https://github.com/SwissDataScienceCenter/renku-ui/releases/tag/3.37.0>`_
- `renku-ui 3.37.1 <https://github.com/SwissDataScienceCenter/renku-ui/releases/tag/3.37.1>`_
- `renku-gateway 1.1.0 <https://github.com/SwissDataScienceCenter/renku-gateway/releases/tag/1.1.0>`_
- `renku-data-services 0.21.0 <https://github.com/SwissDataScienceCenter/renku-data-services/releases/tag/v0.21.0>`__
- `renku-data-services 0.22.0 <https://github.com/SwissDataScienceCenter/renku-data-services/releases/tag/v0.22.0>`__

0.57.2
------

Expand All @@ -10,7 +64,7 @@ User-facing Changes

**Bug Fixes**

- **UI**: show the correct repository access status
- **UI**: show the correct repository access status
- **Sessions**: allow paused sessions with cloud storage secrets to resume normally

Internal Changes
Expand Down Expand Up @@ -65,7 +119,7 @@ Individual Components
Renku `0.57.0` brings a suite of new features and improvements to the Renku 2.0 beta. As a main
highlight, you can now save and reuse the credentials for data sources. No more copy/paste on every
session launch! We have also made small improvements to sharing, search, and sessions in Renku 2.0.
For a full list of changes, see the list below.
For a full list of changes, see the list below.


NOTE to administrators: Upgrading the `csi-rclone` component will unmount all cloud storage for all
Expand Down
80 changes: 80 additions & 0 deletions cypress-tests/cypress/e2e/dashboardV2.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import { getRandomString, validateLogin } from "../support/commands/general";
import { generatorProjectName } from "../support/commands/projects";
import {
createProjectIfMissingAPIV2,
deleteProjectFromAPIV2, getProjectByNamespaceAPIV2,
getUserNamespaceAPIV2, ProjectIdentifierV2
} from "../support/utils/projectsV2.utils";
const projectTestConfig = {
projectAlreadyExists: false,
projectName: generatorProjectName("dashboardV2"),
};

const prefixProjectTitle = "My Renku Project";
const sessionId = ["dashboardV2", getRandomString()];

describe("Dashboard v2 - Authenticated user", () => {
const projectIdentifier: ProjectIdentifierV2 = {
slug: projectTestConfig.projectName,
id: null,
namespace: null,
};

after(() => {
if (!projectTestConfig.projectAlreadyExists && projectIdentifier.id != null){
deleteProjectFromAPIV2(projectIdentifier);
getProjectByNamespaceAPIV2(projectIdentifier).then((response) => {
expect(response.status).to.equal(404);
});
}

});

beforeEach(() => {
// Restore the session
cy.session(
sessionId,
() => {
cy.robustLogin();
},
validateLogin
);
getUserNamespaceAPIV2().then((namespace) => {
if (namespace) {
projectIdentifier.namespace = namespace;
createProjectIfMissingAPIV2({
visibility: "private",
name: `${prefixProjectTitle} ${projectIdentifier.slug}`,
namespace,
slug: projectIdentifier.slug,
}).then((project) => projectIdentifier.id=project.id)
} else {
cy.log('No user namespace found, project cannot be created.');
}
});
});

it("Can see own project on the dashboard", () => {
cy.visit("v2");
cy.getDataCy("dashboard-project-list").find("a").should("have.length.at.least", 1);
cy.getDataCy("dashboard-project-list").find("a").should("contain.text", `${prefixProjectTitle} ${projectIdentifier.slug}`);
cy.getDataCy("dashboard-project-list").find("a").should("contain.text", projectIdentifier.slug);
});

it("Can find project in the search results", () => {
cy.visit("v2");
cy.getDataCy("view-my-projects-btn").click();
cy.getDataCy("search-card").should("have.length.at.least", 1);
cy.getDataCy("search-card").should("contain.text", `${prefixProjectTitle} ${projectIdentifier.slug}`);
});
});

describe("Dashboard v2 - Non-Authenticated user", () => {
it("Cannot see projects and groups on Dashboard when logged out", () => {
cy.visit("v2");
cy.getDataCy("projects-container").contains("No 2.0 projects.");
cy.getDataCy("view-other-projects-btn").should("be.visible");
cy.getDataCy("groups-container").contains("No 2.0 groups.");
cy.getDataCy("view-other-groups-btn").should("be.visible");
});
});
4 changes: 2 additions & 2 deletions cypress-tests/cypress/support/commands/login.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const register = (
firstName?: string,
lastName?: string
) => {
cy.visit("/login");
cy.visit("/api/auth/login");

// ? wait to be assess whether tokens were refreshed automatically or we really need to register
cy.wait(1000); // eslint-disable-line cypress/no-unnecessary-waiting
Expand Down Expand Up @@ -141,7 +141,7 @@ function logout() {
cy.get("#profile-dropdown").should("be.visible").click();
cy.get("#logout-link").should("be.visible").click();
// Make sure we fully log out
cy.wait(1_000);
cy.wait(15_000);
}

export default function registerLoginCommands() {
Expand Down
55 changes: 55 additions & 0 deletions cypress-tests/cypress/support/utils/projectsV2.utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
export type ProjectIdentifierV2 = {
slug: string;
namespace?: string;
id?: string;
};

export interface NewProjectV2Props extends ProjectIdentifierV2 {
visibility?: "public" | "private";
name: string;
}

/** Get the namespace of the logged in user from the API. */
export function getUserNamespaceAPIV2(): Cypress.Chainable<string | null> {
return cy.request({ failOnStatusCode: false, method: "GET", url: `api/data/namespaces?minimum_role=owner` })
.then((response) => {
if (response.status === 200) {
const userNamespace = response.body?.filter((namespace) => namespace.namespace_kind === "user");
return userNamespace && userNamespace.length > 0 ? userNamespace[0].slug : null;
}
return null;
});
}

/** Get a project by using only the API. */
export function getProjectByNamespaceAPIV2(newProjectProps: ProjectIdentifierV2): Cypress.Chainable<any | null> {
return cy.request({ failOnStatusCode: false, method: "GET", url: `api/data/projects/${newProjectProps.namespace}/${newProjectProps.slug}` });
}

/** Create a project (if the project is missing) by using only the API. */
export function createProjectIfMissingAPIV2(newProjectProps: NewProjectV2Props) {
return getProjectByNamespaceAPIV2(newProjectProps)
.then((response) => {
if (response.status != 200) {
return cy.request({
method: "POST",
url: "api/data/projects",
body: newProjectProps,
headers: {
'Content-Type': 'application/json'
}
});
} else {
return response.body;
}
});
}

/** Delete a project by using only the API. */
export function deleteProjectFromAPIV2(projectIdentifier: ProjectIdentifierV2) {
return cy.request({
failOnStatusCode: false,
method: "DELETE",
url: `api/data/projects/${projectIdentifier.id}`,
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Callback URLs:

.. code-block:: console
https://<your-renku-dns>/login/redirect/gitlab
https://<your-renku-dns>/api/auth/callback
https://<your-renku-dns>/api/auth/gitlab/token
Scopes:
Expand Down
1 change: 1 addition & 0 deletions docs/spelling_wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,7 @@ unmounting
unpause
unpushed
unschedulable
unsetting
untracked
untracked
updatable
Expand Down
35 changes: 35 additions & 0 deletions helm-chart/renku/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -176,3 +176,38 @@ renku-authz-tls-cert
{{- define "renku.CASecretName" -}}
renku-ca
{{- end -}}

{{- define "renku.events.streamEnvVars" -}}
- name: "RS_REDIS_QUEUE_PROJECT_CREATED"
value: "project.created"
- name: "RS_REDIS_QUEUE_PROJECT_UPDATED"
value: "project.updated"
- name: "RS_REDIS_QUEUE_PROJECT_REMOVED"
value: "project.removed"
- name: "RS_REDIS_QUEUE_PROJECTAUTH_ADDED"
value: "projectAuth.added"
- name: "RS_REDIS_QUEUE_PROJECTAUTH_UPDATED"
value: "projectAuth.updated"
- name: "RS_REDIS_QUEUE_PROJECTAUTH_REMOVED"
value: "projectAuth.removed"
- name: "RS_REDIS_QUEUE_USER_ADDED"
value: "user.added"
- name: "RS_REDIS_QUEUE_USER_UPDATED"
value: "user.updated"
- name: "RS_REDIS_QUEUE_USER_REMOVED"
value: "user.removed"
- name: "RS_REDIS_QUEUE_GROUP_ADDED"
value: "group.added"
- name: "RS_REDIS_QUEUE_GROUP_UPDATED"
value: "group.updated"
- name: "RS_REDIS_QUEUE_GROUP_REMOVED"
value: "group.removed"
- name: "RS_REDIS_QUEUE_GROUPMEMBER_ADDED"
value: "groupMember.added"
- name: "RS_REDIS_QUEUE_GROUPMEMBER_UPDATED"
value: "groupMember.updated"
- name: "RS_REDIS_QUEUE_GROUPMEMBER_REMOVED"
value: "groupMember.removed"
- name: "RS_REDIS_QUEUE_DATASERVICE_ALLEVENTS"
value: "data_service.all_events"
{{- end -}}
4 changes: 4 additions & 0 deletions helm-chart/renku/templates/authz/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@ spec:
- -addr=127.0.0.1:50051
- -tls
- -tls-server-name={{ template "renku.fullname" . }}-authz
- -connect-timeout
- "3s"
timeoutSeconds: 3
periodSeconds: 10
readinessProbe:
Expand All @@ -118,6 +120,8 @@ spec:
- -addr=127.0.0.1:50051
- -tls
- -tls-server-name={{ template "renku.fullname" . }}-authz
- -connect-timeout
- "3s"
timeoutSeconds: 3
periodSeconds: 10
resources:
Expand Down
2 changes: 2 additions & 0 deletions helm-chart/renku/templates/data-service/rbac.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{{- if .Values.dataService.rbac.create -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
Expand Down Expand Up @@ -85,3 +86,4 @@ subjects:
- kind: ServiceAccount
name: {{ template "renku.fullname" . }}-data-service
namespace: {{ .Release.Namespace }}
{{- end -}}
12 changes: 12 additions & 0 deletions helm-chart/renku/templates/notebooks/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,5 +67,17 @@ rules:
- list
- get
- watch
- apiGroups:
- amalthea.dev
resources:
- amaltheasessions
verbs:
- create
- update
- delete
- patch
- list
- get
- watch
{{ end }}
{{ end }}
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,7 @@ spec:
key: {{ .Values.global.redis.existingSecretPasswordKey }}
- name: RS_REDIS_MASTER_SET
value: {{ .Values.global.redis.sentinel.masterSet | quote }}
{{- range $k, $v := .Values.global.events.streams }}
- name: RS_REDIS_QUEUE_{{ $k }}
value: {{ $v }}
{{- end }}
{{- include "renku.events.streamEnvVars" . | nindent 12 }}
- name: RS_SOLR_URL
value: "http://{{ template "solr.fullname" . }}:{{ .Values.global.solr.port }}"
- name: RS_SOLR_CORE
Expand Down
Loading

0 comments on commit a6ebf7f

Please sign in to comment.