diff --git a/workspaces/backend/README.md b/workspaces/backend/README.md index b9517b601..874f043b2 100644 --- a/workspaces/backend/README.md +++ b/workspaces/backend/README.md @@ -93,7 +93,6 @@ curl -X POST http://localhost:4000/api/v1/workspaces/default \ "name": "dora", "kind": "jupyterlab", "paused": false, - "deferUpdates": false, "podTemplate": { "podMetadata": { "labels": { diff --git a/workspaces/backend/api/suite_test.go b/workspaces/backend/api/suite_test.go index 17021c983..53b249dfa 100644 --- a/workspaces/backend/api/suite_test.go +++ b/workspaces/backend/api/suite_test.go @@ -177,9 +177,8 @@ func NewExampleWorkspace(name string, namespace string, workspaceKind string) *k Namespace: namespace, }, Spec: kubefloworgv1beta1.WorkspaceSpec{ - Paused: ptr.To(false), - DeferUpdates: ptr.To(false), - Kind: workspaceKind, + Paused: ptr.To(false), + Kind: workspaceKind, PodTemplate: kubefloworgv1beta1.WorkspacePodTemplate{ PodMetadata: &kubefloworgv1beta1.WorkspacePodMetadata{ Labels: nil, diff --git a/workspaces/backend/api/workspaces_handler_test.go b/workspaces/backend/api/workspaces_handler_test.go index 91d56b4b5..2c4c1754a 100644 --- a/workspaces/backend/api/workspaces_handler_test.go +++ b/workspaces/backend/api/workspaces_handler_test.go @@ -690,10 +690,9 @@ var _ = Describe("Workspaces Handler", func() { By("defining a WorkspaceCreate model") workspaceCreate := &models.WorkspaceCreate{ - Name: workspaceName, - Kind: workspaceKindName, - Paused: false, - DeferUpdates: false, + Name: workspaceName, + Kind: workspaceKindName, + Paused: false, PodTemplate: models.PodTemplateMutate{ PodMetadata: models.PodMetadataMutate{ Labels: map[string]string{ @@ -757,7 +756,6 @@ var _ = Describe("Workspaces Handler", func() { Expect(createdWorkspace.ObjectMeta.Name).To(Equal(workspaceName)) Expect(createdWorkspace.Spec.Kind).To(Equal(workspaceKindName)) Expect(createdWorkspace.Spec.Paused).To(Equal(&workspaceCreate.Paused)) - Expect(createdWorkspace.Spec.DeferUpdates).To(Equal(&workspaceCreate.DeferUpdates)) Expect(createdWorkspace.Spec.PodTemplate.PodMetadata.Labels).To(Equal(workspaceCreate.PodTemplate.PodMetadata.Labels)) Expect(createdWorkspace.Spec.PodTemplate.PodMetadata.Annotations).To(Equal(workspaceCreate.PodTemplate.PodMetadata.Annotations)) Expect(createdWorkspace.Spec.PodTemplate.Volumes.Home).To(Equal(workspaceCreate.PodTemplate.Volumes.Home)) diff --git a/workspaces/backend/internal/models/workspaces/funcs.go b/workspaces/backend/internal/models/workspaces/funcs.go index c4cf3caa6..bc874d27e 100644 --- a/workspaces/backend/internal/models/workspaces/funcs.go +++ b/workspaces/backend/internal/models/workspaces/funcs.go @@ -107,7 +107,6 @@ func NewWorkspaceModelFromWorkspace(ws *kubefloworgv1beta1.Workspace, wsk *kubef Icon: iconRef, Logo: logoRef, }, - DeferUpdates: ptr.Deref(ws.Spec.DeferUpdates, false), Paused: ptr.Deref(ws.Spec.Paused, false), PausedTime: ws.Status.PauseTime, PendingRestart: ws.Status.PendingRestart, diff --git a/workspaces/backend/internal/models/workspaces/funcs_write.go b/workspaces/backend/internal/models/workspaces/funcs_write.go index ee980c534..6f095574b 100644 --- a/workspaces/backend/internal/models/workspaces/funcs_write.go +++ b/workspaces/backend/internal/models/workspaces/funcs_write.go @@ -45,10 +45,9 @@ func NewWorkspaceCreateModelFromWorkspace(ws *kubefloworgv1beta1.Workspace) *Wor } workspaceCreateModel := &WorkspaceCreate{ - Name: ws.Name, - Kind: ws.Spec.Kind, - Paused: ptr.Deref(ws.Spec.Paused, false), - DeferUpdates: ptr.Deref(ws.Spec.DeferUpdates, false), + Name: ws.Name, + Kind: ws.Spec.Kind, + Paused: ptr.Deref(ws.Spec.Paused, false), PodTemplate: PodTemplateMutate{ PodMetadata: PodMetadataMutate{ Labels: podLabels, diff --git a/workspaces/backend/internal/models/workspaces/types.go b/workspaces/backend/internal/models/workspaces/types.go index 4e8ddaecd..d63c1a4b7 100644 --- a/workspaces/backend/internal/models/workspaces/types.go +++ b/workspaces/backend/internal/models/workspaces/types.go @@ -22,7 +22,6 @@ type Workspace struct { Name string `json:"name"` Namespace string `json:"namespace"` WorkspaceKind WorkspaceKindInfo `json:"workspaceKind"` - DeferUpdates bool `json:"deferUpdates"` Paused bool `json:"paused"` PausedTime int64 `json:"pausedTime"` PendingRestart bool `json:"pendingRestart"` diff --git a/workspaces/backend/internal/models/workspaces/types_write.go b/workspaces/backend/internal/models/workspaces/types_write.go index 59b679aa5..83fcf4830 100644 --- a/workspaces/backend/internal/models/workspaces/types_write.go +++ b/workspaces/backend/internal/models/workspaces/types_write.go @@ -24,11 +24,10 @@ import ( // WorkspaceCreate is used to create a new workspace. type WorkspaceCreate struct { - Name string `json:"name"` - Kind string `json:"kind"` - Paused bool `json:"paused"` - DeferUpdates bool `json:"deferUpdates"` - PodTemplate PodTemplateMutate `json:"podTemplate"` + Name string `json:"name"` + Kind string `json:"kind"` + Paused bool `json:"paused"` + PodTemplate PodTemplateMutate `json:"podTemplate"` } // Validate validates the WorkspaceCreate struct. diff --git a/workspaces/backend/internal/repositories/workspaces/repo.go b/workspaces/backend/internal/repositories/workspaces/repo.go index dc4541a27..f5cc9e2b7 100644 --- a/workspaces/backend/internal/repositories/workspaces/repo.go +++ b/workspaces/backend/internal/repositories/workspaces/repo.go @@ -162,9 +162,8 @@ func (r *WorkspaceRepository) CreateWorkspace(ctx context.Context, workspaceCrea Namespace: namespace, }, Spec: kubefloworgv1beta1.WorkspaceSpec{ - Paused: &workspaceCreate.Paused, - DeferUpdates: &workspaceCreate.DeferUpdates, - Kind: workspaceKindName, + Paused: &workspaceCreate.Paused, + Kind: workspaceKindName, PodTemplate: kubefloworgv1beta1.WorkspacePodTemplate{ PodMetadata: &kubefloworgv1beta1.WorkspacePodMetadata{ Labels: workspaceCreate.PodTemplate.PodMetadata.Labels, diff --git a/workspaces/backend/openapi/docs.go b/workspaces/backend/openapi/docs.go index 23ff37bb5..b83dcc8ce 100644 --- a/workspaces/backend/openapi/docs.go +++ b/workspaces/backend/openapi/docs.go @@ -1742,7 +1742,6 @@ const docTemplate = `{ "type": "object", "required": [ "activity", - "deferUpdates", "name", "namespace", "paused", @@ -1758,9 +1757,6 @@ const docTemplate = `{ "activity": { "$ref": "#/definitions/workspaces.Activity" }, - "deferUpdates": { - "type": "boolean" - }, "name": { "type": "string" }, @@ -1799,16 +1795,12 @@ const docTemplate = `{ "workspaces.WorkspaceCreate": { "type": "object", "required": [ - "deferUpdates", "kind", "name", "paused", "podTemplate" ], "properties": { - "deferUpdates": { - "type": "boolean" - }, "kind": { "type": "string" }, diff --git a/workspaces/backend/openapi/swagger.json b/workspaces/backend/openapi/swagger.json index 390c86246..29dbc9fa9 100644 --- a/workspaces/backend/openapi/swagger.json +++ b/workspaces/backend/openapi/swagger.json @@ -1740,7 +1740,6 @@ "type": "object", "required": [ "activity", - "deferUpdates", "name", "namespace", "paused", @@ -1756,9 +1755,6 @@ "activity": { "$ref": "#/definitions/workspaces.Activity" }, - "deferUpdates": { - "type": "boolean" - }, "name": { "type": "string" }, @@ -1797,16 +1793,12 @@ "workspaces.WorkspaceCreate": { "type": "object", "required": [ - "deferUpdates", "kind", "name", "paused", "podTemplate" ], "properties": { - "deferUpdates": { - "type": "boolean" - }, "kind": { "type": "string" }, diff --git a/workspaces/controller/api/v1beta1/workspace_types.go b/workspaces/controller/api/v1beta1/workspace_types.go index c107079f2..8237ff081 100644 --- a/workspaces/controller/api/v1beta1/workspace_types.go +++ b/workspaces/controller/api/v1beta1/workspace_types.go @@ -36,12 +36,6 @@ type WorkspaceSpec struct { // +kubebuilder:default=false Paused *bool `json:"paused,omitempty"` - // if true, pending updates are NOT applied when the Workspace is paused - // if false, pending updates are applied when the Workspace is paused - // +kubebuilder:validation:Optional - // +kubebuilder:default=false - DeferUpdates *bool `json:"deferUpdates,omitempty"` - // the WorkspaceKind to use // +kubebuilder:validation:MinLength:=2 // +kubebuilder:validation:MaxLength:=63 diff --git a/workspaces/controller/api/v1beta1/zz_generated.deepcopy.go b/workspaces/controller/api/v1beta1/zz_generated.deepcopy.go index c8e0d99ce..138f6396d 100644 --- a/workspaces/controller/api/v1beta1/zz_generated.deepcopy.go +++ b/workspaces/controller/api/v1beta1/zz_generated.deepcopy.go @@ -1149,11 +1149,6 @@ func (in *WorkspaceSpec) DeepCopyInto(out *WorkspaceSpec) { *out = new(bool) **out = **in } - if in.DeferUpdates != nil { - in, out := &in.DeferUpdates, &out.DeferUpdates - *out = new(bool) - **out = **in - } in.PodTemplate.DeepCopyInto(&out.PodTemplate) } diff --git a/workspaces/controller/internal/controller/suite_test.go b/workspaces/controller/internal/controller/suite_test.go index f553e89ac..e0e5dd97a 100644 --- a/workspaces/controller/internal/controller/suite_test.go +++ b/workspaces/controller/internal/controller/suite_test.go @@ -164,9 +164,8 @@ func NewExampleWorkspace1(name string, namespace string, workspaceKind string) * Namespace: namespace, }, Spec: kubefloworgv1beta1.WorkspaceSpec{ - Paused: ptr.To(false), - DeferUpdates: ptr.To(false), - Kind: workspaceKind, + Paused: ptr.To(false), + Kind: workspaceKind, PodTemplate: kubefloworgv1beta1.WorkspacePodTemplate{ PodMetadata: &kubefloworgv1beta1.WorkspacePodMetadata{ Labels: nil, diff --git a/workspaces/controller/internal/controller/workspace_controller.go b/workspaces/controller/internal/controller/workspace_controller.go index 8959ba2b3..5c4ad31ae 100644 --- a/workspaces/controller/internal/controller/workspace_controller.go +++ b/workspaces/controller/internal/controller/workspace_controller.go @@ -215,27 +215,6 @@ func (r *WorkspaceReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( // will result in a forced restart of all Workspaces using the WorkspaceKind. // - // if a restart is pending and the Workspace is paused, update the Workspace with the new options - if workspace.Status.PendingRestart && *workspace.Spec.Paused && !*workspace.Spec.DeferUpdates { - - // update the Workspace with the new options - workspace.Spec.PodTemplate.Options.ImageConfig = workspace.Status.PodTemplateOptions.ImageConfig.Desired - workspace.Spec.PodTemplate.Options.PodConfig = workspace.Status.PodTemplateOptions.PodConfig.Desired - - // update the Workspace - if err := r.Update(ctx, workspace); err != nil { - if apierrors.IsConflict(err) { - log.V(2).Info("update conflict while updating Workspace, will requeue") - return ctrl.Result{Requeue: true}, nil - } - log.Error(err, "unable to update Workspace") - return ctrl.Result{}, err - } - - // return and requeue to pick up the changes - return ctrl.Result{Requeue: true}, nil - } - // generate StatefulSet statefulSet, err := generateStatefulSet(workspace, workspaceKind, currentImageConfig.Spec, currentPodConfig.Spec) if err != nil { diff --git a/workspaces/controller/internal/controller/workspace_controller_test.go b/workspaces/controller/internal/controller/workspace_controller_test.go index d3a027862..f74bfa0b6 100644 --- a/workspaces/controller/internal/controller/workspace_controller_test.go +++ b/workspaces/controller/internal/controller/workspace_controller_test.go @@ -216,8 +216,7 @@ var _ = Describe("Workspace Controller", func() { // - when adding a redirect to the currently selected `imageConfig` or `podConfig` // - if the workspace is NOT paused, NO resource changes are made except setting `status.pendingRestart` // and `status.podTemplateOptions` (`desired` along with `redirectChain`) - // - if the workspace IS paused, but `deferUpdates` is true, the same as above - // - if the workspace IS paused and `deferUpdates` is false: + // - if the workspace IS paused: // - the selected options (under `spec`) should be changed to the redirect // and `status.pendingRestart` should become false, and `podTemplateOptions` should be empty // - the new options should be applied to the StatefulSet diff --git a/workspaces/controller/manifests/kustomize/base/crd/kubeflow.org_workspaces.yaml b/workspaces/controller/manifests/kustomize/base/crd/kubeflow.org_workspaces.yaml index 0b2264af4..a5b7779e4 100644 --- a/workspaces/controller/manifests/kustomize/base/crd/kubeflow.org_workspaces.yaml +++ b/workspaces/controller/manifests/kustomize/base/crd/kubeflow.org_workspaces.yaml @@ -44,12 +44,6 @@ spec: spec: description: WorkspaceSpec defines the desired state of Workspace properties: - deferUpdates: - default: false - description: |- - if true, pending updates are NOT applied when the Workspace is paused - if false, pending updates are applied when the Workspace is paused - type: boolean kind: description: the WorkspaceKind to use example: jupyterlab diff --git a/workspaces/controller/manifests/kustomize/samples/jupyterlab_v1beta1_workspace.yaml b/workspaces/controller/manifests/kustomize/samples/jupyterlab_v1beta1_workspace.yaml index a6370e1bf..04f8e365b 100644 --- a/workspaces/controller/manifests/kustomize/samples/jupyterlab_v1beta1_workspace.yaml +++ b/workspaces/controller/manifests/kustomize/samples/jupyterlab_v1beta1_workspace.yaml @@ -6,10 +6,6 @@ spec: ## if the workspace is paused (no pods running) paused: false - ## if true, pending updates are NOT applied when the Workspace is paused - ## if false, pending updates are applied when the Workspace is paused - deferUpdates: false - ## the WorkspaceKind to use kind: "jupyterlab" diff --git a/workspaces/controller/manifests/kustomize/samples/jupyterlab_v1beta1_workspacekind.yaml b/workspaces/controller/manifests/kustomize/samples/jupyterlab_v1beta1_workspacekind.yaml index 55fa5701b..668675bc0 100644 --- a/workspaces/controller/manifests/kustomize/samples/jupyterlab_v1beta1_workspacekind.yaml +++ b/workspaces/controller/manifests/kustomize/samples/jupyterlab_v1beta1_workspacekind.yaml @@ -241,8 +241,8 @@ spec: ## - hidden options are still available to the controller and manually created Workspace resources ## - options may be "redirected" by setting `redirect.to` to another option: ## - redirected options are NOT shown in the Spawner UI - ## - redirected options are like an HTTP 302 redirect, the controller will use the target option - ## without actually changing the `spec.podTemplate.options` field of the Workspace + ## - redirected options are computed by the controller and shown in status fields + ## - users must explicitly update their Workspace via the API to apply redirects ## - the Spawner UI will warn users about Workspaces with pending restarts ## diff --git a/workspaces/frontend/scripts/swagger.version b/workspaces/frontend/scripts/swagger.version index 21ab894be..ee19af495 100644 --- a/workspaces/frontend/scripts/swagger.version +++ b/workspaces/frontend/scripts/swagger.version @@ -1 +1 @@ -4f0a29dec0d3c9f0d0f02caab4dc84101bfef8b0 +f94d911fac3ec4f4f231fff926a4c7cd49c67b3c diff --git a/workspaces/frontend/src/app/hooks/__tests__/useWorkspaceFormData.spec.tsx b/workspaces/frontend/src/app/hooks/__tests__/useWorkspaceFormData.spec.tsx index 32e1bd1be..3ff6566d3 100644 --- a/workspaces/frontend/src/app/hooks/__tests__/useWorkspaceFormData.spec.tsx +++ b/workspaces/frontend/src/app/hooks/__tests__/useWorkspaceFormData.spec.tsx @@ -68,7 +68,6 @@ describe('useWorkspaceFormData', () => { }, properties: { workspaceName: mockWorkspace.name, - deferUpdates: mockWorkspace.deferUpdates, volumes: mockWorkspace.podTemplate.volumes.data, secrets: mockWorkspace.podTemplate.volumes.secrets, homeDirectory: mockWorkspace.podTemplate.volumes.home?.mountPath, diff --git a/workspaces/frontend/src/app/hooks/useWorkspaceFormData.ts b/workspaces/frontend/src/app/hooks/useWorkspaceFormData.ts index c446e5e17..541dbb09f 100644 --- a/workspaces/frontend/src/app/hooks/useWorkspaceFormData.ts +++ b/workspaces/frontend/src/app/hooks/useWorkspaceFormData.ts @@ -8,7 +8,6 @@ export const EMPTY_FORM_DATA: WorkspaceFormData = { image: undefined, podConfig: undefined, properties: { - deferUpdates: false, homeDirectory: '', volumes: [], secrets: [], @@ -59,7 +58,6 @@ const useWorkspaceFormData = (args: { }, properties: { workspaceName: workspace.name, - deferUpdates: workspace.deferUpdates, volumes: workspace.podTemplate.volumes.data.map((volume) => ({ ...volume })), secrets: workspace.podTemplate.volumes.secrets?.map((secret) => ({ ...secret })) ?? [], homeDirectory: workspace.podTemplate.volumes.home?.mountPath ?? '', diff --git a/workspaces/frontend/src/app/pages/Workspaces/Details/WorkspaceDetailsPodTemplate.tsx b/workspaces/frontend/src/app/pages/Workspaces/Details/WorkspaceDetailsPodTemplate.tsx index 3a73e2d00..f7822edaf 100644 --- a/workspaces/frontend/src/app/pages/Workspaces/Details/WorkspaceDetailsPodTemplate.tsx +++ b/workspaces/frontend/src/app/pages/Workspaces/Details/WorkspaceDetailsPodTemplate.tsx @@ -8,7 +8,6 @@ metadata: name: jupyterlab-workspace spec: paused: false - deferUpdates: false kind: "jupyterlab" podTemplate: podMetadata: diff --git a/workspaces/frontend/src/app/pages/Workspaces/Form/WorkspaceForm.tsx b/workspaces/frontend/src/app/pages/Workspaces/Form/WorkspaceForm.tsx index 3b27cfb1b..af12dd677 100644 --- a/workspaces/frontend/src/app/pages/Workspaces/Form/WorkspaceForm.tsx +++ b/workspaces/frontend/src/app/pages/Workspaces/Form/WorkspaceForm.tsx @@ -158,7 +158,6 @@ const WorkspaceForm: React.FC = () => { const submitData: WorkspacesWorkspaceCreate = { name: data.properties.workspaceName, kind: data.kind.name, - deferUpdates: data.properties.deferUpdates, paused: false, podTemplate: { podMetadata: { diff --git a/workspaces/frontend/src/app/pages/Workspaces/Form/properties/WorkspaceFormPropertiesSelection.tsx b/workspaces/frontend/src/app/pages/Workspaces/Form/properties/WorkspaceFormPropertiesSelection.tsx index e6024ec3a..4998e2e8c 100644 --- a/workspaces/frontend/src/app/pages/Workspaces/Form/properties/WorkspaceFormPropertiesSelection.tsx +++ b/workspaces/frontend/src/app/pages/Workspaces/Form/properties/WorkspaceFormPropertiesSelection.tsx @@ -1,5 +1,4 @@ import React, { useMemo, useState } from 'react'; -import { Checkbox } from '@patternfly/react-core/dist/esm/components/Checkbox'; import { Content } from '@patternfly/react-core/dist/esm/components/Content'; import { Divider } from '@patternfly/react-core/dist/esm/components/Divider'; import { ExpandableSection } from '@patternfly/react-core/dist/esm/components/ExpandableSection'; @@ -52,19 +51,6 @@ const WorkspaceFormPropertiesSelection: React.FunctionComponent< data-testid="workspace-name" /> - - - onSelect({ - ...selectedProperties, - deferUpdates: !selectedProperties.deferUpdates, - }) - } - id="defer-updates" - /> - extends HttpClient @@ -69,12 +69,13 @@ export class Workspaces extends HttpClient extends HttpClient extends HttpClient @@ -151,10 +153,10 @@ export class Workspaces extends HttpClient diff --git a/workspaces/frontend/src/generated/data-contracts.ts b/workspaces/frontend/src/generated/data-contracts.ts index 12a6a45e3..f425d715d 100644 --- a/workspaces/frontend/src/generated/data-contracts.ts +++ b/workspaces/frontend/src/generated/data-contracts.ts @@ -55,11 +55,32 @@ export enum FieldErrorType { ErrorTypeTypeInvalid = 'FieldValueTypeInvalid', } +export enum ApiErrorCauseOrigin { + OriginInternal = 'INTERNAL', + OriginKubernetes = 'KUBERNETES', +} + export interface ActionsWorkspaceActionPause { paused: boolean; } +export interface ApiConflictError { + /** + * A human-readable description of the cause of the error. + * This field may be presented as-is to a reader. + */ + message?: string; + /** + * Origin indicates where the conflict error originated. + * If value is empty, the origin is unknown. + */ + origin?: ApiErrorCauseOrigin; +} + export interface ApiErrorCause { + /** ConflictCauses contains details about conflict errors that caused the request to fail. */ + conflict_cause?: ApiConflictError[]; + /** ValidationErrors contains details about validation errors that caused the request to fail. */ validation_errors?: ApiValidationError[]; } @@ -68,8 +89,11 @@ export interface ApiErrorEnvelope { } export interface ApiHTTPError { + /** Cause contains detailed information about the cause of the error. */ cause?: ApiErrorCause; + /** Code is a string representation of the HTTP status code. */ code: string; + /** Message is a human-readable description of the error. */ message: string; } @@ -78,9 +102,32 @@ export interface ApiNamespaceListEnvelope { } export interface ApiValidationError { - field: string; - message: string; - type: FieldErrorType; + /** + * The field of the resource that has caused this error, as named by its JSON serialization. + * May include dot and postfix notation for nested attributes. + * Arrays are zero-indexed. + * Fields may appear more than once in an array of causes due to fields having multiple errors. + * + * Examples: + * "name" - the field "name" on the current resource + * "items[0].name" - the field "name" on the first array entry in "items" + */ + field?: string; + /** + * A human-readable description of the cause of the error. + * This field may be presented as-is to a reader. + */ + message?: string; + /** + * Origin indicates where the validation error originated. + * If value is empty, the origin is unknown. + */ + origin?: ApiErrorCauseOrigin; + /** + * A machine-readable description of the cause of the error. + * If value is empty, there is no information available. + */ + type?: FieldErrorType; } export interface ApiWorkspaceActionPauseEnvelope { @@ -341,7 +388,6 @@ export interface WorkspacesService { export interface WorkspacesWorkspace { activity: WorkspacesActivity; - deferUpdates: boolean; name: string; namespace: string; paused: boolean; @@ -355,7 +401,6 @@ export interface WorkspacesWorkspace { } export interface WorkspacesWorkspaceCreate { - deferUpdates: boolean; kind: string; name: string; paused: boolean; diff --git a/workspaces/frontend/src/shared/mock/mockBuilder.ts b/workspaces/frontend/src/shared/mock/mockBuilder.ts index 8aaed5c2e..16324f07e 100644 --- a/workspaces/frontend/src/shared/mock/mockBuilder.ts +++ b/workspaces/frontend/src/shared/mock/mockBuilder.ts @@ -147,7 +147,6 @@ export const buildMockWorkspace = ( namespace: 'default', workspaceKind: buildMockWorkspaceKindInfo(), paused: true, - deferUpdates: true, pausedTime: new Date(2025, 3, 1).getTime(), state: WorkspacesWorkspaceState.WorkspaceStateRunning, stateMessage: 'Workspace is running', diff --git a/workspaces/frontend/src/shared/mock/mockNotebookServiceData.ts b/workspaces/frontend/src/shared/mock/mockNotebookServiceData.ts index 8a2cf687a..6f9e5628e 100644 --- a/workspaces/frontend/src/shared/mock/mockNotebookServiceData.ts +++ b/workspaces/frontend/src/shared/mock/mockNotebookServiceData.ts @@ -70,7 +70,6 @@ export const mockWorkspace2: WorkspacesWorkspace = buildMockWorkspace({ namespace: mockNamespace2.name, state: WorkspacesWorkspaceState.WorkspaceStatePaused, paused: false, - deferUpdates: false, activity: { lastActivity: new Date(2024, 11, 31).getTime(), lastUpdate: new Date(2024, 11, 20).getTime(),