diff --git a/backend/src/routes/api/notebooks/utils.ts b/backend/src/routes/api/notebooks/utils.ts index 88bb4cf0da..2dc66512ab 100644 --- a/backend/src/routes/api/notebooks/utils.ts +++ b/backend/src/routes/api/notebooks/utils.ts @@ -73,8 +73,8 @@ export const enableNotebook = async ( const url = request.headers.origin; try { - await getNotebook(fastify, notebookNamespace, name); - return await updateNotebook(fastify, username, url, notebookData); + const notebook = await getNotebook(fastify, notebookNamespace, name); + return await updateNotebook(fastify, username, url, notebookData, notebook); } catch (e) { if (e.response?.statusCode === 404) { return await createNotebook(fastify, username, url, notebookData); diff --git a/backend/src/utils/notebookUtils.ts b/backend/src/utils/notebookUtils.ts index ba93cba7aa..adaf935b59 100644 --- a/backend/src/utils/notebookUtils.ts +++ b/backend/src/utils/notebookUtils.ts @@ -1,4 +1,5 @@ import { getDashboardConfig } from './resourceUtils'; +import { merge } from 'lodash'; import { ContainerResourceAttributes, EnvironmentVariable, @@ -510,6 +511,7 @@ export const updateNotebook = async ( username: string, url: string, notebookData: NotebookData, + oldNotebook: Notebook, ): Promise => { if (!notebookData) { const error = createCustomError( @@ -521,7 +523,29 @@ export const updateNotebook = async ( throw error; } try { - const notebookAssembled = await generateNotebookResources(fastify, username, url, notebookData); + const serverNotebook = await generateNotebookResources(fastify, username, url, notebookData); + + // Fix for Workbench Certs that get overridden + // We are intentionally applying on some details as to avoid implementing logic to properly + // manage the notebook the same way as workbench + const importantOldNotebookDetails: RecursivePartial = { + spec: { + template: { + spec: { + containers: [ + { + env: oldNotebook.spec.template.spec.containers[0].env, + volumeMounts: oldNotebook.spec.template.spec.containers[0].volumeMounts, + }, + ], + volumes: oldNotebook.spec.template.spec.volumes, + }, + }, + }, + }; + + const notebookAssembled = merge({}, importantOldNotebookDetails, serverNotebook); + const response = await fastify.kube.customObjectsApi.patchNamespacedCustomObject( 'kubeflow.org', 'v1',