From da125ed40b901daf20d92a376e35785620da0d67 Mon Sep 17 00:00:00 2001 From: Huiwen Date: Fri, 8 Dec 2023 19:15:15 +0800 Subject: [PATCH] Migrate InstallationService GetInstallationWorkspaceDefaultImage method (#19221) --- .../default-workspace-image-query.ts | 19 + .../default-workspace-image-query.ts | 13 - .../service/json-rpc-installation-client.ts | 13 + .../dashboard/src/teams/TeamSettings.tsx | 16 +- .../public-api/gitpod/v1/installation.proto | 10 + .../public-api/go/v1/installation.pb.go | 572 +++++++++++------- .../public-api/go/v1/installation_grpc.pb.go | 40 ++ .../go/v1/v1connect/installation.connect.go | 37 +- .../v1connect/installation.proxy.connect.go | 10 + .../src/gitpod/v1/installation_connect.ts | 14 +- .../src/gitpod/v1/installation_pb.ts | 68 +++ .../src/api/installation-service-api.ts | 10 + .../server/src/auth/installation-service.ts | 6 + 13 files changed, 581 insertions(+), 247 deletions(-) create mode 100644 components/dashboard/src/data/installation/default-workspace-image-query.ts diff --git a/components/dashboard/src/data/installation/default-workspace-image-query.ts b/components/dashboard/src/data/installation/default-workspace-image-query.ts new file mode 100644 index 00000000000000..1ed3be36fce7e8 --- /dev/null +++ b/components/dashboard/src/data/installation/default-workspace-image-query.ts @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2023 Gitpod GmbH. All rights reserved. + * Licensed under the GNU Affero General Public License (AGPL). + * See License.AGPL.txt in the project root for license information. + */ + +import { useQuery } from "@tanstack/react-query"; +import { installationClient } from "../../service/public-api"; + +export const useInstallationDefaultWorkspaceImageQuery = () => { + return useQuery({ + queryKey: ["installation-default-workspace-image"], + staleTime: 1000 * 60 * 10, // 10 minute + queryFn: async () => { + const response = await installationClient.getInstallationWorkspaceDefaultImage({}); + return response.defaultWorkspaceImage; + }, + }); +}; diff --git a/components/dashboard/src/data/workspaces/default-workspace-image-query.ts b/components/dashboard/src/data/workspaces/default-workspace-image-query.ts index f8041db828c555..82458725877af6 100644 --- a/components/dashboard/src/data/workspaces/default-workspace-image-query.ts +++ b/components/dashboard/src/data/workspaces/default-workspace-image-query.ts @@ -5,22 +5,9 @@ */ import { useQuery } from "@tanstack/react-query"; -import { getGitpodService } from "../../service/service"; -import { GetDefaultWorkspaceImageResult } from "@gitpod/gitpod-protocol"; import { GetWorkspaceDefaultImageResponse } from "@gitpod/public-api/lib/gitpod/v1/workspace_pb"; import { workspaceClient } from "../../service/public-api"; -export const useDefaultWorkspaceImageQuery = (workspaceId?: string) => { - return useQuery({ - queryKey: ["default-workspace-image", { workspaceId }], - staleTime: 1000 * 60 * 10, // 10 minute - queryFn: async () => { - // without `workspaceId` getDefaultWorkspaceImage will return org setting and if not set fallback to installation - return await getGitpodService().server.getDefaultWorkspaceImage({ workspaceId }); - }, - }); -}; - export const useWorkspaceDefaultImageQuery = (workspaceId: string) => { return useQuery({ queryKey: ["default-workspace-image-v2", { workspaceId }], diff --git a/components/dashboard/src/service/json-rpc-installation-client.ts b/components/dashboard/src/service/json-rpc-installation-client.ts index 27bca1bd8a790d..ac00a32c0812d6 100644 --- a/components/dashboard/src/service/json-rpc-installation-client.ts +++ b/components/dashboard/src/service/json-rpc-installation-client.ts @@ -18,6 +18,8 @@ import { ListBlockedEmailDomainsResponse, CreateBlockedEmailDomainRequest, CreateBlockedEmailDomainResponse, + GetInstallationWorkspaceDefaultImageRequest, + GetInstallationWorkspaceDefaultImageResponse, } from "@gitpod/public-api/lib/gitpod/v1/installation_pb"; import { ApplicationError, ErrorCodes } from "@gitpod/gitpod-protocol/lib/messaging/error"; import { getGitpodService } from "./service"; @@ -25,6 +27,17 @@ import { converter } from "./public-api"; import { PaginationResponse } from "@gitpod/public-api/lib/gitpod/v1/pagination_pb"; export class JsonRpcInstallationClient implements PromiseClient { + async getInstallationWorkspaceDefaultImage( + _request: PartialMessage, + _options?: CallOptions, + ): Promise { + const result = await getGitpodService().server.getDefaultWorkspaceImage({}); + if (result.source !== "installation") { + throw new ApplicationError(ErrorCodes.INTERNAL_SERVER_ERROR, "unexpected image source"); + } + return new GetInstallationWorkspaceDefaultImageResponse({ defaultWorkspaceImage: result.image }); + } + async listBlockedRepositories( request: PartialMessage, _options?: CallOptions | undefined, diff --git a/components/dashboard/src/teams/TeamSettings.tsx b/components/dashboard/src/teams/TeamSettings.tsx index 8f4e67c51f22db..5219f59bcdcee1 100644 --- a/components/dashboard/src/teams/TeamSettings.tsx +++ b/components/dashboard/src/teams/TeamSettings.tsx @@ -19,7 +19,6 @@ import { useOrgSettingsQuery } from "../data/organizations/org-settings-query"; import { useCurrentOrg, useOrganizationsInvalidator } from "../data/organizations/orgs-query"; import { useUpdateOrgMutation } from "../data/organizations/update-org-mutation"; import { useUpdateOrgSettingsMutation } from "../data/organizations/update-org-settings-mutation"; -import { useDefaultWorkspaceImageQuery } from "../data/workspaces/default-workspace-image-query"; import { useOnBlurError } from "../hooks/use-onblur-error"; import { ReactComponent as Stack } from "../icons/Stack.svg"; import { organizationClient } from "../service/public-api"; @@ -28,6 +27,7 @@ import { useCurrentUser } from "../user-context"; import { OrgSettingsPage } from "./OrgSettingsPage"; import { ErrorCode } from "@gitpod/gitpod-protocol/lib/messaging/error"; import { Button } from "@podkit/buttons/Button"; +import { useInstallationDefaultWorkspaceImageQuery } from "../data/installation/default-workspace-image-query"; export default function TeamSettingsPage() { const user = useCurrentUser(); @@ -176,7 +176,7 @@ export default function TeamSettingsPage() { function OrgSettingsForm(props: { org?: Organization; isOwner: boolean }) { const { org, isOwner } = props; const { data: settings, isLoading } = useOrgSettingsQuery(); - const { data: imageInfo } = useDefaultWorkspaceImageQuery(); + const { data: installationDefaultImage } = useInstallationDefaultWorkspaceImageQuery(); const updateTeamSettings = useUpdateOrgSettingsMutation(); const [showImageEditModal, setShowImageEditModal] = useState(false); @@ -238,14 +238,14 @@ function OrgSettingsForm(props: { org?: Organization; isOwner: boolean }) { setShowImageEditModal(true)} /> {showImageEditModal && ( setShowImageEditModal(false)} /> )} @@ -255,7 +255,7 @@ function OrgSettingsForm(props: { org?: Organization; isOwner: boolean }) { function WorkspaceImageButton(props: { settings?: OrganizationSettings; - defaultWorkspaceImage?: string; + installationDefaultWorkspaceImage?: string; onClick: () => void; disabled?: boolean; }) { @@ -282,7 +282,7 @@ function WorkspaceImageButton(props: { }; } - const image = props.settings?.defaultWorkspaceImage || props.defaultWorkspaceImage || ""; + const image = props.settings?.defaultWorkspaceImage || props.installationDefaultWorkspaceImage || ""; const descList = useMemo(() => { const arr: ReactNode[] = [Default image]; @@ -335,7 +335,7 @@ function WorkspaceImageButton(props: { } interface OrgDefaultWorkspaceImageModalProps { - globalDefaultImage: string | undefined; + installationDefaultWorkspaceImage: string | undefined; settings: OrganizationSettings | undefined; onClose: () => void; } @@ -385,7 +385,7 @@ function OrgDefaultWorkspaceImageModal(props: OrgDefaultWorkspaceImageModalProps diff --git a/components/public-api/gitpod/v1/installation.proto b/components/public-api/gitpod/v1/installation.proto index 3b3761958ea5d1..f8c5a409405c7e 100644 --- a/components/public-api/gitpod/v1/installation.proto +++ b/components/public-api/gitpod/v1/installation.proto @@ -9,6 +9,10 @@ import "google/protobuf/timestamp.proto"; option go_package = "github.com/gitpod-io/gitpod/components/public-api/go/v1"; service InstallationService { + // GetInstallationWorkspaceDefaultImage returns the default image for current + // Gitpod Installation. + rpc GetInstallationWorkspaceDefaultImage(GetInstallationWorkspaceDefaultImageRequest) returns (GetInstallationWorkspaceDefaultImageResponse) {} + // ListBlockedRepositories lists blocked repositories. rpc ListBlockedRepositories(ListBlockedRepositoriesRequest) returns (ListBlockedRepositoriesResponse) {} @@ -25,6 +29,12 @@ service InstallationService { rpc CreateBlockedEmailDomain(CreateBlockedEmailDomainRequest) returns (CreateBlockedEmailDomainResponse) {} } +message GetInstallationWorkspaceDefaultImageRequest {} + +message GetInstallationWorkspaceDefaultImageResponse { + string default_workspace_image = 1; +} + message ListBlockedRepositoriesRequest { // pagination contains the pagination options for listing blocked repositories PaginationRequest pagination = 1; diff --git a/components/public-api/go/v1/installation.pb.go b/components/public-api/go/v1/installation.pb.go index 7e1920bd5d0e2a..84ea87359fb872 100644 --- a/components/public-api/go/v1/installation.pb.go +++ b/components/public-api/go/v1/installation.pb.go @@ -25,6 +25,91 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type GetInstallationWorkspaceDefaultImageRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetInstallationWorkspaceDefaultImageRequest) Reset() { + *x = GetInstallationWorkspaceDefaultImageRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_v1_installation_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetInstallationWorkspaceDefaultImageRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetInstallationWorkspaceDefaultImageRequest) ProtoMessage() {} + +func (x *GetInstallationWorkspaceDefaultImageRequest) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_v1_installation_proto_msgTypes[0] + 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 GetInstallationWorkspaceDefaultImageRequest.ProtoReflect.Descriptor instead. +func (*GetInstallationWorkspaceDefaultImageRequest) Descriptor() ([]byte, []int) { + return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{0} +} + +type GetInstallationWorkspaceDefaultImageResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DefaultWorkspaceImage string `protobuf:"bytes,1,opt,name=default_workspace_image,json=defaultWorkspaceImage,proto3" json:"default_workspace_image,omitempty"` +} + +func (x *GetInstallationWorkspaceDefaultImageResponse) Reset() { + *x = GetInstallationWorkspaceDefaultImageResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_v1_installation_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetInstallationWorkspaceDefaultImageResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetInstallationWorkspaceDefaultImageResponse) ProtoMessage() {} + +func (x *GetInstallationWorkspaceDefaultImageResponse) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_v1_installation_proto_msgTypes[1] + 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 GetInstallationWorkspaceDefaultImageResponse.ProtoReflect.Descriptor instead. +func (*GetInstallationWorkspaceDefaultImageResponse) Descriptor() ([]byte, []int) { + return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{1} +} + +func (x *GetInstallationWorkspaceDefaultImageResponse) GetDefaultWorkspaceImage() string { + if x != nil { + return x.DefaultWorkspaceImage + } + return "" +} + type ListBlockedRepositoriesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -42,7 +127,7 @@ type ListBlockedRepositoriesRequest struct { func (x *ListBlockedRepositoriesRequest) Reset() { *x = ListBlockedRepositoriesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_installation_proto_msgTypes[0] + mi := &file_gitpod_v1_installation_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -55,7 +140,7 @@ func (x *ListBlockedRepositoriesRequest) String() string { func (*ListBlockedRepositoriesRequest) ProtoMessage() {} func (x *ListBlockedRepositoriesRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_installation_proto_msgTypes[0] + mi := &file_gitpod_v1_installation_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -68,7 +153,7 @@ func (x *ListBlockedRepositoriesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBlockedRepositoriesRequest.ProtoReflect.Descriptor instead. func (*ListBlockedRepositoriesRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{0} + return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{2} } func (x *ListBlockedRepositoriesRequest) GetPagination() *PaginationRequest { @@ -106,7 +191,7 @@ type ListBlockedRepositoriesResponse struct { func (x *ListBlockedRepositoriesResponse) Reset() { *x = ListBlockedRepositoriesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_installation_proto_msgTypes[1] + mi := &file_gitpod_v1_installation_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -119,7 +204,7 @@ func (x *ListBlockedRepositoriesResponse) String() string { func (*ListBlockedRepositoriesResponse) ProtoMessage() {} func (x *ListBlockedRepositoriesResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_installation_proto_msgTypes[1] + mi := &file_gitpod_v1_installation_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -132,7 +217,7 @@ func (x *ListBlockedRepositoriesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBlockedRepositoriesResponse.ProtoReflect.Descriptor instead. func (*ListBlockedRepositoriesResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{1} + return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{3} } func (x *ListBlockedRepositoriesResponse) GetPagination() *PaginationResponse { @@ -164,7 +249,7 @@ type CreateBlockedRepositoryRequest struct { func (x *CreateBlockedRepositoryRequest) Reset() { *x = CreateBlockedRepositoryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_installation_proto_msgTypes[2] + mi := &file_gitpod_v1_installation_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -177,7 +262,7 @@ func (x *CreateBlockedRepositoryRequest) String() string { func (*CreateBlockedRepositoryRequest) ProtoMessage() {} func (x *CreateBlockedRepositoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_installation_proto_msgTypes[2] + mi := &file_gitpod_v1_installation_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -190,7 +275,7 @@ func (x *CreateBlockedRepositoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBlockedRepositoryRequest.ProtoReflect.Descriptor instead. func (*CreateBlockedRepositoryRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{2} + return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{4} } func (x *CreateBlockedRepositoryRequest) GetUrlRegexp() string { @@ -218,7 +303,7 @@ type CreateBlockedRepositoryResponse struct { func (x *CreateBlockedRepositoryResponse) Reset() { *x = CreateBlockedRepositoryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_installation_proto_msgTypes[3] + mi := &file_gitpod_v1_installation_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -231,7 +316,7 @@ func (x *CreateBlockedRepositoryResponse) String() string { func (*CreateBlockedRepositoryResponse) ProtoMessage() {} func (x *CreateBlockedRepositoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_installation_proto_msgTypes[3] + mi := &file_gitpod_v1_installation_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -244,7 +329,7 @@ func (x *CreateBlockedRepositoryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBlockedRepositoryResponse.ProtoReflect.Descriptor instead. func (*CreateBlockedRepositoryResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{3} + return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{5} } func (x *CreateBlockedRepositoryResponse) GetBlockedRepository() *BlockedRepository { @@ -266,7 +351,7 @@ type DeleteBlockedRepositoryRequest struct { func (x *DeleteBlockedRepositoryRequest) Reset() { *x = DeleteBlockedRepositoryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_installation_proto_msgTypes[4] + mi := &file_gitpod_v1_installation_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -279,7 +364,7 @@ func (x *DeleteBlockedRepositoryRequest) String() string { func (*DeleteBlockedRepositoryRequest) ProtoMessage() {} func (x *DeleteBlockedRepositoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_installation_proto_msgTypes[4] + mi := &file_gitpod_v1_installation_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -292,7 +377,7 @@ func (x *DeleteBlockedRepositoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteBlockedRepositoryRequest.ProtoReflect.Descriptor instead. func (*DeleteBlockedRepositoryRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{4} + return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{6} } func (x *DeleteBlockedRepositoryRequest) GetBlockedRepositoryId() uint32 { @@ -311,7 +396,7 @@ type DeleteBlockedRepositoryResponse struct { func (x *DeleteBlockedRepositoryResponse) Reset() { *x = DeleteBlockedRepositoryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_installation_proto_msgTypes[5] + mi := &file_gitpod_v1_installation_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -324,7 +409,7 @@ func (x *DeleteBlockedRepositoryResponse) String() string { func (*DeleteBlockedRepositoryResponse) ProtoMessage() {} func (x *DeleteBlockedRepositoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_installation_proto_msgTypes[5] + mi := &file_gitpod_v1_installation_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -337,7 +422,7 @@ func (x *DeleteBlockedRepositoryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteBlockedRepositoryResponse.ProtoReflect.Descriptor instead. func (*DeleteBlockedRepositoryResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{5} + return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{7} } type ListBlockedEmailDomainsRequest struct { @@ -353,7 +438,7 @@ type ListBlockedEmailDomainsRequest struct { func (x *ListBlockedEmailDomainsRequest) Reset() { *x = ListBlockedEmailDomainsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_installation_proto_msgTypes[6] + mi := &file_gitpod_v1_installation_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -366,7 +451,7 @@ func (x *ListBlockedEmailDomainsRequest) String() string { func (*ListBlockedEmailDomainsRequest) ProtoMessage() {} func (x *ListBlockedEmailDomainsRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_installation_proto_msgTypes[6] + mi := &file_gitpod_v1_installation_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -379,7 +464,7 @@ func (x *ListBlockedEmailDomainsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBlockedEmailDomainsRequest.ProtoReflect.Descriptor instead. func (*ListBlockedEmailDomainsRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{6} + return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{8} } func (x *ListBlockedEmailDomainsRequest) GetPagination() *PaginationRequest { @@ -404,7 +489,7 @@ type ListBlockedEmailDomainsResponse struct { func (x *ListBlockedEmailDomainsResponse) Reset() { *x = ListBlockedEmailDomainsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_installation_proto_msgTypes[7] + mi := &file_gitpod_v1_installation_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -417,7 +502,7 @@ func (x *ListBlockedEmailDomainsResponse) String() string { func (*ListBlockedEmailDomainsResponse) ProtoMessage() {} func (x *ListBlockedEmailDomainsResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_installation_proto_msgTypes[7] + mi := &file_gitpod_v1_installation_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -430,7 +515,7 @@ func (x *ListBlockedEmailDomainsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBlockedEmailDomainsResponse.ProtoReflect.Descriptor instead. func (*ListBlockedEmailDomainsResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{7} + return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{9} } func (x *ListBlockedEmailDomainsResponse) GetPagination() *PaginationResponse { @@ -460,7 +545,7 @@ type CreateBlockedEmailDomainRequest struct { func (x *CreateBlockedEmailDomainRequest) Reset() { *x = CreateBlockedEmailDomainRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_installation_proto_msgTypes[8] + mi := &file_gitpod_v1_installation_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -473,7 +558,7 @@ func (x *CreateBlockedEmailDomainRequest) String() string { func (*CreateBlockedEmailDomainRequest) ProtoMessage() {} func (x *CreateBlockedEmailDomainRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_installation_proto_msgTypes[8] + mi := &file_gitpod_v1_installation_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -486,7 +571,7 @@ func (x *CreateBlockedEmailDomainRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBlockedEmailDomainRequest.ProtoReflect.Descriptor instead. func (*CreateBlockedEmailDomainRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{8} + return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{10} } func (x *CreateBlockedEmailDomainRequest) GetDomain() string { @@ -514,7 +599,7 @@ type CreateBlockedEmailDomainResponse struct { func (x *CreateBlockedEmailDomainResponse) Reset() { *x = CreateBlockedEmailDomainResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_installation_proto_msgTypes[9] + mi := &file_gitpod_v1_installation_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -527,7 +612,7 @@ func (x *CreateBlockedEmailDomainResponse) String() string { func (*CreateBlockedEmailDomainResponse) ProtoMessage() {} func (x *CreateBlockedEmailDomainResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_installation_proto_msgTypes[9] + mi := &file_gitpod_v1_installation_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -540,7 +625,7 @@ func (x *CreateBlockedEmailDomainResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBlockedEmailDomainResponse.ProtoReflect.Descriptor instead. func (*CreateBlockedEmailDomainResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{9} + return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{11} } func (x *CreateBlockedEmailDomainResponse) GetBlockedEmailDomain() *BlockedEmailDomain { @@ -569,7 +654,7 @@ type BlockedRepository struct { func (x *BlockedRepository) Reset() { *x = BlockedRepository{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_installation_proto_msgTypes[10] + mi := &file_gitpod_v1_installation_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -582,7 +667,7 @@ func (x *BlockedRepository) String() string { func (*BlockedRepository) ProtoMessage() {} func (x *BlockedRepository) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_installation_proto_msgTypes[10] + mi := &file_gitpod_v1_installation_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -595,7 +680,7 @@ func (x *BlockedRepository) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockedRepository.ProtoReflect.Descriptor instead. func (*BlockedRepository) Descriptor() ([]byte, []int) { - return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{10} + return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{12} } func (x *BlockedRepository) GetId() uint32 { @@ -648,7 +733,7 @@ type BlockedEmailDomain struct { func (x *BlockedEmailDomain) Reset() { *x = BlockedEmailDomain{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_installation_proto_msgTypes[11] + mi := &file_gitpod_v1_installation_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -661,7 +746,7 @@ func (x *BlockedEmailDomain) String() string { func (*BlockedEmailDomain) ProtoMessage() {} func (x *BlockedEmailDomain) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_installation_proto_msgTypes[11] + mi := &file_gitpod_v1_installation_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -674,7 +759,7 @@ func (x *BlockedEmailDomain) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockedEmailDomain.ProtoReflect.Descriptor instead. func (*BlockedEmailDomain) Descriptor() ([]byte, []int) { - return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{11} + return file_gitpod_v1_installation_proto_rawDescGZIP(), []int{13} } func (x *BlockedEmailDomain) GetId() string { @@ -709,141 +794,160 @@ var file_gitpod_v1_installation_proto_rawDesc = []byte{ 0x2f, 0x73, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0xa4, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x23, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x52, - 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, - 0x74, 0x65, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x54, 0x65, 0x72, 0x6d, 0x22, 0xb1, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x42, + 0x2d, 0x0a, 0x2b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x66, + 0x0a, 0x2c, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, + 0x0a, 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x14, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x13, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x5e, 0x0a, 0x1e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x75, 0x72, 0x6c, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x75, 0x72, 0x6c, 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x22, 0x6e, 0x0a, 0x1f, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, - 0x12, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x11, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, - 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x54, 0x0a, 0x1e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x15, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, - 0x22, 0x21, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, - 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0xb3, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, - 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x15, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, - 0x64, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x13, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, - 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x22, 0x55, 0x0a, 0x1f, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x22, 0x73, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, - 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x14, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x52, 0x12, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0xdf, 0x01, 0x0a, 0x11, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, - 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, - 0x72, 0x6c, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x75, 0x72, 0x6c, 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 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, 0x0c, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 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, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x58, 0x0a, 0x12, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x32, 0xdc, 0x04, 0x0a, 0x13, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x72, 0x0a, 0x17, 0x4c, 0x69, 0x73, - 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x69, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, - 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x65, 0x72, 0x6d, 0x22, 0xb1, 0x01, + 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x4f, 0x0a, 0x14, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x13, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, + 0x73, 0x22, 0x5e, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x72, 0x6c, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x72, 0x6c, 0x52, 0x65, 0x67, 0x65, + 0x78, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x75, 0x73, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, + 0x72, 0x22, 0x6e, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x12, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x11, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x22, 0x54, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x72, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x29, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, - 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, + 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x72, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x13, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x22, 0x21, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x1e, 0x4c, 0x69, + 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb3, 0x01, 0x0a, 0x1f, 0x4c, + 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, + 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, + 0x15, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, + 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, + 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x13, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, - 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, - 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, - 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, - 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x42, 0x39, 0x5a, 0x37, 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, - 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x22, 0x55, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, + 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6e, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x22, 0x73, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x14, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, + 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x12, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, + 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0xdf, 0x01, 0x0a, + 0x11, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x72, 0x6c, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x72, 0x6c, 0x52, 0x65, 0x67, 0x65, 0x78, + 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, + 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x04, 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, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x05, 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, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x58, + 0x0a, 0x12, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x32, 0xf8, 0x05, 0x0a, 0x13, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x99, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x36, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x17, + 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x72, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, + 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x29, 0x2e, 0x67, 0x69, + 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, + 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, + 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, 0x61, + 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6d, + 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x39, 0x5a, 0x37, 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, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -858,49 +962,53 @@ func file_gitpod_v1_installation_proto_rawDescGZIP() []byte { return file_gitpod_v1_installation_proto_rawDescData } -var file_gitpod_v1_installation_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_gitpod_v1_installation_proto_msgTypes = make([]protoimpl.MessageInfo, 14) var file_gitpod_v1_installation_proto_goTypes = []interface{}{ - (*ListBlockedRepositoriesRequest)(nil), // 0: gitpod.v1.ListBlockedRepositoriesRequest - (*ListBlockedRepositoriesResponse)(nil), // 1: gitpod.v1.ListBlockedRepositoriesResponse - (*CreateBlockedRepositoryRequest)(nil), // 2: gitpod.v1.CreateBlockedRepositoryRequest - (*CreateBlockedRepositoryResponse)(nil), // 3: gitpod.v1.CreateBlockedRepositoryResponse - (*DeleteBlockedRepositoryRequest)(nil), // 4: gitpod.v1.DeleteBlockedRepositoryRequest - (*DeleteBlockedRepositoryResponse)(nil), // 5: gitpod.v1.DeleteBlockedRepositoryResponse - (*ListBlockedEmailDomainsRequest)(nil), // 6: gitpod.v1.ListBlockedEmailDomainsRequest - (*ListBlockedEmailDomainsResponse)(nil), // 7: gitpod.v1.ListBlockedEmailDomainsResponse - (*CreateBlockedEmailDomainRequest)(nil), // 8: gitpod.v1.CreateBlockedEmailDomainRequest - (*CreateBlockedEmailDomainResponse)(nil), // 9: gitpod.v1.CreateBlockedEmailDomainResponse - (*BlockedRepository)(nil), // 10: gitpod.v1.BlockedRepository - (*BlockedEmailDomain)(nil), // 11: gitpod.v1.BlockedEmailDomain - (*PaginationRequest)(nil), // 12: gitpod.v1.PaginationRequest - (*Sort)(nil), // 13: gitpod.v1.Sort - (*PaginationResponse)(nil), // 14: gitpod.v1.PaginationResponse - (*timestamppb.Timestamp)(nil), // 15: google.protobuf.Timestamp + (*GetInstallationWorkspaceDefaultImageRequest)(nil), // 0: gitpod.v1.GetInstallationWorkspaceDefaultImageRequest + (*GetInstallationWorkspaceDefaultImageResponse)(nil), // 1: gitpod.v1.GetInstallationWorkspaceDefaultImageResponse + (*ListBlockedRepositoriesRequest)(nil), // 2: gitpod.v1.ListBlockedRepositoriesRequest + (*ListBlockedRepositoriesResponse)(nil), // 3: gitpod.v1.ListBlockedRepositoriesResponse + (*CreateBlockedRepositoryRequest)(nil), // 4: gitpod.v1.CreateBlockedRepositoryRequest + (*CreateBlockedRepositoryResponse)(nil), // 5: gitpod.v1.CreateBlockedRepositoryResponse + (*DeleteBlockedRepositoryRequest)(nil), // 6: gitpod.v1.DeleteBlockedRepositoryRequest + (*DeleteBlockedRepositoryResponse)(nil), // 7: gitpod.v1.DeleteBlockedRepositoryResponse + (*ListBlockedEmailDomainsRequest)(nil), // 8: gitpod.v1.ListBlockedEmailDomainsRequest + (*ListBlockedEmailDomainsResponse)(nil), // 9: gitpod.v1.ListBlockedEmailDomainsResponse + (*CreateBlockedEmailDomainRequest)(nil), // 10: gitpod.v1.CreateBlockedEmailDomainRequest + (*CreateBlockedEmailDomainResponse)(nil), // 11: gitpod.v1.CreateBlockedEmailDomainResponse + (*BlockedRepository)(nil), // 12: gitpod.v1.BlockedRepository + (*BlockedEmailDomain)(nil), // 13: gitpod.v1.BlockedEmailDomain + (*PaginationRequest)(nil), // 14: gitpod.v1.PaginationRequest + (*Sort)(nil), // 15: gitpod.v1.Sort + (*PaginationResponse)(nil), // 16: gitpod.v1.PaginationResponse + (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp } var file_gitpod_v1_installation_proto_depIdxs = []int32{ - 12, // 0: gitpod.v1.ListBlockedRepositoriesRequest.pagination:type_name -> gitpod.v1.PaginationRequest - 13, // 1: gitpod.v1.ListBlockedRepositoriesRequest.sort:type_name -> gitpod.v1.Sort - 14, // 2: gitpod.v1.ListBlockedRepositoriesResponse.pagination:type_name -> gitpod.v1.PaginationResponse - 10, // 3: gitpod.v1.ListBlockedRepositoriesResponse.blocked_repositories:type_name -> gitpod.v1.BlockedRepository - 10, // 4: gitpod.v1.CreateBlockedRepositoryResponse.blocked_repository:type_name -> gitpod.v1.BlockedRepository - 12, // 5: gitpod.v1.ListBlockedEmailDomainsRequest.pagination:type_name -> gitpod.v1.PaginationRequest - 14, // 6: gitpod.v1.ListBlockedEmailDomainsResponse.pagination:type_name -> gitpod.v1.PaginationResponse - 11, // 7: gitpod.v1.ListBlockedEmailDomainsResponse.blocked_email_domains:type_name -> gitpod.v1.BlockedEmailDomain - 11, // 8: gitpod.v1.CreateBlockedEmailDomainResponse.blocked_email_domain:type_name -> gitpod.v1.BlockedEmailDomain - 15, // 9: gitpod.v1.BlockedRepository.creation_time:type_name -> google.protobuf.Timestamp - 15, // 10: gitpod.v1.BlockedRepository.update_time:type_name -> google.protobuf.Timestamp - 0, // 11: gitpod.v1.InstallationService.ListBlockedRepositories:input_type -> gitpod.v1.ListBlockedRepositoriesRequest - 2, // 12: gitpod.v1.InstallationService.CreateBlockedRepository:input_type -> gitpod.v1.CreateBlockedRepositoryRequest - 4, // 13: gitpod.v1.InstallationService.DeleteBlockedRepository:input_type -> gitpod.v1.DeleteBlockedRepositoryRequest - 6, // 14: gitpod.v1.InstallationService.ListBlockedEmailDomains:input_type -> gitpod.v1.ListBlockedEmailDomainsRequest - 8, // 15: gitpod.v1.InstallationService.CreateBlockedEmailDomain:input_type -> gitpod.v1.CreateBlockedEmailDomainRequest - 1, // 16: gitpod.v1.InstallationService.ListBlockedRepositories:output_type -> gitpod.v1.ListBlockedRepositoriesResponse - 3, // 17: gitpod.v1.InstallationService.CreateBlockedRepository:output_type -> gitpod.v1.CreateBlockedRepositoryResponse - 5, // 18: gitpod.v1.InstallationService.DeleteBlockedRepository:output_type -> gitpod.v1.DeleteBlockedRepositoryResponse - 7, // 19: gitpod.v1.InstallationService.ListBlockedEmailDomains:output_type -> gitpod.v1.ListBlockedEmailDomainsResponse - 9, // 20: gitpod.v1.InstallationService.CreateBlockedEmailDomain:output_type -> gitpod.v1.CreateBlockedEmailDomainResponse - 16, // [16:21] is the sub-list for method output_type - 11, // [11:16] is the sub-list for method input_type + 14, // 0: gitpod.v1.ListBlockedRepositoriesRequest.pagination:type_name -> gitpod.v1.PaginationRequest + 15, // 1: gitpod.v1.ListBlockedRepositoriesRequest.sort:type_name -> gitpod.v1.Sort + 16, // 2: gitpod.v1.ListBlockedRepositoriesResponse.pagination:type_name -> gitpod.v1.PaginationResponse + 12, // 3: gitpod.v1.ListBlockedRepositoriesResponse.blocked_repositories:type_name -> gitpod.v1.BlockedRepository + 12, // 4: gitpod.v1.CreateBlockedRepositoryResponse.blocked_repository:type_name -> gitpod.v1.BlockedRepository + 14, // 5: gitpod.v1.ListBlockedEmailDomainsRequest.pagination:type_name -> gitpod.v1.PaginationRequest + 16, // 6: gitpod.v1.ListBlockedEmailDomainsResponse.pagination:type_name -> gitpod.v1.PaginationResponse + 13, // 7: gitpod.v1.ListBlockedEmailDomainsResponse.blocked_email_domains:type_name -> gitpod.v1.BlockedEmailDomain + 13, // 8: gitpod.v1.CreateBlockedEmailDomainResponse.blocked_email_domain:type_name -> gitpod.v1.BlockedEmailDomain + 17, // 9: gitpod.v1.BlockedRepository.creation_time:type_name -> google.protobuf.Timestamp + 17, // 10: gitpod.v1.BlockedRepository.update_time:type_name -> google.protobuf.Timestamp + 0, // 11: gitpod.v1.InstallationService.GetInstallationWorkspaceDefaultImage:input_type -> gitpod.v1.GetInstallationWorkspaceDefaultImageRequest + 2, // 12: gitpod.v1.InstallationService.ListBlockedRepositories:input_type -> gitpod.v1.ListBlockedRepositoriesRequest + 4, // 13: gitpod.v1.InstallationService.CreateBlockedRepository:input_type -> gitpod.v1.CreateBlockedRepositoryRequest + 6, // 14: gitpod.v1.InstallationService.DeleteBlockedRepository:input_type -> gitpod.v1.DeleteBlockedRepositoryRequest + 8, // 15: gitpod.v1.InstallationService.ListBlockedEmailDomains:input_type -> gitpod.v1.ListBlockedEmailDomainsRequest + 10, // 16: gitpod.v1.InstallationService.CreateBlockedEmailDomain:input_type -> gitpod.v1.CreateBlockedEmailDomainRequest + 1, // 17: gitpod.v1.InstallationService.GetInstallationWorkspaceDefaultImage:output_type -> gitpod.v1.GetInstallationWorkspaceDefaultImageResponse + 3, // 18: gitpod.v1.InstallationService.ListBlockedRepositories:output_type -> gitpod.v1.ListBlockedRepositoriesResponse + 5, // 19: gitpod.v1.InstallationService.CreateBlockedRepository:output_type -> gitpod.v1.CreateBlockedRepositoryResponse + 7, // 20: gitpod.v1.InstallationService.DeleteBlockedRepository:output_type -> gitpod.v1.DeleteBlockedRepositoryResponse + 9, // 21: gitpod.v1.InstallationService.ListBlockedEmailDomains:output_type -> gitpod.v1.ListBlockedEmailDomainsResponse + 11, // 22: gitpod.v1.InstallationService.CreateBlockedEmailDomain:output_type -> gitpod.v1.CreateBlockedEmailDomainResponse + 17, // [17:23] is the sub-list for method output_type + 11, // [11:17] is the sub-list for method input_type 11, // [11:11] is the sub-list for extension type_name 11, // [11:11] is the sub-list for extension extendee 0, // [0:11] is the sub-list for field type_name @@ -915,7 +1023,7 @@ func file_gitpod_v1_installation_proto_init() { file_gitpod_v1_sorting_proto_init() if !protoimpl.UnsafeEnabled { file_gitpod_v1_installation_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBlockedRepositoriesRequest); i { + switch v := v.(*GetInstallationWorkspaceDefaultImageRequest); i { case 0: return &v.state case 1: @@ -927,7 +1035,7 @@ func file_gitpod_v1_installation_proto_init() { } } file_gitpod_v1_installation_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBlockedRepositoriesResponse); i { + switch v := v.(*GetInstallationWorkspaceDefaultImageResponse); i { case 0: return &v.state case 1: @@ -939,7 +1047,7 @@ func file_gitpod_v1_installation_proto_init() { } } file_gitpod_v1_installation_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBlockedRepositoryRequest); i { + switch v := v.(*ListBlockedRepositoriesRequest); i { case 0: return &v.state case 1: @@ -951,7 +1059,7 @@ func file_gitpod_v1_installation_proto_init() { } } file_gitpod_v1_installation_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBlockedRepositoryResponse); i { + switch v := v.(*ListBlockedRepositoriesResponse); i { case 0: return &v.state case 1: @@ -963,7 +1071,7 @@ func file_gitpod_v1_installation_proto_init() { } } file_gitpod_v1_installation_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteBlockedRepositoryRequest); i { + switch v := v.(*CreateBlockedRepositoryRequest); i { case 0: return &v.state case 1: @@ -975,7 +1083,7 @@ func file_gitpod_v1_installation_proto_init() { } } file_gitpod_v1_installation_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteBlockedRepositoryResponse); i { + switch v := v.(*CreateBlockedRepositoryResponse); i { case 0: return &v.state case 1: @@ -987,7 +1095,7 @@ func file_gitpod_v1_installation_proto_init() { } } file_gitpod_v1_installation_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBlockedEmailDomainsRequest); i { + switch v := v.(*DeleteBlockedRepositoryRequest); i { case 0: return &v.state case 1: @@ -999,7 +1107,7 @@ func file_gitpod_v1_installation_proto_init() { } } file_gitpod_v1_installation_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBlockedEmailDomainsResponse); i { + switch v := v.(*DeleteBlockedRepositoryResponse); i { case 0: return &v.state case 1: @@ -1011,7 +1119,7 @@ func file_gitpod_v1_installation_proto_init() { } } file_gitpod_v1_installation_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBlockedEmailDomainRequest); i { + switch v := v.(*ListBlockedEmailDomainsRequest); i { case 0: return &v.state case 1: @@ -1023,7 +1131,7 @@ func file_gitpod_v1_installation_proto_init() { } } file_gitpod_v1_installation_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBlockedEmailDomainResponse); i { + switch v := v.(*ListBlockedEmailDomainsResponse); i { case 0: return &v.state case 1: @@ -1035,7 +1143,7 @@ func file_gitpod_v1_installation_proto_init() { } } file_gitpod_v1_installation_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockedRepository); i { + switch v := v.(*CreateBlockedEmailDomainRequest); i { case 0: return &v.state case 1: @@ -1047,6 +1155,30 @@ func file_gitpod_v1_installation_proto_init() { } } file_gitpod_v1_installation_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateBlockedEmailDomainResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gitpod_v1_installation_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlockedRepository); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gitpod_v1_installation_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlockedEmailDomain); i { case 0: return &v.state @@ -1065,7 +1197,7 @@ func file_gitpod_v1_installation_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_gitpod_v1_installation_proto_rawDesc, NumEnums: 0, - NumMessages: 12, + NumMessages: 14, NumExtensions: 0, NumServices: 1, }, diff --git a/components/public-api/go/v1/installation_grpc.pb.go b/components/public-api/go/v1/installation_grpc.pb.go index eb0c2493f053c8..a44caade249580 100644 --- a/components/public-api/go/v1/installation_grpc.pb.go +++ b/components/public-api/go/v1/installation_grpc.pb.go @@ -26,6 +26,9 @@ const _ = grpc.SupportPackageIsVersion7 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type InstallationServiceClient interface { + // GetInstallationWorkspaceDefaultImage returns the default image for current + // Gitpod Installation. + GetInstallationWorkspaceDefaultImage(ctx context.Context, in *GetInstallationWorkspaceDefaultImageRequest, opts ...grpc.CallOption) (*GetInstallationWorkspaceDefaultImageResponse, error) // ListBlockedRepositories lists blocked repositories. ListBlockedRepositories(ctx context.Context, in *ListBlockedRepositoriesRequest, opts ...grpc.CallOption) (*ListBlockedRepositoriesResponse, error) // CreateBlockedRepository creates a new blocked repository. @@ -46,6 +49,15 @@ func NewInstallationServiceClient(cc grpc.ClientConnInterface) InstallationServi return &installationServiceClient{cc} } +func (c *installationServiceClient) GetInstallationWorkspaceDefaultImage(ctx context.Context, in *GetInstallationWorkspaceDefaultImageRequest, opts ...grpc.CallOption) (*GetInstallationWorkspaceDefaultImageResponse, error) { + out := new(GetInstallationWorkspaceDefaultImageResponse) + err := c.cc.Invoke(ctx, "/gitpod.v1.InstallationService/GetInstallationWorkspaceDefaultImage", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *installationServiceClient) ListBlockedRepositories(ctx context.Context, in *ListBlockedRepositoriesRequest, opts ...grpc.CallOption) (*ListBlockedRepositoriesResponse, error) { out := new(ListBlockedRepositoriesResponse) err := c.cc.Invoke(ctx, "/gitpod.v1.InstallationService/ListBlockedRepositories", in, out, opts...) @@ -95,6 +107,9 @@ func (c *installationServiceClient) CreateBlockedEmailDomain(ctx context.Context // All implementations must embed UnimplementedInstallationServiceServer // for forward compatibility type InstallationServiceServer interface { + // GetInstallationWorkspaceDefaultImage returns the default image for current + // Gitpod Installation. + GetInstallationWorkspaceDefaultImage(context.Context, *GetInstallationWorkspaceDefaultImageRequest) (*GetInstallationWorkspaceDefaultImageResponse, error) // ListBlockedRepositories lists blocked repositories. ListBlockedRepositories(context.Context, *ListBlockedRepositoriesRequest) (*ListBlockedRepositoriesResponse, error) // CreateBlockedRepository creates a new blocked repository. @@ -112,6 +127,9 @@ type InstallationServiceServer interface { type UnimplementedInstallationServiceServer struct { } +func (UnimplementedInstallationServiceServer) GetInstallationWorkspaceDefaultImage(context.Context, *GetInstallationWorkspaceDefaultImageRequest) (*GetInstallationWorkspaceDefaultImageResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetInstallationWorkspaceDefaultImage not implemented") +} func (UnimplementedInstallationServiceServer) ListBlockedRepositories(context.Context, *ListBlockedRepositoriesRequest) (*ListBlockedRepositoriesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListBlockedRepositories not implemented") } @@ -140,6 +158,24 @@ func RegisterInstallationServiceServer(s grpc.ServiceRegistrar, srv Installation s.RegisterService(&InstallationService_ServiceDesc, srv) } +func _InstallationService_GetInstallationWorkspaceDefaultImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetInstallationWorkspaceDefaultImageRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(InstallationServiceServer).GetInstallationWorkspaceDefaultImage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/gitpod.v1.InstallationService/GetInstallationWorkspaceDefaultImage", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(InstallationServiceServer).GetInstallationWorkspaceDefaultImage(ctx, req.(*GetInstallationWorkspaceDefaultImageRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _InstallationService_ListBlockedRepositories_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListBlockedRepositoriesRequest) if err := dec(in); err != nil { @@ -237,6 +273,10 @@ var InstallationService_ServiceDesc = grpc.ServiceDesc{ ServiceName: "gitpod.v1.InstallationService", HandlerType: (*InstallationServiceServer)(nil), Methods: []grpc.MethodDesc{ + { + MethodName: "GetInstallationWorkspaceDefaultImage", + Handler: _InstallationService_GetInstallationWorkspaceDefaultImage_Handler, + }, { MethodName: "ListBlockedRepositories", Handler: _InstallationService_ListBlockedRepositories_Handler, diff --git a/components/public-api/go/v1/v1connect/installation.connect.go b/components/public-api/go/v1/v1connect/installation.connect.go index 3080aba499d296..be289028307be0 100644 --- a/components/public-api/go/v1/v1connect/installation.connect.go +++ b/components/public-api/go/v1/v1connect/installation.connect.go @@ -31,6 +31,9 @@ const ( // InstallationServiceClient is a client for the gitpod.v1.InstallationService service. type InstallationServiceClient interface { + // GetInstallationWorkspaceDefaultImage returns the default image for current + // Gitpod Installation. + GetInstallationWorkspaceDefaultImage(context.Context, *connect_go.Request[v1.GetInstallationWorkspaceDefaultImageRequest]) (*connect_go.Response[v1.GetInstallationWorkspaceDefaultImageResponse], error) // ListBlockedRepositories lists blocked repositories. ListBlockedRepositories(context.Context, *connect_go.Request[v1.ListBlockedRepositoriesRequest]) (*connect_go.Response[v1.ListBlockedRepositoriesResponse], error) // CreateBlockedRepository creates a new blocked repository. @@ -53,6 +56,11 @@ type InstallationServiceClient interface { func NewInstallationServiceClient(httpClient connect_go.HTTPClient, baseURL string, opts ...connect_go.ClientOption) InstallationServiceClient { baseURL = strings.TrimRight(baseURL, "/") return &installationServiceClient{ + getInstallationWorkspaceDefaultImage: connect_go.NewClient[v1.GetInstallationWorkspaceDefaultImageRequest, v1.GetInstallationWorkspaceDefaultImageResponse]( + httpClient, + baseURL+"/gitpod.v1.InstallationService/GetInstallationWorkspaceDefaultImage", + opts..., + ), listBlockedRepositories: connect_go.NewClient[v1.ListBlockedRepositoriesRequest, v1.ListBlockedRepositoriesResponse]( httpClient, baseURL+"/gitpod.v1.InstallationService/ListBlockedRepositories", @@ -83,11 +91,18 @@ func NewInstallationServiceClient(httpClient connect_go.HTTPClient, baseURL stri // installationServiceClient implements InstallationServiceClient. type installationServiceClient struct { - listBlockedRepositories *connect_go.Client[v1.ListBlockedRepositoriesRequest, v1.ListBlockedRepositoriesResponse] - createBlockedRepository *connect_go.Client[v1.CreateBlockedRepositoryRequest, v1.CreateBlockedRepositoryResponse] - deleteBlockedRepository *connect_go.Client[v1.DeleteBlockedRepositoryRequest, v1.DeleteBlockedRepositoryResponse] - listBlockedEmailDomains *connect_go.Client[v1.ListBlockedEmailDomainsRequest, v1.ListBlockedEmailDomainsResponse] - createBlockedEmailDomain *connect_go.Client[v1.CreateBlockedEmailDomainRequest, v1.CreateBlockedEmailDomainResponse] + getInstallationWorkspaceDefaultImage *connect_go.Client[v1.GetInstallationWorkspaceDefaultImageRequest, v1.GetInstallationWorkspaceDefaultImageResponse] + listBlockedRepositories *connect_go.Client[v1.ListBlockedRepositoriesRequest, v1.ListBlockedRepositoriesResponse] + createBlockedRepository *connect_go.Client[v1.CreateBlockedRepositoryRequest, v1.CreateBlockedRepositoryResponse] + deleteBlockedRepository *connect_go.Client[v1.DeleteBlockedRepositoryRequest, v1.DeleteBlockedRepositoryResponse] + listBlockedEmailDomains *connect_go.Client[v1.ListBlockedEmailDomainsRequest, v1.ListBlockedEmailDomainsResponse] + createBlockedEmailDomain *connect_go.Client[v1.CreateBlockedEmailDomainRequest, v1.CreateBlockedEmailDomainResponse] +} + +// GetInstallationWorkspaceDefaultImage calls +// gitpod.v1.InstallationService.GetInstallationWorkspaceDefaultImage. +func (c *installationServiceClient) GetInstallationWorkspaceDefaultImage(ctx context.Context, req *connect_go.Request[v1.GetInstallationWorkspaceDefaultImageRequest]) (*connect_go.Response[v1.GetInstallationWorkspaceDefaultImageResponse], error) { + return c.getInstallationWorkspaceDefaultImage.CallUnary(ctx, req) } // ListBlockedRepositories calls gitpod.v1.InstallationService.ListBlockedRepositories. @@ -117,6 +132,9 @@ func (c *installationServiceClient) CreateBlockedEmailDomain(ctx context.Context // InstallationServiceHandler is an implementation of the gitpod.v1.InstallationService service. type InstallationServiceHandler interface { + // GetInstallationWorkspaceDefaultImage returns the default image for current + // Gitpod Installation. + GetInstallationWorkspaceDefaultImage(context.Context, *connect_go.Request[v1.GetInstallationWorkspaceDefaultImageRequest]) (*connect_go.Response[v1.GetInstallationWorkspaceDefaultImageResponse], error) // ListBlockedRepositories lists blocked repositories. ListBlockedRepositories(context.Context, *connect_go.Request[v1.ListBlockedRepositoriesRequest]) (*connect_go.Response[v1.ListBlockedRepositoriesResponse], error) // CreateBlockedRepository creates a new blocked repository. @@ -136,6 +154,11 @@ type InstallationServiceHandler interface { // and JSON codecs. They also support gzip compression. func NewInstallationServiceHandler(svc InstallationServiceHandler, opts ...connect_go.HandlerOption) (string, http.Handler) { mux := http.NewServeMux() + mux.Handle("/gitpod.v1.InstallationService/GetInstallationWorkspaceDefaultImage", connect_go.NewUnaryHandler( + "/gitpod.v1.InstallationService/GetInstallationWorkspaceDefaultImage", + svc.GetInstallationWorkspaceDefaultImage, + opts..., + )) mux.Handle("/gitpod.v1.InstallationService/ListBlockedRepositories", connect_go.NewUnaryHandler( "/gitpod.v1.InstallationService/ListBlockedRepositories", svc.ListBlockedRepositories, @@ -167,6 +190,10 @@ func NewInstallationServiceHandler(svc InstallationServiceHandler, opts ...conne // UnimplementedInstallationServiceHandler returns CodeUnimplemented from all methods. type UnimplementedInstallationServiceHandler struct{} +func (UnimplementedInstallationServiceHandler) GetInstallationWorkspaceDefaultImage(context.Context, *connect_go.Request[v1.GetInstallationWorkspaceDefaultImageRequest]) (*connect_go.Response[v1.GetInstallationWorkspaceDefaultImageResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.InstallationService.GetInstallationWorkspaceDefaultImage is not implemented")) +} + func (UnimplementedInstallationServiceHandler) ListBlockedRepositories(context.Context, *connect_go.Request[v1.ListBlockedRepositoriesRequest]) (*connect_go.Response[v1.ListBlockedRepositoriesResponse], error) { return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.InstallationService.ListBlockedRepositories is not implemented")) } diff --git a/components/public-api/go/v1/v1connect/installation.proxy.connect.go b/components/public-api/go/v1/v1connect/installation.proxy.connect.go index f2bd3cbc48810f..f48b5a2ebc51aa 100644 --- a/components/public-api/go/v1/v1connect/installation.proxy.connect.go +++ b/components/public-api/go/v1/v1connect/installation.proxy.connect.go @@ -19,6 +19,16 @@ type ProxyInstallationServiceHandler struct { UnimplementedInstallationServiceHandler } +func (s *ProxyInstallationServiceHandler) GetInstallationWorkspaceDefaultImage(ctx context.Context, req *connect_go.Request[v1.GetInstallationWorkspaceDefaultImageRequest]) (*connect_go.Response[v1.GetInstallationWorkspaceDefaultImageResponse], error) { + resp, err := s.Client.GetInstallationWorkspaceDefaultImage(ctx, req.Msg) + if err != nil { + // TODO(milan): Convert to correct status code + return nil, err + } + + return connect_go.NewResponse(resp), nil +} + func (s *ProxyInstallationServiceHandler) ListBlockedRepositories(ctx context.Context, req *connect_go.Request[v1.ListBlockedRepositoriesRequest]) (*connect_go.Response[v1.ListBlockedRepositoriesResponse], error) { resp, err := s.Client.ListBlockedRepositories(ctx, req.Msg) if err != nil { diff --git a/components/public-api/typescript/src/gitpod/v1/installation_connect.ts b/components/public-api/typescript/src/gitpod/v1/installation_connect.ts index d0e50b75d62a9a..9f41a9057a47ad 100644 --- a/components/public-api/typescript/src/gitpod/v1/installation_connect.ts +++ b/components/public-api/typescript/src/gitpod/v1/installation_connect.ts @@ -9,7 +9,7 @@ /* eslint-disable */ // @ts-nocheck -import { CreateBlockedEmailDomainRequest, CreateBlockedEmailDomainResponse, CreateBlockedRepositoryRequest, CreateBlockedRepositoryResponse, DeleteBlockedRepositoryRequest, DeleteBlockedRepositoryResponse, ListBlockedEmailDomainsRequest, ListBlockedEmailDomainsResponse, ListBlockedRepositoriesRequest, ListBlockedRepositoriesResponse } from "./installation_pb.js"; +import { CreateBlockedEmailDomainRequest, CreateBlockedEmailDomainResponse, CreateBlockedRepositoryRequest, CreateBlockedRepositoryResponse, DeleteBlockedRepositoryRequest, DeleteBlockedRepositoryResponse, GetInstallationWorkspaceDefaultImageRequest, GetInstallationWorkspaceDefaultImageResponse, ListBlockedEmailDomainsRequest, ListBlockedEmailDomainsResponse, ListBlockedRepositoriesRequest, ListBlockedRepositoriesResponse } from "./installation_pb.js"; import { MethodKind } from "@bufbuild/protobuf"; /** @@ -18,6 +18,18 @@ import { MethodKind } from "@bufbuild/protobuf"; export const InstallationService = { typeName: "gitpod.v1.InstallationService", methods: { + /** + * GetInstallationWorkspaceDefaultImage returns the default image for current + * Gitpod Installation. + * + * @generated from rpc gitpod.v1.InstallationService.GetInstallationWorkspaceDefaultImage + */ + getInstallationWorkspaceDefaultImage: { + name: "GetInstallationWorkspaceDefaultImage", + I: GetInstallationWorkspaceDefaultImageRequest, + O: GetInstallationWorkspaceDefaultImageResponse, + kind: MethodKind.Unary, + }, /** * ListBlockedRepositories lists blocked repositories. * diff --git a/components/public-api/typescript/src/gitpod/v1/installation_pb.ts b/components/public-api/typescript/src/gitpod/v1/installation_pb.ts index 37575957c2d661..92b54baa8f8d2f 100644 --- a/components/public-api/typescript/src/gitpod/v1/installation_pb.ts +++ b/components/public-api/typescript/src/gitpod/v1/installation_pb.ts @@ -14,6 +14,74 @@ import { Message, proto3, Timestamp } from "@bufbuild/protobuf"; import { PaginationRequest, PaginationResponse } from "./pagination_pb.js"; import { Sort } from "./sorting_pb.js"; +/** + * @generated from message gitpod.v1.GetInstallationWorkspaceDefaultImageRequest + */ +export class GetInstallationWorkspaceDefaultImageRequest extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "gitpod.v1.GetInstallationWorkspaceDefaultImageRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetInstallationWorkspaceDefaultImageRequest { + return new GetInstallationWorkspaceDefaultImageRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetInstallationWorkspaceDefaultImageRequest { + return new GetInstallationWorkspaceDefaultImageRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetInstallationWorkspaceDefaultImageRequest { + return new GetInstallationWorkspaceDefaultImageRequest().fromJsonString(jsonString, options); + } + + static equals(a: GetInstallationWorkspaceDefaultImageRequest | PlainMessage | undefined, b: GetInstallationWorkspaceDefaultImageRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetInstallationWorkspaceDefaultImageRequest, a, b); + } +} + +/** + * @generated from message gitpod.v1.GetInstallationWorkspaceDefaultImageResponse + */ +export class GetInstallationWorkspaceDefaultImageResponse extends Message { + /** + * @generated from field: string default_workspace_image = 1; + */ + defaultWorkspaceImage = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "gitpod.v1.GetInstallationWorkspaceDefaultImageResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "default_workspace_image", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetInstallationWorkspaceDefaultImageResponse { + return new GetInstallationWorkspaceDefaultImageResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetInstallationWorkspaceDefaultImageResponse { + return new GetInstallationWorkspaceDefaultImageResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetInstallationWorkspaceDefaultImageResponse { + return new GetInstallationWorkspaceDefaultImageResponse().fromJsonString(jsonString, options); + } + + static equals(a: GetInstallationWorkspaceDefaultImageResponse | PlainMessage | undefined, b: GetInstallationWorkspaceDefaultImageResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GetInstallationWorkspaceDefaultImageResponse, a, b); + } +} + /** * @generated from message gitpod.v1.ListBlockedRepositoriesRequest */ diff --git a/components/server/src/api/installation-service-api.ts b/components/server/src/api/installation-service-api.ts index eb614195f3246a..2222d684cd2256 100644 --- a/components/server/src/api/installation-service-api.ts +++ b/components/server/src/api/installation-service-api.ts @@ -14,6 +14,8 @@ import { CreateBlockedRepositoryResponse, DeleteBlockedRepositoryRequest, DeleteBlockedRepositoryResponse, + GetInstallationWorkspaceDefaultImageRequest, + GetInstallationWorkspaceDefaultImageResponse, ListBlockedEmailDomainsRequest, ListBlockedEmailDomainsResponse, ListBlockedRepositoriesRequest, @@ -33,6 +35,14 @@ export class InstallationServiceAPI implements ServiceImpl { + const img = await this.installationService.getWorkspaceDefaultImage(); + return new GetInstallationWorkspaceDefaultImageResponse({ defaultWorkspaceImage: img }); + } + async listBlockedRepositories( req: ListBlockedRepositoriesRequest, _: HandlerContext, diff --git a/components/server/src/auth/installation-service.ts b/components/server/src/auth/installation-service.ts index ce56469a68e081..f7c1f57f9c0d40 100644 --- a/components/server/src/auth/installation-service.ts +++ b/components/server/src/auth/installation-service.ts @@ -10,9 +10,11 @@ import { EmailDomainFilterDB } from "@gitpod/gitpod-db/lib"; import { BlockedRepository } from "@gitpod/gitpod-protocol/lib/blocked-repositories-protocol"; import { Authorizer } from "../authorization/authorizer"; import { BlockedRepositoryDB } from "@gitpod/gitpod-db/lib/blocked-repository-db"; +import { Config } from "../config"; @injectable() export class InstallationService { + @inject(Config) private readonly config: Config; @inject(Authorizer) private readonly auth: Authorizer; @inject(BlockedRepositoryDB) private readonly blockedRepositoryDB: BlockedRepositoryDB; @inject(EmailDomainFilterDB) private readonly emailDomainFilterDB: EmailDomainFilterDB; @@ -57,4 +59,8 @@ export class InstallationService { await this.auth.checkPermissionOnInstallation(userId, "configure"); return this.emailDomainFilterDB.storeFilterEntry(opts); } + + public async getWorkspaceDefaultImage(): Promise { + return this.config.workspaceDefaults.workspaceImage; + } }