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(),