From 4c8638c072b3f1cc5be116ebcf1f538c174ef395 Mon Sep 17 00:00:00 2001 From: "Cornelius A. Ludmann" Date: Fri, 22 Oct 2021 13:37:25 +0000 Subject: [PATCH 1/2] [registry-facade] Add desktop_ide_ref --- .../registry-facade-api/go/imagespec.pb.go | 69 +++++++++++-------- .../registry-facade-api/go/provider.pb.go | 4 +- .../registry-facade-api/imagespec.proto | 2 + .../pkg/registry/layersource.go | 12 ++++ .../registry-facade/pkg/registry/registry.go | 9 +++ 5 files changed, 65 insertions(+), 31 deletions(-) diff --git a/components/registry-facade-api/go/imagespec.pb.go b/components/registry-facade-api/go/imagespec.pb.go index be45e4d54c09f8..337e6558db6fb9 100644 --- a/components/registry-facade-api/go/imagespec.pb.go +++ b/components/registry-facade-api/go/imagespec.pb.go @@ -4,8 +4,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.15.5 +// protoc-gen-go v1.27.1 +// protoc v3.17.3 // source: imagespec.proto package api @@ -36,6 +36,8 @@ type ImageSpec struct { IdeRef string `protobuf:"bytes,2,opt,name=ide_ref,json=ideRef,proto3" json:"ide_ref,omitempty"` // content_layer describe the last few layers which provide the workspace's content ContentLayer []*ContentLayer `protobuf:"bytes,3,rep,name=content_layer,json=contentLayer,proto3" json:"content_layer,omitempty"` + // desktop_ide_ref point to an image denotign the desktop IDE to use + DesktopIdeRef string `protobuf:"bytes,4,opt,name=desktop_ide_ref,json=desktopIdeRef,proto3" json:"desktop_ide_ref,omitempty"` } func (x *ImageSpec) Reset() { @@ -91,6 +93,13 @@ func (x *ImageSpec) GetContentLayer() []*ContentLayer { return nil } +func (x *ImageSpec) GetDesktopIdeRef() string { + if x != nil { + return x.DesktopIdeRef + } + return "" +} + // ContentLayer is a layer that provides a workspace's content type ContentLayer struct { state protoimpl.MessageState @@ -318,7 +327,7 @@ var File_imagespec_proto protoreflect.FileDescriptor var file_imagespec_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x66, 0x61, 0x63, 0x61, 0x64, - 0x65, 0x22, 0x82, 0x01, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, + 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x66, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x64, 0x65, @@ -326,32 +335,34 @@ var file_imagespec_proto_rawDesc = []byte{ 0x61, 0x79, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x22, 0x92, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x72, 0x79, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, - 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x8a, 0x01, 0x0a, 0x12, - 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x79, - 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x75, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, - 0x64, 0x69, 0x66, 0x66, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, - 0x69, 0x66, 0x66, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x2e, 0x0a, 0x12, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x18, - 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, 0x6f, - 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, - 0x2d, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, + 0x70, 0x5f, 0x69, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x65, 0x52, 0x65, 0x66, 0x22, 0x92, + 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x12, + 0x3c, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, + 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x61, + 0x79, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x3c, 0x0a, + 0x06, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2e, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x79, 0x65, + 0x72, 0x48, 0x00, 0x52, 0x06, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x73, + 0x70, 0x65, 0x63, 0x22, 0x8a, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, + 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, + 0x67, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x66, 0x66, 0x49, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, + 0x22, 0x2e, 0x0a, 0x12, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, + 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2d, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2f, + 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/components/registry-facade-api/go/provider.pb.go b/components/registry-facade-api/go/provider.pb.go index b592c1ee5b9a85..b6e6e0abadd06f 100644 --- a/components/registry-facade-api/go/provider.pb.go +++ b/components/registry-facade-api/go/provider.pb.go @@ -4,8 +4,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.15.5 +// protoc-gen-go v1.27.1 +// protoc v3.17.3 // source: provider.proto package api diff --git a/components/registry-facade-api/imagespec.proto b/components/registry-facade-api/imagespec.proto index 6915179b1c6543..74fd67d3ef19fc 100644 --- a/components/registry-facade-api/imagespec.proto +++ b/components/registry-facade-api/imagespec.proto @@ -12,6 +12,8 @@ message ImageSpec { string ide_ref = 2; // content_layer describe the last few layers which provide the workspace's content repeated ContentLayer content_layer = 3; + // desktop_ide_ref point to an image denotign the desktop IDE to use + string desktop_ide_ref = 4; } // ContentLayer is a layer that provides a workspace's content diff --git a/components/registry-facade/pkg/registry/layersource.go b/components/registry-facade/pkg/registry/layersource.go index 29834d83156139..2ed98400d1ccc4 100644 --- a/components/registry-facade/pkg/registry/layersource.go +++ b/components/registry-facade/pkg/registry/layersource.go @@ -394,6 +394,9 @@ func (src *SpecMappedImagedSource) Envs(ctx context.Context, spec *api.ImageSpec if err != nil { return nil, err } + if lsrc == nil { + return []EnvModifier{}, nil + } return lsrc.Envs(ctx, spec) } @@ -403,6 +406,9 @@ func (src *SpecMappedImagedSource) GetLayer(ctx context.Context, spec *api.Image if err != nil { return nil, err } + if lsrc == nil { + return []AddonLayer{}, nil + } return lsrc.GetLayer(ctx, spec) } @@ -412,6 +418,9 @@ func (src *SpecMappedImagedSource) HasBlob(ctx context.Context, spec *api.ImageS if err != nil { return false } + if lsrc == nil { + return false + } return lsrc.HasBlob(ctx, spec, dgst) } @@ -431,6 +440,9 @@ func (src *SpecMappedImagedSource) getDelegate(ctx context.Context, spec *api.Im if err != nil { return nil, err } + if ref == "" { + return nil, nil + } if s, ok := src.cache.Get(ref); ok { return s.(LayerSource), nil diff --git a/components/registry-facade/pkg/registry/registry.go b/components/registry-facade/pkg/registry/registry.go index 7fae9ba6ee3ac6..5e16d6abe91457 100644 --- a/components/registry-facade/pkg/registry/registry.go +++ b/components/registry-facade/pkg/registry/registry.go @@ -105,6 +105,15 @@ func NewRegistry(cfg config.Config, newResolver ResolverProvider, reg prometheus } layerSources = append(layerSources, ideLayerSource) + desktopIdeRefSource := func(s *api.ImageSpec) (ref string, err error) { + return s.DesktopIdeRef, nil + } + desktopIdeLayerSource, err := NewSpecMappedImageSource(newResolver, desktopIdeRefSource) + if err != nil { + return nil, err + } + layerSources = append(layerSources, desktopIdeLayerSource) + log.Info("preparing static layer") staticLayer := NewRevisioningLayerSource(CompositeLayerSource{}) layerSources = append(layerSources, staticLayer) From 17967fba6e3ff97af022dea0d80b1953ca794a5d Mon Sep 17 00:00:00 2001 From: "Cornelius A. Ludmann" Date: Fri, 22 Oct 2021 14:39:43 +0000 Subject: [PATCH 2/2] [ws-manager] Add destkop_ide_image --- .../ee/ws-scheduler/pkg/scaler/driver.go | 5 +- .../pkg/orchestrator/orchestrator.go | 13 +- .../server/src/workspace/workspace-starter.ts | 6 +- components/ws-manager-api/core.proto | 24 +- components/ws-manager-api/go/core.pb.go | 790 ++++++++++-------- .../typescript/src/core_pb.d.ts | 47 +- .../ws-manager-api/typescript/src/core_pb.js | 312 ++++++- components/ws-manager/pkg/manager/create.go | 10 +- .../pkg/manager/integration_test.go | 2 +- components/ws-manager/pkg/manager/status.go | 24 +- .../manager/testdata/cdwp_admission.golden | 2 +- .../pkg/manager/testdata/cdwp_admission.json | 5 +- .../cdwp_broken_resource_request.json | 4 +- .../testdata/cdwp_empty_resource_req.json | 4 +- .../manager/testdata/cdwp_fixedresources.json | 4 +- .../testdata/cdwp_fullworkspacebackup.json | 4 +- .../pkg/manager/testdata/cdwp_ghost.json | 4 +- .../pkg/manager/testdata/cdwp_imagebuild.json | 4 +- .../testdata/cdwp_imagebuild_template.json | 4 +- .../pkg/manager/testdata/cdwp_prebuild.json | 4 +- .../testdata/cdwp_prebuild_template.json | 4 +- ..._prebuild_template_override_resources.json | 4 +- .../pkg/manager/testdata/cdwp_probe.json | 4 +- .../manager/testdata/cdwp_readinessprobe.json | 4 +- .../pkg/manager/testdata/cdwp_tasks.json | 4 +- .../pkg/manager/testdata/cdwp_template.json | 4 +- .../pkg/manager/testdata/cdwp_timeout.json | 4 +- .../pkg/manager/testdata/cdwp_userns.json | 4 +- .../testdata/cdwp_withaffinity_regular.json | 4 +- .../testdata/cdwp_withaffinityheadless.json | 4 +- .../status_brokenScheduler_UNKNOWN00.golden | 3 +- .../status_cannotPull_004_CREATING00.golden | 7 +- .../status_cannotPull_005_STOPPED00.golden | 7 +- .../status_containerd4214_STOPPING00.golden | 7 +- ...tus_contentInitFailed_005_STOPPED00.golden | 7 +- .../testdata/status_disposal_STOPPED01.golden | 7 +- .../testdata/status_disposal_STOPPED02.golden | 7 +- .../testdata/status_disposal_STOPPED03.golden | 7 +- .../status_disposal_STOPPING01.golden | 7 +- .../status_disposal_STOPPING02.golden | 7 +- .../manager/testdata/status_errimgpull.golden | 3 +- .../status_errimgpull_CREATING01.golden | 7 +- ...s_failedBeforeStopping_explicitFail.golden | 3 +- .../status_failedLogs_RUNNING00.golden | 7 +- ...tus_failedPending_evicted_UNKNOWN01.golden | 3 +- ...tus_failedPending_evicted_UNKNOWN02.golden | 3 +- .../status_failedTheiaMount_PENDING00.golden | 3 +- ...atus_failedWorkspaceMount_PENDING00.golden | 3 +- .../status_firstUserActivity_RUNNING.golden | 3 +- ...tatus_headlessTaskFailed_STOPPING00.golden | 7 +- .../status_headless_STOPPING00.golden | 7 +- ...atus_ideFailedToStart_005_RUNNING00.golden | 7 +- .../status_imagespec_RUNNING00.golden | 7 +- .../testdata/status_interrupted.golden | 3 +- .../status_interrupted_CREATING00.golden | 3 +- ...rupted_networkNotReady_1_event_only.golden | 3 +- ...etworkNotReady_2_event_and_exitcode.golden | 3 +- ...orkNotReady_3_recovered_CONSTRUCTED.golden | 3 +- .../manager/testdata/status_metadata.golden | 3 +- .../manager/testdata/status_ownerToken.golden | 3 +- .../status_prebuildFail_STOPPED00.golden | 7 +- .../status_prebuildFail_STOPPING00.golden | 7 +- .../status_prebuildSuccess2_CREATING01.golden | 7 +- .../status_prebuildSuccess_STOPPED00.golden | 7 +- .../status_prebuildSuccess_STOPPING00.golden | 7 +- .../status_regularStart_Initializing00.golden | 3 +- ...atus_stoppedByRequest_000_RUNNING00.golden | 7 +- .../status_stuckInCreating_CREATING00.golden | 3 +- .../status_stuckInStopping_RUNNING00.golden | 7 +- .../status_stuckInStopping_STOPPING00.golden | 7 +- .../status_wsstartup_Creating00.golden | 3 +- .../validateStartReq_invalidType.json | 4 +- .../testdata/validateStartReq_valid.json | 4 +- .../ws-manager/pkg/manager/testing_test.go | 2 +- components/ws-proxy/pkg/proxy/infoprovider.go | 7 +- .../ws-proxy/pkg/proxy/infoprovider_test.go | 48 +- dev/loadgen/cmd/benchmark.go | 5 +- dev/loadgen/cmd/run.go | 5 +- test/pkg/integration/workspace.go | 7 +- 79 files changed, 1107 insertions(+), 502 deletions(-) diff --git a/components/ee/ws-scheduler/pkg/scaler/driver.go b/components/ee/ws-scheduler/pkg/scaler/driver.go index a639416dae8f78..61242ff670ddca 100644 --- a/components/ee/ws-scheduler/pkg/scaler/driver.go +++ b/components/ee/ws-scheduler/pkg/scaler/driver.go @@ -289,7 +289,10 @@ func (wspd *WorkspaceManagerPrescaleDriver) startGhostWorkspaces(ctx context.Con Email: "none@gitpod.io", Username: "gitpod-ghost", }, - IdeImage: wspd.Config.IDEImage, + DeprecatedIdeImage: wspd.Config.IDEImage, + IdeImage: &api.IDEImage{ + WebRef: wspd.Config.IDEImage, + }, Initializer: &csapi.WorkspaceInitializer{ Spec: &csapi.WorkspaceInitializer_Empty{ Empty: &csapi.EmptyInitializer{}, diff --git a/components/image-builder-mk3/pkg/orchestrator/orchestrator.go b/components/image-builder-mk3/pkg/orchestrator/orchestrator.go index df6ab45024d13b..16ffab5b0ba43e 100644 --- a/components/image-builder-mk3/pkg/orchestrator/orchestrator.go +++ b/components/image-builder-mk3/pkg/orchestrator/orchestrator.go @@ -357,11 +357,14 @@ func (o *Orchestrator) Build(req *protocol.BuildRequest, resp protocol.ImageBuil Owner: buildWorkspaceOwnerID, }, Spec: &wsmanapi.StartWorkspaceSpec{ - CheckoutLocation: ".", - Initializer: initializer, - Timeout: maxBuildRuntime.String(), - WorkspaceImage: o.Config.BuilderImage, - IdeImage: o.Config.BuilderImage, + CheckoutLocation: ".", + Initializer: initializer, + Timeout: maxBuildRuntime.String(), + WorkspaceImage: o.Config.BuilderImage, + DeprecatedIdeImage: o.Config.BuilderImage, + IdeImage: &wsmanapi.IDEImage{ + WebRef: o.Config.BuilderImage, + }, WorkspaceLocation: contextPath, Envvars: []*wsmanapi.EnvironmentVariable{ {Name: "BOB_TARGET_REF", Value: wsrefstr}, diff --git a/components/server/src/workspace/workspace-starter.ts b/components/server/src/workspace/workspace-starter.ts index 4b3e7da148706c..019bf75aaa7cb9 100644 --- a/components/server/src/workspace/workspace-starter.ts +++ b/components/server/src/workspace/workspace-starter.ts @@ -12,7 +12,7 @@ import { IAnalyticsWriter } from '@gitpod/gitpod-protocol/lib/analytics'; import { log } from '@gitpod/gitpod-protocol/lib/util/logging'; import { TraceContext } from "@gitpod/gitpod-protocol/lib/util/tracing"; import { BuildRegistryAuth, BuildRegistryAuthSelective, BuildRegistryAuthTotal, BuildRequest, BuildResponse, BuildSource, BuildSourceDockerfile, BuildSourceReference, BuildStatus, ImageBuilderClientProvider, ResolveBaseImageRequest, ResolveWorkspaceImageRequest } from "@gitpod/image-builder/lib"; -import { StartWorkspaceSpec, WorkspaceFeatureFlag, StartWorkspaceResponse } from "@gitpod/ws-manager/lib"; +import { StartWorkspaceSpec, WorkspaceFeatureFlag, StartWorkspaceResponse, IDEImage } from "@gitpod/ws-manager/lib"; import { WorkspaceManagerClientProvider } from "@gitpod/ws-manager/lib/client-provider"; import { AdmissionLevel, EnvironmentVariable, GitSpec, PortSpec, PortVisibility, StartWorkspaceRequest, WorkspaceMetadata, WorkspaceType } from "@gitpod/ws-manager/lib/core_pb"; import * as crypto from 'crypto'; @@ -723,7 +723,9 @@ export class WorkspaceStarter { spec.setGit(this.createGitSpec(workspace, user)); spec.setPortsList(ports); spec.setInitializer((await initializerPromise).initializer); - spec.setIdeImage(ideImage); + const startWorkspaceSpecIDEImage = new IDEImage(); + startWorkspaceSpecIDEImage.setWebRef(ideImage); + spec.setIdeImage(startWorkspaceSpecIDEImage); spec.setWorkspaceImage(instance.workspaceImage); spec.setWorkspaceLocation(workspace.config.workspaceLocation || spec.getCheckoutLocation()); spec.setFeatureFlagsList(this.toWorkspaceFeatureFlags(featureFlags)); diff --git a/components/ws-manager-api/core.proto b/components/ws-manager-api/core.proto index a4ae74413ff630..8e6de56d1a3b0d 100644 --- a/components/ws-manager-api/core.proto +++ b/components/ws-manager-api/core.proto @@ -268,13 +268,22 @@ message WorkspaceStatus { WorkspaceAuthentication auth = 9; } + // IDEImage configures the IDE images a workspace will use + message IDEImage { + // web_ref is a reference to an OCI image used for serving the web-based IDE + string web_ref = 1; + // desktop_ref is an optional reference to an OCI image used for serving desktop IDEs + string desktop_ref = 2; + } + // WorkspaceSpec is the specification of a workspace at runtime message WorkspaceSpec { // workspace_image is the name of the Docker image this workspace runs string workspace_image = 1; - // ide_image is the name of the Docker image used as IDE - string ide_image = 2; + // deprecated_ide_image is a field present for backwards compatibility and the same + // as IDEImage.web_ref. If both fields are present, IDEImage.web_ref takes precedence. + string deprecated_ide_image = 2; // headless marks this workspace a headless one - headless workspaces are not intended for users but for automation bool headless = 3; @@ -290,6 +299,9 @@ message WorkspaceSpec { // The intervals in which a heartbeat must be received for the workspace not to time out string timeout = 7; + + // ide_image is the name of the Docker image used as IDE + IDEImage ide_image = 8; } // PortSpec describes a networking port exposed on a workspace @@ -443,8 +455,9 @@ message StartWorkspaceSpec { // workspace_image is the Docker image name of the workspace container string workspace_image = 1; - // ide_image is the Docker image name of the IDE image - string ide_image = 2; + // deprecated_ide_image is a field present for backwards compatibility and the same + // as IDEImage.web_ref. If both fields are present, IDEImage.web_ref takes precedence. + string deprecated_ide_image = 2; // feature_flags provide a means for starting variants of workspaces (e.g. a privileged one) repeated WorkspaceFeatureFlag feature_flags = 3; @@ -472,6 +485,9 @@ message StartWorkspaceSpec { // admission controlls who can access the workspace and its ports. AdmissionLevel admission = 11; + + // ide_image is the Docker image name of the IDE image + IDEImage ide_image = 12; } // WorkspaceFeatureFlag enable non-standard behaviour in workspaces diff --git a/components/ws-manager-api/go/core.pb.go b/components/ws-manager-api/go/core.pb.go index 91a1f25a1f2bcd..1b8d4c1bf9ad17 100644 --- a/components/ws-manager-api/go/core.pb.go +++ b/components/ws-manager-api/go/core.pb.go @@ -1772,6 +1772,64 @@ func (x *WorkspaceStatus) GetAuth() *WorkspaceAuthentication { return nil } +// IDEImage configures the IDE images a workspace will use +type IDEImage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // web_ref is a reference to an OCI image used for serving the web-based IDE + WebRef string `protobuf:"bytes,1,opt,name=web_ref,json=webRef,proto3" json:"web_ref,omitempty"` + // desktop_ref is an optional reference to an OCI image used for serving desktop IDEs + DesktopRef string `protobuf:"bytes,2,opt,name=desktop_ref,json=desktopRef,proto3" json:"desktop_ref,omitempty"` +} + +func (x *IDEImage) Reset() { + *x = IDEImage{} + if protoimpl.UnsafeEnabled { + mi := &file_core_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IDEImage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IDEImage) ProtoMessage() {} + +func (x *IDEImage) ProtoReflect() protoreflect.Message { + mi := &file_core_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IDEImage.ProtoReflect.Descriptor instead. +func (*IDEImage) Descriptor() ([]byte, []int) { + return file_core_proto_rawDescGZIP(), []int{24} +} + +func (x *IDEImage) GetWebRef() string { + if x != nil { + return x.WebRef + } + return "" +} + +func (x *IDEImage) GetDesktopRef() string { + if x != nil { + return x.DesktopRef + } + return "" +} + // WorkspaceSpec is the specification of a workspace at runtime type WorkspaceSpec struct { state protoimpl.MessageState @@ -1780,8 +1838,9 @@ type WorkspaceSpec struct { // workspace_image is the name of the Docker image this workspace runs WorkspaceImage string `protobuf:"bytes,1,opt,name=workspace_image,json=workspaceImage,proto3" json:"workspace_image,omitempty"` - // ide_image is the name of the Docker image used as IDE - IdeImage string `protobuf:"bytes,2,opt,name=ide_image,json=ideImage,proto3" json:"ide_image,omitempty"` + // deprecated_ide_image is a field present for backwards compatibility and the same + // as IDEImage.web_ref. If both fields are present, IDEImage.web_ref takes precedence. + DeprecatedIdeImage string `protobuf:"bytes,2,opt,name=deprecated_ide_image,json=deprecatedIdeImage,proto3" json:"deprecated_ide_image,omitempty"` // headless marks this workspace a headless one - headless workspaces are not intended for users but for automation Headless bool `protobuf:"varint,3,opt,name=headless,proto3" json:"headless,omitempty"` // URL is the external URL of the workspace @@ -1792,12 +1851,14 @@ type WorkspaceSpec struct { Type WorkspaceType `protobuf:"varint,6,opt,name=type,proto3,enum=wsman.WorkspaceType" json:"type,omitempty"` // The intervals in which a heartbeat must be received for the workspace not to time out Timeout string `protobuf:"bytes,7,opt,name=timeout,proto3" json:"timeout,omitempty"` + // ide_image is the name of the Docker image used as IDE + IdeImage *IDEImage `protobuf:"bytes,8,opt,name=ide_image,json=ideImage,proto3" json:"ide_image,omitempty"` } func (x *WorkspaceSpec) Reset() { *x = WorkspaceSpec{} if protoimpl.UnsafeEnabled { - mi := &file_core_proto_msgTypes[24] + mi := &file_core_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1810,7 +1871,7 @@ func (x *WorkspaceSpec) String() string { func (*WorkspaceSpec) ProtoMessage() {} func (x *WorkspaceSpec) ProtoReflect() protoreflect.Message { - mi := &file_core_proto_msgTypes[24] + mi := &file_core_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1823,7 +1884,7 @@ func (x *WorkspaceSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceSpec.ProtoReflect.Descriptor instead. func (*WorkspaceSpec) Descriptor() ([]byte, []int) { - return file_core_proto_rawDescGZIP(), []int{24} + return file_core_proto_rawDescGZIP(), []int{25} } func (x *WorkspaceSpec) GetWorkspaceImage() string { @@ -1833,9 +1894,9 @@ func (x *WorkspaceSpec) GetWorkspaceImage() string { return "" } -func (x *WorkspaceSpec) GetIdeImage() string { +func (x *WorkspaceSpec) GetDeprecatedIdeImage() string { if x != nil { - return x.IdeImage + return x.DeprecatedIdeImage } return "" } @@ -1875,6 +1936,13 @@ func (x *WorkspaceSpec) GetTimeout() string { return "" } +func (x *WorkspaceSpec) GetIdeImage() *IDEImage { + if x != nil { + return x.IdeImage + } + return nil +} + // PortSpec describes a networking port exposed on a workspace type PortSpec struct { state protoimpl.MessageState @@ -1894,7 +1962,7 @@ type PortSpec struct { func (x *PortSpec) Reset() { *x = PortSpec{} if protoimpl.UnsafeEnabled { - mi := &file_core_proto_msgTypes[25] + mi := &file_core_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1907,7 +1975,7 @@ func (x *PortSpec) String() string { func (*PortSpec) ProtoMessage() {} func (x *PortSpec) ProtoReflect() protoreflect.Message { - mi := &file_core_proto_msgTypes[25] + mi := &file_core_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1920,7 +1988,7 @@ func (x *PortSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use PortSpec.ProtoReflect.Descriptor instead. func (*PortSpec) Descriptor() ([]byte, []int) { - return file_core_proto_rawDescGZIP(), []int{25} + return file_core_proto_rawDescGZIP(), []int{26} } func (x *PortSpec) GetPort() uint32 { @@ -1986,7 +2054,7 @@ type WorkspaceConditions struct { func (x *WorkspaceConditions) Reset() { *x = WorkspaceConditions{} if protoimpl.UnsafeEnabled { - mi := &file_core_proto_msgTypes[26] + mi := &file_core_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1999,7 +2067,7 @@ func (x *WorkspaceConditions) String() string { func (*WorkspaceConditions) ProtoMessage() {} func (x *WorkspaceConditions) ProtoReflect() protoreflect.Message { - mi := &file_core_proto_msgTypes[26] + mi := &file_core_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2012,7 +2080,7 @@ func (x *WorkspaceConditions) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceConditions.ProtoReflect.Descriptor instead. func (*WorkspaceConditions) Descriptor() ([]byte, []int) { - return file_core_proto_rawDescGZIP(), []int{26} + return file_core_proto_rawDescGZIP(), []int{27} } func (x *WorkspaceConditions) GetFailed() string { @@ -2112,7 +2180,7 @@ type WorkspaceMetadata struct { func (x *WorkspaceMetadata) Reset() { *x = WorkspaceMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_core_proto_msgTypes[27] + mi := &file_core_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2125,7 +2193,7 @@ func (x *WorkspaceMetadata) String() string { func (*WorkspaceMetadata) ProtoMessage() {} func (x *WorkspaceMetadata) ProtoReflect() protoreflect.Message { - mi := &file_core_proto_msgTypes[27] + mi := &file_core_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2138,7 +2206,7 @@ func (x *WorkspaceMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceMetadata.ProtoReflect.Descriptor instead. func (*WorkspaceMetadata) Descriptor() ([]byte, []int) { - return file_core_proto_rawDescGZIP(), []int{27} + return file_core_proto_rawDescGZIP(), []int{28} } func (x *WorkspaceMetadata) GetOwner() string { @@ -2188,7 +2256,7 @@ type WorkspaceRuntimeInfo struct { func (x *WorkspaceRuntimeInfo) Reset() { *x = WorkspaceRuntimeInfo{} if protoimpl.UnsafeEnabled { - mi := &file_core_proto_msgTypes[28] + mi := &file_core_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2201,7 +2269,7 @@ func (x *WorkspaceRuntimeInfo) String() string { func (*WorkspaceRuntimeInfo) ProtoMessage() {} func (x *WorkspaceRuntimeInfo) ProtoReflect() protoreflect.Message { - mi := &file_core_proto_msgTypes[28] + mi := &file_core_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2214,7 +2282,7 @@ func (x *WorkspaceRuntimeInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceRuntimeInfo.ProtoReflect.Descriptor instead. func (*WorkspaceRuntimeInfo) Descriptor() ([]byte, []int) { - return file_core_proto_rawDescGZIP(), []int{28} + return file_core_proto_rawDescGZIP(), []int{29} } func (x *WorkspaceRuntimeInfo) GetNodeName() string { @@ -2254,7 +2322,7 @@ type WorkspaceAuthentication struct { func (x *WorkspaceAuthentication) Reset() { *x = WorkspaceAuthentication{} if protoimpl.UnsafeEnabled { - mi := &file_core_proto_msgTypes[29] + mi := &file_core_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2267,7 +2335,7 @@ func (x *WorkspaceAuthentication) String() string { func (*WorkspaceAuthentication) ProtoMessage() {} func (x *WorkspaceAuthentication) ProtoReflect() protoreflect.Message { - mi := &file_core_proto_msgTypes[29] + mi := &file_core_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2280,7 +2348,7 @@ func (x *WorkspaceAuthentication) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceAuthentication.ProtoReflect.Descriptor instead. func (*WorkspaceAuthentication) Descriptor() ([]byte, []int) { - return file_core_proto_rawDescGZIP(), []int{29} + return file_core_proto_rawDescGZIP(), []int{30} } func (x *WorkspaceAuthentication) GetAdmission() AdmissionLevel { @@ -2305,8 +2373,9 @@ type StartWorkspaceSpec struct { // workspace_image is the Docker image name of the workspace container WorkspaceImage string `protobuf:"bytes,1,opt,name=workspace_image,json=workspaceImage,proto3" json:"workspace_image,omitempty"` - // ide_image is the Docker image name of the IDE image - IdeImage string `protobuf:"bytes,2,opt,name=ide_image,json=ideImage,proto3" json:"ide_image,omitempty"` + // deprecated_ide_image is a field present for backwards compatibility and the same + // as IDEImage.web_ref. If both fields are present, IDEImage.web_ref takes precedence. + DeprecatedIdeImage string `protobuf:"bytes,2,opt,name=deprecated_ide_image,json=deprecatedIdeImage,proto3" json:"deprecated_ide_image,omitempty"` // feature_flags provide a means for starting variants of workspaces (e.g. a privileged one) FeatureFlags []WorkspaceFeatureFlag `protobuf:"varint,3,rep,packed,name=feature_flags,json=featureFlags,proto3,enum=wsman.WorkspaceFeatureFlag" json:"feature_flags,omitempty"` // initializer configures how the workspace is to be initialized @@ -2325,12 +2394,14 @@ type StartWorkspaceSpec struct { Timeout string `protobuf:"bytes,10,opt,name=timeout,proto3" json:"timeout,omitempty"` // admission controlls who can access the workspace and its ports. Admission AdmissionLevel `protobuf:"varint,11,opt,name=admission,proto3,enum=wsman.AdmissionLevel" json:"admission,omitempty"` + // ide_image is the Docker image name of the IDE image + IdeImage *IDEImage `protobuf:"bytes,12,opt,name=ide_image,json=ideImage,proto3" json:"ide_image,omitempty"` } func (x *StartWorkspaceSpec) Reset() { *x = StartWorkspaceSpec{} if protoimpl.UnsafeEnabled { - mi := &file_core_proto_msgTypes[30] + mi := &file_core_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2343,7 +2414,7 @@ func (x *StartWorkspaceSpec) String() string { func (*StartWorkspaceSpec) ProtoMessage() {} func (x *StartWorkspaceSpec) ProtoReflect() protoreflect.Message { - mi := &file_core_proto_msgTypes[30] + mi := &file_core_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2356,7 +2427,7 @@ func (x *StartWorkspaceSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use StartWorkspaceSpec.ProtoReflect.Descriptor instead. func (*StartWorkspaceSpec) Descriptor() ([]byte, []int) { - return file_core_proto_rawDescGZIP(), []int{30} + return file_core_proto_rawDescGZIP(), []int{31} } func (x *StartWorkspaceSpec) GetWorkspaceImage() string { @@ -2366,9 +2437,9 @@ func (x *StartWorkspaceSpec) GetWorkspaceImage() string { return "" } -func (x *StartWorkspaceSpec) GetIdeImage() string { +func (x *StartWorkspaceSpec) GetDeprecatedIdeImage() string { if x != nil { - return x.IdeImage + return x.DeprecatedIdeImage } return "" } @@ -2436,6 +2507,13 @@ func (x *StartWorkspaceSpec) GetAdmission() AdmissionLevel { return AdmissionLevel_ADMIT_OWNER_ONLY } +func (x *StartWorkspaceSpec) GetIdeImage() *IDEImage { + if x != nil { + return x.IdeImage + } + return nil +} + // GitSpec configures the Git available within the workspace type GitSpec struct { state protoimpl.MessageState @@ -2451,7 +2529,7 @@ type GitSpec struct { func (x *GitSpec) Reset() { *x = GitSpec{} if protoimpl.UnsafeEnabled { - mi := &file_core_proto_msgTypes[31] + mi := &file_core_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2464,7 +2542,7 @@ func (x *GitSpec) String() string { func (*GitSpec) ProtoMessage() {} func (x *GitSpec) ProtoReflect() protoreflect.Message { - mi := &file_core_proto_msgTypes[31] + mi := &file_core_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2477,7 +2555,7 @@ func (x *GitSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use GitSpec.ProtoReflect.Descriptor instead. func (*GitSpec) Descriptor() ([]byte, []int) { - return file_core_proto_rawDescGZIP(), []int{31} + return file_core_proto_rawDescGZIP(), []int{32} } func (x *GitSpec) GetUsername() string { @@ -2507,7 +2585,7 @@ type EnvironmentVariable struct { func (x *EnvironmentVariable) Reset() { *x = EnvironmentVariable{} if protoimpl.UnsafeEnabled { - mi := &file_core_proto_msgTypes[32] + mi := &file_core_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2520,7 +2598,7 @@ func (x *EnvironmentVariable) String() string { func (*EnvironmentVariable) ProtoMessage() {} func (x *EnvironmentVariable) ProtoReflect() protoreflect.Message { - mi := &file_core_proto_msgTypes[32] + mi := &file_core_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2533,7 +2611,7 @@ func (x *EnvironmentVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use EnvironmentVariable.ProtoReflect.Descriptor instead. func (*EnvironmentVariable) Descriptor() ([]byte, []int) { - return file_core_proto_rawDescGZIP(), []int{32} + return file_core_proto_rawDescGZIP(), []int{33} } func (x *EnvironmentVariable) GetName() string { @@ -2698,237 +2776,250 @@ var file_core_proto_rawDesc = []byte{ 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, 0x22, 0xfd, 0x01, 0x0a, 0x0d, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x27, 0x0a, 0x0f, - 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x64, 0x65, 0x5f, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x68, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, - 0x12, 0x34, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, - 0x50, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, - 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x7f, 0x0a, 0x08, 0x50, 0x6f, - 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x50, - 0x6f, 0x72, 0x74, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, - 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x93, 0x05, 0x0a, 0x13, - 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x75, 0x6c, 0x6c, 0x69, 0x6e, 0x67, - 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, - 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x0d, 0x70, 0x75, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, - 0x6f, 0x6c, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x51, 0x0a, - 0x15, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, - 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x13, 0x66, 0x69, 0x6e, - 0x61, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, - 0x12, 0x39, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, - 0x6c, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x11, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, 0x22, 0x44, 0x0a, 0x08, 0x49, 0x44, + 0x45, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x5f, 0x72, 0x65, + 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x52, 0x65, 0x66, 0x12, + 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x66, + 0x22, 0xc0, 0x02, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x64, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x5f, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x70, 0x72, 0x65, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x68, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x68, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x34, 0x0a, 0x0d, 0x65, + 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, + 0x70, 0x65, 0x63, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, + 0x73, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x14, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x2c, 0x0a, 0x09, 0x69, 0x64, 0x65, 0x5f, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, + 0x2e, 0x49, 0x44, 0x45, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x08, 0x69, 0x64, 0x65, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x22, 0x7f, 0x0a, 0x08, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, + 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x76, + 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x15, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x56, 0x69, 0x73, 0x69, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x22, 0x93, 0x05, 0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x44, + 0x0a, 0x0e, 0x70, 0x75, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x6f, - 0x74, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x4a, 0x0a, 0x13, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, + 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x0d, 0x70, 0x75, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, + 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x0d, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x51, 0x0a, 0x15, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5f, + 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x13, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x08, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, 0x73, + 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x11, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x6e, 0x6f, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x0f, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x6f, 0x74, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, + 0x4a, 0x0a, 0x13, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x68, + 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x66, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x68, 0x65, 0x61, 0x64, 0x6c, + 0x65, 0x73, 0x73, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x4b, 0x0a, + 0x12, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, + 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, + 0x64, 0x42, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8a, 0x02, 0x0a, 0x11, 0x57, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x61, 0x49, 0x64, 0x12, + 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, - 0x74, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x68, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x74, - 0x61, 0x73, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x12, 0x68, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, - 0x62, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, - 0x10, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x42, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x8a, 0x02, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x17, 0x0a, - 0x07, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x6d, 0x65, 0x74, 0x61, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, - 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x67, - 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, - 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x70, 0x22, 0x6f, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x41, 0x64, + 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x67, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, + 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x70, + 0x22, 0x6f, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, + 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x09, 0x61, + 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, + 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0xd1, 0x04, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x69, 0x64, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x12, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x12, 0x40, 0x0a, 0x0d, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x77, 0x73, 0x6d, + 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x46, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, + 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x25, 0x0a, + 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, + 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x70, + 0x6f, 0x72, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x76, 0x76, 0x61, 0x72, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x45, 0x6e, + 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x52, 0x07, 0x65, 0x6e, 0x76, 0x76, 0x61, 0x72, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x03, 0x67, 0x69, 0x74, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x47, 0x69, 0x74, 0x53, + 0x70, 0x65, 0x63, 0x52, 0x03, 0x67, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x09, 0x61, 0x64, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x77, - 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8e, 0x04, 0x0a, 0x12, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x27, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x64, 0x65, 0x5f, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x40, 0x0a, 0x0d, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x77, - 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x46, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, - 0x65, 0x72, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x12, - 0x25, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, - 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x76, 0x76, 0x61, 0x72, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x76, 0x76, 0x61, 0x72, 0x73, 0x12, 0x2b, 0x0a, 0x11, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, - 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x77, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x03, 0x67, 0x69, 0x74, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x47, 0x69, - 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x67, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, - 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x09, - 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3b, 0x0a, 0x07, 0x47, 0x69, 0x74, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x3f, 0x0a, 0x13, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0x34, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x70, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0c, - 0x0a, 0x08, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, - 0x49, 0x4d, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x45, 0x4c, 0x59, 0x10, 0x01, 0x2a, 0x3a, 0x0a, - 0x0e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, - 0x14, 0x0a, 0x10, 0x41, 0x44, 0x4d, 0x49, 0x54, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x4f, - 0x4e, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x44, 0x4d, 0x49, 0x54, 0x5f, 0x45, - 0x56, 0x45, 0x52, 0x59, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x2a, 0x49, 0x0a, 0x0e, 0x50, 0x6f, 0x72, - 0x74, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x17, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, - 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x55, 0x42, 0x4c, - 0x49, 0x43, 0x10, 0x01, 0x2a, 0x38, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x09, - 0x0a, 0x05, 0x46, 0x41, 0x4c, 0x53, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x52, 0x55, - 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x10, 0x02, 0x2a, 0x83, - 0x01, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, - 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, - 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, - 0x52, 0x45, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x49, - 0x54, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x52, - 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x54, 0x45, - 0x52, 0x52, 0x55, 0x50, 0x54, 0x45, 0x44, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x4f, - 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x4f, 0x50, 0x50, - 0x45, 0x44, 0x10, 0x06, 0x2a, 0x68, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x08, 0x0a, 0x04, - 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x57, - 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, - 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, - 0x52, 0x43, 0x45, 0x53, 0x10, 0x05, 0x22, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x04, 0x08, 0x02, - 0x10, 0x02, 0x22, 0x04, 0x08, 0x03, 0x10, 0x03, 0x22, 0x04, 0x08, 0x06, 0x10, 0x06, 0x2a, 0x50, - 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x47, 0x55, 0x4c, 0x41, 0x52, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, - 0x50, 0x52, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, - 0x4f, 0x42, 0x45, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x47, 0x48, 0x4f, 0x53, 0x54, 0x10, 0x03, - 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x04, - 0x32, 0xe5, 0x06, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12, 0x4c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x47, - 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1b, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x74, - 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x58, 0x0a, 0x11, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x57, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, - 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0f, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x57, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, - 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x57, 0x6f, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x09, 0x69, 0x64, 0x65, 0x5f, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x73, 0x6d, + 0x61, 0x6e, 0x2e, 0x49, 0x44, 0x45, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x08, 0x69, 0x64, 0x65, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x3b, 0x0a, 0x07, 0x47, 0x69, 0x74, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x22, 0x3f, 0x0a, 0x13, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x2a, 0x34, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x4f, + 0x52, 0x4d, 0x41, 0x4c, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4d, 0x4d, 0x45, + 0x44, 0x49, 0x41, 0x54, 0x45, 0x4c, 0x59, 0x10, 0x01, 0x2a, 0x3a, 0x0a, 0x0e, 0x41, 0x64, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x10, 0x41, + 0x44, 0x4d, 0x49, 0x54, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, + 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x44, 0x4d, 0x49, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, + 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x2a, 0x49, 0x0a, 0x0e, 0x50, 0x6f, 0x72, 0x74, 0x56, 0x69, 0x73, + 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, + 0x54, 0x45, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x56, 0x49, 0x53, + 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x01, + 0x2a, 0x38, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x41, + 0x4c, 0x53, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x52, 0x55, 0x45, 0x10, 0x01, 0x12, + 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x10, 0x02, 0x2a, 0x83, 0x01, 0x0a, 0x0e, 0x57, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x0b, 0x0a, + 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, + 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x45, 0x41, 0x54, + 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, + 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, + 0x4e, 0x47, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55, 0x50, + 0x54, 0x45, 0x44, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, + 0x47, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x06, + 0x2a, 0x68, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4f, 0x50, + 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, + 0x50, 0x41, 0x43, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x04, 0x12, 0x13, 0x0a, + 0x0f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x53, + 0x10, 0x05, 0x22, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x04, 0x08, 0x02, 0x10, 0x02, 0x22, 0x04, + 0x08, 0x03, 0x10, 0x03, 0x22, 0x04, 0x08, 0x06, 0x10, 0x06, 0x2a, 0x50, 0x0a, 0x0d, 0x57, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x52, + 0x45, 0x47, 0x55, 0x4c, 0x41, 0x52, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x45, 0x42, + 0x55, 0x49, 0x4c, 0x44, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, 0x4f, 0x42, 0x45, 0x10, + 0x02, 0x12, 0x09, 0x0a, 0x05, 0x47, 0x48, 0x4f, 0x53, 0x54, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, + 0x49, 0x4d, 0x41, 0x47, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x04, 0x32, 0xe5, 0x06, 0x0a, + 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x12, 0x4c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1c, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x4f, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x1c, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x42, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x17, 0x2e, - 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x30, 0x01, 0x12, 0x43, 0x0a, 0x0a, 0x4d, 0x61, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x12, 0x18, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x77, - 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0a, 0x53, 0x65, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x18, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, - 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x19, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, - 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x19, 0x2e, - 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x72, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, - 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0c, 0x54, 0x61, 0x6b, 0x65, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1a, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x54, - 0x61, 0x6b, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x54, 0x61, 0x6b, 0x65, 0x53, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x55, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x64, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, 0x6f, - 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x77, 0x73, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x4c, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x1b, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, + 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, + 0x0a, 0x11, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0f, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x77, 0x73, + 0x6d, 0x61, 0x6e, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x77, 0x73, 0x6d, + 0x61, 0x6e, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x09, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x17, 0x2e, 0x77, 0x73, 0x6d, 0x61, + 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, + 0x12, 0x43, 0x0a, 0x0a, 0x4d, 0x61, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x18, + 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, + 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x12, 0x18, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, + 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0b, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x19, 0x2e, 0x77, 0x73, 0x6d, 0x61, + 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0c, 0x54, 0x61, 0x6b, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x12, 0x1a, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x54, 0x61, 0x6b, 0x65, 0x53, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, + 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x54, 0x61, 0x6b, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, + 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x1e, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1f, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, 0x6f, 0x2f, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2f, 0x77, 0x73, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2f, 0x61, + 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2944,7 +3035,7 @@ func file_core_proto_rawDescGZIP() []byte { } var file_core_proto_enumTypes = make([]protoimpl.EnumInfo, 7) -var file_core_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_core_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_core_proto_goTypes = []interface{}{ (StopWorkspacePolicy)(0), // 0: wsman.StopWorkspacePolicy (AdmissionLevel)(0), // 1: wsman.AdmissionLevel @@ -2977,89 +3068,92 @@ var file_core_proto_goTypes = []interface{}{ (*BackupWorkspaceRequest)(nil), // 28: wsman.BackupWorkspaceRequest (*BackupWorkspaceResponse)(nil), // 29: wsman.BackupWorkspaceResponse (*WorkspaceStatus)(nil), // 30: wsman.WorkspaceStatus - (*WorkspaceSpec)(nil), // 31: wsman.WorkspaceSpec - (*PortSpec)(nil), // 32: wsman.PortSpec - (*WorkspaceConditions)(nil), // 33: wsman.WorkspaceConditions - (*WorkspaceMetadata)(nil), // 34: wsman.WorkspaceMetadata - (*WorkspaceRuntimeInfo)(nil), // 35: wsman.WorkspaceRuntimeInfo - (*WorkspaceAuthentication)(nil), // 36: wsman.WorkspaceAuthentication - (*StartWorkspaceSpec)(nil), // 37: wsman.StartWorkspaceSpec - (*GitSpec)(nil), // 38: wsman.GitSpec - (*EnvironmentVariable)(nil), // 39: wsman.EnvironmentVariable - nil, // 40: wsman.MetadataFilter.AnnotationsEntry - nil, // 41: wsman.SubscribeResponse.HeaderEntry - nil, // 42: wsman.WorkspaceMetadata.AnnotationsEntry - (*api.GitStatus)(nil), // 43: contentservice.GitStatus - (*timestamppb.Timestamp)(nil), // 44: google.protobuf.Timestamp - (*api.WorkspaceInitializer)(nil), // 45: contentservice.WorkspaceInitializer + (*IDEImage)(nil), // 31: wsman.IDEImage + (*WorkspaceSpec)(nil), // 32: wsman.WorkspaceSpec + (*PortSpec)(nil), // 33: wsman.PortSpec + (*WorkspaceConditions)(nil), // 34: wsman.WorkspaceConditions + (*WorkspaceMetadata)(nil), // 35: wsman.WorkspaceMetadata + (*WorkspaceRuntimeInfo)(nil), // 36: wsman.WorkspaceRuntimeInfo + (*WorkspaceAuthentication)(nil), // 37: wsman.WorkspaceAuthentication + (*StartWorkspaceSpec)(nil), // 38: wsman.StartWorkspaceSpec + (*GitSpec)(nil), // 39: wsman.GitSpec + (*EnvironmentVariable)(nil), // 40: wsman.EnvironmentVariable + nil, // 41: wsman.MetadataFilter.AnnotationsEntry + nil, // 42: wsman.SubscribeResponse.HeaderEntry + nil, // 43: wsman.WorkspaceMetadata.AnnotationsEntry + (*api.GitStatus)(nil), // 44: contentservice.GitStatus + (*timestamppb.Timestamp)(nil), // 45: google.protobuf.Timestamp + (*api.WorkspaceInitializer)(nil), // 46: contentservice.WorkspaceInitializer } var file_core_proto_depIdxs = []int32{ - 40, // 0: wsman.MetadataFilter.annotations:type_name -> wsman.MetadataFilter.AnnotationsEntry + 41, // 0: wsman.MetadataFilter.annotations:type_name -> wsman.MetadataFilter.AnnotationsEntry 7, // 1: wsman.GetWorkspacesRequest.must_match:type_name -> wsman.MetadataFilter 30, // 2: wsman.GetWorkspacesResponse.status:type_name -> wsman.WorkspaceStatus - 34, // 3: wsman.StartWorkspaceRequest.metadata:type_name -> wsman.WorkspaceMetadata - 37, // 4: wsman.StartWorkspaceRequest.spec:type_name -> wsman.StartWorkspaceSpec + 35, // 3: wsman.StartWorkspaceRequest.metadata:type_name -> wsman.WorkspaceMetadata + 38, // 4: wsman.StartWorkspaceRequest.spec:type_name -> wsman.StartWorkspaceSpec 6, // 5: wsman.StartWorkspaceRequest.type:type_name -> wsman.WorkspaceType 0, // 6: wsman.StopWorkspaceRequest.policy:type_name -> wsman.StopWorkspacePolicy 30, // 7: wsman.DescribeWorkspaceResponse.status:type_name -> wsman.WorkspaceStatus 7, // 8: wsman.SubscribeRequest.must_match:type_name -> wsman.MetadataFilter 30, // 9: wsman.SubscribeResponse.status:type_name -> wsman.WorkspaceStatus - 41, // 10: wsman.SubscribeResponse.header:type_name -> wsman.SubscribeResponse.HeaderEntry - 32, // 11: wsman.ControlPortRequest.spec:type_name -> wsman.PortSpec + 42, // 10: wsman.SubscribeResponse.header:type_name -> wsman.SubscribeResponse.HeaderEntry + 33, // 11: wsman.ControlPortRequest.spec:type_name -> wsman.PortSpec 1, // 12: wsman.ControlAdmissionRequest.level:type_name -> wsman.AdmissionLevel - 34, // 13: wsman.WorkspaceStatus.metadata:type_name -> wsman.WorkspaceMetadata - 31, // 14: wsman.WorkspaceStatus.spec:type_name -> wsman.WorkspaceSpec + 35, // 13: wsman.WorkspaceStatus.metadata:type_name -> wsman.WorkspaceMetadata + 32, // 14: wsman.WorkspaceStatus.spec:type_name -> wsman.WorkspaceSpec 4, // 15: wsman.WorkspaceStatus.phase:type_name -> wsman.WorkspacePhase - 33, // 16: wsman.WorkspaceStatus.conditions:type_name -> wsman.WorkspaceConditions - 43, // 17: wsman.WorkspaceStatus.repo:type_name -> contentservice.GitStatus - 35, // 18: wsman.WorkspaceStatus.runtime:type_name -> wsman.WorkspaceRuntimeInfo - 36, // 19: wsman.WorkspaceStatus.auth:type_name -> wsman.WorkspaceAuthentication - 32, // 20: wsman.WorkspaceSpec.exposed_ports:type_name -> wsman.PortSpec + 34, // 16: wsman.WorkspaceStatus.conditions:type_name -> wsman.WorkspaceConditions + 44, // 17: wsman.WorkspaceStatus.repo:type_name -> contentservice.GitStatus + 36, // 18: wsman.WorkspaceStatus.runtime:type_name -> wsman.WorkspaceRuntimeInfo + 37, // 19: wsman.WorkspaceStatus.auth:type_name -> wsman.WorkspaceAuthentication + 33, // 20: wsman.WorkspaceSpec.exposed_ports:type_name -> wsman.PortSpec 6, // 21: wsman.WorkspaceSpec.type:type_name -> wsman.WorkspaceType - 2, // 22: wsman.PortSpec.visibility:type_name -> wsman.PortVisibility - 3, // 23: wsman.WorkspaceConditions.pulling_images:type_name -> wsman.WorkspaceConditionBool - 3, // 24: wsman.WorkspaceConditions.service_exists:type_name -> wsman.WorkspaceConditionBool - 3, // 25: wsman.WorkspaceConditions.final_backup_complete:type_name -> wsman.WorkspaceConditionBool - 3, // 26: wsman.WorkspaceConditions.deployed:type_name -> wsman.WorkspaceConditionBool - 3, // 27: wsman.WorkspaceConditions.network_not_ready:type_name -> wsman.WorkspaceConditionBool - 44, // 28: wsman.WorkspaceConditions.first_user_activity:type_name -> google.protobuf.Timestamp - 3, // 29: wsman.WorkspaceConditions.stopped_by_request:type_name -> wsman.WorkspaceConditionBool - 44, // 30: wsman.WorkspaceMetadata.started_at:type_name -> google.protobuf.Timestamp - 42, // 31: wsman.WorkspaceMetadata.annotations:type_name -> wsman.WorkspaceMetadata.AnnotationsEntry - 1, // 32: wsman.WorkspaceAuthentication.admission:type_name -> wsman.AdmissionLevel - 5, // 33: wsman.StartWorkspaceSpec.feature_flags:type_name -> wsman.WorkspaceFeatureFlag - 45, // 34: wsman.StartWorkspaceSpec.initializer:type_name -> contentservice.WorkspaceInitializer - 32, // 35: wsman.StartWorkspaceSpec.ports:type_name -> wsman.PortSpec - 39, // 36: wsman.StartWorkspaceSpec.envvars:type_name -> wsman.EnvironmentVariable - 38, // 37: wsman.StartWorkspaceSpec.git:type_name -> wsman.GitSpec - 1, // 38: wsman.StartWorkspaceSpec.admission:type_name -> wsman.AdmissionLevel - 8, // 39: wsman.WorkspaceManager.GetWorkspaces:input_type -> wsman.GetWorkspacesRequest - 10, // 40: wsman.WorkspaceManager.StartWorkspace:input_type -> wsman.StartWorkspaceRequest - 12, // 41: wsman.WorkspaceManager.StopWorkspace:input_type -> wsman.StopWorkspaceRequest - 14, // 42: wsman.WorkspaceManager.DescribeWorkspace:input_type -> wsman.DescribeWorkspaceRequest - 28, // 43: wsman.WorkspaceManager.BackupWorkspace:input_type -> wsman.BackupWorkspaceRequest - 16, // 44: wsman.WorkspaceManager.Subscribe:input_type -> wsman.SubscribeRequest - 18, // 45: wsman.WorkspaceManager.MarkActive:input_type -> wsman.MarkActiveRequest - 20, // 46: wsman.WorkspaceManager.SetTimeout:input_type -> wsman.SetTimeoutRequest - 22, // 47: wsman.WorkspaceManager.ControlPort:input_type -> wsman.ControlPortRequest - 24, // 48: wsman.WorkspaceManager.TakeSnapshot:input_type -> wsman.TakeSnapshotRequest - 26, // 49: wsman.WorkspaceManager.ControlAdmission:input_type -> wsman.ControlAdmissionRequest - 9, // 50: wsman.WorkspaceManager.GetWorkspaces:output_type -> wsman.GetWorkspacesResponse - 11, // 51: wsman.WorkspaceManager.StartWorkspace:output_type -> wsman.StartWorkspaceResponse - 13, // 52: wsman.WorkspaceManager.StopWorkspace:output_type -> wsman.StopWorkspaceResponse - 15, // 53: wsman.WorkspaceManager.DescribeWorkspace:output_type -> wsman.DescribeWorkspaceResponse - 29, // 54: wsman.WorkspaceManager.BackupWorkspace:output_type -> wsman.BackupWorkspaceResponse - 17, // 55: wsman.WorkspaceManager.Subscribe:output_type -> wsman.SubscribeResponse - 19, // 56: wsman.WorkspaceManager.MarkActive:output_type -> wsman.MarkActiveResponse - 21, // 57: wsman.WorkspaceManager.SetTimeout:output_type -> wsman.SetTimeoutResponse - 23, // 58: wsman.WorkspaceManager.ControlPort:output_type -> wsman.ControlPortResponse - 25, // 59: wsman.WorkspaceManager.TakeSnapshot:output_type -> wsman.TakeSnapshotResponse - 27, // 60: wsman.WorkspaceManager.ControlAdmission:output_type -> wsman.ControlAdmissionResponse - 50, // [50:61] is the sub-list for method output_type - 39, // [39:50] is the sub-list for method input_type - 39, // [39:39] is the sub-list for extension type_name - 39, // [39:39] is the sub-list for extension extendee - 0, // [0:39] is the sub-list for field type_name + 31, // 22: wsman.WorkspaceSpec.ide_image:type_name -> wsman.IDEImage + 2, // 23: wsman.PortSpec.visibility:type_name -> wsman.PortVisibility + 3, // 24: wsman.WorkspaceConditions.pulling_images:type_name -> wsman.WorkspaceConditionBool + 3, // 25: wsman.WorkspaceConditions.service_exists:type_name -> wsman.WorkspaceConditionBool + 3, // 26: wsman.WorkspaceConditions.final_backup_complete:type_name -> wsman.WorkspaceConditionBool + 3, // 27: wsman.WorkspaceConditions.deployed:type_name -> wsman.WorkspaceConditionBool + 3, // 28: wsman.WorkspaceConditions.network_not_ready:type_name -> wsman.WorkspaceConditionBool + 45, // 29: wsman.WorkspaceConditions.first_user_activity:type_name -> google.protobuf.Timestamp + 3, // 30: wsman.WorkspaceConditions.stopped_by_request:type_name -> wsman.WorkspaceConditionBool + 45, // 31: wsman.WorkspaceMetadata.started_at:type_name -> google.protobuf.Timestamp + 43, // 32: wsman.WorkspaceMetadata.annotations:type_name -> wsman.WorkspaceMetadata.AnnotationsEntry + 1, // 33: wsman.WorkspaceAuthentication.admission:type_name -> wsman.AdmissionLevel + 5, // 34: wsman.StartWorkspaceSpec.feature_flags:type_name -> wsman.WorkspaceFeatureFlag + 46, // 35: wsman.StartWorkspaceSpec.initializer:type_name -> contentservice.WorkspaceInitializer + 33, // 36: wsman.StartWorkspaceSpec.ports:type_name -> wsman.PortSpec + 40, // 37: wsman.StartWorkspaceSpec.envvars:type_name -> wsman.EnvironmentVariable + 39, // 38: wsman.StartWorkspaceSpec.git:type_name -> wsman.GitSpec + 1, // 39: wsman.StartWorkspaceSpec.admission:type_name -> wsman.AdmissionLevel + 31, // 40: wsman.StartWorkspaceSpec.ide_image:type_name -> wsman.IDEImage + 8, // 41: wsman.WorkspaceManager.GetWorkspaces:input_type -> wsman.GetWorkspacesRequest + 10, // 42: wsman.WorkspaceManager.StartWorkspace:input_type -> wsman.StartWorkspaceRequest + 12, // 43: wsman.WorkspaceManager.StopWorkspace:input_type -> wsman.StopWorkspaceRequest + 14, // 44: wsman.WorkspaceManager.DescribeWorkspace:input_type -> wsman.DescribeWorkspaceRequest + 28, // 45: wsman.WorkspaceManager.BackupWorkspace:input_type -> wsman.BackupWorkspaceRequest + 16, // 46: wsman.WorkspaceManager.Subscribe:input_type -> wsman.SubscribeRequest + 18, // 47: wsman.WorkspaceManager.MarkActive:input_type -> wsman.MarkActiveRequest + 20, // 48: wsman.WorkspaceManager.SetTimeout:input_type -> wsman.SetTimeoutRequest + 22, // 49: wsman.WorkspaceManager.ControlPort:input_type -> wsman.ControlPortRequest + 24, // 50: wsman.WorkspaceManager.TakeSnapshot:input_type -> wsman.TakeSnapshotRequest + 26, // 51: wsman.WorkspaceManager.ControlAdmission:input_type -> wsman.ControlAdmissionRequest + 9, // 52: wsman.WorkspaceManager.GetWorkspaces:output_type -> wsman.GetWorkspacesResponse + 11, // 53: wsman.WorkspaceManager.StartWorkspace:output_type -> wsman.StartWorkspaceResponse + 13, // 54: wsman.WorkspaceManager.StopWorkspace:output_type -> wsman.StopWorkspaceResponse + 15, // 55: wsman.WorkspaceManager.DescribeWorkspace:output_type -> wsman.DescribeWorkspaceResponse + 29, // 56: wsman.WorkspaceManager.BackupWorkspace:output_type -> wsman.BackupWorkspaceResponse + 17, // 57: wsman.WorkspaceManager.Subscribe:output_type -> wsman.SubscribeResponse + 19, // 58: wsman.WorkspaceManager.MarkActive:output_type -> wsman.MarkActiveResponse + 21, // 59: wsman.WorkspaceManager.SetTimeout:output_type -> wsman.SetTimeoutResponse + 23, // 60: wsman.WorkspaceManager.ControlPort:output_type -> wsman.ControlPortResponse + 25, // 61: wsman.WorkspaceManager.TakeSnapshot:output_type -> wsman.TakeSnapshotResponse + 27, // 62: wsman.WorkspaceManager.ControlAdmission:output_type -> wsman.ControlAdmissionResponse + 52, // [52:63] is the sub-list for method output_type + 41, // [41:52] is the sub-list for method input_type + 41, // [41:41] is the sub-list for extension type_name + 41, // [41:41] is the sub-list for extension extendee + 0, // [0:41] is the sub-list for field type_name } func init() { file_core_proto_init() } @@ -3357,7 +3451,7 @@ func file_core_proto_init() { } } file_core_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkspaceSpec); i { + switch v := v.(*IDEImage); i { case 0: return &v.state case 1: @@ -3369,7 +3463,7 @@ func file_core_proto_init() { } } file_core_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortSpec); i { + switch v := v.(*WorkspaceSpec); i { case 0: return &v.state case 1: @@ -3381,7 +3475,7 @@ func file_core_proto_init() { } } file_core_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkspaceConditions); i { + switch v := v.(*PortSpec); i { case 0: return &v.state case 1: @@ -3393,7 +3487,7 @@ func file_core_proto_init() { } } file_core_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkspaceMetadata); i { + switch v := v.(*WorkspaceConditions); i { case 0: return &v.state case 1: @@ -3405,7 +3499,7 @@ func file_core_proto_init() { } } file_core_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkspaceRuntimeInfo); i { + switch v := v.(*WorkspaceMetadata); i { case 0: return &v.state case 1: @@ -3417,7 +3511,7 @@ func file_core_proto_init() { } } file_core_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkspaceAuthentication); i { + switch v := v.(*WorkspaceRuntimeInfo); i { case 0: return &v.state case 1: @@ -3429,7 +3523,7 @@ func file_core_proto_init() { } } file_core_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartWorkspaceSpec); i { + switch v := v.(*WorkspaceAuthentication); i { case 0: return &v.state case 1: @@ -3441,7 +3535,7 @@ func file_core_proto_init() { } } file_core_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GitSpec); i { + switch v := v.(*StartWorkspaceSpec); i { case 0: return &v.state case 1: @@ -3453,6 +3547,18 @@ func file_core_proto_init() { } } file_core_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GitSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_core_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EnvironmentVariable); i { case 0: return &v.state @@ -3471,7 +3577,7 @@ func file_core_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_core_proto_rawDesc, NumEnums: 7, - NumMessages: 36, + NumMessages: 37, NumExtensions: 0, NumServices: 1, }, diff --git a/components/ws-manager-api/typescript/src/core_pb.d.ts b/components/ws-manager-api/typescript/src/core_pb.d.ts index ef1ed925f93061..436e5c8f7db6a9 100644 --- a/components/ws-manager-api/typescript/src/core_pb.d.ts +++ b/components/ws-manager-api/typescript/src/core_pb.d.ts @@ -596,11 +596,34 @@ export namespace WorkspaceStatus { } } +export class IDEImage extends jspb.Message { + getWebRef(): string; + setWebRef(value: string): IDEImage; + getDesktopRef(): string; + setDesktopRef(value: string): IDEImage; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): IDEImage.AsObject; + static toObject(includeInstance: boolean, msg: IDEImage): IDEImage.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: IDEImage, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): IDEImage; + static deserializeBinaryFromReader(message: IDEImage, reader: jspb.BinaryReader): IDEImage; +} + +export namespace IDEImage { + export type AsObject = { + webRef: string, + desktopRef: string, + } +} + export class WorkspaceSpec extends jspb.Message { getWorkspaceImage(): string; setWorkspaceImage(value: string): WorkspaceSpec; - getIdeImage(): string; - setIdeImage(value: string): WorkspaceSpec; + getDeprecatedIdeImage(): string; + setDeprecatedIdeImage(value: string): WorkspaceSpec; getHeadless(): boolean; setHeadless(value: boolean): WorkspaceSpec; getUrl(): string; @@ -614,6 +637,11 @@ export class WorkspaceSpec extends jspb.Message { getTimeout(): string; setTimeout(value: string): WorkspaceSpec; + hasIdeImage(): boolean; + clearIdeImage(): void; + getIdeImage(): IDEImage | undefined; + setIdeImage(value?: IDEImage): WorkspaceSpec; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): WorkspaceSpec.AsObject; static toObject(includeInstance: boolean, msg: WorkspaceSpec): WorkspaceSpec.AsObject; @@ -627,12 +655,13 @@ export class WorkspaceSpec extends jspb.Message { export namespace WorkspaceSpec { export type AsObject = { workspaceImage: string, - ideImage: string, + deprecatedIdeImage: string, headless: boolean, url: string, exposedPortsList: Array, type: WorkspaceType, timeout: string, + ideImage?: IDEImage.AsObject, } } @@ -804,8 +833,8 @@ export namespace WorkspaceAuthentication { export class StartWorkspaceSpec extends jspb.Message { getWorkspaceImage(): string; setWorkspaceImage(value: string): StartWorkspaceSpec; - getIdeImage(): string; - setIdeImage(value: string): StartWorkspaceSpec; + getDeprecatedIdeImage(): string; + setDeprecatedIdeImage(value: string): StartWorkspaceSpec; clearFeatureFlagsList(): void; getFeatureFlagsList(): Array; setFeatureFlagsList(value: Array): StartWorkspaceSpec; @@ -837,6 +866,11 @@ export class StartWorkspaceSpec extends jspb.Message { getAdmission(): AdmissionLevel; setAdmission(value: AdmissionLevel): StartWorkspaceSpec; + hasIdeImage(): boolean; + clearIdeImage(): void; + getIdeImage(): IDEImage | undefined; + setIdeImage(value?: IDEImage): StartWorkspaceSpec; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): StartWorkspaceSpec.AsObject; static toObject(includeInstance: boolean, msg: StartWorkspaceSpec): StartWorkspaceSpec.AsObject; @@ -850,7 +884,7 @@ export class StartWorkspaceSpec extends jspb.Message { export namespace StartWorkspaceSpec { export type AsObject = { workspaceImage: string, - ideImage: string, + deprecatedIdeImage: string, featureFlagsList: Array, initializer?: content_service_api_initializer_pb.WorkspaceInitializer.AsObject, portsList: Array, @@ -860,6 +894,7 @@ export namespace StartWorkspaceSpec { git?: GitSpec.AsObject, timeout: string, admission: AdmissionLevel, + ideImage?: IDEImage.AsObject, } } diff --git a/components/ws-manager-api/typescript/src/core_pb.js b/components/ws-manager-api/typescript/src/core_pb.js index ebc8f5c6075081..6a7009ee1e7d0d 100644 --- a/components/ws-manager-api/typescript/src/core_pb.js +++ b/components/ws-manager-api/typescript/src/core_pb.js @@ -38,6 +38,7 @@ goog.exportSymbol('proto.wsman.EnvironmentVariable', null, global); goog.exportSymbol('proto.wsman.GetWorkspacesRequest', null, global); goog.exportSymbol('proto.wsman.GetWorkspacesResponse', null, global); goog.exportSymbol('proto.wsman.GitSpec', null, global); +goog.exportSymbol('proto.wsman.IDEImage', null, global); goog.exportSymbol('proto.wsman.MarkActiveRequest', null, global); goog.exportSymbol('proto.wsman.MarkActiveResponse', null, global); goog.exportSymbol('proto.wsman.MetadataFilter', null, global); @@ -569,6 +570,27 @@ if (goog.DEBUG && !COMPILED) { */ proto.wsman.WorkspaceStatus.displayName = 'proto.wsman.WorkspaceStatus'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.wsman.IDEImage = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.wsman.IDEImage, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.wsman.IDEImage.displayName = 'proto.wsman.IDEImage'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -4763,6 +4785,166 @@ proto.wsman.WorkspaceStatus.prototype.hasAuth = function() { + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.wsman.IDEImage.prototype.toObject = function(opt_includeInstance) { + return proto.wsman.IDEImage.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.wsman.IDEImage} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.wsman.IDEImage.toObject = function(includeInstance, msg) { + var f, obj = { + webRef: jspb.Message.getFieldWithDefault(msg, 1, ""), + desktopRef: jspb.Message.getFieldWithDefault(msg, 2, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.wsman.IDEImage} + */ +proto.wsman.IDEImage.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.wsman.IDEImage; + return proto.wsman.IDEImage.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.wsman.IDEImage} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.wsman.IDEImage} + */ +proto.wsman.IDEImage.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setWebRef(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setDesktopRef(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.wsman.IDEImage.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.wsman.IDEImage.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.wsman.IDEImage} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.wsman.IDEImage.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getWebRef(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getDesktopRef(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } +}; + + +/** + * optional string web_ref = 1; + * @return {string} + */ +proto.wsman.IDEImage.prototype.getWebRef = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.wsman.IDEImage} returns this + */ +proto.wsman.IDEImage.prototype.setWebRef = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string desktop_ref = 2; + * @return {string} + */ +proto.wsman.IDEImage.prototype.getDesktopRef = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.wsman.IDEImage} returns this + */ +proto.wsman.IDEImage.prototype.setDesktopRef = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + + /** * List of repeated fields within this message type. * @private {!Array} @@ -4802,13 +4984,14 @@ proto.wsman.WorkspaceSpec.prototype.toObject = function(opt_includeInstance) { proto.wsman.WorkspaceSpec.toObject = function(includeInstance, msg) { var f, obj = { workspaceImage: jspb.Message.getFieldWithDefault(msg, 1, ""), - ideImage: jspb.Message.getFieldWithDefault(msg, 2, ""), + deprecatedIdeImage: jspb.Message.getFieldWithDefault(msg, 2, ""), headless: jspb.Message.getBooleanFieldWithDefault(msg, 3, false), url: jspb.Message.getFieldWithDefault(msg, 4, ""), exposedPortsList: jspb.Message.toObjectList(msg.getExposedPortsList(), proto.wsman.PortSpec.toObject, includeInstance), type: jspb.Message.getFieldWithDefault(msg, 6, 0), - timeout: jspb.Message.getFieldWithDefault(msg, 7, "") + timeout: jspb.Message.getFieldWithDefault(msg, 7, ""), + ideImage: (f = msg.getIdeImage()) && proto.wsman.IDEImage.toObject(includeInstance, f) }; if (includeInstance) { @@ -4851,7 +5034,7 @@ proto.wsman.WorkspaceSpec.deserializeBinaryFromReader = function(msg, reader) { break; case 2: var value = /** @type {string} */ (reader.readString()); - msg.setIdeImage(value); + msg.setDeprecatedIdeImage(value); break; case 3: var value = /** @type {boolean} */ (reader.readBool()); @@ -4874,6 +5057,11 @@ proto.wsman.WorkspaceSpec.deserializeBinaryFromReader = function(msg, reader) { var value = /** @type {string} */ (reader.readString()); msg.setTimeout(value); break; + case 8: + var value = new proto.wsman.IDEImage; + reader.readMessage(value,proto.wsman.IDEImage.deserializeBinaryFromReader); + msg.setIdeImage(value); + break; default: reader.skipField(); break; @@ -4910,7 +5098,7 @@ proto.wsman.WorkspaceSpec.serializeBinaryToWriter = function(message, writer) { f ); } - f = message.getIdeImage(); + f = message.getDeprecatedIdeImage(); if (f.length > 0) { writer.writeString( 2, @@ -4953,6 +5141,14 @@ proto.wsman.WorkspaceSpec.serializeBinaryToWriter = function(message, writer) { f ); } + f = message.getIdeImage(); + if (f != null) { + writer.writeMessage( + 8, + f, + proto.wsman.IDEImage.serializeBinaryToWriter + ); + } }; @@ -4975,10 +5171,10 @@ proto.wsman.WorkspaceSpec.prototype.setWorkspaceImage = function(value) { /** - * optional string ide_image = 2; + * optional string deprecated_ide_image = 2; * @return {string} */ -proto.wsman.WorkspaceSpec.prototype.getIdeImage = function() { +proto.wsman.WorkspaceSpec.prototype.getDeprecatedIdeImage = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; @@ -4987,7 +5183,7 @@ proto.wsman.WorkspaceSpec.prototype.getIdeImage = function() { * @param {string} value * @return {!proto.wsman.WorkspaceSpec} returns this */ -proto.wsman.WorkspaceSpec.prototype.setIdeImage = function(value) { +proto.wsman.WorkspaceSpec.prototype.setDeprecatedIdeImage = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; @@ -5102,6 +5298,43 @@ proto.wsman.WorkspaceSpec.prototype.setTimeout = function(value) { }; +/** + * optional IDEImage ide_image = 8; + * @return {?proto.wsman.IDEImage} + */ +proto.wsman.WorkspaceSpec.prototype.getIdeImage = function() { + return /** @type{?proto.wsman.IDEImage} */ ( + jspb.Message.getWrapperField(this, proto.wsman.IDEImage, 8)); +}; + + +/** + * @param {?proto.wsman.IDEImage|undefined} value + * @return {!proto.wsman.WorkspaceSpec} returns this +*/ +proto.wsman.WorkspaceSpec.prototype.setIdeImage = function(value) { + return jspb.Message.setWrapperField(this, 8, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.wsman.WorkspaceSpec} returns this + */ +proto.wsman.WorkspaceSpec.prototype.clearIdeImage = function() { + return this.setIdeImage(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.wsman.WorkspaceSpec.prototype.hasIdeImage = function() { + return jspb.Message.getField(this, 8) != null; +}; + + @@ -6407,7 +6640,7 @@ proto.wsman.StartWorkspaceSpec.prototype.toObject = function(opt_includeInstance proto.wsman.StartWorkspaceSpec.toObject = function(includeInstance, msg) { var f, obj = { workspaceImage: jspb.Message.getFieldWithDefault(msg, 1, ""), - ideImage: jspb.Message.getFieldWithDefault(msg, 2, ""), + deprecatedIdeImage: jspb.Message.getFieldWithDefault(msg, 2, ""), featureFlagsList: (f = jspb.Message.getRepeatedField(msg, 3)) == null ? undefined : f, initializer: (f = msg.getInitializer()) && content$service$api_initializer_pb.WorkspaceInitializer.toObject(includeInstance, f), portsList: jspb.Message.toObjectList(msg.getPortsList(), @@ -6418,7 +6651,8 @@ proto.wsman.StartWorkspaceSpec.toObject = function(includeInstance, msg) { workspaceLocation: jspb.Message.getFieldWithDefault(msg, 8, ""), git: (f = msg.getGit()) && proto.wsman.GitSpec.toObject(includeInstance, f), timeout: jspb.Message.getFieldWithDefault(msg, 10, ""), - admission: jspb.Message.getFieldWithDefault(msg, 11, 0) + admission: jspb.Message.getFieldWithDefault(msg, 11, 0), + ideImage: (f = msg.getIdeImage()) && proto.wsman.IDEImage.toObject(includeInstance, f) }; if (includeInstance) { @@ -6461,7 +6695,7 @@ proto.wsman.StartWorkspaceSpec.deserializeBinaryFromReader = function(msg, reade break; case 2: var value = /** @type {string} */ (reader.readString()); - msg.setIdeImage(value); + msg.setDeprecatedIdeImage(value); break; case 3: var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedEnum() : [reader.readEnum()]); @@ -6505,6 +6739,11 @@ proto.wsman.StartWorkspaceSpec.deserializeBinaryFromReader = function(msg, reade var value = /** @type {!proto.wsman.AdmissionLevel} */ (reader.readEnum()); msg.setAdmission(value); break; + case 12: + var value = new proto.wsman.IDEImage; + reader.readMessage(value,proto.wsman.IDEImage.deserializeBinaryFromReader); + msg.setIdeImage(value); + break; default: reader.skipField(); break; @@ -6541,7 +6780,7 @@ proto.wsman.StartWorkspaceSpec.serializeBinaryToWriter = function(message, write f ); } - f = message.getIdeImage(); + f = message.getDeprecatedIdeImage(); if (f.length > 0) { writer.writeString( 2, @@ -6615,6 +6854,14 @@ proto.wsman.StartWorkspaceSpec.serializeBinaryToWriter = function(message, write f ); } + f = message.getIdeImage(); + if (f != null) { + writer.writeMessage( + 12, + f, + proto.wsman.IDEImage.serializeBinaryToWriter + ); + } }; @@ -6637,10 +6884,10 @@ proto.wsman.StartWorkspaceSpec.prototype.setWorkspaceImage = function(value) { /** - * optional string ide_image = 2; + * optional string deprecated_ide_image = 2; * @return {string} */ -proto.wsman.StartWorkspaceSpec.prototype.getIdeImage = function() { +proto.wsman.StartWorkspaceSpec.prototype.getDeprecatedIdeImage = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; @@ -6649,7 +6896,7 @@ proto.wsman.StartWorkspaceSpec.prototype.getIdeImage = function() { * @param {string} value * @return {!proto.wsman.StartWorkspaceSpec} returns this */ -proto.wsman.StartWorkspaceSpec.prototype.setIdeImage = function(value) { +proto.wsman.StartWorkspaceSpec.prototype.setDeprecatedIdeImage = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; @@ -6913,6 +7160,43 @@ proto.wsman.StartWorkspaceSpec.prototype.setAdmission = function(value) { }; +/** + * optional IDEImage ide_image = 12; + * @return {?proto.wsman.IDEImage} + */ +proto.wsman.StartWorkspaceSpec.prototype.getIdeImage = function() { + return /** @type{?proto.wsman.IDEImage} */ ( + jspb.Message.getWrapperField(this, proto.wsman.IDEImage, 12)); +}; + + +/** + * @param {?proto.wsman.IDEImage|undefined} value + * @return {!proto.wsman.StartWorkspaceSpec} returns this +*/ +proto.wsman.StartWorkspaceSpec.prototype.setIdeImage = function(value) { + return jspb.Message.setWrapperField(this, 12, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.wsman.StartWorkspaceSpec} returns this + */ +proto.wsman.StartWorkspaceSpec.prototype.clearIdeImage = function() { + return this.setIdeImage(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.wsman.StartWorkspaceSpec.prototype.hasIdeImage = function() { + return jspb.Message.getField(this, 12) != null; +}; + + diff --git a/components/ws-manager/pkg/manager/create.go b/components/ws-manager/pkg/manager/create.go index 7482ca6224ae69..101d936c0af6b7 100644 --- a/components/ws-manager/pkg/manager/create.go +++ b/components/ws-manager/pkg/manager/create.go @@ -236,9 +236,15 @@ func (m *Manager) createDefiniteWorkspacePod(startContext *startWorkspaceContext labels[k] = v } + ideRef := startContext.Request.Spec.DeprecatedIdeImage + if len(startContext.Request.Spec.IdeImage.WebRef) > 0 { + ideRef = startContext.Request.Spec.IdeImage.WebRef + } + spec := regapi.ImageSpec{ - BaseRef: startContext.Request.Spec.WorkspaceImage, - IdeRef: startContext.Request.Spec.IdeImage, + BaseRef: startContext.Request.Spec.WorkspaceImage, + IdeRef: ideRef, + DesktopIdeRef: startContext.Request.Spec.IdeImage.DesktopRef, } imageSpec, err := spec.ToBase64() if err != nil { diff --git a/components/ws-manager/pkg/manager/integration_test.go b/components/ws-manager/pkg/manager/integration_test.go index 2b716d55ec37d0..ce98a226b798ed 100644 --- a/components/ws-manager/pkg/manager/integration_test.go +++ b/components/ws-manager/pkg/manager/integration_test.go @@ -391,7 +391,7 @@ func (test *SingleWorkspaceIntegrationTest) Run(t *testing.T) { Username: "integration-test", }, WorkspaceImage: "gitpod/workspace-full:latest", - IdeImage: "gitpod/theia:" + deployedVersion, + IdeImage: &api.IDEImage{WebRef: "gitpod/theia:" + deployedVersion}, WorkspaceLocation: "/workspace", Initializer: &csapi.WorkspaceInitializer{ Spec: &csapi.WorkspaceInitializer_Empty{Empty: &csapi.EmptyInitializer{}}, diff --git a/components/ws-manager/pkg/manager/status.go b/components/ws-manager/pkg/manager/status.go index 19ee07fdce1cf8..d8aecb17e416dd 100644 --- a/components/ws-manager/pkg/manager/status.go +++ b/components/ws-manager/pkg/manager/status.go @@ -241,16 +241,18 @@ func (m *Manager) getWorkspaceStatus(wso workspaceObjects) (*api.WorkspaceStatus } var ( - wsImage = workspaceContainer.Image - ideImage string + wsImage = workspaceContainer.Image + ideImage string + desktopIdeImage string ) if ispec, ok := wso.Pod.Annotations[workspaceImageSpecAnnotation]; ok { spec, err := regapi.ImageSpecFromBase64(ispec) if err != nil { - return nil, xerrors.Errorf("invalid iamge spec: %w", err) + return nil, xerrors.Errorf("invalid image spec: %w", err) } wsImage = spec.BaseRef ideImage = spec.IdeRef + desktopIdeImage = spec.DesktopIdeRef } ownerToken, ok := wso.Pod.Annotations[ownerTokenAnnotation] @@ -267,12 +269,16 @@ func (m *Manager) getWorkspaceStatus(wso workspaceObjects) (*api.WorkspaceStatus StatusVersion: m.clock.Tick(), Metadata: getWorkspaceMetadata(wso.Pod), Spec: &api.WorkspaceSpec{ - Headless: wso.IsWorkspaceHeadless(), - WorkspaceImage: wsImage, - IdeImage: ideImage, - Url: wsurl, - Type: tpe, - Timeout: timeout, + Headless: wso.IsWorkspaceHeadless(), + WorkspaceImage: wsImage, + DeprecatedIdeImage: ideImage, + IdeImage: &api.IDEImage{ + WebRef: ideImage, + DesktopRef: desktopIdeImage, + }, + Url: wsurl, + Type: tpe, + Timeout: timeout, }, Conditions: &api.WorkspaceConditions{ Snapshot: wso.Pod.Annotations[workspaceSnapshotAnnotation], diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_admission.golden b/components/ws-manager/pkg/manager/testdata/cdwp_admission.golden index ed2a7635632ed2..939096e8c65f90 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_admission.golden +++ b/components/ws-manager/pkg/manager/testdata/cdwp_admission.golden @@ -22,7 +22,7 @@ "gitpod/admission": "admit_everyone", "gitpod/contentInitializer": "GmcKZXdvcmtzcGFjZXMvY3J5cHRpYy1pZC1nb2VzLWhlcmcvZmQ2MjgwNGItNGNhYi0xMWU5LTg0M2EtNGU2NDUzNzMwNDhlLnRhckBnaXRwb2QtZGV2LXVzZXItY2hyaXN0ZXN0aW5n", "gitpod/id": "test", - "gitpod/imageSpec": "CrwBZXUuZ2NyLmlvL2dpdHBvZC1kZXYvd29ya3NwYWNlLWltYWdlcy9hYzFjMDc1NTAwNzk2NmU0ZDZlMDkwZWE4MjE3MjlhYzc0N2QyMmFjL2V1Lmdjci5pby9naXRwb2QtZGV2L3dvcmtzcGFjZS1iYXNlLWltYWdlcy9naXRodWIuY29tL3R5cGVmb3gvZ2l0cG9kOjgwYTdkNDI3YTFmY2QzNDZkNDIwNjAzZDgwYTMxZDU3Y2Y3NWE3YWYSNGV1Lmdjci5pby9naXRwb2QtY29yZS1kZXYvYnVpZC90aGVpYS1pZGU6c29tZXZlcnNpb24=", + "gitpod/imageSpec": "CrwBZXUuZ2NyLmlvL2dpdHBvZC1kZXYvd29ya3NwYWNlLWltYWdlcy9hYzFjMDc1NTAwNzk2NmU0ZDZlMDkwZWE4MjE3MjlhYzc0N2QyMmFjL2V1Lmdjci5pby9naXRwb2QtZGV2L3dvcmtzcGFjZS1iYXNlLWltYWdlcy9naXRodWIuY29tL3R5cGVmb3gvZ2l0cG9kOjgwYTdkNDI3YTFmY2QzNDZkNDIwNjAzZDgwYTMxZDU3Y2Y3NWE3YWYSNGV1Lmdjci5pby9naXRwb2QtY29yZS1kZXYvYnVpZC90aGVpYS1pZGU6c29tZXZlcnNpb24iM2V1Lmdjci5pby9naXRwb2QtY29yZS1kZXYvYnVpZC9pbnRlbGxpajpzb21ldmVyc2lvbg==", "gitpod/never-ready": "true", "gitpod/ownerToken": "%7J'[Of/8NDiWE+9F,I6^Jcj_1\u0026}-F8p", "gitpod/servicePrefix": "foobarservice", diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_admission.json b/components/ws-manager/pkg/manager/testdata/cdwp_admission.json index 87ee9e6f372d4c..db92b03b4402c5 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_admission.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_admission.json @@ -1,6 +1,9 @@ { "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "desktopRef": "eu.gcr.io/gitpod-core-dev/buid/intellij:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_broken_resource_request.json b/components/ws-manager/pkg/manager/testdata/cdwp_broken_resource_request.json index 1b2a9adffc924e..36ca53f13fc72c 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_broken_resource_request.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_broken_resource_request.json @@ -1,6 +1,8 @@ { "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_empty_resource_req.json b/components/ws-manager/pkg/manager/testdata/cdwp_empty_resource_req.json index d6b0a552a44382..8b592d209a1c14 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_empty_resource_req.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_empty_resource_req.json @@ -1,6 +1,8 @@ { "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_fixedresources.json b/components/ws-manager/pkg/manager/testdata/cdwp_fixedresources.json index 389d982e72a350..265f3f68839995 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_fixedresources.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_fixedresources.json @@ -1,7 +1,9 @@ { "$schema": "./cdwp-schema.json", "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "featureFlags": [ 5 diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_fullworkspacebackup.json b/components/ws-manager/pkg/manager/testdata/cdwp_fullworkspacebackup.json index c578da20036b32..5040155bdf7790 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_fullworkspacebackup.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_fullworkspacebackup.json @@ -1,7 +1,9 @@ { "$schema": "./cdwp-schema.json", "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "featureFlags": [ 4 diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_ghost.json b/components/ws-manager/pkg/manager/testdata/cdwp_ghost.json index 56d48c43f2c085..85993dedf2d5e5 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_ghost.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_ghost.json @@ -8,7 +8,9 @@ }, "servicePrefix": "foobarservice", "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_imagebuild.json b/components/ws-manager/pkg/manager/testdata/cdwp_imagebuild.json index d67e2764cfa43c..36f86836145cf5 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_imagebuild.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_imagebuild.json @@ -8,7 +8,9 @@ }, "servicePrefix": "foobarservice", "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_imagebuild_template.json b/components/ws-manager/pkg/manager/testdata/cdwp_imagebuild_template.json index 61f0fbc3b0c2f1..7f691d0727002c 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_imagebuild_template.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_imagebuild_template.json @@ -58,7 +58,9 @@ }, "servicePrefix": "foobarservice", "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_prebuild.json b/components/ws-manager/pkg/manager/testdata/cdwp_prebuild.json index c6708da92d5a91..9b44805ded8561 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_prebuild.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_prebuild.json @@ -9,7 +9,9 @@ }, "servicePrefix": "foobarservice", "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_prebuild_template.json b/components/ws-manager/pkg/manager/testdata/cdwp_prebuild_template.json index 82c4d14589371c..bef391b1c4b87a 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_prebuild_template.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_prebuild_template.json @@ -58,7 +58,9 @@ }, "servicePrefix": "foobarservice", "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_prebuild_template_override_resources.json b/components/ws-manager/pkg/manager/testdata/cdwp_prebuild_template_override_resources.json index ca67b0cab405e3..76fc1f88415f71 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_prebuild_template_override_resources.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_prebuild_template_override_resources.json @@ -77,7 +77,9 @@ }, "servicePrefix": "foobarservice", "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_probe.json b/components/ws-manager/pkg/manager/testdata/cdwp_probe.json index 9d86976e797251..11d9da439ddd89 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_probe.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_probe.json @@ -9,7 +9,9 @@ }, "servicePrefix": "foobarservice", "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_readinessprobe.json b/components/ws-manager/pkg/manager/testdata/cdwp_readinessprobe.json index d4e7ecb952a70f..ab1806e539f092 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_readinessprobe.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_readinessprobe.json @@ -14,7 +14,9 @@ } }, "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_tasks.json b/components/ws-manager/pkg/manager/testdata/cdwp_tasks.json index 66fc7864484c4d..3e92fd1dbee295 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_tasks.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_tasks.json @@ -1,6 +1,8 @@ { "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_template.json b/components/ws-manager/pkg/manager/testdata/cdwp_template.json index 2c17b7dfef598e..6a06ad19db783b 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_template.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_template.json @@ -46,7 +46,9 @@ } }, "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_timeout.json b/components/ws-manager/pkg/manager/testdata/cdwp_timeout.json index eafae3630999ae..80670977cc482d 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_timeout.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_timeout.json @@ -1,6 +1,8 @@ { "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_userns.json b/components/ws-manager/pkg/manager/testdata/cdwp_userns.json index 730268a3baa986..4d0899814b9d45 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_userns.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_userns.json @@ -1,7 +1,9 @@ { "$schema": "./cdwp-schema.json", "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_withaffinity_regular.json b/components/ws-manager/pkg/manager/testdata/cdwp_withaffinity_regular.json index 9beee31396ef95..6e4ba6cc147d4e 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_withaffinity_regular.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_withaffinity_regular.json @@ -1,7 +1,9 @@ { "enforceAffinity": true, "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/cdwp_withaffinityheadless.json b/components/ws-manager/pkg/manager/testdata/cdwp_withaffinityheadless.json index c22722b0b4e395..9f23c7ef081417 100644 --- a/components/ws-manager/pkg/manager/testdata/cdwp_withaffinityheadless.json +++ b/components/ws-manager/pkg/manager/testdata/cdwp_withaffinityheadless.json @@ -9,7 +9,9 @@ }, "servicePrefix": "foobarservice", "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "initializer": { "snapshot": { diff --git a/components/ws-manager/pkg/manager/testdata/status_brokenScheduler_UNKNOWN00.golden b/components/ws-manager/pkg/manager/testdata/status_brokenScheduler_UNKNOWN00.golden index cfb2d8d05c3712..fc9a3a3ac95797 100644 --- a/components/ws-manager/pkg/manager/testdata/status_brokenScheduler_UNKNOWN00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_brokenScheduler_UNKNOWN00.golden @@ -11,7 +11,8 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-images/b24b4698d67f493b801d17196870fd8a422ffa1e/eu.gcr.io/gitpod-dev/workspace-full:sha256-4bcfae6785bcfa55f3fd693af74b3ceeb032e26c99c60b64bc9fe06980efcd23", - "url": "http://a9949b21-d6d8-443a-85f5-44f5ac3065c0.ws-eu.cw-scheduler.staging.gitpod.io" + "url": "http://a9949b21-d6d8-443a-85f5-44f5ac3065c0.ws-eu.cw-scheduler.staging.gitpod.io", + "ide_image": {} }, "conditions": { "failed": "MatchNodeSelector: Pod Predicate MatchNodeSelector failed", diff --git a/components/ws-manager/pkg/manager/testdata/status_cannotPull_004_CREATING00.golden b/components/ws-manager/pkg/manager/testdata/status_cannotPull_004_CREATING00.golden index abe81a04ab0d6d..668e89ee3af00e 100644 --- a/components/ws-manager/pkg/manager/testdata/status_cannotPull_004_CREATING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_cannotPull_004_CREATING00.golden @@ -11,7 +11,7 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-images:01abb31dd76a1e2885ea1d5c3b06a4ead10ae362ee21348428835d0c8b286e3a", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb", "url": "https://silver-dormouse-is733prg.ws-us14.gitpod.io", "exposed_ports": [ { @@ -19,7 +19,10 @@ "url": "https://3000-silver-dormouse-is733prg.ws-us14.gitpod.io" } ], - "timeout": "30m" + "timeout": "30m", + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb" + } }, "phase": 2, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_cannotPull_005_STOPPED00.golden b/components/ws-manager/pkg/manager/testdata/status_cannotPull_005_STOPPED00.golden index fc184b1dba8718..9423f919504718 100644 --- a/components/ws-manager/pkg/manager/testdata/status_cannotPull_005_STOPPED00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_cannotPull_005_STOPPED00.golden @@ -11,7 +11,7 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-images:01abb31dd76a1e2885ea1d5c3b06a4ead10ae362ee21348428835d0c8b286e3a", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb", "url": "https://silver-dormouse-is733prg.ws-us14.gitpod.io", "exposed_ports": [ { @@ -19,7 +19,10 @@ "url": "https://3000-silver-dormouse-is733prg.ws-us14.gitpod.io" } ], - "timeout": "30m" + "timeout": "30m", + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb" + } }, "phase": 6, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_containerd4214_STOPPING00.golden b/components/ws-manager/pkg/manager/testdata/status_containerd4214_STOPPING00.golden index 933528fbd4f0ed..3016207ea2ee29 100644 --- a/components/ws-manager/pkg/manager/testdata/status_containerd4214_STOPPING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_containerd4214_STOPPING00.golden @@ -11,9 +11,12 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-core-dev/registry/workspace-images:4821db66dd61e6944f8940c4328386612ccdb60d542d65f0456d4fd38f51f36a", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:cw-wsdaemon-patch.0", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:cw-wsdaemon-patch.0", "url": "https://amber-swallow-sbhsd9w0.ws-dev.cw-wsdaemon-patch.staging.gitpod-dev.com", - "timeout": "30m" + "timeout": "30m", + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/code:cw-wsdaemon-patch.0" + } }, "phase": 6, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_contentInitFailed_005_STOPPED00.golden b/components/ws-manager/pkg/manager/testdata/status_contentInitFailed_005_STOPPED00.golden index e8b214e7f0023e..be4ea00fa78eb7 100644 --- a/components/ws-manager/pkg/manager/testdata/status_contentInitFailed_005_STOPPED00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_contentInitFailed_005_STOPPED00.golden @@ -11,10 +11,13 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-images:034fe685a5830014534c14a1bcd7c7b2b0c4e94bc4062de4f91646d95c5f23fd", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb", "headless": true, "url": "https://aqua-chimpanzee-35q6f08k.ws-us15.gitpod.io", - "type": 1 + "type": 1, + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb" + } }, "phase": 6, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPED01.golden b/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPED01.golden index e7f82d9e6584f7..852f4f8ebd81bc 100644 --- a/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPED01.golden +++ b/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPED01.golden @@ -11,9 +11,12 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-core-dev/registry/workspace-images:4d3faa3322a7ecba8248986d0bc1a5293b20fdcc3cf1deb5c2bf6fd80c124d12", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/theia:cw-no-plis.17", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/theia:cw-no-plis.17", "url": "https://green-mosquito-gvkloyfy.ws-dev.cw-no-plis.staging.gitpod-dev.com", - "timeout": "30m" + "timeout": "30m", + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/theia:cw-no-plis.17" + } }, "phase": 6, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPED02.golden b/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPED02.golden index 15ca73e5854ea4..8eecbd1db1a369 100644 --- a/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPED02.golden +++ b/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPED02.golden @@ -11,9 +11,12 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-core-dev/registry/workspace-images:4d3faa3322a7ecba8248986d0bc1a5293b20fdcc3cf1deb5c2bf6fd80c124d12", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/theia:cw-no-plis.17", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/theia:cw-no-plis.17", "url": "https://green-mosquito-gvkloyfy.ws-dev.cw-no-plis.staging.gitpod-dev.com", - "timeout": "30m" + "timeout": "30m", + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/theia:cw-no-plis.17" + } }, "phase": 6, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPED03.golden b/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPED03.golden index 381594b92b8876..481757dafff4f4 100644 --- a/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPED03.golden +++ b/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPED03.golden @@ -11,7 +11,7 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-core-dev/registry/workspace-images:4d3faa3322a7ecba8248986d0bc1a5293b20fdcc3cf1deb5c2bf6fd80c124d12", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/theia:cw-no-plis.17", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/theia:cw-no-plis.17", "url": "https://green-mosquito-gvkloyfy.ws-dev.cw-no-plis.staging.gitpod-dev.com", "exposed_ports": [ { @@ -25,7 +25,10 @@ "url": "https://35729-green-mosquito-gvkloyfy.ws-dev.cw-no-plis.staging.gitpod-dev.com" } ], - "timeout": "30m" + "timeout": "30m", + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/theia:cw-no-plis.17" + } }, "phase": 6, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPING01.golden b/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPING01.golden index 91da53796e04c8..b8eb7174575101 100644 --- a/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPING01.golden +++ b/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPING01.golden @@ -11,7 +11,7 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-core-dev/registry/workspace-images:4d3faa3322a7ecba8248986d0bc1a5293b20fdcc3cf1deb5c2bf6fd80c124d12", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/theia:cw-no-plis.17", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/theia:cw-no-plis.17", "url": "https://green-mosquito-gvkloyfy.ws-dev.cw-no-plis.staging.gitpod-dev.com", "exposed_ports": [ { @@ -25,7 +25,10 @@ "url": "https://35729-green-mosquito-gvkloyfy.ws-dev.cw-no-plis.staging.gitpod-dev.com" } ], - "timeout": "30m" + "timeout": "30m", + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/theia:cw-no-plis.17" + } }, "phase": 5, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPING02.golden b/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPING02.golden index 97e0aa6e12965f..6fd64e728beb21 100644 --- a/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPING02.golden +++ b/components/ws-manager/pkg/manager/testdata/status_disposal_STOPPING02.golden @@ -11,9 +11,12 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-core-dev/registry/workspace-images:4d3faa3322a7ecba8248986d0bc1a5293b20fdcc3cf1deb5c2bf6fd80c124d12", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/theia:cw-no-plis.17", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/theia:cw-no-plis.17", "url": "https://green-mosquito-gvkloyfy.ws-dev.cw-no-plis.staging.gitpod-dev.com", - "timeout": "30m" + "timeout": "30m", + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/theia:cw-no-plis.17" + } }, "phase": 6, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_errimgpull.golden b/components/ws-manager/pkg/manager/testdata/status_errimgpull.golden index b38cbd05ac8103..0f3ef2359fdf6f 100644 --- a/components/ws-manager/pkg/manager/testdata/status_errimgpull.golden +++ b/components/ws-manager/pkg/manager/testdata/status_errimgpull.golden @@ -11,7 +11,8 @@ }, "spec": { "workspace_image": "registry.staging-cw-minio-core.svc.cluster.local/workspace-images/aadf89d3be804eeb2cab063f217a1b57dd984be5/registry.hub.docker.com/gitpod/workspace-full:sha256-1f5a29431048784d1e133769db5918bd6ea1e5b7530f04013f2d55026478e766", - "url": "http://ba66e4d4-3eae-4c9c-83da-75b6dbc2f592.cw-minio-core.staging.gitpod.io" + "url": "http://ba66e4d4-3eae-4c9c-83da-75b6dbc2f592.cw-minio-core.staging.gitpod.io", + "ide_image": {} }, "phase": 2, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_errimgpull_CREATING01.golden b/components/ws-manager/pkg/manager/testdata/status_errimgpull_CREATING01.golden index 55ad8d78c990c7..c82e7920eb7e13 100644 --- a/components/ws-manager/pkg/manager/testdata/status_errimgpull_CREATING01.golden +++ b/components/ws-manager/pkg/manager/testdata/status_errimgpull_CREATING01.golden @@ -11,9 +11,12 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", - "ide_image": "foobar", + "deprecated_ide_image": "foobar", "url": "http://f29012c4-c6b9-4bd1-9c48-151bdeec6940.ws-dev.cw-registry.staging.gitpod-dev.com", - "timeout": "30m" + "timeout": "30m", + "ide_image": { + "web_ref": "foobar" + } }, "phase": 6, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_failedBeforeStopping_explicitFail.golden b/components/ws-manager/pkg/manager/testdata/status_failedBeforeStopping_explicitFail.golden index 54088251ea8ce2..bd604ea0a5f475 100644 --- a/components/ws-manager/pkg/manager/testdata/status_failedBeforeStopping_explicitFail.golden +++ b/components/ws-manager/pkg/manager/testdata/status_failedBeforeStopping_explicitFail.golden @@ -11,7 +11,8 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-images/b24b4698d67f493b801d17196870fd8a422ffa1e/eu.gcr.io/gitpod-dev/workspace-full:sha256-535009d8cf429001e17f0f6388f33065c53cb70a62904800aa3f424403c7cb7e", - "url": "http://eb694666-269a-4d8c-a031-3cd6ea8135f9.ws-eu.gh-2510.staging.gitpod.io" + "url": "http://eb694666-269a-4d8c-a031-3cd6ea8135f9.ws-eu.gh-2510.staging.gitpod.io", + "ide_image": {} }, "phase": 6, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_failedLogs_RUNNING00.golden b/components/ws-manager/pkg/manager/testdata/status_failedLogs_RUNNING00.golden index 70ff20a066d364..25f1a0845de4c5 100644 --- a/components/ws-manager/pkg/manager/testdata/status_failedLogs_RUNNING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_failedLogs_RUNNING00.golden @@ -11,7 +11,7 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-core-dev/registry/workspace-images:5c7c2d28d53990d0ec6b76f73918b2a9af6eb2dbd060822986abad1ba9512aaf", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/theia-ide:cw-debug-registry-facade.6", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/theia-ide:cw-debug-registry-facade.6", "url": "https://ba826db9-9d93-4f3b-a10e-8bc08bbb99f1.ws-dev.cw-debug-registry-facade.staging.gitpod-dev.com", "exposed_ports": [ { @@ -20,7 +20,10 @@ "url": "https://8080-ba826db9-9d93-4f3b-a10e-8bc08bbb99f1.ws-dev.cw-debug-registry-facade.staging.gitpod-dev.com" } ], - "timeout": "30m" + "timeout": "30m", + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/theia-ide:cw-debug-registry-facade.6" + } }, "phase": 4, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_failedPending_evicted_UNKNOWN01.golden b/components/ws-manager/pkg/manager/testdata/status_failedPending_evicted_UNKNOWN01.golden index 230ae7b95bf869..ab7cb4f8389a0b 100644 --- a/components/ws-manager/pkg/manager/testdata/status_failedPending_evicted_UNKNOWN01.golden +++ b/components/ws-manager/pkg/manager/testdata/status_failedPending_evicted_UNKNOWN01.golden @@ -12,7 +12,8 @@ "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-images:0fc76cd1c6eda009603bed31928a1cfaf53e455b27d6b3260c3d75022bd4d784", "url": "https://ab451d8b-7a3a-42ec-b173-20a0e49773d4.ws-eu01.gitpod.io", - "timeout": "60m" + "timeout": "60m", + "ide_image": {} }, "conditions": { "failed": "Evicted: Pod The node was low on resource: [DiskPressure]. ", diff --git a/components/ws-manager/pkg/manager/testdata/status_failedPending_evicted_UNKNOWN02.golden b/components/ws-manager/pkg/manager/testdata/status_failedPending_evicted_UNKNOWN02.golden index b4ebb56b6c36d1..4ec766893e0863 100644 --- a/components/ws-manager/pkg/manager/testdata/status_failedPending_evicted_UNKNOWN02.golden +++ b/components/ws-manager/pkg/manager/testdata/status_failedPending_evicted_UNKNOWN02.golden @@ -12,7 +12,8 @@ "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-images:0fc76cd1c6eda009603bed31928a1cfaf53e455b27d6b3260c3d75022bd4d784", "url": "https://ab451d8b-7a3a-42ec-b173-20a0e49773d4.ws-eu01.gitpod.io", - "timeout": "60m" + "timeout": "60m", + "ide_image": {} }, "phase": 6, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_failedTheiaMount_PENDING00.golden b/components/ws-manager/pkg/manager/testdata/status_failedTheiaMount_PENDING00.golden index a3895ff99a775f..50abf3e5f99f6f 100644 --- a/components/ws-manager/pkg/manager/testdata/status_failedTheiaMount_PENDING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_failedTheiaMount_PENDING00.golden @@ -11,7 +11,8 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-images/edf0748dca3905f46a5fcf841db2a36f277d9b79/eu.gcr.io/gitpod-dev/workspace-full:sha256-4543f6df3549a443f1109779878540a635163ef86da30c959464a61256bfc569", - "url": "http://d4562d0d-46ae-4a4b-b0a4-a5e94ea4a2f3.ws-eu.cw-fail-on-mount-failure.staging.gitpod.io" + "url": "http://d4562d0d-46ae-4a4b-b0a4-a5e94ea4a2f3.ws-eu.cw-fail-on-mount-failure.staging.gitpod.io", + "ide_image": {} }, "phase": 1, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_failedWorkspaceMount_PENDING00.golden b/components/ws-manager/pkg/manager/testdata/status_failedWorkspaceMount_PENDING00.golden index ae51274e28d7dd..03cd4588bdb16a 100644 --- a/components/ws-manager/pkg/manager/testdata/status_failedWorkspaceMount_PENDING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_failedWorkspaceMount_PENDING00.golden @@ -11,7 +11,8 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-images/edf0748dca3905f46a5fcf841db2a36f277d9b79/eu.gcr.io/gitpod-dev/workspace-full:sha256-4543f6df3549a443f1109779878540a635163ef86da30c959464a61256bfc569", - "url": "http://d4562d0d-46ae-4a4b-b0a4-a5e94ea4a2f3.ws-eu.cw-fail-on-mount-failure.staging.gitpod.io" + "url": "http://d4562d0d-46ae-4a4b-b0a4-a5e94ea4a2f3.ws-eu.cw-fail-on-mount-failure.staging.gitpod.io", + "ide_image": {} }, "phase": 1, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_firstUserActivity_RUNNING.golden b/components/ws-manager/pkg/manager/testdata/status_firstUserActivity_RUNNING.golden index 134a7c1a250835..1ebc8e6ab64207 100644 --- a/components/ws-manager/pkg/manager/testdata/status_firstUserActivity_RUNNING.golden +++ b/components/ws-manager/pkg/manager/testdata/status_firstUserActivity_RUNNING.golden @@ -69,7 +69,8 @@ "visibility": 1 } ], - "timeout": "60m" + "timeout": "60m", + "ide_image": {} }, "phase": 4, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_headlessTaskFailed_STOPPING00.golden b/components/ws-manager/pkg/manager/testdata/status_headlessTaskFailed_STOPPING00.golden index fbd13a90269e8b..8de89a62003e2d 100644 --- a/components/ws-manager/pkg/manager/testdata/status_headlessTaskFailed_STOPPING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_headlessTaskFailed_STOPPING00.golden @@ -11,10 +11,13 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-core-dev/registry/workspace-images:295486e99855b59cf8d32b8d9b6c3c0abcf4b76acb8e511f7c919b0341c60f35", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-c77d5c144ba894ff5ae71a25af7fe3af4d4bd398", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-c77d5c144ba894ff5ae71a25af7fe3af4d4bd398", "headless": true, "url": "https://sapphire-alligator-jakcgz44.ws-dev.csweichel-don-t-abort-prebuild-4964.staging.gitpod-dev.com", - "type": 1 + "type": 1, + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-c77d5c144ba894ff5ae71a25af7fe3af4d4bd398" + } }, "phase": 5, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_headless_STOPPING00.golden b/components/ws-manager/pkg/manager/testdata/status_headless_STOPPING00.golden index fdd1a8cb3cbaf6..30025a64243c1b 100644 --- a/components/ws-manager/pkg/manager/testdata/status_headless_STOPPING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_headless_STOPPING00.golden @@ -15,11 +15,14 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-core-dev/build/image-builder-mk3/bob:2cf747867ff804ee0edc0a2607cb8ca06242083a", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/image-builder-mk3/bob:2cf747867ff804ee0edc0a2607cb8ca06242083a", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/image-builder-mk3/bob:2cf747867ff804ee0edc0a2607cb8ca06242083a", "headless": true, "url": "https://0dd5700a790e7ca2-95291c91f6e61c2e-e06ba50b.ws-dev.cw-imgbuilder-mk3-rebase.staging.gitpod-dev.com", "type": 4, - "timeout": "1h0m0s" + "timeout": "1h0m0s", + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/image-builder-mk3/bob:2cf747867ff804ee0edc0a2607cb8ca06242083a" + } }, "phase": 5, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_ideFailedToStart_005_RUNNING00.golden b/components/ws-manager/pkg/manager/testdata/status_ideFailedToStart_005_RUNNING00.golden index 89ecc556b3708d..ec433322962e00 100644 --- a/components/ws-manager/pkg/manager/testdata/status_ideFailedToStart_005_RUNNING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_ideFailedToStart_005_RUNNING00.golden @@ -11,9 +11,12 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-images:aeed577d8b4785088120a7d24d056ee2d553a69d2bcc413a572e82a3039cd6cd", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb", "url": "https://rose-donkey-wfapr095.ws-eu14.gitpod.io", - "timeout": "30m" + "timeout": "30m", + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb" + } }, "phase": 4, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_imagespec_RUNNING00.golden b/components/ws-manager/pkg/manager/testdata/status_imagespec_RUNNING00.golden index 4bcb10b23c4d30..52d92976b9004d 100644 --- a/components/ws-manager/pkg/manager/testdata/status_imagespec_RUNNING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_imagespec_RUNNING00.golden @@ -11,7 +11,7 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", - "ide_image": "foobar", + "deprecated_ide_image": "foobar", "url": "http://db334047-3c4b-49cc-a5fb-a089bff656e0.ws-dev.cw-registry.staging.gitpod-dev.com", "exposed_ports": [ { @@ -20,7 +20,10 @@ "visibility": 1 } ], - "timeout": "30m" + "timeout": "30m", + "ide_image": { + "web_ref": "foobar" + } }, "phase": 4, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_interrupted.golden b/components/ws-manager/pkg/manager/testdata/status_interrupted.golden index 2efa86d7914f4b..9e4dc909549379 100644 --- a/components/ws-manager/pkg/manager/testdata/status_interrupted.golden +++ b/components/ws-manager/pkg/manager/testdata/status_interrupted.golden @@ -21,7 +21,8 @@ "port": 8080, "target": 38080 } - ] + ], + "ide_image": {} }, "phase": 7, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_interrupted_CREATING00.golden b/components/ws-manager/pkg/manager/testdata/status_interrupted_CREATING00.golden index efd9387e47652a..c36b43ad9eea6e 100644 --- a/components/ws-manager/pkg/manager/testdata/status_interrupted_CREATING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_interrupted_CREATING00.golden @@ -11,7 +11,8 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-images/623f173cfe0a23726157e720c57fe329a3bb4241/eu.gcr.io/gitpod-dev/workspace-full:sha256-535009d8cf429001e17f0f6388f33065c53cb70a62904800aa3f424403c7cb7e", - "url": "http://f75a430d-331d-4977-a4dc-16939c0752e1.ws-eu.cw-gh-2720.staging.gitpod.io" + "url": "http://f75a430d-331d-4977-a4dc-16939c0752e1.ws-eu.cw-gh-2720.staging.gitpod.io", + "ide_image": {} }, "phase": 7, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_interrupted_networkNotReady_1_event_only.golden b/components/ws-manager/pkg/manager/testdata/status_interrupted_networkNotReady_1_event_only.golden index 1cc6e935e79244..b165e3c66f5a76 100644 --- a/components/ws-manager/pkg/manager/testdata/status_interrupted_networkNotReady_1_event_only.golden +++ b/components/ws-manager/pkg/manager/testdata/status_interrupted_networkNotReady_1_event_only.golden @@ -19,7 +19,8 @@ "visibility": 1 } ], - "timeout": "30m" + "timeout": "30m", + "ide_image": {} }, "phase": 4, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_interrupted_networkNotReady_2_event_and_exitcode.golden b/components/ws-manager/pkg/manager/testdata/status_interrupted_networkNotReady_2_event_and_exitcode.golden index a86b2261a6d625..a8b1c247d5763d 100644 --- a/components/ws-manager/pkg/manager/testdata/status_interrupted_networkNotReady_2_event_and_exitcode.golden +++ b/components/ws-manager/pkg/manager/testdata/status_interrupted_networkNotReady_2_event_and_exitcode.golden @@ -19,7 +19,8 @@ "visibility": 1 } ], - "timeout": "30m" + "timeout": "30m", + "ide_image": {} }, "phase": 7, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_interrupted_networkNotReady_3_recovered_CONSTRUCTED.golden b/components/ws-manager/pkg/manager/testdata/status_interrupted_networkNotReady_3_recovered_CONSTRUCTED.golden index 3a5ae8611650fa..b80a6e1143982e 100644 --- a/components/ws-manager/pkg/manager/testdata/status_interrupted_networkNotReady_3_recovered_CONSTRUCTED.golden +++ b/components/ws-manager/pkg/manager/testdata/status_interrupted_networkNotReady_3_recovered_CONSTRUCTED.golden @@ -19,7 +19,8 @@ "visibility": 1 } ], - "timeout": "30m" + "timeout": "30m", + "ide_image": {} }, "phase": 4, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_metadata.golden b/components/ws-manager/pkg/manager/testdata/status_metadata.golden index 445419e593606a..5ec60ff2535b6e 100644 --- a/components/ws-manager/pkg/manager/testdata/status_metadata.golden +++ b/components/ws-manager/pkg/manager/testdata/status_metadata.golden @@ -19,7 +19,8 @@ { "port": 8080 } - ] + ], + "ide_image": {} }, "phase": 4, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_ownerToken.golden b/components/ws-manager/pkg/manager/testdata/status_ownerToken.golden index c76a79cbc5fd80..4796e9023153e0 100644 --- a/components/ws-manager/pkg/manager/testdata/status_ownerToken.golden +++ b/components/ws-manager/pkg/manager/testdata/status_ownerToken.golden @@ -69,7 +69,8 @@ "visibility": 1 } ], - "timeout": "60m" + "timeout": "60m", + "ide_image": {} }, "phase": 4, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_prebuildFail_STOPPED00.golden b/components/ws-manager/pkg/manager/testdata/status_prebuildFail_STOPPED00.golden index bf57fd5e9afc74..5f1f7835e438f2 100644 --- a/components/ws-manager/pkg/manager/testdata/status_prebuildFail_STOPPED00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_prebuildFail_STOPPED00.golden @@ -11,7 +11,7 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-core-dev/registry/workspace-images:81c4fb602a540d261f210cfc8ba0435b63b24238c1762ec029d8edaec816afb6", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:gpl-headless-log-wsman.25", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:gpl-headless-log-wsman.25", "headless": true, "url": "https://gray-lemming-0wlyvzy5.ws-dev.gpl-headless-log-wsman.staging.gitpod-dev.com", "exposed_ports": [ @@ -75,7 +75,10 @@ "url": "https://13444-gray-lemming-0wlyvzy5.ws-dev.gpl-headless-log-wsman.staging.gitpod-dev.com" } ], - "type": 1 + "type": 1, + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/code:gpl-headless-log-wsman.25" + } }, "phase": 6, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_prebuildFail_STOPPING00.golden b/components/ws-manager/pkg/manager/testdata/status_prebuildFail_STOPPING00.golden index 582980c70d19d5..b98de97e661566 100644 --- a/components/ws-manager/pkg/manager/testdata/status_prebuildFail_STOPPING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_prebuildFail_STOPPING00.golden @@ -11,7 +11,7 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-core-dev/registry/workspace-images:81c4fb602a540d261f210cfc8ba0435b63b24238c1762ec029d8edaec816afb6", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:gpl-headless-log-wsman.25", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:gpl-headless-log-wsman.25", "headless": true, "url": "https://gray-lemming-0wlyvzy5.ws-dev.gpl-headless-log-wsman.staging.gitpod-dev.com", "exposed_ports": [ @@ -75,7 +75,10 @@ "url": "https://13444-gray-lemming-0wlyvzy5.ws-dev.gpl-headless-log-wsman.staging.gitpod-dev.com" } ], - "type": 1 + "type": 1, + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/code:gpl-headless-log-wsman.25" + } }, "phase": 5, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_prebuildSuccess2_CREATING01.golden b/components/ws-manager/pkg/manager/testdata/status_prebuildSuccess2_CREATING01.golden index aca24a6a6e9ae3..7c639a1730467f 100644 --- a/components/ws-manager/pkg/manager/testdata/status_prebuildSuccess2_CREATING01.golden +++ b/components/ws-manager/pkg/manager/testdata/status_prebuildSuccess2_CREATING01.golden @@ -11,7 +11,7 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-core-dev/registry/workspace-images:81c4fb602a540d261f210cfc8ba0435b63b24238c1762ec029d8edaec816afb6", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:gpl-headless-log-wsman.17", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:gpl-headless-log-wsman.17", "headless": true, "url": "https://green-wombat-62dzneud.ws-dev.gpl-headless-log-wsman.staging.gitpod-dev.com", "exposed_ports": [ @@ -75,7 +75,10 @@ "url": "https://13444-green-wombat-62dzneud.ws-dev.gpl-headless-log-wsman.staging.gitpod-dev.com" } ], - "type": 1 + "type": 1, + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/code:gpl-headless-log-wsman.17" + } }, "phase": 2, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_prebuildSuccess_STOPPED00.golden b/components/ws-manager/pkg/manager/testdata/status_prebuildSuccess_STOPPED00.golden index 347414856d88b6..df7ede3e62e76f 100644 --- a/components/ws-manager/pkg/manager/testdata/status_prebuildSuccess_STOPPED00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_prebuildSuccess_STOPPED00.golden @@ -11,7 +11,7 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-core-dev/registry/workspace-images:81c4fb602a540d261f210cfc8ba0435b63b24238c1762ec029d8edaec816afb6", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:gpl-headless-log-wsman.17", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:gpl-headless-log-wsman.17", "headless": true, "url": "https://green-wombat-62dzneud.ws-dev.gpl-headless-log-wsman.staging.gitpod-dev.com", "exposed_ports": [ @@ -75,7 +75,10 @@ "url": "https://13444-green-wombat-62dzneud.ws-dev.gpl-headless-log-wsman.staging.gitpod-dev.com" } ], - "type": 1 + "type": 1, + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/code:gpl-headless-log-wsman.17" + } }, "phase": 6, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_prebuildSuccess_STOPPING00.golden b/components/ws-manager/pkg/manager/testdata/status_prebuildSuccess_STOPPING00.golden index 58bad190acf8d5..52fdbc355253c3 100644 --- a/components/ws-manager/pkg/manager/testdata/status_prebuildSuccess_STOPPING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_prebuildSuccess_STOPPING00.golden @@ -11,7 +11,7 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-core-dev/registry/workspace-images:81c4fb602a540d261f210cfc8ba0435b63b24238c1762ec029d8edaec816afb6", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:gpl-headless-log-wsman.17", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:gpl-headless-log-wsman.17", "headless": true, "url": "https://green-wombat-62dzneud.ws-dev.gpl-headless-log-wsman.staging.gitpod-dev.com", "exposed_ports": [ @@ -75,7 +75,10 @@ "url": "https://13444-green-wombat-62dzneud.ws-dev.gpl-headless-log-wsman.staging.gitpod-dev.com" } ], - "type": 1 + "type": 1, + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/code:gpl-headless-log-wsman.17" + } }, "phase": 5, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_regularStart_Initializing00.golden b/components/ws-manager/pkg/manager/testdata/status_regularStart_Initializing00.golden index 25f7f281dfa4e5..48d6d94aecc806 100644 --- a/components/ws-manager/pkg/manager/testdata/status_regularStart_Initializing00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_regularStart_Initializing00.golden @@ -16,7 +16,8 @@ { "port": 8080 } - ] + ], + "ide_image": {} }, "phase": 3, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_stoppedByRequest_000_RUNNING00.golden b/components/ws-manager/pkg/manager/testdata/status_stoppedByRequest_000_RUNNING00.golden index f00f0cbc9143b9..5d74ef46395d2f 100644 --- a/components/ws-manager/pkg/manager/testdata/status_stoppedByRequest_000_RUNNING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_stoppedByRequest_000_RUNNING00.golden @@ -11,7 +11,7 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-core-dev/registry/workspace-images:3bd5ce12f7acd1ff19494a25aa2ff01ff9a7b938567c84d52ce6aa0b2bd40092", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-7107fb8bde0b1f92265402ad5fa09a51022b14dd", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-7107fb8bde0b1f92265402ad5fa09a51022b14dd", "url": "https://lime-opossum-3jftf65i.ws-dev.cw-fix-6213.staging.gitpod-dev.com", "exposed_ports": [ { @@ -29,7 +29,10 @@ "url": "https://9229-lime-opossum-3jftf65i.ws-dev.cw-fix-6213.staging.gitpod-dev.com" } ], - "timeout": "60m" + "timeout": "60m", + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-7107fb8bde0b1f92265402ad5fa09a51022b14dd" + } }, "phase": 4, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_stuckInCreating_CREATING00.golden b/components/ws-manager/pkg/manager/testdata/status_stuckInCreating_CREATING00.golden index 363a1e84614786..de370ac8e42e54 100644 --- a/components/ws-manager/pkg/manager/testdata/status_stuckInCreating_CREATING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_stuckInCreating_CREATING00.golden @@ -12,7 +12,8 @@ "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-images:51186696bfea6fc9fc5882b2fcd69c42b8f2cf93c8139f20b24566ae6c3eedcb", "url": "https://afccd13d-fc9c-4fd2-a27e-3bd8f4e138f6.ws-eu01.gitpod.io", - "timeout": "30m" + "timeout": "30m", + "ide_image": {} }, "phase": 4, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_stuckInStopping_RUNNING00.golden b/components/ws-manager/pkg/manager/testdata/status_stuckInStopping_RUNNING00.golden index d9a6e54a5d50c5..e1c9bc96ed1041 100644 --- a/components/ws-manager/pkg/manager/testdata/status_stuckInStopping_RUNNING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_stuckInStopping_RUNNING00.golden @@ -11,7 +11,7 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-images:68c61eb0bb4e8fbafd16b876390fc2c78a7887866ef0bd53534bb8ffc2682bdc", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb", "url": "https://purple-raven-cu9cj532.ws-us14.gitpod.io", "exposed_ports": [ { @@ -23,7 +23,10 @@ "url": "https://31997-purple-raven-cu9cj532.ws-us14.gitpod.io" } ], - "timeout": "30m" + "timeout": "30m", + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb" + } }, "phase": 4, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_stuckInStopping_STOPPING00.golden b/components/ws-manager/pkg/manager/testdata/status_stuckInStopping_STOPPING00.golden index 441d980f432012..8b84dc0d73e187 100644 --- a/components/ws-manager/pkg/manager/testdata/status_stuckInStopping_STOPPING00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_stuckInStopping_STOPPING00.golden @@ -11,7 +11,7 @@ }, "spec": { "workspace_image": "eu.gcr.io/gitpod-dev/workspace-images:68c61eb0bb4e8fbafd16b876390fc2c78a7887866ef0bd53534bb8ffc2682bdc", - "ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb", + "deprecated_ide_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb", "url": "https://purple-raven-cu9cj532.ws-us14.gitpod.io", "exposed_ports": [ { @@ -23,7 +23,10 @@ "url": "https://31997-purple-raven-cu9cj532.ws-us14.gitpod.io" } ], - "timeout": "30m" + "timeout": "30m", + "ide_image": { + "web_ref": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-0941a0805dc3c7345c45bd926317eaf045d4b7fb" + } }, "phase": 6, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/status_wsstartup_Creating00.golden b/components/ws-manager/pkg/manager/testdata/status_wsstartup_Creating00.golden index 7067b665899b40..a7264461ea0b2b 100644 --- a/components/ws-manager/pkg/manager/testdata/status_wsstartup_Creating00.golden +++ b/components/ws-manager/pkg/manager/testdata/status_wsstartup_Creating00.golden @@ -16,7 +16,8 @@ { "port": 8080 } - ] + ], + "ide_image": {} }, "phase": 2, "conditions": { diff --git a/components/ws-manager/pkg/manager/testdata/validateStartReq_invalidType.json b/components/ws-manager/pkg/manager/testdata/validateStartReq_invalidType.json index 335cd06bf72dea..c21ead744f2bd6 100644 --- a/components/ws-manager/pkg/manager/testdata/validateStartReq_invalidType.json +++ b/components/ws-manager/pkg/manager/testdata/validateStartReq_invalidType.json @@ -9,7 +9,9 @@ }, "servicePrefix": "foobarservice", "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "checkoutLocation": "/", "workspaceLocation": "/", diff --git a/components/ws-manager/pkg/manager/testdata/validateStartReq_valid.json b/components/ws-manager/pkg/manager/testdata/validateStartReq_valid.json index ab914c487e1cb9..95c5dabb9bf6e3 100644 --- a/components/ws-manager/pkg/manager/testdata/validateStartReq_valid.json +++ b/components/ws-manager/pkg/manager/testdata/validateStartReq_valid.json @@ -9,7 +9,9 @@ }, "servicePrefix": "foobarservice", "spec": { - "ideImage": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion", + "ideImage": { + "webRef": "eu.gcr.io/gitpod-core-dev/buid/theia-ide:someversion" + }, "workspaceImage": "eu.gcr.io/gitpod-dev/workspace-images/ac1c0755007966e4d6e090ea821729ac747d22ac/eu.gcr.io/gitpod-dev/workspace-base-images/github.com/typefox/gitpod:80a7d427a1fcd346d420603d80a31d57cf75a7af", "checkoutLocation": "/", "workspaceLocation": "/", diff --git a/components/ws-manager/pkg/manager/testing_test.go b/components/ws-manager/pkg/manager/testing_test.go index 8464a382c9dd73..6bc63733303ce0 100644 --- a/components/ws-manager/pkg/manager/testing_test.go +++ b/components/ws-manager/pkg/manager/testing_test.go @@ -126,7 +126,7 @@ func forTestingOnlyCreateStartWorkspaceContext(manager *Manager, id string, tpe }, Spec: &api.StartWorkspaceSpec{ WorkspaceImage: "foobar", - IdeImage: "someide:version.0", + IdeImage: &api.IDEImage{WebRef: "someide:version.0"}, Ports: []*api.PortSpec{}, Initializer: &csapi.WorkspaceInitializer{}, }, diff --git a/components/ws-proxy/pkg/proxy/infoprovider.go b/components/ws-proxy/pkg/proxy/infoprovider.go index 564223f9d32de8..98c8fb8b63d305 100644 --- a/components/ws-proxy/pkg/proxy/infoprovider.go +++ b/components/ws-proxy/pkg/proxy/infoprovider.go @@ -289,11 +289,16 @@ func mapWorkspaceStatusToInfo(status *wsapi.WorkspaceStatus) *WorkspaceInfo { }) } + ideImage := status.Spec.DeprecatedIdeImage + if len(status.Spec.IdeImage.WebRef) > 0 { + ideImage = status.Spec.IdeImage.WebRef + } + return &WorkspaceInfo{ WorkspaceID: status.Metadata.MetaId, InstanceID: status.Id, URL: status.Spec.Url, - IDEImage: status.Spec.IdeImage, + IDEImage: ideImage, IDEPublicPort: getPortStr(status.Spec.Url), Ports: portInfos, Auth: status.Auth, diff --git a/components/ws-proxy/pkg/proxy/infoprovider_test.go b/components/ws-proxy/pkg/proxy/infoprovider_test.go index 9fcd1e8f2c0117..40d4cb5c712232 100644 --- a/components/ws-proxy/pkg/proxy/infoprovider_test.go +++ b/components/ws-proxy/pkg/proxy/infoprovider_test.go @@ -200,7 +200,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { existing: existing{}, args: args{ newInfo: &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", InstanceID: testWorkspaceStatus.Id, @@ -218,7 +218,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { }, expected: expected{ info: &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", InstanceID: testWorkspaceStatus.Id, @@ -259,7 +259,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { }, args: args{ newInfo: &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -304,7 +304,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { }, args: args{ newInfo: &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -349,7 +349,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { }, args: args{ newInfo: &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: same ID @@ -368,7 +368,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { }, expected: expected{ info: &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: same ID @@ -400,7 +400,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { testWorkspaceInfo.WorkspaceID: { testWorkspaceInfo.InstanceID: testWorkspaceInfo, "e63cb5ff-f4e4-4065-8554-b431a32c0001": &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -427,7 +427,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { }, args: args{ newInfo: &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -446,7 +446,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { }, expected: expected{ info: &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -478,7 +478,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { testWorkspaceInfo.WorkspaceID: { testWorkspaceInfo.InstanceID: testWorkspaceInfo, "e63cb5ff-f4e4-4065-8554-b431a32c0001": &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -505,7 +505,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { }, args: args{ newInfo: &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "444", // NOTE: different ID @@ -524,7 +524,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { }, expected: expected{ info: &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "444", // NOTE: different ID @@ -560,7 +560,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { testWorkspaceInfo.WorkspaceID: { testWorkspaceInfo.InstanceID: testWorkspaceInfo, "e63cb5ff-f4e4-4065-8554-b431a32c0001": &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -605,7 +605,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { infos: instanceInfosByWorkspace{ testWorkspaceInfo.WorkspaceID: { "e63cb5ff-f4e4-4065-8554-b431a32c0001": &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -622,7 +622,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { StartedAt: startedNow, }, "e63cb5ff-f4e4-4065-8554-b431a32c0002": &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -649,7 +649,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { }, args: args{ newInfo: &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -668,7 +668,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { }, expected: expected{ info: &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -699,7 +699,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { infos: instanceInfosByWorkspace{ testWorkspaceInfo.WorkspaceID: { "e63cb5ff-f4e4-4065-8554-b431a32c0001": &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -716,7 +716,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { StartedAt: startedNow, }, "e63cb5ff-f4e4-4065-8554-b431a32c0002": &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -743,7 +743,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { }, args: args{ newInfo: &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -762,7 +762,7 @@ func Test_workspaceInfoCache_Insert(t *testing.T) { }, expected: expected{ info: &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -899,7 +899,7 @@ func Test_workspaceInfoCache_Delete(t *testing.T) { testWorkspaceInfo.WorkspaceID: { testWorkspaceInfo.InstanceID: testWorkspaceInfo, "e63cb5ff-f4e4-4065-8554-b431a32c0001": &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", // NOTE: different ID @@ -993,7 +993,7 @@ var ( }, Phase: wsapi.WorkspacePhase_RUNNING, Spec: &wsapi.WorkspaceSpec{ - IdeImage: "testWorkspaceIDEImage", + IdeImage: &wsapi.IDEImage{WebRef: "testWorkspaceIDEImage"}, Headless: false, Type: wsapi.WorkspaceType_REGULAR, Url: "https://e63cb5ff-f4e4-4065-8554-b431a32c2714.ws-eu02.gitpod.io", @@ -1008,7 +1008,7 @@ var ( }, } testWorkspaceInfo = &WorkspaceInfo{ - IDEImage: testWorkspaceStatus.Spec.IdeImage, + IDEImage: testWorkspaceStatus.Spec.IdeImage.WebRef, Auth: testWorkspaceStatus.Auth, IDEPublicPort: "443", InstanceID: testWorkspaceStatus.Id, diff --git a/dev/loadgen/cmd/benchmark.go b/dev/loadgen/cmd/benchmark.go index 1e2c5b4820ece6..f3113c368d7513 100644 --- a/dev/loadgen/cmd/benchmark.go +++ b/dev/loadgen/cmd/benchmark.go @@ -62,7 +62,10 @@ var benchmarkCommand = &cobra.Command{ }, ServicePrefix: "will-be-overriden", Spec: &api.StartWorkspaceSpec{ - IdeImage: scenario.IDEImage, + DeprecatedIdeImage: scenario.IDEImage, + IdeImage: &api.IDEImage{ + WebRef: scenario.IDEImage, + }, Admission: api.AdmissionLevel_ADMIT_OWNER_ONLY, CheckoutLocation: "gitpod", Git: &api.GitSpec{ diff --git a/dev/loadgen/cmd/run.go b/dev/loadgen/cmd/run.go index 823a5abab69920..f7e737c1837207 100644 --- a/dev/loadgen/cmd/run.go +++ b/dev/loadgen/cmd/run.go @@ -51,7 +51,10 @@ var runCmd = &cobra.Command{ }, ServicePrefix: "will-be-overriden", Spec: &api.StartWorkspaceSpec{ - IdeImage: "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-8c1466008dedabe79d82cbb91931a16f7ce7994c", + DeprecatedIdeImage: "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-8c1466008dedabe79d82cbb91931a16f7ce7994c", + IdeImage: &api.IDEImage{ + WebRef: "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-8c1466008dedabe79d82cbb91931a16f7ce7994c", + }, Admission: api.AdmissionLevel_ADMIT_OWNER_ONLY, CheckoutLocation: "gitpod", Git: &api.GitSpec{ diff --git a/test/pkg/integration/workspace.go b/test/pkg/integration/workspace.go index c2249787aa013c..842043768a85c7 100644 --- a/test/pkg/integration/workspace.go +++ b/test/pkg/integration/workspace.go @@ -151,8 +151,11 @@ func LaunchWorkspaceDirectly(ctx context.Context, api *ComponentAPI, opts ...Lau }, Type: wsmanapi.WorkspaceType_REGULAR, Spec: &wsmanapi.StartWorkspaceSpec{ - WorkspaceImage: workspaceImage, - IdeImage: ideImage, + WorkspaceImage: workspaceImage, + DeprecatedIdeImage: ideImage, + IdeImage: &wsmanapi.IDEImage{ + WebRef: ideImage, + }, CheckoutLocation: "/", WorkspaceLocation: "/", Timeout: "30m",