@@ -105,5 +105,5 @@ export const WorkspaceEntry: FunctionComponent
= ({ info, shortVersion })
export function getProjectPath(ws: Workspace) {
// TODO: Remove and call papi ContextService
- return ws.contextUrl.replace("https://", "");
+ return ws.metadata!.originalContextUrl.replace("https://", "");
}
diff --git a/components/dashboard/src/workspaces/WorkspaceOverflowMenu.tsx b/components/dashboard/src/workspaces/WorkspaceOverflowMenu.tsx
index 953dd742f69d0b..9b8b95be7e7881 100644
--- a/components/dashboard/src/workspaces/WorkspaceOverflowMenu.tsx
+++ b/components/dashboard/src/workspaces/WorkspaceOverflowMenu.tsx
@@ -60,15 +60,13 @@ export const WorkspaceEntryOverflowMenu: FunctionComponent {
const newLevel =
- workspace.status?.admission === AdmissionLevel.EVERYONE
- ? AdmissionLevel.OWNER_ONLY
- : AdmissionLevel.EVERYONE;
+ workspace.spec?.admission === AdmissionLevel.EVERYONE ? AdmissionLevel.OWNER_ONLY : AdmissionLevel.EVERYONE;
toggleWorkspaceShared.mutate({
workspaceId: workspace.id,
level: newLevel,
});
- }, [toggleWorkspaceShared, workspace.id, workspace.status?.admission]);
+ }, [toggleWorkspaceShared, workspace.id, workspace.spec?.admission]);
const togglePinned = useCallback(() => {
toggleWorkspacePinned.mutate({
@@ -129,12 +127,12 @@ export const WorkspaceEntryOverflowMenu: FunctionComponent {
const { filteredActiveWorkspaces, filteredInactiveWorkspaces } = useMemo(() => {
const filteredActiveWorkspaces = activeWorkspaces.filter(
(info) =>
- `${info.name}${info.id}${info.contextUrl}${info.status?.gitStatus?.cloneUrl}${info.status?.gitStatus?.branch}`
+ `${info.metadata!.name}${info.id}${info.metadata!.originalContextUrl}${
+ info.status?.gitStatus?.cloneUrl
+ }${info.status?.gitStatus?.branch}`
.toLowerCase()
.indexOf(searchTerm.toLowerCase()) !== -1,
);
const filteredInactiveWorkspaces = inactiveWorkspaces.filter(
(info) =>
- `${info.name}${info.id}${info.contextUrl}${info.status?.gitStatus?.cloneUrl}${info.status?.gitStatus?.branch}`
+ `${info.metadata!.name}${info.id}${info.metadata!.originalContextUrl}${
+ info.status?.gitStatus?.cloneUrl
+ }${info.status?.gitStatus?.branch}`
.toLowerCase()
.indexOf(searchTerm.toLowerCase()) !== -1,
);
@@ -201,5 +205,5 @@ function isWorkspaceActive(info: Workspace): boolean {
const twentyfourHoursAgo = hoursBefore(new Date().toISOString(), 24);
const isStopped = info.status?.phase?.name === WorkspacePhase_Phase.STOPPED;
- return info.pinned || !isStopped || isDateSmallerOrEqual(twentyfourHoursAgo, lastSessionStart);
+ return info.metadata!.pinned || !isStopped || isDateSmallerOrEqual(twentyfourHoursAgo, lastSessionStart);
}
diff --git a/components/public-api/gitpod/v1/envvar.proto b/components/public-api/gitpod/v1/envvar.proto
index b12376dc14fca8..b60297ad956bcc 100644
--- a/components/public-api/gitpod/v1/envvar.proto
+++ b/components/public-api/gitpod/v1/envvar.proto
@@ -142,9 +142,10 @@ message ResolveWorkspaceEnvironmentVariablesRequest {
}
message ResolveWorkspaceEnvironmentVariablesResponse {
- message EnvironmentVariable {
- string name = 1;
- string value = 2;
- }
repeated EnvironmentVariable environment_variables = 1;
}
+
+message EnvironmentVariable {
+ string name = 1;
+ string value = 2;
+}
diff --git a/components/public-api/gitpod/v1/workspace.proto b/components/public-api/gitpod/v1/workspace.proto
index 118c2f0ad575e4..ee9b76a8641d61 100644
--- a/components/public-api/gitpod/v1/workspace.proto
+++ b/components/public-api/gitpod/v1/workspace.proto
@@ -3,7 +3,9 @@ syntax = "proto3";
package gitpod.v1;
import "gitpod/v1/editor.proto";
+import "gitpod/v1/envvar.proto";
import "gitpod/v1/pagination.proto";
+import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";
option go_package = "github.com/gitpod-io/gitpod/components/public-api/go/v1";
@@ -30,6 +32,13 @@ service WorkspaceService {
// If the specified workspace is not in stopped phase, this will return the workspace as is.
rpc StartWorkspace(StartWorkspaceRequest) returns (StartWorkspaceResponse) {}
+ // UpdateWorkspace updates the workspace.
+ rpc UpdateWorkspace(UpdateWorkspaceRequest) returns (UpdateWorkspaceResponse) {}
+
+ // ParseContextURL parses a context URL and returns the workspace metadata and spec.
+ // Not implemented yet.
+ rpc ParseContextURL(ParseContextURLRequest) returns (ParseContextURLResponse) {}
+
// GetWorkspaceDefaultImage returns the default workspace image of specified
// workspace.
rpc GetWorkspaceDefaultImage(GetWorkspaceDefaultImageRequest) returns (GetWorkspaceDefaultImageResponse) {}
@@ -88,71 +97,43 @@ message ListWorkspacesRequest {
}
message ListWorkspacesResponse {
- // workspaces are the workspaces that matched the query
- repeated Workspace workspaces = 1;
-
// pagination contains the pagination options for listing workspaces
- PaginationResponse pagination = 2;
+ PaginationResponse pagination = 1;
+
+ // workspaces are the workspaces that matched the query
+ repeated Workspace workspaces = 2;
}
+// Required fields:
+// - metadata.organization_id
+// - metadata.configuration_id
message CreateAndStartWorkspaceRequest {
- message Git {
- // clone_url is the URL of the repository to clone
- string clone_url = 1;
+ message ContextURL {
+ // url is the URL from which the workspace is created
+ string url = 1;
- // ref is an alternatively symbolic. e.g. refs/tags/v1.0,
- // empty string means the default branch of the repository
- string ref = 2;
+ // workspace_class is the class of the workspace we ought to start
+ string workspace_class = 2;
- // create_local_branch is the branch you want to create based on provided
- // clone_url and ref when workspace started
- string create_local_branch = 3;
+ // editor specifies the editor that will be used with this workspace.
+ EditorReference editor = 3;
}
- // organization_id is the ID of the organization to create the workspace
- //
- // +required
- string organization_id = 1;
+ // metadata is data associated with this workspace that's required for other parts of Gitpod to function
+ WorkspaceMetadata metadata = 1;
- // configuration_id is the ID of the configuration to use
- string configuration_id = 2;
-
- // source describes the source refer of workspace.
- //
- // +required
oneof source {
- // git describes the source refer of workspace
- // Obtain available git using the ContextService.ParseContext operation if
- // not sure about it.
- Git git = 3;
-
- // context_url is for backward compatiblity with the current dashboard, use
- // ContextService.ParseContext get get a Git source instead
- string context_url = 4 [deprecated = true];
- }
-
- // additional_env_variables provide additional environment variables to the
- // workspace.
- // It will take precedence over environment variables provided by
- // the user and the configuration
- repeated WorkspaceEnvironmentVariable additional_env_variables = 5;
-
- string region = 6;
+ // context_url is the URL from which the workspace is created
+ ContextURL context_url = 2;
- // workspace_class is the class of the workspace
-
- string workspace_class = 7;
-
- EditorReference editor = 8;
-
- string name = 9;
-
- bool pinned = 10;
+ // spec is the configuration of the workspace that's required for the to start the workspace
+ WorkspaceSpec spec = 3;
+ }
// force_default_config indicates that the workspace should be created with
// the default configuration instead of the configuration provided in
// `.gitpod.yml` file
- bool force_default_config = 11;
+ bool force_default_config = 4 [deprecated = true];
}
message CreateAndStartWorkspaceResponse {
@@ -165,7 +146,7 @@ message StartWorkspaceRequest {
// +required
string workspace_id = 1;
- bool force_default_config = 2;
+ bool force_default_config = 2 [deprecated = true];
}
message StartWorkspaceResponse {
@@ -220,95 +201,180 @@ message GetWorkspaceEditorCredentialsResponse {
// +resource get workspace
message Workspace {
+ // ID is a unique identifier of this workspace. No other workspace with the same name must be managed by this workspace manager
string id = 1;
- // prebuild indicates it is a prebuild
- // TODO(ak) model prebuilds as a separate resource
- bool prebuild = 2;
- string organization_id = 3;
+ // Metadata is data associated with this workspace that's required for other parts of Gitpod to function
+ WorkspaceMetadata metadata = 2;
- string name = 4;
- bool pinned = 5;
+ // Spec is the configuration of the workspace that's required for the ws-manager to start the workspace
+ WorkspaceSpec spec = 3;
- WorkspaceStatus status = 6;
+ // Status is the current status of the workspace
+ WorkspaceStatus status = 4;
+}
- // additional_environment_variables provide additional environment variables
- // which take precedence over environment variables provided by the project
- // and user.
- //
- // +optional
- repeated WorkspaceEnvironmentVariable additional_environment_variables = 7;
+// WorkspaceMetadata is data associated with a workspace that's required for other parts of the system to function
+message WorkspaceMetadata {
+ // owner_id is the ID of the Gitpod user to whom we'll bill this workspace and who we consider responsible for its content
+ string owner_id = 1;
- // region specifies the region in which the workspace will be created.
- // Obtain available regions using the ListRegions operation.
- //
- // +optional defaults to the user's default region
- string region = 8;
+ // organization_id is the ID of the organization that contains the workspace
+ string organization_id = 2;
- // workspace_class specifies the workspace class with which to create the
- // workspace. Obtain available workspace classes using the ListWorkspaceClass
- // operation.
- //
- // +optional defaults to the class configured on the project or the cluster's
- // default class.
- string workspace_class = 9;
+ // configuration_id is the ID of the configuration used by this workspace
+ string configuration_id = 3;
- // editor specifies the editor that will be used with this workspace.
- // Obtain available editors using the EditorService.ListEditors operation.
- //
- // +optional defaults to the default editor of the user
- EditorReference editor = 10;
+ // annotations are key/value pairs that gets attached to the workspace.
+ // +internal - not yet implemented
+ map annotations = 4;
- // context_url is the normalized URL from which the workspace was created
- // TODO(ak) replace with resolveContextURL API
- string context_url = 11;
+ // name is the name of the workspace as specified by the user
+ string name = 5;
- // Prebuild ID is the unique identifier of the prebuild
- // from which this workspace was created
- // +optional if empty then this workspace was not created from a prebuild
- string prebuild_id = 12;
+ // pinned indicates whether the workspace is pinned
+ bool pinned = 6;
+
+ // original_context_url is the normalized URL from which the workspace was created
+ string original_context_url = 7;
}
-message WorkspaceStatus {
- // Phase is a simple, high-level summary of where the workspace is in its
- // lifecycle. The phase is not intended to be a comprehensive rollup of
- // observations of the workspace state, nor is it intended to be a
- // comprehensive state machine.
- WorkspacePhase phase = 1;
+// WorkspaceSpec specifies the configuration of a workspace for a workspace start
+message WorkspaceSpec {
+ // Timeout configures the workspace timeout
+ message Timeout {
+ // inacitivity is the maximum time of inactivity before the workspace is stopped or paused
+ google.protobuf.Duration inactivity = 1;
+ // inacitivity is the maximum time of disconnection before the workspace is stopped or paused
+ // set to zero to disable.
+ google.protobuf.Duration disconnected = 2;
+ // maximum lifetime of the workspace
+ google.protobuf.Duration maximum_lifetime = 3;
+ }
- // message is an optional human-readable message detailing the current phase
- string message = 2;
+ // GitSpec configures the Git available within the workspace
+ message GitSpec {
+ // The Git username
+ string username = 1;
- // workspace_url is the URL of the workspace. Only present when the phase is
- // running.
- string workspace_url = 3;
+ // The Git email address
+ string email = 2;
+ }
- // git_status details the Git working copy status of the workspace.
- // Note: this is a best-effort field and more often than not will not be
- // present. Its absence does not indicate the absence of a working copy.
- WorkspaceGitStatus git_status = 4;
+ // WorkspaceType specifies the purpose/use of a workspace. Different workspace types are handled differently by all parts of the system.
+ enum WorkspaceType {
+ WORKSPACE_TYPE_UNSPECIFIED = 0;
- // ports lists the network ports currently available/known of this workspace
- repeated WorkspacePort ports = 5;
+ // Regular workspaces are your off-the-mill workspaces intended for users. They are directly user-facing and hence are most important.
+ WORKSPACE_TYPE_REGULAR = 1;
- // Admission describes who can access a workspace instance and its ports.
- AdmissionLevel admission = 6;
+ // Prebuild workspaces are workspaces used to pre-build the content of other workspaces. They run headless and have no direct user-interaction.
+ WORKSPACE_TYPE_PREBUILD = 2;
+ }
+
+ // initializer configures how the workspace is to be initialized
+ WorkspaceInitializer initializer = 1;
+
+ // Type denots the kind of workspace we ought to start
+ WorkspaceType type = 2;
+
+ // ports is the set of ports which ought to be exposed to the internet
+ repeated WorkspacePort ports = 3;
+
+ // envvars are user-defined environment variables which ought to be available in the workspace (shim'ed environment)
+ repeated EnvironmentVariable environment_variables = 4;
+
+ // Git configures the Git user in the workspace
+ GitSpec git = 5;
+
+ // Timeout configures the workspace timeout
+ Timeout timeout = 6;
+
+ // admission controlls who can access the workspace and its ports.
+ AdmissionLevel admission = 7;
+
+ // Class denotes the class of the workspace we ought to start
+ string class = 8;
- // Instance ID is the unique identifier of the workspace instance
- string instance_id = 7;
+ // ssh_public_keys is user's uploaded ssh public keys
+ repeated string ssh_public_keys = 9;
- // Conditions contains observations of the workspace's current phase.
- WorkspaceConditions conditions = 8;
+ // subassembly_references is a list of workspace IDs that this workspace depends on.
+ // For example:
+ // index.docker.io/gitpod-io/subassmeblies/code:latest
+ repeated string subassembly_references = 10;
+
+ // last_user_activity is the time when the user last interacted with the workspace
+ google.protobuf.Timestamp last_user_activity = 11;
+
+ // log_url is the URL where we stream the workspace's logs to.
+ // Can be changed when the workspace is PENDING or STOPPED.
+ string log_url = 12;
+
+ EditorReference editor = 13;
}
-message WorkspaceConditions {
- // failed contains technical details for the failure of the workspace.
- // +optional If this field is empty, the workspace has not failed.
- string failed = 1;
+// WorkspaceStatus describes a workspace status
+message WorkspaceStatus {
+ // WorkspaceCondition gives more detailed information as to the state of the workspace. Which condition actually
+ // has a value depends on the phase the workspace is in.
+ message WorkspaceConditions {
+ enum FailedReason {
+ FAILED_REASON_UNSPECIFIED = 0;
+ FAILED_REASON_CONTENT_INITIALIZATION_FAILED = 1;
+ FAILED_REASON_BACKUP_FAILED = 2;
+ FAILED_REASON_IMAGE_PULL_FAILURE = 3;
+ FAILED_REASON_UNEXPECTED_TERMINATION = 4;
+ }
+
+ // failed contains the reason the workspace failed to operate. If this field is empty, the workspace has not failed.
+ string failed = 1;
+
+ // failed_reason contains the reason the workspace failed to operate.
+ // This field is only set if the workspace has failed.
+ FailedReason failed_reason = 2;
+
+ // timeout contains the reason the workspace has timed out. If this field is empty, the workspace has not timed out.
+ string timeout = 3;
+ }
+
+ message PrebuildResult {
+ // Snapshot points to the content of the prebuild. This string is opaque to the cluster manager,
+ // and must be returned unaltered.
+ string snapshot = 1;
+
+ // The prebuild's error message
+ string error_message = 2;
+ }
- // timeout contains the reason the workspace has timed out.
- // +optional If this field is empty, the workspace has not timed out.
- string timeout = 2;
+ // version of the status update. Workspace instances themselves are unversioned,
+ // but their statuus has different versions.
+ // The value of this field has no semantic meaning (e.g. don't interpret it as
+ // as a timestemp), but it can be used to impose a partial order.
+ // If a.status_version < b.status_version then a was the status before b.
+ uint64 status_version = 1;
+
+ // the phase of a workspace is a simple, high-level summary of where the workspace is in its lifecycle
+ WorkspacePhase phase = 2;
+
+ // workspace_url contains the URL at which the workspace can be accessed.
+ // This field is only set if the workspace is running.
+ string workspace_url = 3;
+
+ // conditions detail the current state of the workspace
+ WorkspaceConditions conditions = 4;
+
+ // prebuild_result contains the result of a prebuild. Only if the workspace is
+ PrebuildResult prebuild_result = 5;
+
+ // git_status details the Git working copy status of the workspace.
+ // Note: this is a best-effort field and more often than not will not be present. Its absence does not
+ // indicate the absence of a working copy.
+ WorkspaceGitStatus git_status = 6;
+
+ // instance_id is the ID of the workspace instance - do not use, interpret or rely on this field
+ // unless you know what you're doing.
+ string instance_id = 7 [deprecated = true];
}
// Admission level describes who can access a workspace instance and its ports.
@@ -325,20 +391,6 @@ enum AdmissionLevel {
}
message WorkspacePort {
- // Policy defines the accssbility policy of a workspace port is guarded by an
- // authentication in the proxy
- enum Policy {
- POLICY_UNSPECIFIED = 0;
-
- // Private means the port is accessible by the workspace owner only using
- // the workspace port URL
- POLICY_PRIVATE = 1;
-
- // Public means the port is accessible by everybody using the workspace port
- // URL
- POLICY_PUBLIC = 2;
- }
-
// Protocol defines the backend protocol of port
enum Protocol {
PROTOCOL_UNSPECIFIED = 0;
@@ -354,7 +406,7 @@ message WorkspacePort {
uint64 port = 1;
// policy of this port
- Policy policy = 2;
+ AdmissionLevel admission = 2;
// url that can be used to access the port
string url = 3;
@@ -437,19 +489,214 @@ message WorkspacePhase {
// become running or stopping anytime soon.
PHASE_INTERRUPTED = 7;
+ // Paused means the workspace is currently unavailable, akin to stopped,
+ // but faster to wake up.
+ PHASE_PAUSED = 8;
+
// Stopping means that the workspace is currently shutting down. It could go
// to stopped every moment.
- PHASE_STOPPING = 8;
+ PHASE_STOPPING = 9;
// Stopped means the workspace ended regularly because it was shut down.
- PHASE_STOPPED = 9;
+ PHASE_STOPPED = 10;
}
Phase name = 1;
google.protobuf.Timestamp last_transition_time = 2;
}
-message WorkspaceEnvironmentVariable {
- string name = 1;
- string value = 2;
+// WorkspaceInitializer specifies how a workspace is to be initialized
+message WorkspaceInitializer {
+ message Spec {
+ oneof spec {
+ GitInitializer git = 1;
+ SnapshotInitializer snapshot = 2;
+ PrebuildInitializer prebuild = 3;
+ FileDownloadInitializer download = 4;
+ }
+ }
+ repeated Spec specs = 1;
+}
+
+message GitInitializer {
+ // CloneTargetMode is the target state in which we want to leave a GitWorkspace
+ enum CloneTargetMode {
+ CLONE_TARGET_MODE_UNSPECIFIED = 0;
+
+ // REMOTE_HEAD has the local WS point at the remote branch head
+ CLONE_TARGET_MODE_REMOTE_HEAD = 1;
+
+ // REMOTE_COMMIT has the local WS point at a specific commit
+ CLONE_TARGET_MODE_REMOTE_COMMIT = 2;
+
+ // REMOTE_BRANCH has the local WS point at a remote branch
+ CLONE_TARGET_MODE_REMOTE_BRANCH = 3;
+
+ // LOCAL_BRANCH creates a local branch in the workspace
+ CLONE_TARGET_MODE_LOCAL_BRANCH = 4;
+ }
+
+ message GitConfig {
+ // custom config values to be set on clone provided through `.gitpod.yml`
+ map custom_config = 1;
+
+ // authentication method
+ AuthMethod authentication = 2;
+
+ // auth_user is the username used to authenticate the clone
+ string auth_user = 3;
+
+ // auth_password is the password used to authenticate the clone (can also be an API token)
+ string auth_password = 4;
+
+ // auth_ots is a URL where one can download the authentication secret (:)
+ // using a GET request.
+ string auth_ots = 5;
+ }
+
+ // AuthMethod is the means of authentication used during clone
+ enum AuthMethod {
+ // NO_AUTH disables authentication during clone
+ AUTH_METHOD_UNSPECIFIED = 0;
+
+ // BASIC_AUTH uses HTTP basic auth during clone (fails if repo is not cloned through http)
+ AUTH_METHOD_BASIC_AUTH = 1;
+
+ // BASIC_AUTH_OTS uses HTTP basic auth during the clone with the secrets coming from the OTS URL.
+ // Fails if either the OTS download or the clone fail.
+ AUTH_METHOD_BASIC_AUTH_OTS = 2;
+ }
+
+ // remote_uri is the Git remote origin
+ string remote_uri = 1;
+
+ // upstream_Remote_uri is the fork upstream of a repository
+ string upstream_remote_uri = 2;
+
+ // the target mode determines what gets checked out
+ CloneTargetMode target_mode = 3;
+
+ // the value for the clone target mode - use depends on the target mode
+ string clone_taget = 4;
+
+ // a path relative to the workspace root in which the code will be checked out to
+ string checkout_location = 5;
+
+ // config specifies the Git configuration for this workspace
+ GitConfig config = 6;
+}
+
+message SnapshotInitializer {
+ // reference of the snapshot to restore
+ string snapshot_id = 1;
+}
+
+message PrebuildInitializer {
+ // reference of the prebuild to restore
+ string prebuild_id = 1;
+}
+
+// FileDownloadInitializer downloads files and uses them as workspace content.
+message FileDownloadInitializer {
+ message FileInfo {
+ string url = 1;
+ // file_path is relative to the target_location, e.g. if target_location is in `/workspace/myrepo`
+ // a file_path of `foobar/file` would produce a file in `/workspace/myrepo/foobar/file`.
+ // file_path must include the filename. The FileDownloadInitializer will create any parent directories
+ // necessary to place the file.
+ string file_path = 2;
+ // digest is a hash of the file content in the OCI digest format (see https://github.com/opencontainers/image-spec/blob/master/descriptor.md#digests).
+ // This information is used to compute subsequent
+ // content versions, and to validate the file content was downloaded correctly.
+ string digest = 3;
+ }
+ repeated FileInfo files = 1;
+ string target_location = 2;
+}
+
+// GitStatus describes the current Git working copy status, akin to a combination of "git status" and "git branch"
+message GitStatus {
+ // branch is branch we're currently on
+ string branch = 1;
+
+ // latest_commit is the most recent commit on the current branch
+ string latest_commit = 2;
+
+ // uncommited_files is the number of uncommitted files, possibly truncated
+ repeated string uncommited_files = 3;
+
+ // the total number of uncommited files
+ int64 total_uncommited_files = 6;
+
+ // untracked_files is the number of untracked files in the workspace, possibly truncated
+ repeated string untracked_files = 4;
+
+ // the total number of untracked files
+ int64 total_untracked_files = 7;
+
+ // unpushed_commits is the number of unpushed changes in the workspace, possibly truncated
+ repeated string unpushed_commits = 5;
+
+ // the total number of unpushed changes
+ int64 total_unpushed_commits = 8;
+}
+
+message UpdateWorkspaceRequest {
+ message UpdateWorkspaceMetadata {
+ // name is the name of the workspace as specified by the user
+ optional string name = 1;
+
+ // pinned indicates whether the workspace is pinned
+ optional bool pinned = 2;
+ }
+ message UpdateTimeout {
+ // inacitivity is the maximum time of inactivity before the workspace is stopped or paused
+ optional google.protobuf.Duration inactivity = 1;
+ // inacitivity is the maximum time of disconnection before the workspace is stopped or paused
+ optional google.protobuf.Duration disconnected = 2;
+ }
+ message UpdateWorkspaceSpec {
+ // Note(cw): Ports cannot be updated here in favour of UpdateWorkspacePorts call which exists so that
+ // we can update individual ports.
+
+ // timeout configures the workspace timeout
+ optional UpdateTimeout timeout = 1;
+
+ // admission controlls who can access the workspace and its ports.
+ optional AdmissionLevel admission = 2;
+
+ // Note(cw): repeated fields have implicit presence. There's a difference between passing an empty list or nothing.
+ repeated string ssh_public_keys = 3;
+ }
+
+ // workspace_id specifies the workspace to update
+ //
+ // +required
+ string workspace_id = 1;
+
+ // metadata is data associated with this workspace that's required for other parts of Gitpod to function
+ optional UpdateWorkspaceMetadata metadata = 2;
+
+ // spec is the configuration of the workspace that's required for the ws-manager to start the workspace
+ optional UpdateWorkspaceSpec spec = 3;
+
+ // git_status updates the git status of the workspace - this is only here during the migration
+ optional WorkspaceGitStatus git_status = 4 [deprecated = true];
+}
+
+message UpdateWorkspaceResponse {
+ Workspace workspace = 1;
+}
+
+message ParseContextURLRequest {
+ // context_url is the URL to parse
+ string context_url = 1;
+
+ // configuration_id is the ID of the configuration to use
+ string configuration_id = 2;
+}
+
+message ParseContextURLResponse {
+ WorkspaceMetadata metadata = 1;
+ WorkspaceSpec spec = 2;
}
diff --git a/components/public-api/go/v1/envvar.pb.go b/components/public-api/go/v1/envvar.pb.go
index cff79325cdbf0f..42fe4476dd0474 100644
--- a/components/public-api/go/v1/envvar.pb.go
+++ b/components/public-api/go/v1/envvar.pb.go
@@ -1121,7 +1121,7 @@ type ResolveWorkspaceEnvironmentVariablesResponse struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- EnvironmentVariables []*ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable `protobuf:"bytes,1,rep,name=environment_variables,json=environmentVariables,proto3" json:"environment_variables,omitempty"`
+ EnvironmentVariables []*EnvironmentVariable `protobuf:"bytes,1,rep,name=environment_variables,json=environmentVariables,proto3" json:"environment_variables,omitempty"`
}
func (x *ResolveWorkspaceEnvironmentVariablesResponse) Reset() {
@@ -1156,14 +1156,14 @@ func (*ResolveWorkspaceEnvironmentVariablesResponse) Descriptor() ([]byte, []int
return file_gitpod_v1_envvar_proto_rawDescGZIP(), []int{19}
}
-func (x *ResolveWorkspaceEnvironmentVariablesResponse) GetEnvironmentVariables() []*ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable {
+func (x *ResolveWorkspaceEnvironmentVariablesResponse) GetEnvironmentVariables() []*EnvironmentVariable {
if x != nil {
return x.EnvironmentVariables
}
return nil
}
-type ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable struct {
+type EnvironmentVariable struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -1172,8 +1172,8 @@ type ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable struct {
Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}
-func (x *ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable) Reset() {
- *x = ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable{}
+func (x *EnvironmentVariable) Reset() {
+ *x = EnvironmentVariable{}
if protoimpl.UnsafeEnabled {
mi := &file_gitpod_v1_envvar_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1181,13 +1181,13 @@ func (x *ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable) Reset
}
}
-func (x *ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable) String() string {
+func (x *EnvironmentVariable) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable) ProtoMessage() {}
+func (*EnvironmentVariable) ProtoMessage() {}
-func (x *ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable) ProtoReflect() protoreflect.Message {
+func (x *EnvironmentVariable) ProtoReflect() protoreflect.Message {
mi := &file_gitpod_v1_envvar_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1199,19 +1199,19 @@ func (x *ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable) Proto
return mi.MessageOf(x)
}
-// Deprecated: Use ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable.ProtoReflect.Descriptor instead.
-func (*ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable) Descriptor() ([]byte, []int) {
- return file_gitpod_v1_envvar_proto_rawDescGZIP(), []int{19, 0}
+// Deprecated: Use EnvironmentVariable.ProtoReflect.Descriptor instead.
+func (*EnvironmentVariable) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_envvar_proto_rawDescGZIP(), []int{20}
}
-func (x *ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable) GetName() string {
+func (x *EnvironmentVariable) GetName() string {
if x != nil {
return x.Name
}
return ""
}
-func (x *ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable) GetValue() string {
+func (x *EnvironmentVariable) GetValue() string {
if x != nil {
return x.Value
}
@@ -1399,123 +1399,120 @@ var file_gitpod_v1_envvar_proto_rawDesc = []byte{
0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0xf2, 0x01, 0x0a, 0x2c, 0x52, 0x65, 0x73, 0x6f, 0x6c,
+ 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x2c, 0x52, 0x65, 0x73, 0x6f, 0x6c,
0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x76, 0x69, 0x72,
0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x15, 0x65, 0x6e, 0x76, 0x69,
- 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64,
- 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56,
- 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69,
- 0x61, 0x62, 0x6c, 0x65, 0x52, 0x14, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e,
- 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, 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, 0xaa, 0x01, 0x0a, 0x1c,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x15, 0x65, 0x6e, 0x76, 0x69, 0x72,
+ 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e,
+ 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61,
+ 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x14, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d,
+ 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x13,
0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61,
- 0x62, 0x6c, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x2a,
- 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x41, 0x52, 0x49,
- 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x55,
- 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27,
- 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x41, 0x52, 0x49,
- 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x50,
- 0x52, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x45, 0x4e, 0x56,
- 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c,
- 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x56, 0x45, 0x52,
- 0x59, 0x57, 0x48, 0x45, 0x52, 0x45, 0x10, 0x02, 0x32, 0xd6, 0x0a, 0x0a, 0x1a, 0x45, 0x6e, 0x76,
- 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
- 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74,
- 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56,
- 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f,
- 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76,
- 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f,
- 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76,
+ 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, 0xaa, 0x01,
+ 0x0a, 0x1c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72,
+ 0x69, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e,
+ 0x0a, 0x2a, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x41,
+ 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e,
+ 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b,
+ 0x0a, 0x27, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x41,
+ 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e,
+ 0x5f, 0x50, 0x52, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x45,
+ 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41,
+ 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x56,
+ 0x45, 0x52, 0x59, 0x57, 0x48, 0x45, 0x52, 0x45, 0x10, 0x02, 0x32, 0xd6, 0x0a, 0x0a, 0x1a, 0x45,
+ 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62,
+ 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x1c, 0x4c, 0x69,
+ 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e,
+ 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x67, 0x69, 0x74,
+ 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x45,
+ 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62,
+ 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x69, 0x74,
+ 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x45,
+ 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62,
+ 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01,
+ 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x69,
+ 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12,
+ 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e,
+ 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65,
+ 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55,
+ 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61,
+ 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e,
+ 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76,
0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x1d,
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64,
+ 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e,
+ 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c,
+ 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x1d,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f,
0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2f, 0x2e,
- 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56,
0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30,
- 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74,
0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65,
- 0x72, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69,
- 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31,
- 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x69, 0x72,
- 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76,
- 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x69,
- 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x1d, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d,
- 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2f, 0x2e, 0x67, 0x69,
- 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73,
- 0x65, 0x72, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72,
- 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67,
- 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55,
- 0x73, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61,
- 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
- 0x12, 0x9c, 0x01, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e,
- 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x37, 0x2e, 0x67, 0x69, 0x74,
- 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x22, 0x00, 0x12, 0x9c, 0x01, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69,
0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d,
- 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e,
- 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69,
- 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
- 0x9f, 0x01, 0x0a, 0x26, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65,
- 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x38, 0x2e, 0x67, 0x69, 0x74,
- 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e,
+ 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x37, 0x2e, 0x67,
+ 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f,
- 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31,
- 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56,
- 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x00, 0x12, 0x9f, 0x01, 0x0a, 0x26, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61,
+ 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x00, 0x12, 0x9f, 0x01, 0x0a, 0x26, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e,
0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x38, 0x2e, 0x67,
- 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43,
+ 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x69,
0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e,
- 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75,
+ 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e,
0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0x00, 0x12, 0x9f, 0x01, 0x0a, 0x26, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f,
+ 0x65, 0x22, 0x00, 0x12, 0x9f, 0x01, 0x0a, 0x26, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f,
0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x69, 0x72,
0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x38,
- 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e,
0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c,
0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f,
- 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d,
0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x99, 0x01, 0x0a, 0x24, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76,
- 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f,
- 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x36,
- 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c,
- 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x76, 0x69, 0x72,
- 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e,
- 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61,
- 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 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,
+ 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9f, 0x01, 0x0a, 0x26, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76,
+ 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
+ 0x12, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61,
+ 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x69, 0x74,
+ 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f,
+ 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x99, 0x01, 0x0a, 0x24, 0x52, 0x65, 0x73, 0x6f,
+ 0x6c, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x76, 0x69,
+ 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73,
+ 0x12, 0x36, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73,
+ 0x6f, 0x6c, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x76,
+ 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f,
+ 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74,
+ 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 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 (
@@ -1533,30 +1530,30 @@ func file_gitpod_v1_envvar_proto_rawDescGZIP() []byte {
var file_gitpod_v1_envvar_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_gitpod_v1_envvar_proto_msgTypes = make([]protoimpl.MessageInfo, 21)
var file_gitpod_v1_envvar_proto_goTypes = []interface{}{
- (EnvironmentVariableAdmission)(0), // 0: gitpod.v1.EnvironmentVariableAdmission
- (*UserEnvironmentVariable)(nil), // 1: gitpod.v1.UserEnvironmentVariable
- (*ListUserEnvironmentVariablesRequest)(nil), // 2: gitpod.v1.ListUserEnvironmentVariablesRequest
- (*ListUserEnvironmentVariablesResponse)(nil), // 3: gitpod.v1.ListUserEnvironmentVariablesResponse
- (*UpdateUserEnvironmentVariableRequest)(nil), // 4: gitpod.v1.UpdateUserEnvironmentVariableRequest
- (*UpdateUserEnvironmentVariableResponse)(nil), // 5: gitpod.v1.UpdateUserEnvironmentVariableResponse
- (*CreateUserEnvironmentVariableRequest)(nil), // 6: gitpod.v1.CreateUserEnvironmentVariableRequest
- (*CreateUserEnvironmentVariableResponse)(nil), // 7: gitpod.v1.CreateUserEnvironmentVariableResponse
- (*DeleteUserEnvironmentVariableRequest)(nil), // 8: gitpod.v1.DeleteUserEnvironmentVariableRequest
- (*DeleteUserEnvironmentVariableResponse)(nil), // 9: gitpod.v1.DeleteUserEnvironmentVariableResponse
- (*ConfigurationEnvironmentVariable)(nil), // 10: gitpod.v1.ConfigurationEnvironmentVariable
- (*ListConfigurationEnvironmentVariablesRequest)(nil), // 11: gitpod.v1.ListConfigurationEnvironmentVariablesRequest
- (*ListConfigurationEnvironmentVariablesResponse)(nil), // 12: gitpod.v1.ListConfigurationEnvironmentVariablesResponse
- (*UpdateConfigurationEnvironmentVariableRequest)(nil), // 13: gitpod.v1.UpdateConfigurationEnvironmentVariableRequest
- (*UpdateConfigurationEnvironmentVariableResponse)(nil), // 14: gitpod.v1.UpdateConfigurationEnvironmentVariableResponse
- (*CreateConfigurationEnvironmentVariableRequest)(nil), // 15: gitpod.v1.CreateConfigurationEnvironmentVariableRequest
- (*CreateConfigurationEnvironmentVariableResponse)(nil), // 16: gitpod.v1.CreateConfigurationEnvironmentVariableResponse
- (*DeleteConfigurationEnvironmentVariableRequest)(nil), // 17: gitpod.v1.DeleteConfigurationEnvironmentVariableRequest
- (*DeleteConfigurationEnvironmentVariableResponse)(nil), // 18: gitpod.v1.DeleteConfigurationEnvironmentVariableResponse
- (*ResolveWorkspaceEnvironmentVariablesRequest)(nil), // 19: gitpod.v1.ResolveWorkspaceEnvironmentVariablesRequest
- (*ResolveWorkspaceEnvironmentVariablesResponse)(nil), // 20: gitpod.v1.ResolveWorkspaceEnvironmentVariablesResponse
- (*ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable)(nil), // 21: gitpod.v1.ResolveWorkspaceEnvironmentVariablesResponse.EnvironmentVariable
- (*PaginationRequest)(nil), // 22: gitpod.v1.PaginationRequest
- (*PaginationResponse)(nil), // 23: gitpod.v1.PaginationResponse
+ (EnvironmentVariableAdmission)(0), // 0: gitpod.v1.EnvironmentVariableAdmission
+ (*UserEnvironmentVariable)(nil), // 1: gitpod.v1.UserEnvironmentVariable
+ (*ListUserEnvironmentVariablesRequest)(nil), // 2: gitpod.v1.ListUserEnvironmentVariablesRequest
+ (*ListUserEnvironmentVariablesResponse)(nil), // 3: gitpod.v1.ListUserEnvironmentVariablesResponse
+ (*UpdateUserEnvironmentVariableRequest)(nil), // 4: gitpod.v1.UpdateUserEnvironmentVariableRequest
+ (*UpdateUserEnvironmentVariableResponse)(nil), // 5: gitpod.v1.UpdateUserEnvironmentVariableResponse
+ (*CreateUserEnvironmentVariableRequest)(nil), // 6: gitpod.v1.CreateUserEnvironmentVariableRequest
+ (*CreateUserEnvironmentVariableResponse)(nil), // 7: gitpod.v1.CreateUserEnvironmentVariableResponse
+ (*DeleteUserEnvironmentVariableRequest)(nil), // 8: gitpod.v1.DeleteUserEnvironmentVariableRequest
+ (*DeleteUserEnvironmentVariableResponse)(nil), // 9: gitpod.v1.DeleteUserEnvironmentVariableResponse
+ (*ConfigurationEnvironmentVariable)(nil), // 10: gitpod.v1.ConfigurationEnvironmentVariable
+ (*ListConfigurationEnvironmentVariablesRequest)(nil), // 11: gitpod.v1.ListConfigurationEnvironmentVariablesRequest
+ (*ListConfigurationEnvironmentVariablesResponse)(nil), // 12: gitpod.v1.ListConfigurationEnvironmentVariablesResponse
+ (*UpdateConfigurationEnvironmentVariableRequest)(nil), // 13: gitpod.v1.UpdateConfigurationEnvironmentVariableRequest
+ (*UpdateConfigurationEnvironmentVariableResponse)(nil), // 14: gitpod.v1.UpdateConfigurationEnvironmentVariableResponse
+ (*CreateConfigurationEnvironmentVariableRequest)(nil), // 15: gitpod.v1.CreateConfigurationEnvironmentVariableRequest
+ (*CreateConfigurationEnvironmentVariableResponse)(nil), // 16: gitpod.v1.CreateConfigurationEnvironmentVariableResponse
+ (*DeleteConfigurationEnvironmentVariableRequest)(nil), // 17: gitpod.v1.DeleteConfigurationEnvironmentVariableRequest
+ (*DeleteConfigurationEnvironmentVariableResponse)(nil), // 18: gitpod.v1.DeleteConfigurationEnvironmentVariableResponse
+ (*ResolveWorkspaceEnvironmentVariablesRequest)(nil), // 19: gitpod.v1.ResolveWorkspaceEnvironmentVariablesRequest
+ (*ResolveWorkspaceEnvironmentVariablesResponse)(nil), // 20: gitpod.v1.ResolveWorkspaceEnvironmentVariablesResponse
+ (*EnvironmentVariable)(nil), // 21: gitpod.v1.EnvironmentVariable
+ (*PaginationRequest)(nil), // 22: gitpod.v1.PaginationRequest
+ (*PaginationResponse)(nil), // 23: gitpod.v1.PaginationResponse
}
var file_gitpod_v1_envvar_proto_depIdxs = []int32{
22, // 0: gitpod.v1.ListUserEnvironmentVariablesRequest.pagination:type_name -> gitpod.v1.PaginationRequest
@@ -1572,7 +1569,7 @@ var file_gitpod_v1_envvar_proto_depIdxs = []int32{
10, // 10: gitpod.v1.UpdateConfigurationEnvironmentVariableResponse.environment_variable:type_name -> gitpod.v1.ConfigurationEnvironmentVariable
0, // 11: gitpod.v1.CreateConfigurationEnvironmentVariableRequest.admission:type_name -> gitpod.v1.EnvironmentVariableAdmission
10, // 12: gitpod.v1.CreateConfigurationEnvironmentVariableResponse.environment_variable:type_name -> gitpod.v1.ConfigurationEnvironmentVariable
- 21, // 13: gitpod.v1.ResolveWorkspaceEnvironmentVariablesResponse.environment_variables:type_name -> gitpod.v1.ResolveWorkspaceEnvironmentVariablesResponse.EnvironmentVariable
+ 21, // 13: gitpod.v1.ResolveWorkspaceEnvironmentVariablesResponse.environment_variables:type_name -> gitpod.v1.EnvironmentVariable
2, // 14: gitpod.v1.EnvironmentVariableService.ListUserEnvironmentVariables:input_type -> gitpod.v1.ListUserEnvironmentVariablesRequest
4, // 15: gitpod.v1.EnvironmentVariableService.UpdateUserEnvironmentVariable:input_type -> gitpod.v1.UpdateUserEnvironmentVariableRequest
6, // 16: gitpod.v1.EnvironmentVariableService.CreateUserEnvironmentVariable:input_type -> gitpod.v1.CreateUserEnvironmentVariableRequest
@@ -1846,7 +1843,7 @@ func file_gitpod_v1_envvar_proto_init() {
}
}
file_gitpod_v1_envvar_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable); i {
+ switch v := v.(*EnvironmentVariable); i {
case 0:
return &v.state
case 1:
diff --git a/components/public-api/go/v1/v1connect/workspace.connect.go b/components/public-api/go/v1/v1connect/workspace.connect.go
index 6d8cb6d89c2996..b49bbd5e5586ad 100644
--- a/components/public-api/go/v1/v1connect/workspace.connect.go
+++ b/components/public-api/go/v1/v1connect/workspace.connect.go
@@ -47,6 +47,11 @@ type WorkspaceServiceClient interface {
// StartWorkspace starts an existing workspace.
// If the specified workspace is not in stopped phase, this will return the workspace as is.
StartWorkspace(context.Context, *connect_go.Request[v1.StartWorkspaceRequest]) (*connect_go.Response[v1.StartWorkspaceResponse], error)
+ // UpdateWorkspace updates the workspace.
+ UpdateWorkspace(context.Context, *connect_go.Request[v1.UpdateWorkspaceRequest]) (*connect_go.Response[v1.UpdateWorkspaceResponse], error)
+ // ParseContextURL parses a context URL and returns the workspace metadata and spec.
+ // Not implemented yet.
+ ParseContextURL(context.Context, *connect_go.Request[v1.ParseContextURLRequest]) (*connect_go.Response[v1.ParseContextURLResponse], error)
// GetWorkspaceDefaultImage returns the default workspace image of specified
// workspace.
GetWorkspaceDefaultImage(context.Context, *connect_go.Request[v1.GetWorkspaceDefaultImageRequest]) (*connect_go.Response[v1.GetWorkspaceDefaultImageResponse], error)
@@ -94,6 +99,16 @@ func NewWorkspaceServiceClient(httpClient connect_go.HTTPClient, baseURL string,
baseURL+"/gitpod.v1.WorkspaceService/StartWorkspace",
opts...,
),
+ updateWorkspace: connect_go.NewClient[v1.UpdateWorkspaceRequest, v1.UpdateWorkspaceResponse](
+ httpClient,
+ baseURL+"/gitpod.v1.WorkspaceService/UpdateWorkspace",
+ opts...,
+ ),
+ parseContextURL: connect_go.NewClient[v1.ParseContextURLRequest, v1.ParseContextURLResponse](
+ httpClient,
+ baseURL+"/gitpod.v1.WorkspaceService/ParseContextURL",
+ opts...,
+ ),
getWorkspaceDefaultImage: connect_go.NewClient[v1.GetWorkspaceDefaultImageRequest, v1.GetWorkspaceDefaultImageResponse](
httpClient,
baseURL+"/gitpod.v1.WorkspaceService/GetWorkspaceDefaultImage",
@@ -124,6 +139,8 @@ type workspaceServiceClient struct {
listWorkspaces *connect_go.Client[v1.ListWorkspacesRequest, v1.ListWorkspacesResponse]
createAndStartWorkspace *connect_go.Client[v1.CreateAndStartWorkspaceRequest, v1.CreateAndStartWorkspaceResponse]
startWorkspace *connect_go.Client[v1.StartWorkspaceRequest, v1.StartWorkspaceResponse]
+ updateWorkspace *connect_go.Client[v1.UpdateWorkspaceRequest, v1.UpdateWorkspaceResponse]
+ parseContextURL *connect_go.Client[v1.ParseContextURLRequest, v1.ParseContextURLResponse]
getWorkspaceDefaultImage *connect_go.Client[v1.GetWorkspaceDefaultImageRequest, v1.GetWorkspaceDefaultImageResponse]
sendHeartBeat *connect_go.Client[v1.SendHeartBeatRequest, v1.SendHeartBeatResponse]
getWorkspaceOwnerToken *connect_go.Client[v1.GetWorkspaceOwnerTokenRequest, v1.GetWorkspaceOwnerTokenResponse]
@@ -155,6 +172,16 @@ func (c *workspaceServiceClient) StartWorkspace(ctx context.Context, req *connec
return c.startWorkspace.CallUnary(ctx, req)
}
+// UpdateWorkspace calls gitpod.v1.WorkspaceService.UpdateWorkspace.
+func (c *workspaceServiceClient) UpdateWorkspace(ctx context.Context, req *connect_go.Request[v1.UpdateWorkspaceRequest]) (*connect_go.Response[v1.UpdateWorkspaceResponse], error) {
+ return c.updateWorkspace.CallUnary(ctx, req)
+}
+
+// ParseContextURL calls gitpod.v1.WorkspaceService.ParseContextURL.
+func (c *workspaceServiceClient) ParseContextURL(ctx context.Context, req *connect_go.Request[v1.ParseContextURLRequest]) (*connect_go.Response[v1.ParseContextURLResponse], error) {
+ return c.parseContextURL.CallUnary(ctx, req)
+}
+
// GetWorkspaceDefaultImage calls gitpod.v1.WorkspaceService.GetWorkspaceDefaultImage.
func (c *workspaceServiceClient) GetWorkspaceDefaultImage(ctx context.Context, req *connect_go.Request[v1.GetWorkspaceDefaultImageRequest]) (*connect_go.Response[v1.GetWorkspaceDefaultImageResponse], error) {
return c.getWorkspaceDefaultImage.CallUnary(ctx, req)
@@ -193,6 +220,11 @@ type WorkspaceServiceHandler interface {
// StartWorkspace starts an existing workspace.
// If the specified workspace is not in stopped phase, this will return the workspace as is.
StartWorkspace(context.Context, *connect_go.Request[v1.StartWorkspaceRequest]) (*connect_go.Response[v1.StartWorkspaceResponse], error)
+ // UpdateWorkspace updates the workspace.
+ UpdateWorkspace(context.Context, *connect_go.Request[v1.UpdateWorkspaceRequest]) (*connect_go.Response[v1.UpdateWorkspaceResponse], error)
+ // ParseContextURL parses a context URL and returns the workspace metadata and spec.
+ // Not implemented yet.
+ ParseContextURL(context.Context, *connect_go.Request[v1.ParseContextURLRequest]) (*connect_go.Response[v1.ParseContextURLResponse], error)
// GetWorkspaceDefaultImage returns the default workspace image of specified
// workspace.
GetWorkspaceDefaultImage(context.Context, *connect_go.Request[v1.GetWorkspaceDefaultImageRequest]) (*connect_go.Response[v1.GetWorkspaceDefaultImageResponse], error)
@@ -237,6 +269,16 @@ func NewWorkspaceServiceHandler(svc WorkspaceServiceHandler, opts ...connect_go.
svc.StartWorkspace,
opts...,
))
+ mux.Handle("/gitpod.v1.WorkspaceService/UpdateWorkspace", connect_go.NewUnaryHandler(
+ "/gitpod.v1.WorkspaceService/UpdateWorkspace",
+ svc.UpdateWorkspace,
+ opts...,
+ ))
+ mux.Handle("/gitpod.v1.WorkspaceService/ParseContextURL", connect_go.NewUnaryHandler(
+ "/gitpod.v1.WorkspaceService/ParseContextURL",
+ svc.ParseContextURL,
+ opts...,
+ ))
mux.Handle("/gitpod.v1.WorkspaceService/GetWorkspaceDefaultImage", connect_go.NewUnaryHandler(
"/gitpod.v1.WorkspaceService/GetWorkspaceDefaultImage",
svc.GetWorkspaceDefaultImage,
@@ -283,6 +325,14 @@ func (UnimplementedWorkspaceServiceHandler) StartWorkspace(context.Context, *con
return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.WorkspaceService.StartWorkspace is not implemented"))
}
+func (UnimplementedWorkspaceServiceHandler) UpdateWorkspace(context.Context, *connect_go.Request[v1.UpdateWorkspaceRequest]) (*connect_go.Response[v1.UpdateWorkspaceResponse], error) {
+ return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.WorkspaceService.UpdateWorkspace is not implemented"))
+}
+
+func (UnimplementedWorkspaceServiceHandler) ParseContextURL(context.Context, *connect_go.Request[v1.ParseContextURLRequest]) (*connect_go.Response[v1.ParseContextURLResponse], error) {
+ return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.WorkspaceService.ParseContextURL is not implemented"))
+}
+
func (UnimplementedWorkspaceServiceHandler) GetWorkspaceDefaultImage(context.Context, *connect_go.Request[v1.GetWorkspaceDefaultImageRequest]) (*connect_go.Response[v1.GetWorkspaceDefaultImageResponse], error) {
return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.WorkspaceService.GetWorkspaceDefaultImage is not implemented"))
}
diff --git a/components/public-api/go/v1/v1connect/workspace.proxy.connect.go b/components/public-api/go/v1/v1connect/workspace.proxy.connect.go
index 4fb5753a2737d5..eb29bf1072716b 100644
--- a/components/public-api/go/v1/v1connect/workspace.proxy.connect.go
+++ b/components/public-api/go/v1/v1connect/workspace.proxy.connect.go
@@ -59,6 +59,26 @@ func (s *ProxyWorkspaceServiceHandler) StartWorkspace(ctx context.Context, req *
return connect_go.NewResponse(resp), nil
}
+func (s *ProxyWorkspaceServiceHandler) UpdateWorkspace(ctx context.Context, req *connect_go.Request[v1.UpdateWorkspaceRequest]) (*connect_go.Response[v1.UpdateWorkspaceResponse], error) {
+ resp, err := s.Client.UpdateWorkspace(ctx, req.Msg)
+ if err != nil {
+ // TODO(milan): Convert to correct status code
+ return nil, err
+ }
+
+ return connect_go.NewResponse(resp), nil
+}
+
+func (s *ProxyWorkspaceServiceHandler) ParseContextURL(ctx context.Context, req *connect_go.Request[v1.ParseContextURLRequest]) (*connect_go.Response[v1.ParseContextURLResponse], error) {
+ resp, err := s.Client.ParseContextURL(ctx, req.Msg)
+ if err != nil {
+ // TODO(milan): Convert to correct status code
+ return nil, err
+ }
+
+ return connect_go.NewResponse(resp), nil
+}
+
func (s *ProxyWorkspaceServiceHandler) GetWorkspaceDefaultImage(ctx context.Context, req *connect_go.Request[v1.GetWorkspaceDefaultImageRequest]) (*connect_go.Response[v1.GetWorkspaceDefaultImageResponse], error) {
resp, err := s.Client.GetWorkspaceDefaultImage(ctx, req.Msg)
if err != nil {
diff --git a/components/public-api/go/v1/workspace.pb.go b/components/public-api/go/v1/workspace.pb.go
index 28d9a832231cb8..b50c503660c4a9 100644
--- a/components/public-api/go/v1/workspace.pb.go
+++ b/components/public-api/go/v1/workspace.pb.go
@@ -13,6 +13,7 @@ package v1
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ durationpb "google.golang.org/protobuf/types/known/durationpb"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
reflect "reflect"
sync "sync"
@@ -128,59 +129,111 @@ func (GetWorkspaceDefaultImageResponse_Source) EnumDescriptor() ([]byte, []int)
return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{11, 0}
}
-// Policy defines the accssbility policy of a workspace port is guarded by an
-// authentication in the proxy
-type WorkspacePort_Policy int32
+// WorkspaceType specifies the purpose/use of a workspace. Different workspace types are handled differently by all parts of the system.
+type WorkspaceSpec_WorkspaceType int32
const (
- WorkspacePort_POLICY_UNSPECIFIED WorkspacePort_Policy = 0
- // Private means the port is accessible by the workspace owner only using
- // the workspace port URL
- WorkspacePort_POLICY_PRIVATE WorkspacePort_Policy = 1
- // Public means the port is accessible by everybody using the workspace port
- // URL
- WorkspacePort_POLICY_PUBLIC WorkspacePort_Policy = 2
+ WorkspaceSpec_WORKSPACE_TYPE_UNSPECIFIED WorkspaceSpec_WorkspaceType = 0
+ // Regular workspaces are your off-the-mill workspaces intended for users. They are directly user-facing and hence are most important.
+ WorkspaceSpec_WORKSPACE_TYPE_REGULAR WorkspaceSpec_WorkspaceType = 1
+ // Prebuild workspaces are workspaces used to pre-build the content of other workspaces. They run headless and have no direct user-interaction.
+ WorkspaceSpec_WORKSPACE_TYPE_PREBUILD WorkspaceSpec_WorkspaceType = 2
)
-// Enum value maps for WorkspacePort_Policy.
+// Enum value maps for WorkspaceSpec_WorkspaceType.
var (
- WorkspacePort_Policy_name = map[int32]string{
- 0: "POLICY_UNSPECIFIED",
- 1: "POLICY_PRIVATE",
- 2: "POLICY_PUBLIC",
+ WorkspaceSpec_WorkspaceType_name = map[int32]string{
+ 0: "WORKSPACE_TYPE_UNSPECIFIED",
+ 1: "WORKSPACE_TYPE_REGULAR",
+ 2: "WORKSPACE_TYPE_PREBUILD",
}
- WorkspacePort_Policy_value = map[string]int32{
- "POLICY_UNSPECIFIED": 0,
- "POLICY_PRIVATE": 1,
- "POLICY_PUBLIC": 2,
+ WorkspaceSpec_WorkspaceType_value = map[string]int32{
+ "WORKSPACE_TYPE_UNSPECIFIED": 0,
+ "WORKSPACE_TYPE_REGULAR": 1,
+ "WORKSPACE_TYPE_PREBUILD": 2,
}
)
-func (x WorkspacePort_Policy) Enum() *WorkspacePort_Policy {
- p := new(WorkspacePort_Policy)
+func (x WorkspaceSpec_WorkspaceType) Enum() *WorkspaceSpec_WorkspaceType {
+ p := new(WorkspaceSpec_WorkspaceType)
*p = x
return p
}
-func (x WorkspacePort_Policy) String() string {
+func (x WorkspaceSpec_WorkspaceType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
-func (WorkspacePort_Policy) Descriptor() protoreflect.EnumDescriptor {
+func (WorkspaceSpec_WorkspaceType) Descriptor() protoreflect.EnumDescriptor {
return file_gitpod_v1_workspace_proto_enumTypes[2].Descriptor()
}
-func (WorkspacePort_Policy) Type() protoreflect.EnumType {
+func (WorkspaceSpec_WorkspaceType) Type() protoreflect.EnumType {
return &file_gitpod_v1_workspace_proto_enumTypes[2]
}
-func (x WorkspacePort_Policy) Number() protoreflect.EnumNumber {
+func (x WorkspaceSpec_WorkspaceType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
-// Deprecated: Use WorkspacePort_Policy.Descriptor instead.
-func (WorkspacePort_Policy) EnumDescriptor() ([]byte, []int) {
- return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{21, 0}
+// Deprecated: Use WorkspaceSpec_WorkspaceType.Descriptor instead.
+func (WorkspaceSpec_WorkspaceType) EnumDescriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{20, 0}
+}
+
+type WorkspaceStatus_WorkspaceConditions_FailedReason int32
+
+const (
+ WorkspaceStatus_WorkspaceConditions_FAILED_REASON_UNSPECIFIED WorkspaceStatus_WorkspaceConditions_FailedReason = 0
+ WorkspaceStatus_WorkspaceConditions_FAILED_REASON_CONTENT_INITIALIZATION_FAILED WorkspaceStatus_WorkspaceConditions_FailedReason = 1
+ WorkspaceStatus_WorkspaceConditions_FAILED_REASON_BACKUP_FAILED WorkspaceStatus_WorkspaceConditions_FailedReason = 2
+ WorkspaceStatus_WorkspaceConditions_FAILED_REASON_IMAGE_PULL_FAILURE WorkspaceStatus_WorkspaceConditions_FailedReason = 3
+ WorkspaceStatus_WorkspaceConditions_FAILED_REASON_UNEXPECTED_TERMINATION WorkspaceStatus_WorkspaceConditions_FailedReason = 4
+)
+
+// Enum value maps for WorkspaceStatus_WorkspaceConditions_FailedReason.
+var (
+ WorkspaceStatus_WorkspaceConditions_FailedReason_name = map[int32]string{
+ 0: "FAILED_REASON_UNSPECIFIED",
+ 1: "FAILED_REASON_CONTENT_INITIALIZATION_FAILED",
+ 2: "FAILED_REASON_BACKUP_FAILED",
+ 3: "FAILED_REASON_IMAGE_PULL_FAILURE",
+ 4: "FAILED_REASON_UNEXPECTED_TERMINATION",
+ }
+ WorkspaceStatus_WorkspaceConditions_FailedReason_value = map[string]int32{
+ "FAILED_REASON_UNSPECIFIED": 0,
+ "FAILED_REASON_CONTENT_INITIALIZATION_FAILED": 1,
+ "FAILED_REASON_BACKUP_FAILED": 2,
+ "FAILED_REASON_IMAGE_PULL_FAILURE": 3,
+ "FAILED_REASON_UNEXPECTED_TERMINATION": 4,
+ }
+)
+
+func (x WorkspaceStatus_WorkspaceConditions_FailedReason) Enum() *WorkspaceStatus_WorkspaceConditions_FailedReason {
+ p := new(WorkspaceStatus_WorkspaceConditions_FailedReason)
+ *p = x
+ return p
+}
+
+func (x WorkspaceStatus_WorkspaceConditions_FailedReason) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (WorkspaceStatus_WorkspaceConditions_FailedReason) Descriptor() protoreflect.EnumDescriptor {
+ return file_gitpod_v1_workspace_proto_enumTypes[3].Descriptor()
+}
+
+func (WorkspaceStatus_WorkspaceConditions_FailedReason) Type() protoreflect.EnumType {
+ return &file_gitpod_v1_workspace_proto_enumTypes[3]
+}
+
+func (x WorkspaceStatus_WorkspaceConditions_FailedReason) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use WorkspaceStatus_WorkspaceConditions_FailedReason.Descriptor instead.
+func (WorkspaceStatus_WorkspaceConditions_FailedReason) EnumDescriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{21, 0, 0}
}
// Protocol defines the backend protocol of port
@@ -219,11 +272,11 @@ func (x WorkspacePort_Protocol) String() string {
}
func (WorkspacePort_Protocol) Descriptor() protoreflect.EnumDescriptor {
- return file_gitpod_v1_workspace_proto_enumTypes[3].Descriptor()
+ return file_gitpod_v1_workspace_proto_enumTypes[4].Descriptor()
}
func (WorkspacePort_Protocol) Type() protoreflect.EnumType {
- return &file_gitpod_v1_workspace_proto_enumTypes[3]
+ return &file_gitpod_v1_workspace_proto_enumTypes[4]
}
func (x WorkspacePort_Protocol) Number() protoreflect.EnumNumber {
@@ -232,7 +285,7 @@ func (x WorkspacePort_Protocol) Number() protoreflect.EnumNumber {
// Deprecated: Use WorkspacePort_Protocol.Descriptor instead.
func (WorkspacePort_Protocol) EnumDescriptor() ([]byte, []int) {
- return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{21, 1}
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{22, 0}
}
type WorkspacePhase_Phase int32
@@ -270,26 +323,30 @@ const (
// but is temporarily unavailable. When in this state, we expect it to
// become running or stopping anytime soon.
WorkspacePhase_PHASE_INTERRUPTED WorkspacePhase_Phase = 7
+ // Paused means the workspace is currently unavailable, akin to stopped,
+ // but faster to wake up.
+ WorkspacePhase_PHASE_PAUSED WorkspacePhase_Phase = 8
// Stopping means that the workspace is currently shutting down. It could go
// to stopped every moment.
- WorkspacePhase_PHASE_STOPPING WorkspacePhase_Phase = 8
+ WorkspacePhase_PHASE_STOPPING WorkspacePhase_Phase = 9
// Stopped means the workspace ended regularly because it was shut down.
- WorkspacePhase_PHASE_STOPPED WorkspacePhase_Phase = 9
+ WorkspacePhase_PHASE_STOPPED WorkspacePhase_Phase = 10
)
// Enum value maps for WorkspacePhase_Phase.
var (
WorkspacePhase_Phase_name = map[int32]string{
- 0: "PHASE_UNSPECIFIED",
- 1: "PHASE_PREPARING",
- 2: "PHASE_IMAGEBUILD",
- 3: "PHASE_PENDING",
- 4: "PHASE_CREATING",
- 5: "PHASE_INITIALIZING",
- 6: "PHASE_RUNNING",
- 7: "PHASE_INTERRUPTED",
- 8: "PHASE_STOPPING",
- 9: "PHASE_STOPPED",
+ 0: "PHASE_UNSPECIFIED",
+ 1: "PHASE_PREPARING",
+ 2: "PHASE_IMAGEBUILD",
+ 3: "PHASE_PENDING",
+ 4: "PHASE_CREATING",
+ 5: "PHASE_INITIALIZING",
+ 6: "PHASE_RUNNING",
+ 7: "PHASE_INTERRUPTED",
+ 8: "PHASE_PAUSED",
+ 9: "PHASE_STOPPING",
+ 10: "PHASE_STOPPED",
}
WorkspacePhase_Phase_value = map[string]int32{
"PHASE_UNSPECIFIED": 0,
@@ -300,8 +357,9 @@ var (
"PHASE_INITIALIZING": 5,
"PHASE_RUNNING": 6,
"PHASE_INTERRUPTED": 7,
- "PHASE_STOPPING": 8,
- "PHASE_STOPPED": 9,
+ "PHASE_PAUSED": 8,
+ "PHASE_STOPPING": 9,
+ "PHASE_STOPPED": 10,
}
)
@@ -316,11 +374,11 @@ func (x WorkspacePhase_Phase) String() string {
}
func (WorkspacePhase_Phase) Descriptor() protoreflect.EnumDescriptor {
- return file_gitpod_v1_workspace_proto_enumTypes[4].Descriptor()
+ return file_gitpod_v1_workspace_proto_enumTypes[5].Descriptor()
}
func (WorkspacePhase_Phase) Type() protoreflect.EnumType {
- return &file_gitpod_v1_workspace_proto_enumTypes[4]
+ return &file_gitpod_v1_workspace_proto_enumTypes[5]
}
func (x WorkspacePhase_Phase) Number() protoreflect.EnumNumber {
@@ -329,7 +387,121 @@ func (x WorkspacePhase_Phase) Number() protoreflect.EnumNumber {
// Deprecated: Use WorkspacePhase_Phase.Descriptor instead.
func (WorkspacePhase_Phase) EnumDescriptor() ([]byte, []int) {
- return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{23, 0}
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{24, 0}
+}
+
+// CloneTargetMode is the target state in which we want to leave a GitWorkspace
+type GitInitializer_CloneTargetMode int32
+
+const (
+ GitInitializer_CLONE_TARGET_MODE_UNSPECIFIED GitInitializer_CloneTargetMode = 0
+ // REMOTE_HEAD has the local WS point at the remote branch head
+ GitInitializer_CLONE_TARGET_MODE_REMOTE_HEAD GitInitializer_CloneTargetMode = 1
+ // REMOTE_COMMIT has the local WS point at a specific commit
+ GitInitializer_CLONE_TARGET_MODE_REMOTE_COMMIT GitInitializer_CloneTargetMode = 2
+ // REMOTE_BRANCH has the local WS point at a remote branch
+ GitInitializer_CLONE_TARGET_MODE_REMOTE_BRANCH GitInitializer_CloneTargetMode = 3
+ // LOCAL_BRANCH creates a local branch in the workspace
+ GitInitializer_CLONE_TARGET_MODE_LOCAL_BRANCH GitInitializer_CloneTargetMode = 4
+)
+
+// Enum value maps for GitInitializer_CloneTargetMode.
+var (
+ GitInitializer_CloneTargetMode_name = map[int32]string{
+ 0: "CLONE_TARGET_MODE_UNSPECIFIED",
+ 1: "CLONE_TARGET_MODE_REMOTE_HEAD",
+ 2: "CLONE_TARGET_MODE_REMOTE_COMMIT",
+ 3: "CLONE_TARGET_MODE_REMOTE_BRANCH",
+ 4: "CLONE_TARGET_MODE_LOCAL_BRANCH",
+ }
+ GitInitializer_CloneTargetMode_value = map[string]int32{
+ "CLONE_TARGET_MODE_UNSPECIFIED": 0,
+ "CLONE_TARGET_MODE_REMOTE_HEAD": 1,
+ "CLONE_TARGET_MODE_REMOTE_COMMIT": 2,
+ "CLONE_TARGET_MODE_REMOTE_BRANCH": 3,
+ "CLONE_TARGET_MODE_LOCAL_BRANCH": 4,
+ }
+)
+
+func (x GitInitializer_CloneTargetMode) Enum() *GitInitializer_CloneTargetMode {
+ p := new(GitInitializer_CloneTargetMode)
+ *p = x
+ return p
+}
+
+func (x GitInitializer_CloneTargetMode) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (GitInitializer_CloneTargetMode) Descriptor() protoreflect.EnumDescriptor {
+ return file_gitpod_v1_workspace_proto_enumTypes[6].Descriptor()
+}
+
+func (GitInitializer_CloneTargetMode) Type() protoreflect.EnumType {
+ return &file_gitpod_v1_workspace_proto_enumTypes[6]
+}
+
+func (x GitInitializer_CloneTargetMode) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GitInitializer_CloneTargetMode.Descriptor instead.
+func (GitInitializer_CloneTargetMode) EnumDescriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{26, 0}
+}
+
+// AuthMethod is the means of authentication used during clone
+type GitInitializer_AuthMethod int32
+
+const (
+ // NO_AUTH disables authentication during clone
+ GitInitializer_AUTH_METHOD_UNSPECIFIED GitInitializer_AuthMethod = 0
+ // BASIC_AUTH uses HTTP basic auth during clone (fails if repo is not cloned through http)
+ GitInitializer_AUTH_METHOD_BASIC_AUTH GitInitializer_AuthMethod = 1
+ // BASIC_AUTH_OTS uses HTTP basic auth during the clone with the secrets coming from the OTS URL.
+ // Fails if either the OTS download or the clone fail.
+ GitInitializer_AUTH_METHOD_BASIC_AUTH_OTS GitInitializer_AuthMethod = 2
+)
+
+// Enum value maps for GitInitializer_AuthMethod.
+var (
+ GitInitializer_AuthMethod_name = map[int32]string{
+ 0: "AUTH_METHOD_UNSPECIFIED",
+ 1: "AUTH_METHOD_BASIC_AUTH",
+ 2: "AUTH_METHOD_BASIC_AUTH_OTS",
+ }
+ GitInitializer_AuthMethod_value = map[string]int32{
+ "AUTH_METHOD_UNSPECIFIED": 0,
+ "AUTH_METHOD_BASIC_AUTH": 1,
+ "AUTH_METHOD_BASIC_AUTH_OTS": 2,
+ }
+)
+
+func (x GitInitializer_AuthMethod) Enum() *GitInitializer_AuthMethod {
+ p := new(GitInitializer_AuthMethod)
+ *p = x
+ return p
+}
+
+func (x GitInitializer_AuthMethod) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (GitInitializer_AuthMethod) Descriptor() protoreflect.EnumDescriptor {
+ return file_gitpod_v1_workspace_proto_enumTypes[7].Descriptor()
+}
+
+func (GitInitializer_AuthMethod) Type() protoreflect.EnumType {
+ return &file_gitpod_v1_workspace_proto_enumTypes[7]
+}
+
+func (x GitInitializer_AuthMethod) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GitInitializer_AuthMethod.Descriptor instead.
+func (GitInitializer_AuthMethod) EnumDescriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{26, 1}
}
type GetWorkspaceRequest struct {
@@ -618,10 +790,10 @@ type ListWorkspacesResponse struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // workspaces are the workspaces that matched the query
- Workspaces []*Workspace `protobuf:"bytes,1,rep,name=workspaces,proto3" json:"workspaces,omitempty"`
// pagination contains the pagination options for listing workspaces
- Pagination *PaginationResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"`
+ Pagination *PaginationResponse `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"`
+ // workspaces are the workspaces that matched the query
+ Workspaces []*Workspace `protobuf:"bytes,2,rep,name=workspaces,proto3" json:"workspaces,omitempty"`
}
func (x *ListWorkspacesResponse) Reset() {
@@ -656,54 +828,41 @@ func (*ListWorkspacesResponse) Descriptor() ([]byte, []int) {
return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{5}
}
-func (x *ListWorkspacesResponse) GetWorkspaces() []*Workspace {
+func (x *ListWorkspacesResponse) GetPagination() *PaginationResponse {
if x != nil {
- return x.Workspaces
+ return x.Pagination
}
return nil
}
-func (x *ListWorkspacesResponse) GetPagination() *PaginationResponse {
+func (x *ListWorkspacesResponse) GetWorkspaces() []*Workspace {
if x != nil {
- return x.Pagination
+ return x.Workspaces
}
return nil
}
+// Required fields:
+// - metadata.organization_id
+// - metadata.configuration_id
type CreateAndStartWorkspaceRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // organization_id is the ID of the organization to create the workspace
- //
- // +required
- OrganizationId string `protobuf:"bytes,1,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"`
- // configuration_id is the ID of the configuration to use
- ConfigurationId string `protobuf:"bytes,2,opt,name=configuration_id,json=configurationId,proto3" json:"configuration_id,omitempty"`
- // source describes the source refer of workspace.
- //
- // +required
- //
+ // metadata is data associated with this workspace that's required for other parts of Gitpod to function
+ Metadata *WorkspaceMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
// Types that are assignable to Source:
//
- // *CreateAndStartWorkspaceRequest_Git_
// *CreateAndStartWorkspaceRequest_ContextUrl
+ // *CreateAndStartWorkspaceRequest_Spec
Source isCreateAndStartWorkspaceRequest_Source `protobuf_oneof:"source"`
- // additional_env_variables provide additional environment variables to the
- // workspace.
- // It will take precedence over environment variables provided by
- // the user and the configuration
- AdditionalEnvVariables []*WorkspaceEnvironmentVariable `protobuf:"bytes,5,rep,name=additional_env_variables,json=additionalEnvVariables,proto3" json:"additional_env_variables,omitempty"`
- Region string `protobuf:"bytes,6,opt,name=region,proto3" json:"region,omitempty"`
- WorkspaceClass string `protobuf:"bytes,7,opt,name=workspace_class,json=workspaceClass,proto3" json:"workspace_class,omitempty"`
- Editor *EditorReference `protobuf:"bytes,8,opt,name=editor,proto3" json:"editor,omitempty"`
- Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"`
- Pinned bool `protobuf:"varint,10,opt,name=pinned,proto3" json:"pinned,omitempty"`
// force_default_config indicates that the workspace should be created with
// the default configuration instead of the configuration provided in
// `.gitpod.yml` file
- ForceDefaultConfig bool `protobuf:"varint,11,opt,name=force_default_config,json=forceDefaultConfig,proto3" json:"force_default_config,omitempty"`
+ //
+ // Deprecated: Do not use.
+ ForceDefaultConfig bool `protobuf:"varint,4,opt,name=force_default_config,json=forceDefaultConfig,proto3" json:"force_default_config,omitempty"`
}
func (x *CreateAndStartWorkspaceRequest) Reset() {
@@ -738,18 +897,11 @@ func (*CreateAndStartWorkspaceRequest) Descriptor() ([]byte, []int) {
return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{6}
}
-func (x *CreateAndStartWorkspaceRequest) GetOrganizationId() string {
- if x != nil {
- return x.OrganizationId
- }
- return ""
-}
-
-func (x *CreateAndStartWorkspaceRequest) GetConfigurationId() string {
+func (x *CreateAndStartWorkspaceRequest) GetMetadata() *WorkspaceMetadata {
if x != nil {
- return x.ConfigurationId
+ return x.Metadata
}
- return ""
+ return nil
}
func (m *CreateAndStartWorkspaceRequest) GetSource() isCreateAndStartWorkspaceRequest_Source {
@@ -759,63 +911,21 @@ func (m *CreateAndStartWorkspaceRequest) GetSource() isCreateAndStartWorkspaceRe
return nil
}
-func (x *CreateAndStartWorkspaceRequest) GetGit() *CreateAndStartWorkspaceRequest_Git {
- if x, ok := x.GetSource().(*CreateAndStartWorkspaceRequest_Git_); ok {
- return x.Git
- }
- return nil
-}
-
-// Deprecated: Do not use.
-func (x *CreateAndStartWorkspaceRequest) GetContextUrl() string {
+func (x *CreateAndStartWorkspaceRequest) GetContextUrl() *CreateAndStartWorkspaceRequest_ContextURL {
if x, ok := x.GetSource().(*CreateAndStartWorkspaceRequest_ContextUrl); ok {
return x.ContextUrl
}
- return ""
-}
-
-func (x *CreateAndStartWorkspaceRequest) GetAdditionalEnvVariables() []*WorkspaceEnvironmentVariable {
- if x != nil {
- return x.AdditionalEnvVariables
- }
return nil
}
-func (x *CreateAndStartWorkspaceRequest) GetRegion() string {
- if x != nil {
- return x.Region
- }
- return ""
-}
-
-func (x *CreateAndStartWorkspaceRequest) GetWorkspaceClass() string {
- if x != nil {
- return x.WorkspaceClass
- }
- return ""
-}
-
-func (x *CreateAndStartWorkspaceRequest) GetEditor() *EditorReference {
- if x != nil {
- return x.Editor
+func (x *CreateAndStartWorkspaceRequest) GetSpec() *WorkspaceSpec {
+ if x, ok := x.GetSource().(*CreateAndStartWorkspaceRequest_Spec); ok {
+ return x.Spec
}
return nil
}
-func (x *CreateAndStartWorkspaceRequest) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *CreateAndStartWorkspaceRequest) GetPinned() bool {
- if x != nil {
- return x.Pinned
- }
- return false
-}
-
+// Deprecated: Do not use.
func (x *CreateAndStartWorkspaceRequest) GetForceDefaultConfig() bool {
if x != nil {
return x.ForceDefaultConfig
@@ -827,25 +937,20 @@ type isCreateAndStartWorkspaceRequest_Source interface {
isCreateAndStartWorkspaceRequest_Source()
}
-type CreateAndStartWorkspaceRequest_Git_ struct {
- // git describes the source refer of workspace
- // Obtain available git using the ContextService.ParseContext operation if
- // not sure about it.
- Git *CreateAndStartWorkspaceRequest_Git `protobuf:"bytes,3,opt,name=git,proto3,oneof"`
-}
-
type CreateAndStartWorkspaceRequest_ContextUrl struct {
- // context_url is for backward compatiblity with the current dashboard, use
- // ContextService.ParseContext get get a Git source instead
- //
- // Deprecated: Do not use.
- ContextUrl string `protobuf:"bytes,4,opt,name=context_url,json=contextUrl,proto3,oneof"`
+ // context_url is the URL from which the workspace is created
+ ContextUrl *CreateAndStartWorkspaceRequest_ContextURL `protobuf:"bytes,2,opt,name=context_url,json=contextUrl,proto3,oneof"`
}
-func (*CreateAndStartWorkspaceRequest_Git_) isCreateAndStartWorkspaceRequest_Source() {}
+type CreateAndStartWorkspaceRequest_Spec struct {
+ // spec is the configuration of the workspace that's required for the to start the workspace
+ Spec *WorkspaceSpec `protobuf:"bytes,3,opt,name=spec,proto3,oneof"`
+}
func (*CreateAndStartWorkspaceRequest_ContextUrl) isCreateAndStartWorkspaceRequest_Source() {}
+func (*CreateAndStartWorkspaceRequest_Spec) isCreateAndStartWorkspaceRequest_Source() {}
+
type CreateAndStartWorkspaceResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -901,8 +1006,9 @@ type StartWorkspaceRequest struct {
// workspace_id specifies the workspace that is going to start
//
// +required
- WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"`
- ForceDefaultConfig bool `protobuf:"varint,2,opt,name=force_default_config,json=forceDefaultConfig,proto3" json:"force_default_config,omitempty"`
+ WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"`
+ // Deprecated: Do not use.
+ ForceDefaultConfig bool `protobuf:"varint,2,opt,name=force_default_config,json=forceDefaultConfig,proto3" json:"force_default_config,omitempty"`
}
func (x *StartWorkspaceRequest) Reset() {
@@ -944,6 +1050,7 @@ func (x *StartWorkspaceRequest) GetWorkspaceId() string {
return ""
}
+// Deprecated: Do not use.
func (x *StartWorkspaceRequest) GetForceDefaultConfig() bool {
if x != nil {
return x.ForceDefaultConfig
@@ -1393,44 +1500,14 @@ type Workspace struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
+ // ID is a unique identifier of this workspace. No other workspace with the same name must be managed by this workspace manager
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // prebuild indicates it is a prebuild
- // TODO(ak) model prebuilds as a separate resource
- Prebuild bool `protobuf:"varint,2,opt,name=prebuild,proto3" json:"prebuild,omitempty"`
- OrganizationId string `protobuf:"bytes,3,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"`
- Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
- Pinned bool `protobuf:"varint,5,opt,name=pinned,proto3" json:"pinned,omitempty"`
- Status *WorkspaceStatus `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"`
- // additional_environment_variables provide additional environment variables
- // which take precedence over environment variables provided by the project
- // and user.
- //
- // +optional
- AdditionalEnvironmentVariables []*WorkspaceEnvironmentVariable `protobuf:"bytes,7,rep,name=additional_environment_variables,json=additionalEnvironmentVariables,proto3" json:"additional_environment_variables,omitempty"`
- // region specifies the region in which the workspace will be created.
- // Obtain available regions using the ListRegions operation.
- //
- // +optional defaults to the user's default region
- Region string `protobuf:"bytes,8,opt,name=region,proto3" json:"region,omitempty"`
- // workspace_class specifies the workspace class with which to create the
- // workspace. Obtain available workspace classes using the ListWorkspaceClass
- // operation.
- //
- // +optional defaults to the class configured on the project or the cluster's
- // default class.
- WorkspaceClass string `protobuf:"bytes,9,opt,name=workspace_class,json=workspaceClass,proto3" json:"workspace_class,omitempty"`
- // editor specifies the editor that will be used with this workspace.
- // Obtain available editors using the EditorService.ListEditors operation.
- //
- // +optional defaults to the default editor of the user
- Editor *EditorReference `protobuf:"bytes,10,opt,name=editor,proto3" json:"editor,omitempty"`
- // context_url is the normalized URL from which the workspace was created
- // TODO(ak) replace with resolveContextURL API
- ContextUrl string `protobuf:"bytes,11,opt,name=context_url,json=contextUrl,proto3" json:"context_url,omitempty"`
- // Prebuild ID is the unique identifier of the prebuild
- // from which this workspace was created
- // +optional if empty then this workspace was not created from a prebuild
- PrebuildId string `protobuf:"bytes,12,opt,name=prebuild_id,json=prebuildId,proto3" json:"prebuild_id,omitempty"`
+ // Metadata is data associated with this workspace that's required for other parts of Gitpod to function
+ Metadata *WorkspaceMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
+ // Spec is the configuration of the workspace that's required for the ws-manager to start the workspace
+ Spec *WorkspaceSpec `protobuf:"bytes,3,opt,name=spec,proto3" json:"spec,omitempty"`
+ // Status is the current status of the workspace
+ Status *WorkspaceStatus `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"`
}
func (x *Workspace) Reset() {
@@ -1472,129 +1549,185 @@ func (x *Workspace) GetId() string {
return ""
}
-func (x *Workspace) GetPrebuild() bool {
+func (x *Workspace) GetMetadata() *WorkspaceMetadata {
if x != nil {
- return x.Prebuild
+ return x.Metadata
}
- return false
+ return nil
}
-func (x *Workspace) GetOrganizationId() string {
+func (x *Workspace) GetSpec() *WorkspaceSpec {
if x != nil {
- return x.OrganizationId
+ return x.Spec
}
- return ""
+ return nil
}
-func (x *Workspace) GetName() string {
+func (x *Workspace) GetStatus() *WorkspaceStatus {
if x != nil {
- return x.Name
+ return x.Status
}
- return ""
+ return nil
}
-func (x *Workspace) GetPinned() bool {
- if x != nil {
- return x.Pinned
+// WorkspaceMetadata is data associated with a workspace that's required for other parts of the system to function
+type WorkspaceMetadata struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // owner_id is the ID of the Gitpod user to whom we'll bill this workspace and who we consider responsible for its content
+ OwnerId string `protobuf:"bytes,1,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"`
+ // organization_id is the ID of the organization that contains the workspace
+ OrganizationId string `protobuf:"bytes,2,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"`
+ // configuration_id is the ID of the configuration used by this workspace
+ ConfigurationId string `protobuf:"bytes,3,opt,name=configuration_id,json=configurationId,proto3" json:"configuration_id,omitempty"`
+ // annotations are key/value pairs that gets attached to the workspace.
+ // +internal - not yet implemented
+ Annotations map[string]string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // name is the name of the workspace as specified by the user
+ Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
+ // pinned indicates whether the workspace is pinned
+ Pinned bool `protobuf:"varint,6,opt,name=pinned,proto3" json:"pinned,omitempty"`
+ // original_context_url is the normalized URL from which the workspace was created
+ OriginalContextUrl string `protobuf:"bytes,7,opt,name=original_context_url,json=originalContextUrl,proto3" json:"original_context_url,omitempty"`
+}
+
+func (x *WorkspaceMetadata) Reset() {
+ *x = WorkspaceMetadata{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[19]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
- return false
}
-func (x *Workspace) GetStatus() *WorkspaceStatus {
- if x != nil {
- return x.Status
+func (x *WorkspaceMetadata) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WorkspaceMetadata) ProtoMessage() {}
+
+func (x *WorkspaceMetadata) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[19]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
}
- return nil
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use WorkspaceMetadata.ProtoReflect.Descriptor instead.
+func (*WorkspaceMetadata) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{19}
}
-func (x *Workspace) GetAdditionalEnvironmentVariables() []*WorkspaceEnvironmentVariable {
+func (x *WorkspaceMetadata) GetOwnerId() string {
if x != nil {
- return x.AdditionalEnvironmentVariables
+ return x.OwnerId
}
- return nil
+ return ""
}
-func (x *Workspace) GetRegion() string {
+func (x *WorkspaceMetadata) GetOrganizationId() string {
if x != nil {
- return x.Region
+ return x.OrganizationId
}
return ""
}
-func (x *Workspace) GetWorkspaceClass() string {
+func (x *WorkspaceMetadata) GetConfigurationId() string {
if x != nil {
- return x.WorkspaceClass
+ return x.ConfigurationId
}
return ""
}
-func (x *Workspace) GetEditor() *EditorReference {
+func (x *WorkspaceMetadata) GetAnnotations() map[string]string {
if x != nil {
- return x.Editor
+ return x.Annotations
}
return nil
}
-func (x *Workspace) GetContextUrl() string {
+func (x *WorkspaceMetadata) GetName() string {
if x != nil {
- return x.ContextUrl
+ return x.Name
}
return ""
}
-func (x *Workspace) GetPrebuildId() string {
+func (x *WorkspaceMetadata) GetPinned() bool {
if x != nil {
- return x.PrebuildId
+ return x.Pinned
+ }
+ return false
+}
+
+func (x *WorkspaceMetadata) GetOriginalContextUrl() string {
+ if x != nil {
+ return x.OriginalContextUrl
}
return ""
}
-type WorkspaceStatus struct {
+// WorkspaceSpec specifies the configuration of a workspace for a workspace start
+type WorkspaceSpec struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // Phase is a simple, high-level summary of where the workspace is in its
- // lifecycle. The phase is not intended to be a comprehensive rollup of
- // observations of the workspace state, nor is it intended to be a
- // comprehensive state machine.
- Phase *WorkspacePhase `protobuf:"bytes,1,opt,name=phase,proto3" json:"phase,omitempty"`
- // message is an optional human-readable message detailing the current phase
- Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
- // workspace_url is the URL of the workspace. Only present when the phase is
- // running.
- WorkspaceUrl string `protobuf:"bytes,3,opt,name=workspace_url,json=workspaceUrl,proto3" json:"workspace_url,omitempty"`
- // git_status details the Git working copy status of the workspace.
- // Note: this is a best-effort field and more often than not will not be
- // present. Its absence does not indicate the absence of a working copy.
- GitStatus *WorkspaceGitStatus `protobuf:"bytes,4,opt,name=git_status,json=gitStatus,proto3" json:"git_status,omitempty"`
- // ports lists the network ports currently available/known of this workspace
- Ports []*WorkspacePort `protobuf:"bytes,5,rep,name=ports,proto3" json:"ports,omitempty"`
- // Admission describes who can access a workspace instance and its ports.
- Admission AdmissionLevel `protobuf:"varint,6,opt,name=admission,proto3,enum=gitpod.v1.AdmissionLevel" json:"admission,omitempty"`
- // Instance ID is the unique identifier of the workspace instance
- InstanceId string `protobuf:"bytes,7,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
- // Conditions contains observations of the workspace's current phase.
- Conditions *WorkspaceConditions `protobuf:"bytes,8,opt,name=conditions,proto3" json:"conditions,omitempty"`
-}
-
-func (x *WorkspaceStatus) Reset() {
- *x = WorkspaceStatus{}
+ // initializer configures how the workspace is to be initialized
+ Initializer *WorkspaceInitializer `protobuf:"bytes,1,opt,name=initializer,proto3" json:"initializer,omitempty"`
+ // Type denots the kind of workspace we ought to start
+ Type WorkspaceSpec_WorkspaceType `protobuf:"varint,2,opt,name=type,proto3,enum=gitpod.v1.WorkspaceSpec_WorkspaceType" json:"type,omitempty"`
+ // ports is the set of ports which ought to be exposed to the internet
+ Ports []*WorkspacePort `protobuf:"bytes,3,rep,name=ports,proto3" json:"ports,omitempty"`
+ // envvars are user-defined environment variables which ought to be available in the workspace (shim'ed environment)
+ EnvironmentVariables []*EnvironmentVariable `protobuf:"bytes,4,rep,name=environment_variables,json=environmentVariables,proto3" json:"environment_variables,omitempty"`
+ // Git configures the Git user in the workspace
+ Git *WorkspaceSpec_GitSpec `protobuf:"bytes,5,opt,name=git,proto3" json:"git,omitempty"`
+ // Timeout configures the workspace timeout
+ Timeout *WorkspaceSpec_Timeout `protobuf:"bytes,6,opt,name=timeout,proto3" json:"timeout,omitempty"`
+ // admission controlls who can access the workspace and its ports.
+ Admission AdmissionLevel `protobuf:"varint,7,opt,name=admission,proto3,enum=gitpod.v1.AdmissionLevel" json:"admission,omitempty"`
+ // Class denotes the class of the workspace we ought to start
+ Class string `protobuf:"bytes,8,opt,name=class,proto3" json:"class,omitempty"`
+ // ssh_public_keys is user's uploaded ssh public keys
+ SshPublicKeys []string `protobuf:"bytes,9,rep,name=ssh_public_keys,json=sshPublicKeys,proto3" json:"ssh_public_keys,omitempty"`
+ // subassembly_references is a list of workspace IDs that this workspace depends on.
+ // For example:
+ //
+ // index.docker.io/gitpod-io/subassmeblies/code:latest
+ SubassemblyReferences []string `protobuf:"bytes,10,rep,name=subassembly_references,json=subassemblyReferences,proto3" json:"subassembly_references,omitempty"`
+ // last_user_activity is the time when the user last interacted with the workspace
+ LastUserActivity *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=last_user_activity,json=lastUserActivity,proto3" json:"last_user_activity,omitempty"`
+ // log_url is the URL where we stream the workspace's logs to.
+ // Can be changed when the workspace is PENDING or STOPPED.
+ LogUrl string `protobuf:"bytes,12,opt,name=log_url,json=logUrl,proto3" json:"log_url,omitempty"`
+ Editor *EditorReference `protobuf:"bytes,13,opt,name=editor,proto3" json:"editor,omitempty"`
+}
+
+func (x *WorkspaceSpec) Reset() {
+ *x = WorkspaceSpec{}
if protoimpl.UnsafeEnabled {
- mi := &file_gitpod_v1_workspace_proto_msgTypes[19]
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkspaceStatus) String() string {
+func (x *WorkspaceSpec) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkspaceStatus) ProtoMessage() {}
+func (*WorkspaceSpec) ProtoMessage() {}
-func (x *WorkspaceStatus) ProtoReflect() protoreflect.Message {
- mi := &file_gitpod_v1_workspace_proto_msgTypes[19]
+func (x *WorkspaceSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1605,97 +1738,151 @@ func (x *WorkspaceStatus) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use WorkspaceStatus.ProtoReflect.Descriptor instead.
-func (*WorkspaceStatus) Descriptor() ([]byte, []int) {
- return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{19}
+// Deprecated: Use WorkspaceSpec.ProtoReflect.Descriptor instead.
+func (*WorkspaceSpec) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{20}
}
-func (x *WorkspaceStatus) GetPhase() *WorkspacePhase {
+func (x *WorkspaceSpec) GetInitializer() *WorkspaceInitializer {
if x != nil {
- return x.Phase
+ return x.Initializer
}
return nil
}
-func (x *WorkspaceStatus) GetMessage() string {
+func (x *WorkspaceSpec) GetType() WorkspaceSpec_WorkspaceType {
if x != nil {
- return x.Message
+ return x.Type
}
- return ""
+ return WorkspaceSpec_WORKSPACE_TYPE_UNSPECIFIED
}
-func (x *WorkspaceStatus) GetWorkspaceUrl() string {
+func (x *WorkspaceSpec) GetPorts() []*WorkspacePort {
if x != nil {
- return x.WorkspaceUrl
+ return x.Ports
}
- return ""
+ return nil
}
-func (x *WorkspaceStatus) GetGitStatus() *WorkspaceGitStatus {
+func (x *WorkspaceSpec) GetEnvironmentVariables() []*EnvironmentVariable {
if x != nil {
- return x.GitStatus
+ return x.EnvironmentVariables
}
return nil
}
-func (x *WorkspaceStatus) GetPorts() []*WorkspacePort {
+func (x *WorkspaceSpec) GetGit() *WorkspaceSpec_GitSpec {
if x != nil {
- return x.Ports
+ return x.Git
}
return nil
}
-func (x *WorkspaceStatus) GetAdmission() AdmissionLevel {
+func (x *WorkspaceSpec) GetTimeout() *WorkspaceSpec_Timeout {
if x != nil {
- return x.Admission
+ return x.Timeout
}
- return AdmissionLevel_ADMISSION_LEVEL_UNSPECIFIED
+ return nil
}
-func (x *WorkspaceStatus) GetInstanceId() string {
+func (x *WorkspaceSpec) GetAdmission() AdmissionLevel {
if x != nil {
- return x.InstanceId
+ return x.Admission
+ }
+ return AdmissionLevel_ADMISSION_LEVEL_UNSPECIFIED
+}
+
+func (x *WorkspaceSpec) GetClass() string {
+ if x != nil {
+ return x.Class
}
return ""
}
-func (x *WorkspaceStatus) GetConditions() *WorkspaceConditions {
+func (x *WorkspaceSpec) GetSshPublicKeys() []string {
if x != nil {
- return x.Conditions
+ return x.SshPublicKeys
+ }
+ return nil
+}
+
+func (x *WorkspaceSpec) GetSubassemblyReferences() []string {
+ if x != nil {
+ return x.SubassemblyReferences
+ }
+ return nil
+}
+
+func (x *WorkspaceSpec) GetLastUserActivity() *timestamppb.Timestamp {
+ if x != nil {
+ return x.LastUserActivity
+ }
+ return nil
+}
+
+func (x *WorkspaceSpec) GetLogUrl() string {
+ if x != nil {
+ return x.LogUrl
+ }
+ return ""
+}
+
+func (x *WorkspaceSpec) GetEditor() *EditorReference {
+ if x != nil {
+ return x.Editor
}
return nil
}
-type WorkspaceConditions struct {
+// WorkspaceStatus describes a workspace status
+type WorkspaceStatus struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // failed contains technical details for the failure of the workspace.
- // +optional If this field is empty, the workspace has not failed.
- Failed string `protobuf:"bytes,1,opt,name=failed,proto3" json:"failed,omitempty"`
- // timeout contains the reason the workspace has timed out.
- // +optional If this field is empty, the workspace has not timed out.
- Timeout string `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
+ // version of the status update. Workspace instances themselves are unversioned,
+ // but their statuus has different versions.
+ // The value of this field has no semantic meaning (e.g. don't interpret it as
+ // as a timestemp), but it can be used to impose a partial order.
+ // If a.status_version < b.status_version then a was the status before b.
+ StatusVersion uint64 `protobuf:"varint,1,opt,name=status_version,json=statusVersion,proto3" json:"status_version,omitempty"`
+ // the phase of a workspace is a simple, high-level summary of where the workspace is in its lifecycle
+ Phase *WorkspacePhase `protobuf:"bytes,2,opt,name=phase,proto3" json:"phase,omitempty"`
+ // workspace_url contains the URL at which the workspace can be accessed.
+ // This field is only set if the workspace is running.
+ WorkspaceUrl string `protobuf:"bytes,3,opt,name=workspace_url,json=workspaceUrl,proto3" json:"workspace_url,omitempty"`
+ // conditions detail the current state of the workspace
+ Conditions *WorkspaceStatus_WorkspaceConditions `protobuf:"bytes,4,opt,name=conditions,proto3" json:"conditions,omitempty"`
+ // prebuild_result contains the result of a prebuild. Only if the workspace is
+ PrebuildResult *WorkspaceStatus_PrebuildResult `protobuf:"bytes,5,opt,name=prebuild_result,json=prebuildResult,proto3" json:"prebuild_result,omitempty"`
+ // git_status details the Git working copy status of the workspace.
+ // Note: this is a best-effort field and more often than not will not be present. Its absence does not
+ // indicate the absence of a working copy.
+ GitStatus *WorkspaceGitStatus `protobuf:"bytes,6,opt,name=git_status,json=gitStatus,proto3" json:"git_status,omitempty"`
+ // instance_id is the ID of the workspace instance - do not use, interpret or rely on this field
+ // unless you know what you're doing.
+ //
+ // Deprecated: Do not use.
+ InstanceId string `protobuf:"bytes,7,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
}
-func (x *WorkspaceConditions) Reset() {
- *x = WorkspaceConditions{}
+func (x *WorkspaceStatus) Reset() {
+ *x = WorkspaceStatus{}
if protoimpl.UnsafeEnabled {
- mi := &file_gitpod_v1_workspace_proto_msgTypes[20]
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkspaceConditions) String() string {
+func (x *WorkspaceStatus) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkspaceConditions) ProtoMessage() {}
+func (*WorkspaceStatus) ProtoMessage() {}
-func (x *WorkspaceConditions) ProtoReflect() protoreflect.Message {
- mi := &file_gitpod_v1_workspace_proto_msgTypes[20]
+func (x *WorkspaceStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1706,21 +1893,57 @@ func (x *WorkspaceConditions) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use WorkspaceConditions.ProtoReflect.Descriptor instead.
-func (*WorkspaceConditions) Descriptor() ([]byte, []int) {
- return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{20}
+// Deprecated: Use WorkspaceStatus.ProtoReflect.Descriptor instead.
+func (*WorkspaceStatus) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{21}
}
-func (x *WorkspaceConditions) GetFailed() string {
+func (x *WorkspaceStatus) GetStatusVersion() uint64 {
if x != nil {
- return x.Failed
+ return x.StatusVersion
+ }
+ return 0
+}
+
+func (x *WorkspaceStatus) GetPhase() *WorkspacePhase {
+ if x != nil {
+ return x.Phase
+ }
+ return nil
+}
+
+func (x *WorkspaceStatus) GetWorkspaceUrl() string {
+ if x != nil {
+ return x.WorkspaceUrl
}
return ""
}
-func (x *WorkspaceConditions) GetTimeout() string {
+func (x *WorkspaceStatus) GetConditions() *WorkspaceStatus_WorkspaceConditions {
if x != nil {
- return x.Timeout
+ return x.Conditions
+ }
+ return nil
+}
+
+func (x *WorkspaceStatus) GetPrebuildResult() *WorkspaceStatus_PrebuildResult {
+ if x != nil {
+ return x.PrebuildResult
+ }
+ return nil
+}
+
+func (x *WorkspaceStatus) GetGitStatus() *WorkspaceGitStatus {
+ if x != nil {
+ return x.GitStatus
+ }
+ return nil
+}
+
+// Deprecated: Do not use.
+func (x *WorkspaceStatus) GetInstanceId() string {
+ if x != nil {
+ return x.InstanceId
}
return ""
}
@@ -1733,7 +1956,7 @@ type WorkspacePort struct {
// port number
Port uint64 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
// policy of this port
- Policy WorkspacePort_Policy `protobuf:"varint,2,opt,name=policy,proto3,enum=gitpod.v1.WorkspacePort_Policy" json:"policy,omitempty"`
+ Admission AdmissionLevel `protobuf:"varint,2,opt,name=admission,proto3,enum=gitpod.v1.AdmissionLevel" json:"admission,omitempty"`
// url that can be used to access the port
Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"`
// backend protocol of this port
@@ -1743,7 +1966,7 @@ type WorkspacePort struct {
func (x *WorkspacePort) Reset() {
*x = WorkspacePort{}
if protoimpl.UnsafeEnabled {
- mi := &file_gitpod_v1_workspace_proto_msgTypes[21]
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1756,7 +1979,7 @@ func (x *WorkspacePort) String() string {
func (*WorkspacePort) ProtoMessage() {}
func (x *WorkspacePort) ProtoReflect() protoreflect.Message {
- mi := &file_gitpod_v1_workspace_proto_msgTypes[21]
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1769,7 +1992,7 @@ func (x *WorkspacePort) ProtoReflect() protoreflect.Message {
// Deprecated: Use WorkspacePort.ProtoReflect.Descriptor instead.
func (*WorkspacePort) Descriptor() ([]byte, []int) {
- return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{21}
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{22}
}
func (x *WorkspacePort) GetPort() uint64 {
@@ -1779,11 +2002,11 @@ func (x *WorkspacePort) GetPort() uint64 {
return 0
}
-func (x *WorkspacePort) GetPolicy() WorkspacePort_Policy {
+func (x *WorkspacePort) GetAdmission() AdmissionLevel {
if x != nil {
- return x.Policy
+ return x.Admission
}
- return WorkspacePort_POLICY_UNSPECIFIED
+ return AdmissionLevel_ADMISSION_LEVEL_UNSPECIFIED
}
func (x *WorkspacePort) GetUrl() string {
@@ -1831,7 +2054,7 @@ type WorkspaceGitStatus struct {
func (x *WorkspaceGitStatus) Reset() {
*x = WorkspaceGitStatus{}
if protoimpl.UnsafeEnabled {
- mi := &file_gitpod_v1_workspace_proto_msgTypes[22]
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1844,7 +2067,7 @@ func (x *WorkspaceGitStatus) String() string {
func (*WorkspaceGitStatus) ProtoMessage() {}
func (x *WorkspaceGitStatus) ProtoReflect() protoreflect.Message {
- mi := &file_gitpod_v1_workspace_proto_msgTypes[22]
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1857,7 +2080,7 @@ func (x *WorkspaceGitStatus) ProtoReflect() protoreflect.Message {
// Deprecated: Use WorkspaceGitStatus.ProtoReflect.Descriptor instead.
func (*WorkspaceGitStatus) Descriptor() ([]byte, []int) {
- return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{22}
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{23}
}
func (x *WorkspaceGitStatus) GetCloneUrl() string {
@@ -1935,7 +2158,7 @@ type WorkspacePhase struct {
func (x *WorkspacePhase) Reset() {
*x = WorkspacePhase{}
if protoimpl.UnsafeEnabled {
- mi := &file_gitpod_v1_workspace_proto_msgTypes[23]
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1948,7 +2171,7 @@ func (x *WorkspacePhase) String() string {
func (*WorkspacePhase) ProtoMessage() {}
func (x *WorkspacePhase) ProtoReflect() protoreflect.Message {
- mi := &file_gitpod_v1_workspace_proto_msgTypes[23]
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[24]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1961,7 +2184,7 @@ func (x *WorkspacePhase) ProtoReflect() protoreflect.Message {
// Deprecated: Use WorkspacePhase.ProtoReflect.Descriptor instead.
func (*WorkspacePhase) Descriptor() ([]byte, []int) {
- return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{23}
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{24}
}
func (x *WorkspacePhase) GetName() WorkspacePhase_Phase {
@@ -1978,32 +2201,1318 @@ func (x *WorkspacePhase) GetLastTransitionTime() *timestamppb.Timestamp {
return nil
}
-type WorkspaceEnvironmentVariable struct {
+// WorkspaceInitializer specifies how a workspace is to be initialized
+type WorkspaceInitializer struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+ Specs []*WorkspaceInitializer_Spec `protobuf:"bytes,1,rep,name=specs,proto3" json:"specs,omitempty"`
}
-func (x *WorkspaceEnvironmentVariable) Reset() {
- *x = WorkspaceEnvironmentVariable{}
+func (x *WorkspaceInitializer) Reset() {
+ *x = WorkspaceInitializer{}
if protoimpl.UnsafeEnabled {
- mi := &file_gitpod_v1_workspace_proto_msgTypes[24]
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *WorkspaceEnvironmentVariable) String() string {
+func (x *WorkspaceInitializer) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*WorkspaceEnvironmentVariable) ProtoMessage() {}
+func (*WorkspaceInitializer) ProtoMessage() {}
-func (x *WorkspaceEnvironmentVariable) ProtoReflect() protoreflect.Message {
- mi := &file_gitpod_v1_workspace_proto_msgTypes[24]
+func (x *WorkspaceInitializer) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[25]
+ 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 WorkspaceInitializer.ProtoReflect.Descriptor instead.
+func (*WorkspaceInitializer) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *WorkspaceInitializer) GetSpecs() []*WorkspaceInitializer_Spec {
+ if x != nil {
+ return x.Specs
+ }
+ return nil
+}
+
+type GitInitializer struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // remote_uri is the Git remote origin
+ RemoteUri string `protobuf:"bytes,1,opt,name=remote_uri,json=remoteUri,proto3" json:"remote_uri,omitempty"`
+ // upstream_Remote_uri is the fork upstream of a repository
+ UpstreamRemoteUri string `protobuf:"bytes,2,opt,name=upstream_remote_uri,json=upstreamRemoteUri,proto3" json:"upstream_remote_uri,omitempty"`
+ // the target mode determines what gets checked out
+ TargetMode GitInitializer_CloneTargetMode `protobuf:"varint,3,opt,name=target_mode,json=targetMode,proto3,enum=gitpod.v1.GitInitializer_CloneTargetMode" json:"target_mode,omitempty"`
+ // the value for the clone target mode - use depends on the target mode
+ CloneTaget string `protobuf:"bytes,4,opt,name=clone_taget,json=cloneTaget,proto3" json:"clone_taget,omitempty"`
+ // a path relative to the workspace root in which the code will be checked out to
+ CheckoutLocation string `protobuf:"bytes,5,opt,name=checkout_location,json=checkoutLocation,proto3" json:"checkout_location,omitempty"`
+ // config specifies the Git configuration for this workspace
+ Config *GitInitializer_GitConfig `protobuf:"bytes,6,opt,name=config,proto3" json:"config,omitempty"`
+}
+
+func (x *GitInitializer) Reset() {
+ *x = GitInitializer{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[26]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GitInitializer) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GitInitializer) ProtoMessage() {}
+
+func (x *GitInitializer) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[26]
+ 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 GitInitializer.ProtoReflect.Descriptor instead.
+func (*GitInitializer) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *GitInitializer) GetRemoteUri() string {
+ if x != nil {
+ return x.RemoteUri
+ }
+ return ""
+}
+
+func (x *GitInitializer) GetUpstreamRemoteUri() string {
+ if x != nil {
+ return x.UpstreamRemoteUri
+ }
+ return ""
+}
+
+func (x *GitInitializer) GetTargetMode() GitInitializer_CloneTargetMode {
+ if x != nil {
+ return x.TargetMode
+ }
+ return GitInitializer_CLONE_TARGET_MODE_UNSPECIFIED
+}
+
+func (x *GitInitializer) GetCloneTaget() string {
+ if x != nil {
+ return x.CloneTaget
+ }
+ return ""
+}
+
+func (x *GitInitializer) GetCheckoutLocation() string {
+ if x != nil {
+ return x.CheckoutLocation
+ }
+ return ""
+}
+
+func (x *GitInitializer) GetConfig() *GitInitializer_GitConfig {
+ if x != nil {
+ return x.Config
+ }
+ return nil
+}
+
+type SnapshotInitializer struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // reference of the snapshot to restore
+ SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"`
+}
+
+func (x *SnapshotInitializer) Reset() {
+ *x = SnapshotInitializer{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[27]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *SnapshotInitializer) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SnapshotInitializer) ProtoMessage() {}
+
+func (x *SnapshotInitializer) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[27]
+ 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 SnapshotInitializer.ProtoReflect.Descriptor instead.
+func (*SnapshotInitializer) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{27}
+}
+
+func (x *SnapshotInitializer) GetSnapshotId() string {
+ if x != nil {
+ return x.SnapshotId
+ }
+ return ""
+}
+
+type PrebuildInitializer struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // reference of the prebuild to restore
+ PrebuildId string `protobuf:"bytes,1,opt,name=prebuild_id,json=prebuildId,proto3" json:"prebuild_id,omitempty"`
+}
+
+func (x *PrebuildInitializer) Reset() {
+ *x = PrebuildInitializer{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[28]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PrebuildInitializer) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PrebuildInitializer) ProtoMessage() {}
+
+func (x *PrebuildInitializer) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[28]
+ 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 PrebuildInitializer.ProtoReflect.Descriptor instead.
+func (*PrebuildInitializer) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{28}
+}
+
+func (x *PrebuildInitializer) GetPrebuildId() string {
+ if x != nil {
+ return x.PrebuildId
+ }
+ return ""
+}
+
+// FileDownloadInitializer downloads files and uses them as workspace content.
+type FileDownloadInitializer struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Files []*FileDownloadInitializer_FileInfo `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"`
+ TargetLocation string `protobuf:"bytes,2,opt,name=target_location,json=targetLocation,proto3" json:"target_location,omitempty"`
+}
+
+func (x *FileDownloadInitializer) Reset() {
+ *x = FileDownloadInitializer{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[29]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *FileDownloadInitializer) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FileDownloadInitializer) ProtoMessage() {}
+
+func (x *FileDownloadInitializer) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[29]
+ 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 FileDownloadInitializer.ProtoReflect.Descriptor instead.
+func (*FileDownloadInitializer) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{29}
+}
+
+func (x *FileDownloadInitializer) GetFiles() []*FileDownloadInitializer_FileInfo {
+ if x != nil {
+ return x.Files
+ }
+ return nil
+}
+
+func (x *FileDownloadInitializer) GetTargetLocation() string {
+ if x != nil {
+ return x.TargetLocation
+ }
+ return ""
+}
+
+// GitStatus describes the current Git working copy status, akin to a combination of "git status" and "git branch"
+type GitStatus struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // branch is branch we're currently on
+ Branch string `protobuf:"bytes,1,opt,name=branch,proto3" json:"branch,omitempty"`
+ // latest_commit is the most recent commit on the current branch
+ LatestCommit string `protobuf:"bytes,2,opt,name=latest_commit,json=latestCommit,proto3" json:"latest_commit,omitempty"`
+ // uncommited_files is the number of uncommitted files, possibly truncated
+ UncommitedFiles []string `protobuf:"bytes,3,rep,name=uncommited_files,json=uncommitedFiles,proto3" json:"uncommited_files,omitempty"`
+ // the total number of uncommited files
+ TotalUncommitedFiles int64 `protobuf:"varint,6,opt,name=total_uncommited_files,json=totalUncommitedFiles,proto3" json:"total_uncommited_files,omitempty"`
+ // untracked_files is the number of untracked files in the workspace, possibly truncated
+ UntrackedFiles []string `protobuf:"bytes,4,rep,name=untracked_files,json=untrackedFiles,proto3" json:"untracked_files,omitempty"`
+ // the total number of untracked files
+ TotalUntrackedFiles int64 `protobuf:"varint,7,opt,name=total_untracked_files,json=totalUntrackedFiles,proto3" json:"total_untracked_files,omitempty"`
+ // unpushed_commits is the number of unpushed changes in the workspace, possibly truncated
+ UnpushedCommits []string `protobuf:"bytes,5,rep,name=unpushed_commits,json=unpushedCommits,proto3" json:"unpushed_commits,omitempty"`
+ // the total number of unpushed changes
+ TotalUnpushedCommits int64 `protobuf:"varint,8,opt,name=total_unpushed_commits,json=totalUnpushedCommits,proto3" json:"total_unpushed_commits,omitempty"`
+}
+
+func (x *GitStatus) Reset() {
+ *x = GitStatus{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[30]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GitStatus) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GitStatus) ProtoMessage() {}
+
+func (x *GitStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[30]
+ 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 GitStatus.ProtoReflect.Descriptor instead.
+func (*GitStatus) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{30}
+}
+
+func (x *GitStatus) GetBranch() string {
+ if x != nil {
+ return x.Branch
+ }
+ return ""
+}
+
+func (x *GitStatus) GetLatestCommit() string {
+ if x != nil {
+ return x.LatestCommit
+ }
+ return ""
+}
+
+func (x *GitStatus) GetUncommitedFiles() []string {
+ if x != nil {
+ return x.UncommitedFiles
+ }
+ return nil
+}
+
+func (x *GitStatus) GetTotalUncommitedFiles() int64 {
+ if x != nil {
+ return x.TotalUncommitedFiles
+ }
+ return 0
+}
+
+func (x *GitStatus) GetUntrackedFiles() []string {
+ if x != nil {
+ return x.UntrackedFiles
+ }
+ return nil
+}
+
+func (x *GitStatus) GetTotalUntrackedFiles() int64 {
+ if x != nil {
+ return x.TotalUntrackedFiles
+ }
+ return 0
+}
+
+func (x *GitStatus) GetUnpushedCommits() []string {
+ if x != nil {
+ return x.UnpushedCommits
+ }
+ return nil
+}
+
+func (x *GitStatus) GetTotalUnpushedCommits() int64 {
+ if x != nil {
+ return x.TotalUnpushedCommits
+ }
+ return 0
+}
+
+type UpdateWorkspaceRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // workspace_id specifies the workspace to update
+ //
+ // +required
+ WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"`
+ // metadata is data associated with this workspace that's required for other parts of Gitpod to function
+ Metadata *UpdateWorkspaceRequest_UpdateWorkspaceMetadata `protobuf:"bytes,2,opt,name=metadata,proto3,oneof" json:"metadata,omitempty"`
+ // spec is the configuration of the workspace that's required for the ws-manager to start the workspace
+ Spec *UpdateWorkspaceRequest_UpdateWorkspaceSpec `protobuf:"bytes,3,opt,name=spec,proto3,oneof" json:"spec,omitempty"`
+ // git_status updates the git status of the workspace - this is only here during the migration
+ //
+ // Deprecated: Do not use.
+ GitStatus *WorkspaceGitStatus `protobuf:"bytes,4,opt,name=git_status,json=gitStatus,proto3,oneof" json:"git_status,omitempty"`
+}
+
+func (x *UpdateWorkspaceRequest) Reset() {
+ *x = UpdateWorkspaceRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[31]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateWorkspaceRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateWorkspaceRequest) ProtoMessage() {}
+
+func (x *UpdateWorkspaceRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[31]
+ 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 UpdateWorkspaceRequest.ProtoReflect.Descriptor instead.
+func (*UpdateWorkspaceRequest) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{31}
+}
+
+func (x *UpdateWorkspaceRequest) GetWorkspaceId() string {
+ if x != nil {
+ return x.WorkspaceId
+ }
+ return ""
+}
+
+func (x *UpdateWorkspaceRequest) GetMetadata() *UpdateWorkspaceRequest_UpdateWorkspaceMetadata {
+ if x != nil {
+ return x.Metadata
+ }
+ return nil
+}
+
+func (x *UpdateWorkspaceRequest) GetSpec() *UpdateWorkspaceRequest_UpdateWorkspaceSpec {
+ if x != nil {
+ return x.Spec
+ }
+ return nil
+}
+
+// Deprecated: Do not use.
+func (x *UpdateWorkspaceRequest) GetGitStatus() *WorkspaceGitStatus {
+ if x != nil {
+ return x.GitStatus
+ }
+ return nil
+}
+
+type UpdateWorkspaceResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Workspace *Workspace `protobuf:"bytes,1,opt,name=workspace,proto3" json:"workspace,omitempty"`
+}
+
+func (x *UpdateWorkspaceResponse) Reset() {
+ *x = UpdateWorkspaceResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[32]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateWorkspaceResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateWorkspaceResponse) ProtoMessage() {}
+
+func (x *UpdateWorkspaceResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[32]
+ 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 UpdateWorkspaceResponse.ProtoReflect.Descriptor instead.
+func (*UpdateWorkspaceResponse) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{32}
+}
+
+func (x *UpdateWorkspaceResponse) GetWorkspace() *Workspace {
+ if x != nil {
+ return x.Workspace
+ }
+ return nil
+}
+
+type ParseContextURLRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // context_url is the URL to parse
+ ContextUrl string `protobuf:"bytes,1,opt,name=context_url,json=contextUrl,proto3" json:"context_url,omitempty"`
+ // configuration_id is the ID of the configuration to use
+ ConfigurationId string `protobuf:"bytes,2,opt,name=configuration_id,json=configurationId,proto3" json:"configuration_id,omitempty"`
+}
+
+func (x *ParseContextURLRequest) Reset() {
+ *x = ParseContextURLRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[33]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ParseContextURLRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ParseContextURLRequest) ProtoMessage() {}
+
+func (x *ParseContextURLRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[33]
+ 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 ParseContextURLRequest.ProtoReflect.Descriptor instead.
+func (*ParseContextURLRequest) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{33}
+}
+
+func (x *ParseContextURLRequest) GetContextUrl() string {
+ if x != nil {
+ return x.ContextUrl
+ }
+ return ""
+}
+
+func (x *ParseContextURLRequest) GetConfigurationId() string {
+ if x != nil {
+ return x.ConfigurationId
+ }
+ return ""
+}
+
+type ParseContextURLResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Metadata *WorkspaceMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
+ Spec *WorkspaceSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"`
+}
+
+func (x *ParseContextURLResponse) Reset() {
+ *x = ParseContextURLResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[34]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ParseContextURLResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ParseContextURLResponse) ProtoMessage() {}
+
+func (x *ParseContextURLResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[34]
+ 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 ParseContextURLResponse.ProtoReflect.Descriptor instead.
+func (*ParseContextURLResponse) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{34}
+}
+
+func (x *ParseContextURLResponse) GetMetadata() *WorkspaceMetadata {
+ if x != nil {
+ return x.Metadata
+ }
+ return nil
+}
+
+func (x *ParseContextURLResponse) GetSpec() *WorkspaceSpec {
+ if x != nil {
+ return x.Spec
+ }
+ return nil
+}
+
+type CreateAndStartWorkspaceRequest_ContextURL struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // url is the URL from which the workspace is created
+ Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
+ // workspace_class is the class of the workspace we ought to start
+ WorkspaceClass string `protobuf:"bytes,2,opt,name=workspace_class,json=workspaceClass,proto3" json:"workspace_class,omitempty"`
+ // editor specifies the editor that will be used with this workspace.
+ Editor *EditorReference `protobuf:"bytes,3,opt,name=editor,proto3" json:"editor,omitempty"`
+}
+
+func (x *CreateAndStartWorkspaceRequest_ContextURL) Reset() {
+ *x = CreateAndStartWorkspaceRequest_ContextURL{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[35]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CreateAndStartWorkspaceRequest_ContextURL) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateAndStartWorkspaceRequest_ContextURL) ProtoMessage() {}
+
+func (x *CreateAndStartWorkspaceRequest_ContextURL) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[35]
+ 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 CreateAndStartWorkspaceRequest_ContextURL.ProtoReflect.Descriptor instead.
+func (*CreateAndStartWorkspaceRequest_ContextURL) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{6, 0}
+}
+
+func (x *CreateAndStartWorkspaceRequest_ContextURL) GetUrl() string {
+ if x != nil {
+ return x.Url
+ }
+ return ""
+}
+
+func (x *CreateAndStartWorkspaceRequest_ContextURL) GetWorkspaceClass() string {
+ if x != nil {
+ return x.WorkspaceClass
+ }
+ return ""
+}
+
+func (x *CreateAndStartWorkspaceRequest_ContextURL) GetEditor() *EditorReference {
+ if x != nil {
+ return x.Editor
+ }
+ return nil
+}
+
+// Timeout configures the workspace timeout
+type WorkspaceSpec_Timeout struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // inacitivity is the maximum time of inactivity before the workspace is stopped or paused
+ Inactivity *durationpb.Duration `protobuf:"bytes,1,opt,name=inactivity,proto3" json:"inactivity,omitempty"`
+ // inacitivity is the maximum time of disconnection before the workspace is stopped or paused
+ // set to zero to disable.
+ Disconnected *durationpb.Duration `protobuf:"bytes,2,opt,name=disconnected,proto3" json:"disconnected,omitempty"`
+ // maximum lifetime of the workspace
+ MaximumLifetime *durationpb.Duration `protobuf:"bytes,3,opt,name=maximum_lifetime,json=maximumLifetime,proto3" json:"maximum_lifetime,omitempty"`
+}
+
+func (x *WorkspaceSpec_Timeout) Reset() {
+ *x = WorkspaceSpec_Timeout{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[37]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WorkspaceSpec_Timeout) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WorkspaceSpec_Timeout) ProtoMessage() {}
+
+func (x *WorkspaceSpec_Timeout) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[37]
+ 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 WorkspaceSpec_Timeout.ProtoReflect.Descriptor instead.
+func (*WorkspaceSpec_Timeout) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{20, 0}
+}
+
+func (x *WorkspaceSpec_Timeout) GetInactivity() *durationpb.Duration {
+ if x != nil {
+ return x.Inactivity
+ }
+ return nil
+}
+
+func (x *WorkspaceSpec_Timeout) GetDisconnected() *durationpb.Duration {
+ if x != nil {
+ return x.Disconnected
+ }
+ return nil
+}
+
+func (x *WorkspaceSpec_Timeout) GetMaximumLifetime() *durationpb.Duration {
+ if x != nil {
+ return x.MaximumLifetime
+ }
+ return nil
+}
+
+// GitSpec configures the Git available within the workspace
+type WorkspaceSpec_GitSpec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The Git username
+ Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
+ // The Git email address
+ Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"`
+}
+
+func (x *WorkspaceSpec_GitSpec) Reset() {
+ *x = WorkspaceSpec_GitSpec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[38]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WorkspaceSpec_GitSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WorkspaceSpec_GitSpec) ProtoMessage() {}
+
+func (x *WorkspaceSpec_GitSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[38]
+ 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 WorkspaceSpec_GitSpec.ProtoReflect.Descriptor instead.
+func (*WorkspaceSpec_GitSpec) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{20, 1}
+}
+
+func (x *WorkspaceSpec_GitSpec) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+func (x *WorkspaceSpec_GitSpec) GetEmail() string {
+ if x != nil {
+ return x.Email
+ }
+ return ""
+}
+
+// WorkspaceCondition gives more detailed information as to the state of the workspace. Which condition actually
+// has a value depends on the phase the workspace is in.
+type WorkspaceStatus_WorkspaceConditions struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // failed contains the reason the workspace failed to operate. If this field is empty, the workspace has not failed.
+ Failed string `protobuf:"bytes,1,opt,name=failed,proto3" json:"failed,omitempty"`
+ // failed_reason contains the reason the workspace failed to operate.
+ // This field is only set if the workspace has failed.
+ FailedReason WorkspaceStatus_WorkspaceConditions_FailedReason `protobuf:"varint,2,opt,name=failed_reason,json=failedReason,proto3,enum=gitpod.v1.WorkspaceStatus_WorkspaceConditions_FailedReason" json:"failed_reason,omitempty"`
+ // timeout contains the reason the workspace has timed out. If this field is empty, the workspace has not timed out.
+ Timeout string `protobuf:"bytes,3,opt,name=timeout,proto3" json:"timeout,omitempty"`
+}
+
+func (x *WorkspaceStatus_WorkspaceConditions) Reset() {
+ *x = WorkspaceStatus_WorkspaceConditions{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[39]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WorkspaceStatus_WorkspaceConditions) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WorkspaceStatus_WorkspaceConditions) ProtoMessage() {}
+
+func (x *WorkspaceStatus_WorkspaceConditions) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[39]
+ 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 WorkspaceStatus_WorkspaceConditions.ProtoReflect.Descriptor instead.
+func (*WorkspaceStatus_WorkspaceConditions) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{21, 0}
+}
+
+func (x *WorkspaceStatus_WorkspaceConditions) GetFailed() string {
+ if x != nil {
+ return x.Failed
+ }
+ return ""
+}
+
+func (x *WorkspaceStatus_WorkspaceConditions) GetFailedReason() WorkspaceStatus_WorkspaceConditions_FailedReason {
+ if x != nil {
+ return x.FailedReason
+ }
+ return WorkspaceStatus_WorkspaceConditions_FAILED_REASON_UNSPECIFIED
+}
+
+func (x *WorkspaceStatus_WorkspaceConditions) GetTimeout() string {
+ if x != nil {
+ return x.Timeout
+ }
+ return ""
+}
+
+type WorkspaceStatus_PrebuildResult struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Snapshot points to the content of the prebuild. This string is opaque to the cluster manager,
+ // and must be returned unaltered.
+ Snapshot string `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"`
+ // The prebuild's error message
+ ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
+}
+
+func (x *WorkspaceStatus_PrebuildResult) Reset() {
+ *x = WorkspaceStatus_PrebuildResult{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[40]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WorkspaceStatus_PrebuildResult) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WorkspaceStatus_PrebuildResult) ProtoMessage() {}
+
+func (x *WorkspaceStatus_PrebuildResult) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[40]
+ 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 WorkspaceStatus_PrebuildResult.ProtoReflect.Descriptor instead.
+func (*WorkspaceStatus_PrebuildResult) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{21, 1}
+}
+
+func (x *WorkspaceStatus_PrebuildResult) GetSnapshot() string {
+ if x != nil {
+ return x.Snapshot
+ }
+ return ""
+}
+
+func (x *WorkspaceStatus_PrebuildResult) GetErrorMessage() string {
+ if x != nil {
+ return x.ErrorMessage
+ }
+ return ""
+}
+
+type WorkspaceInitializer_Spec struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Types that are assignable to Spec:
+ //
+ // *WorkspaceInitializer_Spec_Git
+ // *WorkspaceInitializer_Spec_Snapshot
+ // *WorkspaceInitializer_Spec_Prebuild
+ // *WorkspaceInitializer_Spec_Download
+ Spec isWorkspaceInitializer_Spec_Spec `protobuf_oneof:"spec"`
+}
+
+func (x *WorkspaceInitializer_Spec) Reset() {
+ *x = WorkspaceInitializer_Spec{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[41]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *WorkspaceInitializer_Spec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WorkspaceInitializer_Spec) ProtoMessage() {}
+
+func (x *WorkspaceInitializer_Spec) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[41]
+ 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 WorkspaceInitializer_Spec.ProtoReflect.Descriptor instead.
+func (*WorkspaceInitializer_Spec) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{25, 0}
+}
+
+func (m *WorkspaceInitializer_Spec) GetSpec() isWorkspaceInitializer_Spec_Spec {
+ if m != nil {
+ return m.Spec
+ }
+ return nil
+}
+
+func (x *WorkspaceInitializer_Spec) GetGit() *GitInitializer {
+ if x, ok := x.GetSpec().(*WorkspaceInitializer_Spec_Git); ok {
+ return x.Git
+ }
+ return nil
+}
+
+func (x *WorkspaceInitializer_Spec) GetSnapshot() *SnapshotInitializer {
+ if x, ok := x.GetSpec().(*WorkspaceInitializer_Spec_Snapshot); ok {
+ return x.Snapshot
+ }
+ return nil
+}
+
+func (x *WorkspaceInitializer_Spec) GetPrebuild() *PrebuildInitializer {
+ if x, ok := x.GetSpec().(*WorkspaceInitializer_Spec_Prebuild); ok {
+ return x.Prebuild
+ }
+ return nil
+}
+
+func (x *WorkspaceInitializer_Spec) GetDownload() *FileDownloadInitializer {
+ if x, ok := x.GetSpec().(*WorkspaceInitializer_Spec_Download); ok {
+ return x.Download
+ }
+ return nil
+}
+
+type isWorkspaceInitializer_Spec_Spec interface {
+ isWorkspaceInitializer_Spec_Spec()
+}
+
+type WorkspaceInitializer_Spec_Git struct {
+ Git *GitInitializer `protobuf:"bytes,1,opt,name=git,proto3,oneof"`
+}
+
+type WorkspaceInitializer_Spec_Snapshot struct {
+ Snapshot *SnapshotInitializer `protobuf:"bytes,2,opt,name=snapshot,proto3,oneof"`
+}
+
+type WorkspaceInitializer_Spec_Prebuild struct {
+ Prebuild *PrebuildInitializer `protobuf:"bytes,3,opt,name=prebuild,proto3,oneof"`
+}
+
+type WorkspaceInitializer_Spec_Download struct {
+ Download *FileDownloadInitializer `protobuf:"bytes,4,opt,name=download,proto3,oneof"`
+}
+
+func (*WorkspaceInitializer_Spec_Git) isWorkspaceInitializer_Spec_Spec() {}
+
+func (*WorkspaceInitializer_Spec_Snapshot) isWorkspaceInitializer_Spec_Spec() {}
+
+func (*WorkspaceInitializer_Spec_Prebuild) isWorkspaceInitializer_Spec_Spec() {}
+
+func (*WorkspaceInitializer_Spec_Download) isWorkspaceInitializer_Spec_Spec() {}
+
+type GitInitializer_GitConfig struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // custom config values to be set on clone provided through `.gitpod.yml`
+ CustomConfig map[string]string `protobuf:"bytes,1,rep,name=custom_config,json=customConfig,proto3" json:"custom_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // authentication method
+ Authentication GitInitializer_AuthMethod `protobuf:"varint,2,opt,name=authentication,proto3,enum=gitpod.v1.GitInitializer_AuthMethod" json:"authentication,omitempty"`
+ // auth_user is the username used to authenticate the clone
+ AuthUser string `protobuf:"bytes,3,opt,name=auth_user,json=authUser,proto3" json:"auth_user,omitempty"`
+ // auth_password is the password used to authenticate the clone (can also be an API token)
+ AuthPassword string `protobuf:"bytes,4,opt,name=auth_password,json=authPassword,proto3" json:"auth_password,omitempty"`
+ // auth_ots is a URL where one can download the authentication secret (:)
+ // using a GET request.
+ AuthOts string `protobuf:"bytes,5,opt,name=auth_ots,json=authOts,proto3" json:"auth_ots,omitempty"`
+}
+
+func (x *GitInitializer_GitConfig) Reset() {
+ *x = GitInitializer_GitConfig{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[42]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GitInitializer_GitConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GitInitializer_GitConfig) ProtoMessage() {}
+
+func (x *GitInitializer_GitConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[42]
+ 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 GitInitializer_GitConfig.ProtoReflect.Descriptor instead.
+func (*GitInitializer_GitConfig) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{26, 0}
+}
+
+func (x *GitInitializer_GitConfig) GetCustomConfig() map[string]string {
+ if x != nil {
+ return x.CustomConfig
+ }
+ return nil
+}
+
+func (x *GitInitializer_GitConfig) GetAuthentication() GitInitializer_AuthMethod {
+ if x != nil {
+ return x.Authentication
+ }
+ return GitInitializer_AUTH_METHOD_UNSPECIFIED
+}
+
+func (x *GitInitializer_GitConfig) GetAuthUser() string {
+ if x != nil {
+ return x.AuthUser
+ }
+ return ""
+}
+
+func (x *GitInitializer_GitConfig) GetAuthPassword() string {
+ if x != nil {
+ return x.AuthPassword
+ }
+ return ""
+}
+
+func (x *GitInitializer_GitConfig) GetAuthOts() string {
+ if x != nil {
+ return x.AuthOts
+ }
+ return ""
+}
+
+type FileDownloadInitializer_FileInfo struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
+ // file_path is relative to the target_location, e.g. if target_location is in `/workspace/myrepo`
+ // a file_path of `foobar/file` would produce a file in `/workspace/myrepo/foobar/file`.
+ // file_path must include the filename. The FileDownloadInitializer will create any parent directories
+ // necessary to place the file.
+ FilePath string `protobuf:"bytes,2,opt,name=file_path,json=filePath,proto3" json:"file_path,omitempty"`
+ // digest is a hash of the file content in the OCI digest format (see https://github.com/opencontainers/image-spec/blob/master/descriptor.md#digests).
+ // This information is used to compute subsequent
+ // content versions, and to validate the file content was downloaded correctly.
+ Digest string `protobuf:"bytes,3,opt,name=digest,proto3" json:"digest,omitempty"`
+}
+
+func (x *FileDownloadInitializer_FileInfo) Reset() {
+ *x = FileDownloadInitializer_FileInfo{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[44]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *FileDownloadInitializer_FileInfo) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FileDownloadInitializer_FileInfo) ProtoMessage() {}
+
+func (x *FileDownloadInitializer_FileInfo) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[44]
+ 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 FileDownloadInitializer_FileInfo.ProtoReflect.Descriptor instead.
+func (*FileDownloadInitializer_FileInfo) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{29, 0}
+}
+
+func (x *FileDownloadInitializer_FileInfo) GetUrl() string {
+ if x != nil {
+ return x.Url
+ }
+ return ""
+}
+
+func (x *FileDownloadInitializer_FileInfo) GetFilePath() string {
+ if x != nil {
+ return x.FilePath
+ }
+ return ""
+}
+
+func (x *FileDownloadInitializer_FileInfo) GetDigest() string {
+ if x != nil {
+ return x.Digest
+ }
+ return ""
+}
+
+type UpdateWorkspaceRequest_UpdateWorkspaceMetadata struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // name is the name of the workspace as specified by the user
+ Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"`
+ // pinned indicates whether the workspace is pinned
+ Pinned *bool `protobuf:"varint,2,opt,name=pinned,proto3,oneof" json:"pinned,omitempty"`
+}
+
+func (x *UpdateWorkspaceRequest_UpdateWorkspaceMetadata) Reset() {
+ *x = UpdateWorkspaceRequest_UpdateWorkspaceMetadata{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[45]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateWorkspaceRequest_UpdateWorkspaceMetadata) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateWorkspaceRequest_UpdateWorkspaceMetadata) ProtoMessage() {}
+
+func (x *UpdateWorkspaceRequest_UpdateWorkspaceMetadata) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[45]
+ 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 UpdateWorkspaceRequest_UpdateWorkspaceMetadata.ProtoReflect.Descriptor instead.
+func (*UpdateWorkspaceRequest_UpdateWorkspaceMetadata) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{31, 0}
+}
+
+func (x *UpdateWorkspaceRequest_UpdateWorkspaceMetadata) GetName() string {
+ if x != nil && x.Name != nil {
+ return *x.Name
+ }
+ return ""
+}
+
+func (x *UpdateWorkspaceRequest_UpdateWorkspaceMetadata) GetPinned() bool {
+ if x != nil && x.Pinned != nil {
+ return *x.Pinned
+ }
+ return false
+}
+
+type UpdateWorkspaceRequest_UpdateTimeout struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // inacitivity is the maximum time of inactivity before the workspace is stopped or paused
+ Inactivity *durationpb.Duration `protobuf:"bytes,1,opt,name=inactivity,proto3,oneof" json:"inactivity,omitempty"`
+ // inacitivity is the maximum time of disconnection before the workspace is stopped or paused
+ Disconnected *durationpb.Duration `protobuf:"bytes,2,opt,name=disconnected,proto3,oneof" json:"disconnected,omitempty"`
+}
+
+func (x *UpdateWorkspaceRequest_UpdateTimeout) Reset() {
+ *x = UpdateWorkspaceRequest_UpdateTimeout{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[46]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UpdateWorkspaceRequest_UpdateTimeout) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateWorkspaceRequest_UpdateTimeout) ProtoMessage() {}
+
+func (x *UpdateWorkspaceRequest_UpdateTimeout) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[46]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2014,57 +3523,55 @@ func (x *WorkspaceEnvironmentVariable) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use WorkspaceEnvironmentVariable.ProtoReflect.Descriptor instead.
-func (*WorkspaceEnvironmentVariable) Descriptor() ([]byte, []int) {
- return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{24}
+// Deprecated: Use UpdateWorkspaceRequest_UpdateTimeout.ProtoReflect.Descriptor instead.
+func (*UpdateWorkspaceRequest_UpdateTimeout) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{31, 1}
}
-func (x *WorkspaceEnvironmentVariable) GetName() string {
+func (x *UpdateWorkspaceRequest_UpdateTimeout) GetInactivity() *durationpb.Duration {
if x != nil {
- return x.Name
+ return x.Inactivity
}
- return ""
+ return nil
}
-func (x *WorkspaceEnvironmentVariable) GetValue() string {
+func (x *UpdateWorkspaceRequest_UpdateTimeout) GetDisconnected() *durationpb.Duration {
if x != nil {
- return x.Value
+ return x.Disconnected
}
- return ""
+ return nil
}
-type CreateAndStartWorkspaceRequest_Git struct {
+type UpdateWorkspaceRequest_UpdateWorkspaceSpec struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // clone_url is the URL of the repository to clone
- CloneUrl string `protobuf:"bytes,1,opt,name=clone_url,json=cloneUrl,proto3" json:"clone_url,omitempty"`
- // ref is an alternatively symbolic. e.g. refs/tags/v1.0,
- // empty string means the default branch of the repository
- Ref string `protobuf:"bytes,2,opt,name=ref,proto3" json:"ref,omitempty"`
- // create_local_branch is the branch you want to create based on provided
- // clone_url and ref when workspace started
- CreateLocalBranch string `protobuf:"bytes,3,opt,name=create_local_branch,json=createLocalBranch,proto3" json:"create_local_branch,omitempty"`
+ // timeout configures the workspace timeout
+ Timeout *UpdateWorkspaceRequest_UpdateTimeout `protobuf:"bytes,1,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"`
+ // admission controlls who can access the workspace and its ports.
+ Admission *AdmissionLevel `protobuf:"varint,2,opt,name=admission,proto3,enum=gitpod.v1.AdmissionLevel,oneof" json:"admission,omitempty"`
+ // Note(cw): repeated fields have implicit presence. There's a difference between passing an empty list or nothing.
+ SshPublicKeys []string `protobuf:"bytes,3,rep,name=ssh_public_keys,json=sshPublicKeys,proto3" json:"ssh_public_keys,omitempty"`
}
-func (x *CreateAndStartWorkspaceRequest_Git) Reset() {
- *x = CreateAndStartWorkspaceRequest_Git{}
+func (x *UpdateWorkspaceRequest_UpdateWorkspaceSpec) Reset() {
+ *x = UpdateWorkspaceRequest_UpdateWorkspaceSpec{}
if protoimpl.UnsafeEnabled {
- mi := &file_gitpod_v1_workspace_proto_msgTypes[25]
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[47]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
-func (x *CreateAndStartWorkspaceRequest_Git) String() string {
+func (x *UpdateWorkspaceRequest_UpdateWorkspaceSpec) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*CreateAndStartWorkspaceRequest_Git) ProtoMessage() {}
+func (*UpdateWorkspaceRequest_UpdateWorkspaceSpec) ProtoMessage() {}
-func (x *CreateAndStartWorkspaceRequest_Git) ProtoReflect() protoreflect.Message {
- mi := &file_gitpod_v1_workspace_proto_msgTypes[25]
+func (x *UpdateWorkspaceRequest_UpdateWorkspaceSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_gitpod_v1_workspace_proto_msgTypes[47]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2075,30 +3582,30 @@ func (x *CreateAndStartWorkspaceRequest_Git) ProtoReflect() protoreflect.Message
return mi.MessageOf(x)
}
-// Deprecated: Use CreateAndStartWorkspaceRequest_Git.ProtoReflect.Descriptor instead.
-func (*CreateAndStartWorkspaceRequest_Git) Descriptor() ([]byte, []int) {
- return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{6, 0}
+// Deprecated: Use UpdateWorkspaceRequest_UpdateWorkspaceSpec.ProtoReflect.Descriptor instead.
+func (*UpdateWorkspaceRequest_UpdateWorkspaceSpec) Descriptor() ([]byte, []int) {
+ return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{31, 2}
}
-func (x *CreateAndStartWorkspaceRequest_Git) GetCloneUrl() string {
+func (x *UpdateWorkspaceRequest_UpdateWorkspaceSpec) GetTimeout() *UpdateWorkspaceRequest_UpdateTimeout {
if x != nil {
- return x.CloneUrl
+ return x.Timeout
}
- return ""
+ return nil
}
-func (x *CreateAndStartWorkspaceRequest_Git) GetRef() string {
- if x != nil {
- return x.Ref
+func (x *UpdateWorkspaceRequest_UpdateWorkspaceSpec) GetAdmission() AdmissionLevel {
+ if x != nil && x.Admission != nil {
+ return *x.Admission
}
- return ""
+ return AdmissionLevel_ADMISSION_LEVEL_UNSPECIFIED
}
-func (x *CreateAndStartWorkspaceRequest_Git) GetCreateLocalBranch() string {
+func (x *UpdateWorkspaceRequest_UpdateWorkspaceSpec) GetSshPublicKeys() []string {
if x != nil {
- return x.CreateLocalBranch
+ return x.SshPublicKeys
}
- return ""
+ return nil
}
var File_gitpod_v1_workspace_proto protoreflect.FileDescriptor
@@ -2107,360 +3614,648 @@ var file_gitpod_v1_workspace_proto_rawDesc = []byte{
0x0a, 0x19, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b,
0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x67, 0x69, 0x74,
0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x16, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76,
- 0x31, 0x2f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a,
- 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 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, 0x38, 0x0a, 0x13, 0x47,
- 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x31, 0x2f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16,
+ 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x76, 0x76, 0x61, 0x72,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76,
+ 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x38, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f,
+ 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x4a, 0x0a,
+ 0x14, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f,
+ 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09,
+ 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x40, 0x0a, 0x1b, 0x57, 0x61, 0x74,
+ 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+ 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x75, 0x0a, 0x1c, 0x57,
+ 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77,
+ 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x32,
+ 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+ 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73,
+ 0x70, 0x61, 0x63, 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, 0x27, 0x0a, 0x0f, 0x6f, 0x72,
+ 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73,
+ 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x65, 0x72, 0x6d, 0x22, 0x8d, 0x01, 0x0a,
+ 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 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, 0x34, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74,
+ 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x22, 0xa0, 0x03, 0x0a,
+ 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57,
+ 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x38, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
+ 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52,
+ 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x57, 0x0a, 0x0b, 0x63, 0x6f, 0x6e,
+ 0x74, 0x65, 0x78, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34,
+ 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78,
+ 0x74, 0x55, 0x52, 0x4c, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55,
+ 0x72, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72,
+ 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x04, 0x73, 0x70,
+ 0x65, 0x63, 0x12, 0x34, 0x0a, 0x14, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61,
+ 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
+ 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75,
+ 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x7b, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x74,
+ 0x65, 0x78, 0x74, 0x55, 0x52, 0x4c, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73,
+ 0x73, 0x12, 0x32, 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64,
+ 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x65,
+ 0x64, 0x69, 0x74, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22,
+ 0x55, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72,
+ 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76,
+ 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72,
+ 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x70, 0x0a, 0x15, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57,
+ 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x49, 0x64, 0x12, 0x34, 0x0a, 0x14, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61,
+ 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
+ 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75,
+ 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x4c, 0x0a, 0x16, 0x53, 0x74, 0x61, 0x72,
+ 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76,
+ 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72,
+ 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x44, 0x0a, 0x1f, 0x47, 0x65, 0x74, 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, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72,
+ 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0xfa, 0x01, 0x0a,
+ 0x20, 0x47, 0x65, 0x74, 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, 0x12, 0x4a, 0x0a, 0x06, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x67, 0x69, 0x74, 0x70,
+ 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 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, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x52, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12,
+ 0x16, 0x0a, 0x12, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
+ 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x4f, 0x55, 0x52, 0x43,
+ 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01,
+ 0x12, 0x17, 0x0a, 0x13, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e,
+ 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x22, 0x5d, 0x0a, 0x14, 0x53, 0x65, 0x6e,
+ 0x64, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
+ 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x63,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x53, 0x65, 0x6e, 0x64,
+ 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x22, 0x42, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a,
- 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72,
- 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x22, 0x40, 0x0a, 0x1b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x41, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72,
+ 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x77,
+ 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x49, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x57,
+ 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x72,
+ 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x49, 0x64, 0x22, 0x75, 0x0a, 0x1c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e,
- 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x15, 0x4c,
- 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 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, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67,
- 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70,
- 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x69, 0x6e,
- 0x6e, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x74, 0x65,
- 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
- 0x54, 0x65, 0x72, 0x6d, 0x22, 0x8d, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72,
- 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x34, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e,
- 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x18, 0x02, 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, 0x22, 0x84, 0x05, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41,
- 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e,
- 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64,
- 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x03, 0x67,
- 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f,
- 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74,
- 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x2e, 0x47, 0x69, 0x74, 0x48, 0x00, 0x52, 0x03, 0x67, 0x69, 0x74, 0x12, 0x25,
- 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65,
- 0x78, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x61, 0x0a, 0x18, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f,
- 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x76, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
- 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64,
- 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x76,
- 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
- 0x52, 0x16, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x76, 0x56,
- 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69,
- 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e,
- 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c,
- 0x61, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x32, 0x0a, 0x06, 0x65, 0x64, 0x69,
- 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70,
- 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65,
- 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x66, 0x6f, 0x72,
- 0x63, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x44, 0x65,
- 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x64, 0x0a, 0x03, 0x47,
- 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x6c, 0x12,
- 0x10, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x65,
- 0x66, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61,
- 0x6c, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11,
- 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63,
- 0x68, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x55, 0x0a, 0x1f, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72,
- 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32,
- 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
- 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x22, 0x6c, 0x0a, 0x15, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77,
- 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x30,
- 0x0a, 0x14, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x66, 0x6f,
- 0x72, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x22, 0x4c, 0x0a, 0x16, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x77, 0x6f,
- 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
- 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x44,
- 0x0a, 0x1f, 0x47, 0x65, 0x74, 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, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x49, 0x64, 0x22, 0xfa, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 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, 0x12, 0x4a, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x32, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
- 0x74, 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, 0x2e, 0x53,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x52, 0x0a,
- 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x4f, 0x55, 0x52, 0x43,
- 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
- 0x17, 0x0a, 0x13, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c,
- 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x4f, 0x55, 0x52,
- 0x43, 0x45, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10,
- 0x02, 0x22, 0x5d, 0x0a, 0x14, 0x53, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65,
- 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72,
- 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c,
- 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64,
- 0x22, 0x17, 0x0a, 0x15, 0x53, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61,
- 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x0a, 0x1d, 0x47, 0x65, 0x74,
- 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f,
- 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f,
- 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x41, 0x0a,
- 0x1e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x77, 0x6e,
- 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x1f, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
- 0x22, 0x49, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
- 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x25, 0x47,
- 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x64, 0x69, 0x74, 0x6f,
- 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x63,
- 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x11, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x61, 0x6c, 0x73, 0x22, 0xea, 0x03, 0x0a, 0x09, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
- 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x08, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x27, 0x0a,
- 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69,
- 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e,
- 0x65, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57,
- 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x71, 0x0a, 0x20, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74,
- 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72,
- 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e,
- 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x1e, 0x61, 0x64, 0x64, 0x69, 0x74,
- 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74,
- 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67,
- 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f,
- 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63,
- 0x6c, 0x61, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x32, 0x0a, 0x06, 0x65, 0x64,
- 0x69, 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74,
- 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66,
- 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x1f,
- 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0b, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x72, 0x6c, 0x12,
- 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0c,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64,
- 0x22, 0x89, 0x03, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e,
- 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05,
- 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
- 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x55, 0x72, 0x6c, 0x12, 0x3c, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f,
- 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x69,
- 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x67, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x12, 0x2e, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
- 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72,
- 0x74, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76,
- 0x31, 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, 0x69,
- 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0a,
- 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72,
- 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x47, 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, 0x22, 0xc3, 0x02, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x37, 0x0a, 0x06, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x69,
+ 0x65, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74,
+ 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x12,
+ 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61,
+ 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72,
+ 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x09,
+ 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x08, 0x6d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69,
0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x50, 0x6f, 0x72, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3d, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
- 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f,
- 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f,
- 0x72, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x47, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
- 0x16, 0x0a, 0x12, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
- 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x4f, 0x4c, 0x49, 0x43,
- 0x59, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x50,
- 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x02, 0x22, 0x4b,
- 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52,
- 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
- 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c,
- 0x5f, 0x48, 0x54, 0x54, 0x50, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x54, 0x4f,
- 0x43, 0x4f, 0x4c, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x53, 0x10, 0x02, 0x22, 0x8d, 0x03, 0x0a, 0x12,
- 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x6c, 0x12,
- 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73,
- 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
- 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x29, 0x0a, 0x10,
- 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73,
- 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
- 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c,
- 0x5f, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65,
- 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e,
- 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x27, 0x0a,
- 0x0f, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73,
- 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65,
- 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
- 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18,
- 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x74, 0x72,
- 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e,
- 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x08,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x43, 0x6f,
- 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75,
- 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18,
- 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x70, 0x75,
- 0x73, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x22, 0xef, 0x02, 0x0a, 0x0e,
- 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x33,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67,
+ 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
+ 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65,
+ 0x63, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
+ 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xf1, 0x02, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x6f,
+ 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f,
+ 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69,
+ 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12,
+ 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x0b, 0x61, 0x6e,
+ 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x6f, 0x72, 0x69, 0x67, 0x69,
+ 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18,
+ 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x43,
+ 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x72, 0x6c, 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, 0xbb, 0x08, 0x0a, 0x0d, 0x57, 0x6f,
+ 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x41, 0x0a, 0x0b, 0x69,
+ 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0x3a,
+ 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67,
0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e,
- 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 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, 0x12, 0x6c,
- 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d,
- 0x65, 0x22, 0xd9, 0x01, 0x0a, 0x05, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x50,
- 0x48, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
- 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x50,
- 0x41, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x48, 0x41, 0x53, 0x45,
- 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x02, 0x12, 0x11, 0x0a,
- 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x03,
- 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x49,
- 0x4e, 0x47, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e,
- 0x49, 0x54, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d,
- 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12,
- 0x15, 0x0a, 0x11, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55,
- 0x50, 0x54, 0x45, 0x44, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f,
- 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48,
- 0x41, 0x53, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x09, 0x22, 0x48, 0x0a,
- 0x1c, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 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, 0x6f, 0x0a, 0x0e, 0x41, 0x64, 0x6d, 0x69, 0x73,
- 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x44, 0x4d,
- 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53,
- 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x44,
- 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x4f, 0x57,
- 0x4e, 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x44,
- 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x56,
- 0x45, 0x52, 0x59, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x32, 0xbd, 0x07, 0x0a, 0x10, 0x57, 0x6f, 0x72,
- 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x51, 0x0a,
- 0x0c, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1e, 0x2e,
- 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
- 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e,
- 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
- 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
- 0x12, 0x6b, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f,
- 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74,
- 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x57, 0x0a,
- 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12,
- 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
- 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69,
- 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b,
- 0x73, 0x70, 0x61, 0x63, 0x65, 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, 0x41,
- 0x6e, 0x64, 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, 0x57, 0x0a, 0x0e, 0x53, 0x74,
- 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x20, 0x2e, 0x67,
- 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f,
- 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21,
+ 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x70, 0x6f,
+ 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x70,
+ 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50,
+ 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x53, 0x0a, 0x15, 0x65, 0x6e,
+ 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62,
+ 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70,
+ 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e,
+ 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x14, 0x65, 0x6e, 0x76, 0x69, 0x72,
+ 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12,
+ 0x32, 0x0a, 0x03, 0x67, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67,
+ 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x47, 0x69, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03,
+ 0x67, 0x69, 0x74, 0x12, 0x3a, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31,
+ 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12,
+ 0x37, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01,
+ 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x26,
+ 0x0a, 0x0f, 0x73, 0x73, 0x68, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79,
+ 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x73, 0x68, 0x50, 0x75, 0x62, 0x6c,
+ 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x35, 0x0a, 0x16, 0x73, 0x75, 0x62, 0x61, 0x73, 0x73,
+ 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73,
+ 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x73, 0x75, 0x62, 0x61, 0x73, 0x73, 0x65, 0x6d,
+ 0x62, 0x6c, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x48, 0x0a,
+ 0x12, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76,
+ 0x69, 0x74, 0x79, 0x18, 0x0b, 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, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41,
+ 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x6c, 0x6f, 0x67, 0x5f, 0x75,
+ 0x72, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x55, 0x72, 0x6c,
+ 0x12, 0x32, 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69,
+ 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x65, 0x64,
+ 0x69, 0x74, 0x6f, 0x72, 0x1a, 0xc9, 0x01, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
+ 0x12, 0x39, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0c, 0x64,
+ 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x69,
+ 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x10, 0x6d, 0x61,
+ 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x0f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x4c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65,
+ 0x1a, 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, 0x68, 0x0a,
+ 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e,
+ 0x0a, 0x1a, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45,
+ 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a,
+ 0x0a, 0x16, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45,
+ 0x5f, 0x52, 0x45, 0x47, 0x55, 0x4c, 0x41, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x57, 0x4f,
+ 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x45,
+ 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x02, 0x22, 0xe6, 0x06, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x04, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
+ 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68,
+ 0x61, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x4e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67,
+ 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x63, 0x6f,
+ 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x52, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x62,
+ 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f,
+ 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x50, 0x72,
+ 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0e, 0x70, 0x72,
+ 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x0a,
+ 0x67, 0x69, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72,
+ 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
+ 0x09, 0x67, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0b, 0x69, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42,
+ 0x02, 0x18, 0x01, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x1a,
+ 0xfb, 0x02, 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,
+ 0x60, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e,
+ 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x61,
+ 0x73, 0x6f, 0x6e, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f,
+ 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xcf, 0x01, 0x0a, 0x0c,
+ 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x19,
+ 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e,
+ 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2f, 0x0a, 0x2b, 0x46,
+ 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e,
+ 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x41, 0x54,
+ 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b,
+ 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x42, 0x41,
+ 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x24, 0x0a,
+ 0x20, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x49,
+ 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x55, 0x4c, 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52,
+ 0x45, 0x10, 0x03, 0x12, 0x28, 0x0a, 0x24, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x52, 0x45,
+ 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f,
+ 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x1a, 0x51, 0x0a,
+ 0x0e, 0x50, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12,
+ 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x65,
+ 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+ 0x22, 0xfa, 0x01, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f,
+ 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
+ 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73,
+ 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70,
+ 0x6f, 0x64, 0x2e, 0x76, 0x31, 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,
+ 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72,
+ 0x6c, 0x12, 0x3d, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e,
+ 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x2e, 0x50, 0x72,
+ 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
+ 0x22, 0x4b, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x14,
+ 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
+ 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43,
+ 0x4f, 0x4c, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f,
+ 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x53, 0x10, 0x02, 0x22, 0x8d, 0x03,
+ 0x0a, 0x12, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x69, 0x74, 0x53, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72,
+ 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72,
+ 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x74,
+ 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x29,
+ 0x0a, 0x10, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c,
+ 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x69, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x74,
+ 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69,
+ 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x55, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12,
+ 0x27, 0x0a, 0x0f, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c,
+ 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63,
+ 0x6b, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61,
+ 0x6c, 0x5f, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65,
+ 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e,
+ 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10,
+ 0x75, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73,
+ 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64,
+ 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x5f, 0x75, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
+ 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e,
+ 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x22, 0x81, 0x03,
+ 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65,
+ 0x12, 0x33, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f,
+ 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72,
+ 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 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,
+ 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54,
+ 0x69, 0x6d, 0x65, 0x22, 0xeb, 0x01, 0x0a, 0x05, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x15, 0x0a,
+ 0x11, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
+ 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x52,
+ 0x45, 0x50, 0x41, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x48, 0x41,
+ 0x53, 0x45, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x02, 0x12,
+ 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47,
+ 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41,
+ 0x54, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f,
+ 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x11,
+ 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10,
+ 0x06, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52,
+ 0x52, 0x55, 0x50, 0x54, 0x45, 0x44, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x48, 0x41, 0x53,
+ 0x45, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48,
+ 0x41, 0x53, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x11,
+ 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10,
+ 0x0a, 0x22, 0xd0, 0x02, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49,
+ 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x70,
+ 0x65, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70,
+ 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49,
+ 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x2e, 0x53, 0x70, 0x65, 0x63, 0x52,
+ 0x05, 0x73, 0x70, 0x65, 0x63, 0x73, 0x1a, 0xfb, 0x01, 0x0a, 0x04, 0x53, 0x70, 0x65, 0x63, 0x12,
+ 0x2d, 0x0a, 0x03, 0x67, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
+ 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x49, 0x6e, 0x69, 0x74,
+ 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x48, 0x00, 0x52, 0x03, 0x67, 0x69, 0x74, 0x12, 0x3c,
+ 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72,
+ 0x48, 0x00, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x3c, 0x0a, 0x08,
+ 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
+ 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x62, 0x75,
+ 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x48, 0x00,
+ 0x52, 0x08, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x40, 0x0a, 0x08, 0x64, 0x6f,
+ 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67,
+ 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f, 0x77,
+ 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72,
+ 0x48, 0x00, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x06, 0x0a, 0x04,
+ 0x73, 0x70, 0x65, 0x63, 0x22, 0xbb, 0x07, 0x0a, 0x0e, 0x47, 0x69, 0x74, 0x49, 0x6e, 0x69, 0x74,
+ 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74,
+ 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x6d,
+ 0x6f, 0x74, 0x65, 0x55, 0x72, 0x69, 0x12, 0x2e, 0x0a, 0x13, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65,
+ 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x11, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x6d,
+ 0x6f, 0x74, 0x65, 0x55, 0x72, 0x69, 0x12, 0x4a, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x69,
+ 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x69,
+ 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x2e, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x54, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x6f,
+ 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x65,
+ 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x54, 0x61,
+ 0x67, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x5f,
+ 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10,
+ 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x12, 0x3b, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74,
+ 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x2e, 0x47, 0x69, 0x74, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xd3, 0x02,
+ 0x0a, 0x09, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5a, 0x0a, 0x0d, 0x63,
+ 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47,
+ 0x69, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x2e, 0x47, 0x69,
+ 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f,
+ 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4c, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65,
+ 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
+ 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x49,
+ 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x4d,
+ 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x73,
+ 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x55, 0x73,
+ 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77,
+ 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x50,
+ 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f,
+ 0x6f, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x4f,
+ 0x74, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 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, 0xc5, 0x01, 0x0a, 0x0f, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x54, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4c, 0x4f, 0x4e, 0x45,
+ 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53,
+ 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4c,
+ 0x4f, 0x4e, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f,
+ 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x10, 0x01, 0x12, 0x23, 0x0a,
+ 0x1f, 0x43, 0x4c, 0x4f, 0x4e, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x4d, 0x4f,
+ 0x44, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54,
+ 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x4c, 0x4f, 0x4e, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47,
+ 0x45, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x42,
+ 0x52, 0x41, 0x4e, 0x43, 0x48, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4c, 0x4f, 0x4e, 0x45,
+ 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4c, 0x4f, 0x43,
+ 0x41, 0x4c, 0x5f, 0x42, 0x52, 0x41, 0x4e, 0x43, 0x48, 0x10, 0x04, 0x22, 0x65, 0x0a, 0x0a, 0x41,
+ 0x75, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x55, 0x54,
+ 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
+ 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x4d,
+ 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x42, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x41, 0x55, 0x54, 0x48,
+ 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f,
+ 0x44, 0x5f, 0x42, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x4f, 0x54, 0x53,
+ 0x10, 0x02, 0x22, 0x36, 0x0a, 0x13, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x6e,
+ 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
+ 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x22, 0x36, 0x0a, 0x13, 0x50, 0x72,
+ 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65,
+ 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64,
+ 0x49, 0x64, 0x22, 0xd8, 0x01, 0x0a, 0x17, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c,
+ 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x41,
+ 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
+ 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f,
+ 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65,
+ 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65,
+ 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x51, 0x0a, 0x08, 0x46, 0x69,
+ 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65,
+ 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c,
+ 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0xe7, 0x02,
+ 0x0a, 0x09, 0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62,
+ 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61,
+ 0x6e, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65,
+ 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x46, 0x69,
+ 0x6c, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x69, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x6e, 0x74,
+ 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x0e, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x6c,
+ 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x74, 0x72,
+ 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65,
+ 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x75, 0x73, 0x68,
+ 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x0f, 0x75, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
+ 0x73, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x70, 0x75, 0x73,
+ 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64,
+ 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x22, 0xd6, 0x06, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x5a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64,
+ 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01,
+ 0x01, 0x12, 0x4e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x35, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x01, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x88, 0x01,
+ 0x01, 0x12, 0x45, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76,
+ 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x69, 0x74, 0x53, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x42, 0x02, 0x18, 0x01, 0x48, 0x02, 0x52, 0x09, 0x67, 0x69, 0x74, 0x53,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x63, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06,
+ 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06,
+ 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61,
+ 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x1a, 0xb3, 0x01,
+ 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12,
+ 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00,
+ 0x52, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12,
+ 0x42, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x48, 0x01, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64,
+ 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69,
+ 0x74, 0x79, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
+ 0x74, 0x65, 0x64, 0x1a, 0xe5, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f,
+ 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4e, 0x0a, 0x07, 0x74,
+ 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67,
+ 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57,
+ 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e,
+ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x00, 0x52,
+ 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x09, 0x61,
+ 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19,
+ 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x73,
+ 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x01, 0x52, 0x09, 0x61, 0x64, 0x6d,
+ 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x73, 0x68,
+ 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x0d, 0x73, 0x73, 0x68, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79,
+ 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x0c, 0x0a,
+ 0x0a, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f,
+ 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x70, 0x65,
+ 0x63, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x22, 0x4d, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x77,
+ 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
+ 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22,
+ 0x64, 0x0a, 0x16, 0x50, 0x61, 0x72, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55,
+ 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e,
+ 0x74, 0x65, 0x78, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
+ 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x81, 0x01, 0x0a, 0x17, 0x50, 0x61, 0x72, 0x73, 0x65, 0x43,
+ 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x38, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e,
+ 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+ 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x04, 0x73,
+ 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x70,
+ 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53,
+ 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x2a, 0x6f, 0x0a, 0x0e, 0x41, 0x64, 0x6d,
+ 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x1b, 0x41,
+ 0x44, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55,
+ 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a,
+ 0x41, 0x44, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f,
+ 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18,
+ 0x41, 0x44, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f,
+ 0x45, 0x56, 0x45, 0x52, 0x59, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x32, 0xf5, 0x08, 0x0a, 0x10, 0x57,
+ 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
+ 0x51, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
+ 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57,
+ 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57,
+ 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74,
+ 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b,
+ 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57,
+ 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12,
+ 0x57, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x73, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69,
+ 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f,
+ 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 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, 0x41, 0x6e, 0x64, 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, 0x57, 0x0a, 0x0e,
+ 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x20,
0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0x75, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12,
- 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 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, 0x2b, 0x2e, 0x67, 0x69,
- 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 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, 0x54, 0x0a, 0x0d, 0x53, 0x65,
- 0x6e, 0x64, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x69,
- 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x61, 0x72,
- 0x74, 0x42, 0x65, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67,
- 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x61,
- 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
- 0x12, 0x6f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
- 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x28, 0x2e, 0x67, 0x69, 0x74,
- 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31,
+ 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0x5a, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57,
+ 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f,
+ 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69,
+ 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f,
+ 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78,
+ 0x74, 0x55, 0x52, 0x4c, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31,
+ 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x52, 0x4c,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64,
+ 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
+ 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a,
+ 0x18, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x65, 0x66,
+ 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70,
+ 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 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, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 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, 0x54, 0x0a, 0x0d, 0x53, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x61, 0x72,
+ 0x74, 0x42, 0x65, 0x61, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76,
+ 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e,
+ 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x16, 0x47, 0x65,
+ 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54,
+ 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31,
0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x77, 0x6e,
- 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x00, 0x12, 0x84, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
- 0x63, 0x65, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x61, 0x6c, 0x73, 0x12, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e,
+ 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29,
+ 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f,
+ 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65,
+ 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x1d,
0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x64, 0x69, 0x74,
- 0x6f, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x64, 0x69,
- 0x74, 0x6f, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 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,
+ 0x6f, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x2f, 0x2e,
+ 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
+ 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x72, 0x65, 0x64,
+ 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30,
+ 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f,
+ 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x72, 0x65,
+ 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 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 (
@@ -2475,92 +4270,157 @@ func file_gitpod_v1_workspace_proto_rawDescGZIP() []byte {
return file_gitpod_v1_workspace_proto_rawDescData
}
-var file_gitpod_v1_workspace_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
-var file_gitpod_v1_workspace_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
+var file_gitpod_v1_workspace_proto_enumTypes = make([]protoimpl.EnumInfo, 8)
+var file_gitpod_v1_workspace_proto_msgTypes = make([]protoimpl.MessageInfo, 48)
var file_gitpod_v1_workspace_proto_goTypes = []interface{}{
- (AdmissionLevel)(0), // 0: gitpod.v1.AdmissionLevel
- (GetWorkspaceDefaultImageResponse_Source)(0), // 1: gitpod.v1.GetWorkspaceDefaultImageResponse.Source
- (WorkspacePort_Policy)(0), // 2: gitpod.v1.WorkspacePort.Policy
- (WorkspacePort_Protocol)(0), // 3: gitpod.v1.WorkspacePort.Protocol
- (WorkspacePhase_Phase)(0), // 4: gitpod.v1.WorkspacePhase.Phase
- (*GetWorkspaceRequest)(nil), // 5: gitpod.v1.GetWorkspaceRequest
- (*GetWorkspaceResponse)(nil), // 6: gitpod.v1.GetWorkspaceResponse
- (*WatchWorkspaceStatusRequest)(nil), // 7: gitpod.v1.WatchWorkspaceStatusRequest
- (*WatchWorkspaceStatusResponse)(nil), // 8: gitpod.v1.WatchWorkspaceStatusResponse
- (*ListWorkspacesRequest)(nil), // 9: gitpod.v1.ListWorkspacesRequest
- (*ListWorkspacesResponse)(nil), // 10: gitpod.v1.ListWorkspacesResponse
- (*CreateAndStartWorkspaceRequest)(nil), // 11: gitpod.v1.CreateAndStartWorkspaceRequest
- (*CreateAndStartWorkspaceResponse)(nil), // 12: gitpod.v1.CreateAndStartWorkspaceResponse
- (*StartWorkspaceRequest)(nil), // 13: gitpod.v1.StartWorkspaceRequest
- (*StartWorkspaceResponse)(nil), // 14: gitpod.v1.StartWorkspaceResponse
- (*GetWorkspaceDefaultImageRequest)(nil), // 15: gitpod.v1.GetWorkspaceDefaultImageRequest
- (*GetWorkspaceDefaultImageResponse)(nil), // 16: gitpod.v1.GetWorkspaceDefaultImageResponse
- (*SendHeartBeatRequest)(nil), // 17: gitpod.v1.SendHeartBeatRequest
- (*SendHeartBeatResponse)(nil), // 18: gitpod.v1.SendHeartBeatResponse
- (*GetWorkspaceOwnerTokenRequest)(nil), // 19: gitpod.v1.GetWorkspaceOwnerTokenRequest
- (*GetWorkspaceOwnerTokenResponse)(nil), // 20: gitpod.v1.GetWorkspaceOwnerTokenResponse
- (*GetWorkspaceEditorCredentialsRequest)(nil), // 21: gitpod.v1.GetWorkspaceEditorCredentialsRequest
- (*GetWorkspaceEditorCredentialsResponse)(nil), // 22: gitpod.v1.GetWorkspaceEditorCredentialsResponse
- (*Workspace)(nil), // 23: gitpod.v1.Workspace
- (*WorkspaceStatus)(nil), // 24: gitpod.v1.WorkspaceStatus
- (*WorkspaceConditions)(nil), // 25: gitpod.v1.WorkspaceConditions
- (*WorkspacePort)(nil), // 26: gitpod.v1.WorkspacePort
- (*WorkspaceGitStatus)(nil), // 27: gitpod.v1.WorkspaceGitStatus
- (*WorkspacePhase)(nil), // 28: gitpod.v1.WorkspacePhase
- (*WorkspaceEnvironmentVariable)(nil), // 29: gitpod.v1.WorkspaceEnvironmentVariable
- (*CreateAndStartWorkspaceRequest_Git)(nil), // 30: gitpod.v1.CreateAndStartWorkspaceRequest.Git
- (*PaginationRequest)(nil), // 31: gitpod.v1.PaginationRequest
- (*PaginationResponse)(nil), // 32: gitpod.v1.PaginationResponse
- (*EditorReference)(nil), // 33: gitpod.v1.EditorReference
- (*timestamppb.Timestamp)(nil), // 34: google.protobuf.Timestamp
+ (AdmissionLevel)(0), // 0: gitpod.v1.AdmissionLevel
+ (GetWorkspaceDefaultImageResponse_Source)(0), // 1: gitpod.v1.GetWorkspaceDefaultImageResponse.Source
+ (WorkspaceSpec_WorkspaceType)(0), // 2: gitpod.v1.WorkspaceSpec.WorkspaceType
+ (WorkspaceStatus_WorkspaceConditions_FailedReason)(0), // 3: gitpod.v1.WorkspaceStatus.WorkspaceConditions.FailedReason
+ (WorkspacePort_Protocol)(0), // 4: gitpod.v1.WorkspacePort.Protocol
+ (WorkspacePhase_Phase)(0), // 5: gitpod.v1.WorkspacePhase.Phase
+ (GitInitializer_CloneTargetMode)(0), // 6: gitpod.v1.GitInitializer.CloneTargetMode
+ (GitInitializer_AuthMethod)(0), // 7: gitpod.v1.GitInitializer.AuthMethod
+ (*GetWorkspaceRequest)(nil), // 8: gitpod.v1.GetWorkspaceRequest
+ (*GetWorkspaceResponse)(nil), // 9: gitpod.v1.GetWorkspaceResponse
+ (*WatchWorkspaceStatusRequest)(nil), // 10: gitpod.v1.WatchWorkspaceStatusRequest
+ (*WatchWorkspaceStatusResponse)(nil), // 11: gitpod.v1.WatchWorkspaceStatusResponse
+ (*ListWorkspacesRequest)(nil), // 12: gitpod.v1.ListWorkspacesRequest
+ (*ListWorkspacesResponse)(nil), // 13: gitpod.v1.ListWorkspacesResponse
+ (*CreateAndStartWorkspaceRequest)(nil), // 14: gitpod.v1.CreateAndStartWorkspaceRequest
+ (*CreateAndStartWorkspaceResponse)(nil), // 15: gitpod.v1.CreateAndStartWorkspaceResponse
+ (*StartWorkspaceRequest)(nil), // 16: gitpod.v1.StartWorkspaceRequest
+ (*StartWorkspaceResponse)(nil), // 17: gitpod.v1.StartWorkspaceResponse
+ (*GetWorkspaceDefaultImageRequest)(nil), // 18: gitpod.v1.GetWorkspaceDefaultImageRequest
+ (*GetWorkspaceDefaultImageResponse)(nil), // 19: gitpod.v1.GetWorkspaceDefaultImageResponse
+ (*SendHeartBeatRequest)(nil), // 20: gitpod.v1.SendHeartBeatRequest
+ (*SendHeartBeatResponse)(nil), // 21: gitpod.v1.SendHeartBeatResponse
+ (*GetWorkspaceOwnerTokenRequest)(nil), // 22: gitpod.v1.GetWorkspaceOwnerTokenRequest
+ (*GetWorkspaceOwnerTokenResponse)(nil), // 23: gitpod.v1.GetWorkspaceOwnerTokenResponse
+ (*GetWorkspaceEditorCredentialsRequest)(nil), // 24: gitpod.v1.GetWorkspaceEditorCredentialsRequest
+ (*GetWorkspaceEditorCredentialsResponse)(nil), // 25: gitpod.v1.GetWorkspaceEditorCredentialsResponse
+ (*Workspace)(nil), // 26: gitpod.v1.Workspace
+ (*WorkspaceMetadata)(nil), // 27: gitpod.v1.WorkspaceMetadata
+ (*WorkspaceSpec)(nil), // 28: gitpod.v1.WorkspaceSpec
+ (*WorkspaceStatus)(nil), // 29: gitpod.v1.WorkspaceStatus
+ (*WorkspacePort)(nil), // 30: gitpod.v1.WorkspacePort
+ (*WorkspaceGitStatus)(nil), // 31: gitpod.v1.WorkspaceGitStatus
+ (*WorkspacePhase)(nil), // 32: gitpod.v1.WorkspacePhase
+ (*WorkspaceInitializer)(nil), // 33: gitpod.v1.WorkspaceInitializer
+ (*GitInitializer)(nil), // 34: gitpod.v1.GitInitializer
+ (*SnapshotInitializer)(nil), // 35: gitpod.v1.SnapshotInitializer
+ (*PrebuildInitializer)(nil), // 36: gitpod.v1.PrebuildInitializer
+ (*FileDownloadInitializer)(nil), // 37: gitpod.v1.FileDownloadInitializer
+ (*GitStatus)(nil), // 38: gitpod.v1.GitStatus
+ (*UpdateWorkspaceRequest)(nil), // 39: gitpod.v1.UpdateWorkspaceRequest
+ (*UpdateWorkspaceResponse)(nil), // 40: gitpod.v1.UpdateWorkspaceResponse
+ (*ParseContextURLRequest)(nil), // 41: gitpod.v1.ParseContextURLRequest
+ (*ParseContextURLResponse)(nil), // 42: gitpod.v1.ParseContextURLResponse
+ (*CreateAndStartWorkspaceRequest_ContextURL)(nil), // 43: gitpod.v1.CreateAndStartWorkspaceRequest.ContextURL
+ nil, // 44: gitpod.v1.WorkspaceMetadata.AnnotationsEntry
+ (*WorkspaceSpec_Timeout)(nil), // 45: gitpod.v1.WorkspaceSpec.Timeout
+ (*WorkspaceSpec_GitSpec)(nil), // 46: gitpod.v1.WorkspaceSpec.GitSpec
+ (*WorkspaceStatus_WorkspaceConditions)(nil), // 47: gitpod.v1.WorkspaceStatus.WorkspaceConditions
+ (*WorkspaceStatus_PrebuildResult)(nil), // 48: gitpod.v1.WorkspaceStatus.PrebuildResult
+ (*WorkspaceInitializer_Spec)(nil), // 49: gitpod.v1.WorkspaceInitializer.Spec
+ (*GitInitializer_GitConfig)(nil), // 50: gitpod.v1.GitInitializer.GitConfig
+ nil, // 51: gitpod.v1.GitInitializer.GitConfig.CustomConfigEntry
+ (*FileDownloadInitializer_FileInfo)(nil), // 52: gitpod.v1.FileDownloadInitializer.FileInfo
+ (*UpdateWorkspaceRequest_UpdateWorkspaceMetadata)(nil), // 53: gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceMetadata
+ (*UpdateWorkspaceRequest_UpdateTimeout)(nil), // 54: gitpod.v1.UpdateWorkspaceRequest.UpdateTimeout
+ (*UpdateWorkspaceRequest_UpdateWorkspaceSpec)(nil), // 55: gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceSpec
+ (*PaginationRequest)(nil), // 56: gitpod.v1.PaginationRequest
+ (*PaginationResponse)(nil), // 57: gitpod.v1.PaginationResponse
+ (*EnvironmentVariable)(nil), // 58: gitpod.v1.EnvironmentVariable
+ (*timestamppb.Timestamp)(nil), // 59: google.protobuf.Timestamp
+ (*EditorReference)(nil), // 60: gitpod.v1.EditorReference
+ (*durationpb.Duration)(nil), // 61: google.protobuf.Duration
}
var file_gitpod_v1_workspace_proto_depIdxs = []int32{
- 23, // 0: gitpod.v1.GetWorkspaceResponse.workspace:type_name -> gitpod.v1.Workspace
- 24, // 1: gitpod.v1.WatchWorkspaceStatusResponse.status:type_name -> gitpod.v1.WorkspaceStatus
- 31, // 2: gitpod.v1.ListWorkspacesRequest.pagination:type_name -> gitpod.v1.PaginationRequest
- 23, // 3: gitpod.v1.ListWorkspacesResponse.workspaces:type_name -> gitpod.v1.Workspace
- 32, // 4: gitpod.v1.ListWorkspacesResponse.pagination:type_name -> gitpod.v1.PaginationResponse
- 30, // 5: gitpod.v1.CreateAndStartWorkspaceRequest.git:type_name -> gitpod.v1.CreateAndStartWorkspaceRequest.Git
- 29, // 6: gitpod.v1.CreateAndStartWorkspaceRequest.additional_env_variables:type_name -> gitpod.v1.WorkspaceEnvironmentVariable
- 33, // 7: gitpod.v1.CreateAndStartWorkspaceRequest.editor:type_name -> gitpod.v1.EditorReference
- 23, // 8: gitpod.v1.CreateAndStartWorkspaceResponse.workspace:type_name -> gitpod.v1.Workspace
- 23, // 9: gitpod.v1.StartWorkspaceResponse.workspace:type_name -> gitpod.v1.Workspace
+ 26, // 0: gitpod.v1.GetWorkspaceResponse.workspace:type_name -> gitpod.v1.Workspace
+ 29, // 1: gitpod.v1.WatchWorkspaceStatusResponse.status:type_name -> gitpod.v1.WorkspaceStatus
+ 56, // 2: gitpod.v1.ListWorkspacesRequest.pagination:type_name -> gitpod.v1.PaginationRequest
+ 57, // 3: gitpod.v1.ListWorkspacesResponse.pagination:type_name -> gitpod.v1.PaginationResponse
+ 26, // 4: gitpod.v1.ListWorkspacesResponse.workspaces:type_name -> gitpod.v1.Workspace
+ 27, // 5: gitpod.v1.CreateAndStartWorkspaceRequest.metadata:type_name -> gitpod.v1.WorkspaceMetadata
+ 43, // 6: gitpod.v1.CreateAndStartWorkspaceRequest.context_url:type_name -> gitpod.v1.CreateAndStartWorkspaceRequest.ContextURL
+ 28, // 7: gitpod.v1.CreateAndStartWorkspaceRequest.spec:type_name -> gitpod.v1.WorkspaceSpec
+ 26, // 8: gitpod.v1.CreateAndStartWorkspaceResponse.workspace:type_name -> gitpod.v1.Workspace
+ 26, // 9: gitpod.v1.StartWorkspaceResponse.workspace:type_name -> gitpod.v1.Workspace
1, // 10: gitpod.v1.GetWorkspaceDefaultImageResponse.source:type_name -> gitpod.v1.GetWorkspaceDefaultImageResponse.Source
- 24, // 11: gitpod.v1.Workspace.status:type_name -> gitpod.v1.WorkspaceStatus
- 29, // 12: gitpod.v1.Workspace.additional_environment_variables:type_name -> gitpod.v1.WorkspaceEnvironmentVariable
- 33, // 13: gitpod.v1.Workspace.editor:type_name -> gitpod.v1.EditorReference
- 28, // 14: gitpod.v1.WorkspaceStatus.phase:type_name -> gitpod.v1.WorkspacePhase
- 27, // 15: gitpod.v1.WorkspaceStatus.git_status:type_name -> gitpod.v1.WorkspaceGitStatus
- 26, // 16: gitpod.v1.WorkspaceStatus.ports:type_name -> gitpod.v1.WorkspacePort
- 0, // 17: gitpod.v1.WorkspaceStatus.admission:type_name -> gitpod.v1.AdmissionLevel
- 25, // 18: gitpod.v1.WorkspaceStatus.conditions:type_name -> gitpod.v1.WorkspaceConditions
- 2, // 19: gitpod.v1.WorkspacePort.policy:type_name -> gitpod.v1.WorkspacePort.Policy
- 3, // 20: gitpod.v1.WorkspacePort.protocol:type_name -> gitpod.v1.WorkspacePort.Protocol
- 4, // 21: gitpod.v1.WorkspacePhase.name:type_name -> gitpod.v1.WorkspacePhase.Phase
- 34, // 22: gitpod.v1.WorkspacePhase.last_transition_time:type_name -> google.protobuf.Timestamp
- 5, // 23: gitpod.v1.WorkspaceService.GetWorkspace:input_type -> gitpod.v1.GetWorkspaceRequest
- 7, // 24: gitpod.v1.WorkspaceService.WatchWorkspaceStatus:input_type -> gitpod.v1.WatchWorkspaceStatusRequest
- 9, // 25: gitpod.v1.WorkspaceService.ListWorkspaces:input_type -> gitpod.v1.ListWorkspacesRequest
- 11, // 26: gitpod.v1.WorkspaceService.CreateAndStartWorkspace:input_type -> gitpod.v1.CreateAndStartWorkspaceRequest
- 13, // 27: gitpod.v1.WorkspaceService.StartWorkspace:input_type -> gitpod.v1.StartWorkspaceRequest
- 15, // 28: gitpod.v1.WorkspaceService.GetWorkspaceDefaultImage:input_type -> gitpod.v1.GetWorkspaceDefaultImageRequest
- 17, // 29: gitpod.v1.WorkspaceService.SendHeartBeat:input_type -> gitpod.v1.SendHeartBeatRequest
- 19, // 30: gitpod.v1.WorkspaceService.GetWorkspaceOwnerToken:input_type -> gitpod.v1.GetWorkspaceOwnerTokenRequest
- 21, // 31: gitpod.v1.WorkspaceService.GetWorkspaceEditorCredentials:input_type -> gitpod.v1.GetWorkspaceEditorCredentialsRequest
- 6, // 32: gitpod.v1.WorkspaceService.GetWorkspace:output_type -> gitpod.v1.GetWorkspaceResponse
- 8, // 33: gitpod.v1.WorkspaceService.WatchWorkspaceStatus:output_type -> gitpod.v1.WatchWorkspaceStatusResponse
- 10, // 34: gitpod.v1.WorkspaceService.ListWorkspaces:output_type -> gitpod.v1.ListWorkspacesResponse
- 12, // 35: gitpod.v1.WorkspaceService.CreateAndStartWorkspace:output_type -> gitpod.v1.CreateAndStartWorkspaceResponse
- 14, // 36: gitpod.v1.WorkspaceService.StartWorkspace:output_type -> gitpod.v1.StartWorkspaceResponse
- 16, // 37: gitpod.v1.WorkspaceService.GetWorkspaceDefaultImage:output_type -> gitpod.v1.GetWorkspaceDefaultImageResponse
- 18, // 38: gitpod.v1.WorkspaceService.SendHeartBeat:output_type -> gitpod.v1.SendHeartBeatResponse
- 20, // 39: gitpod.v1.WorkspaceService.GetWorkspaceOwnerToken:output_type -> gitpod.v1.GetWorkspaceOwnerTokenResponse
- 22, // 40: gitpod.v1.WorkspaceService.GetWorkspaceEditorCredentials:output_type -> gitpod.v1.GetWorkspaceEditorCredentialsResponse
- 32, // [32:41] is the sub-list for method output_type
- 23, // [23:32] is the sub-list for method input_type
- 23, // [23:23] is the sub-list for extension type_name
- 23, // [23:23] is the sub-list for extension extendee
- 0, // [0:23] is the sub-list for field type_name
+ 27, // 11: gitpod.v1.Workspace.metadata:type_name -> gitpod.v1.WorkspaceMetadata
+ 28, // 12: gitpod.v1.Workspace.spec:type_name -> gitpod.v1.WorkspaceSpec
+ 29, // 13: gitpod.v1.Workspace.status:type_name -> gitpod.v1.WorkspaceStatus
+ 44, // 14: gitpod.v1.WorkspaceMetadata.annotations:type_name -> gitpod.v1.WorkspaceMetadata.AnnotationsEntry
+ 33, // 15: gitpod.v1.WorkspaceSpec.initializer:type_name -> gitpod.v1.WorkspaceInitializer
+ 2, // 16: gitpod.v1.WorkspaceSpec.type:type_name -> gitpod.v1.WorkspaceSpec.WorkspaceType
+ 30, // 17: gitpod.v1.WorkspaceSpec.ports:type_name -> gitpod.v1.WorkspacePort
+ 58, // 18: gitpod.v1.WorkspaceSpec.environment_variables:type_name -> gitpod.v1.EnvironmentVariable
+ 46, // 19: gitpod.v1.WorkspaceSpec.git:type_name -> gitpod.v1.WorkspaceSpec.GitSpec
+ 45, // 20: gitpod.v1.WorkspaceSpec.timeout:type_name -> gitpod.v1.WorkspaceSpec.Timeout
+ 0, // 21: gitpod.v1.WorkspaceSpec.admission:type_name -> gitpod.v1.AdmissionLevel
+ 59, // 22: gitpod.v1.WorkspaceSpec.last_user_activity:type_name -> google.protobuf.Timestamp
+ 60, // 23: gitpod.v1.WorkspaceSpec.editor:type_name -> gitpod.v1.EditorReference
+ 32, // 24: gitpod.v1.WorkspaceStatus.phase:type_name -> gitpod.v1.WorkspacePhase
+ 47, // 25: gitpod.v1.WorkspaceStatus.conditions:type_name -> gitpod.v1.WorkspaceStatus.WorkspaceConditions
+ 48, // 26: gitpod.v1.WorkspaceStatus.prebuild_result:type_name -> gitpod.v1.WorkspaceStatus.PrebuildResult
+ 31, // 27: gitpod.v1.WorkspaceStatus.git_status:type_name -> gitpod.v1.WorkspaceGitStatus
+ 0, // 28: gitpod.v1.WorkspacePort.admission:type_name -> gitpod.v1.AdmissionLevel
+ 4, // 29: gitpod.v1.WorkspacePort.protocol:type_name -> gitpod.v1.WorkspacePort.Protocol
+ 5, // 30: gitpod.v1.WorkspacePhase.name:type_name -> gitpod.v1.WorkspacePhase.Phase
+ 59, // 31: gitpod.v1.WorkspacePhase.last_transition_time:type_name -> google.protobuf.Timestamp
+ 49, // 32: gitpod.v1.WorkspaceInitializer.specs:type_name -> gitpod.v1.WorkspaceInitializer.Spec
+ 6, // 33: gitpod.v1.GitInitializer.target_mode:type_name -> gitpod.v1.GitInitializer.CloneTargetMode
+ 50, // 34: gitpod.v1.GitInitializer.config:type_name -> gitpod.v1.GitInitializer.GitConfig
+ 52, // 35: gitpod.v1.FileDownloadInitializer.files:type_name -> gitpod.v1.FileDownloadInitializer.FileInfo
+ 53, // 36: gitpod.v1.UpdateWorkspaceRequest.metadata:type_name -> gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceMetadata
+ 55, // 37: gitpod.v1.UpdateWorkspaceRequest.spec:type_name -> gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceSpec
+ 31, // 38: gitpod.v1.UpdateWorkspaceRequest.git_status:type_name -> gitpod.v1.WorkspaceGitStatus
+ 26, // 39: gitpod.v1.UpdateWorkspaceResponse.workspace:type_name -> gitpod.v1.Workspace
+ 27, // 40: gitpod.v1.ParseContextURLResponse.metadata:type_name -> gitpod.v1.WorkspaceMetadata
+ 28, // 41: gitpod.v1.ParseContextURLResponse.spec:type_name -> gitpod.v1.WorkspaceSpec
+ 60, // 42: gitpod.v1.CreateAndStartWorkspaceRequest.ContextURL.editor:type_name -> gitpod.v1.EditorReference
+ 61, // 43: gitpod.v1.WorkspaceSpec.Timeout.inactivity:type_name -> google.protobuf.Duration
+ 61, // 44: gitpod.v1.WorkspaceSpec.Timeout.disconnected:type_name -> google.protobuf.Duration
+ 61, // 45: gitpod.v1.WorkspaceSpec.Timeout.maximum_lifetime:type_name -> google.protobuf.Duration
+ 3, // 46: gitpod.v1.WorkspaceStatus.WorkspaceConditions.failed_reason:type_name -> gitpod.v1.WorkspaceStatus.WorkspaceConditions.FailedReason
+ 34, // 47: gitpod.v1.WorkspaceInitializer.Spec.git:type_name -> gitpod.v1.GitInitializer
+ 35, // 48: gitpod.v1.WorkspaceInitializer.Spec.snapshot:type_name -> gitpod.v1.SnapshotInitializer
+ 36, // 49: gitpod.v1.WorkspaceInitializer.Spec.prebuild:type_name -> gitpod.v1.PrebuildInitializer
+ 37, // 50: gitpod.v1.WorkspaceInitializer.Spec.download:type_name -> gitpod.v1.FileDownloadInitializer
+ 51, // 51: gitpod.v1.GitInitializer.GitConfig.custom_config:type_name -> gitpod.v1.GitInitializer.GitConfig.CustomConfigEntry
+ 7, // 52: gitpod.v1.GitInitializer.GitConfig.authentication:type_name -> gitpod.v1.GitInitializer.AuthMethod
+ 61, // 53: gitpod.v1.UpdateWorkspaceRequest.UpdateTimeout.inactivity:type_name -> google.protobuf.Duration
+ 61, // 54: gitpod.v1.UpdateWorkspaceRequest.UpdateTimeout.disconnected:type_name -> google.protobuf.Duration
+ 54, // 55: gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceSpec.timeout:type_name -> gitpod.v1.UpdateWorkspaceRequest.UpdateTimeout
+ 0, // 56: gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceSpec.admission:type_name -> gitpod.v1.AdmissionLevel
+ 8, // 57: gitpod.v1.WorkspaceService.GetWorkspace:input_type -> gitpod.v1.GetWorkspaceRequest
+ 10, // 58: gitpod.v1.WorkspaceService.WatchWorkspaceStatus:input_type -> gitpod.v1.WatchWorkspaceStatusRequest
+ 12, // 59: gitpod.v1.WorkspaceService.ListWorkspaces:input_type -> gitpod.v1.ListWorkspacesRequest
+ 14, // 60: gitpod.v1.WorkspaceService.CreateAndStartWorkspace:input_type -> gitpod.v1.CreateAndStartWorkspaceRequest
+ 16, // 61: gitpod.v1.WorkspaceService.StartWorkspace:input_type -> gitpod.v1.StartWorkspaceRequest
+ 39, // 62: gitpod.v1.WorkspaceService.UpdateWorkspace:input_type -> gitpod.v1.UpdateWorkspaceRequest
+ 41, // 63: gitpod.v1.WorkspaceService.ParseContextURL:input_type -> gitpod.v1.ParseContextURLRequest
+ 18, // 64: gitpod.v1.WorkspaceService.GetWorkspaceDefaultImage:input_type -> gitpod.v1.GetWorkspaceDefaultImageRequest
+ 20, // 65: gitpod.v1.WorkspaceService.SendHeartBeat:input_type -> gitpod.v1.SendHeartBeatRequest
+ 22, // 66: gitpod.v1.WorkspaceService.GetWorkspaceOwnerToken:input_type -> gitpod.v1.GetWorkspaceOwnerTokenRequest
+ 24, // 67: gitpod.v1.WorkspaceService.GetWorkspaceEditorCredentials:input_type -> gitpod.v1.GetWorkspaceEditorCredentialsRequest
+ 9, // 68: gitpod.v1.WorkspaceService.GetWorkspace:output_type -> gitpod.v1.GetWorkspaceResponse
+ 11, // 69: gitpod.v1.WorkspaceService.WatchWorkspaceStatus:output_type -> gitpod.v1.WatchWorkspaceStatusResponse
+ 13, // 70: gitpod.v1.WorkspaceService.ListWorkspaces:output_type -> gitpod.v1.ListWorkspacesResponse
+ 15, // 71: gitpod.v1.WorkspaceService.CreateAndStartWorkspace:output_type -> gitpod.v1.CreateAndStartWorkspaceResponse
+ 17, // 72: gitpod.v1.WorkspaceService.StartWorkspace:output_type -> gitpod.v1.StartWorkspaceResponse
+ 40, // 73: gitpod.v1.WorkspaceService.UpdateWorkspace:output_type -> gitpod.v1.UpdateWorkspaceResponse
+ 42, // 74: gitpod.v1.WorkspaceService.ParseContextURL:output_type -> gitpod.v1.ParseContextURLResponse
+ 19, // 75: gitpod.v1.WorkspaceService.GetWorkspaceDefaultImage:output_type -> gitpod.v1.GetWorkspaceDefaultImageResponse
+ 21, // 76: gitpod.v1.WorkspaceService.SendHeartBeat:output_type -> gitpod.v1.SendHeartBeatResponse
+ 23, // 77: gitpod.v1.WorkspaceService.GetWorkspaceOwnerToken:output_type -> gitpod.v1.GetWorkspaceOwnerTokenResponse
+ 25, // 78: gitpod.v1.WorkspaceService.GetWorkspaceEditorCredentials:output_type -> gitpod.v1.GetWorkspaceEditorCredentialsResponse
+ 68, // [68:79] is the sub-list for method output_type
+ 57, // [57:68] is the sub-list for method input_type
+ 57, // [57:57] is the sub-list for extension type_name
+ 57, // [57:57] is the sub-list for extension extendee
+ 0, // [0:57] is the sub-list for field type_name
}
func init() { file_gitpod_v1_workspace_proto_init() }
@@ -2569,6 +4429,7 @@ func file_gitpod_v1_workspace_proto_init() {
return
}
file_gitpod_v1_editor_proto_init()
+ file_gitpod_v1_envvar_proto_init()
file_gitpod_v1_pagination_proto_init()
if !protoimpl.UnsafeEnabled {
file_gitpod_v1_workspace_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
@@ -2800,7 +4661,7 @@ func file_gitpod_v1_workspace_proto_init() {
}
}
file_gitpod_v1_workspace_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkspaceStatus); i {
+ switch v := v.(*WorkspaceMetadata); i {
case 0:
return &v.state
case 1:
@@ -2812,7 +4673,7 @@ func file_gitpod_v1_workspace_proto_init() {
}
}
file_gitpod_v1_workspace_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkspaceConditions); i {
+ switch v := v.(*WorkspaceSpec); i {
case 0:
return &v.state
case 1:
@@ -2824,7 +4685,7 @@ func file_gitpod_v1_workspace_proto_init() {
}
}
file_gitpod_v1_workspace_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkspacePort); i {
+ switch v := v.(*WorkspaceStatus); i {
case 0:
return &v.state
case 1:
@@ -2836,7 +4697,7 @@ func file_gitpod_v1_workspace_proto_init() {
}
}
file_gitpod_v1_workspace_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkspaceGitStatus); i {
+ switch v := v.(*WorkspacePort); i {
case 0:
return &v.state
case 1:
@@ -2848,7 +4709,7 @@ func file_gitpod_v1_workspace_proto_init() {
}
}
file_gitpod_v1_workspace_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkspacePhase); i {
+ switch v := v.(*WorkspaceGitStatus); i {
case 0:
return &v.state
case 1:
@@ -2860,7 +4721,7 @@ func file_gitpod_v1_workspace_proto_init() {
}
}
file_gitpod_v1_workspace_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WorkspaceEnvironmentVariable); i {
+ switch v := v.(*WorkspacePhase); i {
case 0:
return &v.state
case 1:
@@ -2872,7 +4733,247 @@ func file_gitpod_v1_workspace_proto_init() {
}
}
file_gitpod_v1_workspace_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateAndStartWorkspaceRequest_Git); i {
+ switch v := v.(*WorkspaceInitializer); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GitInitializer); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*SnapshotInitializer); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PrebuildInitializer); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*FileDownloadInitializer); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GitStatus); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateWorkspaceRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateWorkspaceResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ParseContextURLRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ParseContextURLResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CreateAndStartWorkspaceRequest_ContextURL); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkspaceSpec_Timeout); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkspaceSpec_GitSpec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkspaceStatus_WorkspaceConditions); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkspaceStatus_PrebuildResult); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WorkspaceInitializer_Spec); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GitInitializer_GitConfig); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*FileDownloadInitializer_FileInfo); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateWorkspaceRequest_UpdateWorkspaceMetadata); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateWorkspaceRequest_UpdateTimeout); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UpdateWorkspaceRequest_UpdateWorkspaceSpec); i {
case 0:
return &v.state
case 1:
@@ -2885,16 +4986,26 @@ func file_gitpod_v1_workspace_proto_init() {
}
}
file_gitpod_v1_workspace_proto_msgTypes[6].OneofWrappers = []interface{}{
- (*CreateAndStartWorkspaceRequest_Git_)(nil),
(*CreateAndStartWorkspaceRequest_ContextUrl)(nil),
- }
+ (*CreateAndStartWorkspaceRequest_Spec)(nil),
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[31].OneofWrappers = []interface{}{}
+ file_gitpod_v1_workspace_proto_msgTypes[41].OneofWrappers = []interface{}{
+ (*WorkspaceInitializer_Spec_Git)(nil),
+ (*WorkspaceInitializer_Spec_Snapshot)(nil),
+ (*WorkspaceInitializer_Spec_Prebuild)(nil),
+ (*WorkspaceInitializer_Spec_Download)(nil),
+ }
+ file_gitpod_v1_workspace_proto_msgTypes[45].OneofWrappers = []interface{}{}
+ file_gitpod_v1_workspace_proto_msgTypes[46].OneofWrappers = []interface{}{}
+ file_gitpod_v1_workspace_proto_msgTypes[47].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_gitpod_v1_workspace_proto_rawDesc,
- NumEnums: 5,
- NumMessages: 26,
+ NumEnums: 8,
+ NumMessages: 48,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/components/public-api/go/v1/workspace_grpc.pb.go b/components/public-api/go/v1/workspace_grpc.pb.go
index 36b61d48cb5fdb..c4133ffe27fff2 100644
--- a/components/public-api/go/v1/workspace_grpc.pb.go
+++ b/components/public-api/go/v1/workspace_grpc.pb.go
@@ -42,6 +42,11 @@ type WorkspaceServiceClient interface {
// StartWorkspace starts an existing workspace.
// If the specified workspace is not in stopped phase, this will return the workspace as is.
StartWorkspace(ctx context.Context, in *StartWorkspaceRequest, opts ...grpc.CallOption) (*StartWorkspaceResponse, error)
+ // UpdateWorkspace updates the workspace.
+ UpdateWorkspace(ctx context.Context, in *UpdateWorkspaceRequest, opts ...grpc.CallOption) (*UpdateWorkspaceResponse, error)
+ // ParseContextURL parses a context URL and returns the workspace metadata and spec.
+ // Not implemented yet.
+ ParseContextURL(ctx context.Context, in *ParseContextURLRequest, opts ...grpc.CallOption) (*ParseContextURLResponse, error)
// GetWorkspaceDefaultImage returns the default workspace image of specified
// workspace.
GetWorkspaceDefaultImage(ctx context.Context, in *GetWorkspaceDefaultImageRequest, opts ...grpc.CallOption) (*GetWorkspaceDefaultImageResponse, error)
@@ -130,6 +135,24 @@ func (c *workspaceServiceClient) StartWorkspace(ctx context.Context, in *StartWo
return out, nil
}
+func (c *workspaceServiceClient) UpdateWorkspace(ctx context.Context, in *UpdateWorkspaceRequest, opts ...grpc.CallOption) (*UpdateWorkspaceResponse, error) {
+ out := new(UpdateWorkspaceResponse)
+ err := c.cc.Invoke(ctx, "/gitpod.v1.WorkspaceService/UpdateWorkspace", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *workspaceServiceClient) ParseContextURL(ctx context.Context, in *ParseContextURLRequest, opts ...grpc.CallOption) (*ParseContextURLResponse, error) {
+ out := new(ParseContextURLResponse)
+ err := c.cc.Invoke(ctx, "/gitpod.v1.WorkspaceService/ParseContextURL", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
func (c *workspaceServiceClient) GetWorkspaceDefaultImage(ctx context.Context, in *GetWorkspaceDefaultImageRequest, opts ...grpc.CallOption) (*GetWorkspaceDefaultImageResponse, error) {
out := new(GetWorkspaceDefaultImageResponse)
err := c.cc.Invoke(ctx, "/gitpod.v1.WorkspaceService/GetWorkspaceDefaultImage", in, out, opts...)
@@ -186,6 +209,11 @@ type WorkspaceServiceServer interface {
// StartWorkspace starts an existing workspace.
// If the specified workspace is not in stopped phase, this will return the workspace as is.
StartWorkspace(context.Context, *StartWorkspaceRequest) (*StartWorkspaceResponse, error)
+ // UpdateWorkspace updates the workspace.
+ UpdateWorkspace(context.Context, *UpdateWorkspaceRequest) (*UpdateWorkspaceResponse, error)
+ // ParseContextURL parses a context URL and returns the workspace metadata and spec.
+ // Not implemented yet.
+ ParseContextURL(context.Context, *ParseContextURLRequest) (*ParseContextURLResponse, error)
// GetWorkspaceDefaultImage returns the default workspace image of specified
// workspace.
GetWorkspaceDefaultImage(context.Context, *GetWorkspaceDefaultImageRequest) (*GetWorkspaceDefaultImageResponse, error)
@@ -218,6 +246,12 @@ func (UnimplementedWorkspaceServiceServer) CreateAndStartWorkspace(context.Conte
func (UnimplementedWorkspaceServiceServer) StartWorkspace(context.Context, *StartWorkspaceRequest) (*StartWorkspaceResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method StartWorkspace not implemented")
}
+func (UnimplementedWorkspaceServiceServer) UpdateWorkspace(context.Context, *UpdateWorkspaceRequest) (*UpdateWorkspaceResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method UpdateWorkspace not implemented")
+}
+func (UnimplementedWorkspaceServiceServer) ParseContextURL(context.Context, *ParseContextURLRequest) (*ParseContextURLResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ParseContextURL not implemented")
+}
func (UnimplementedWorkspaceServiceServer) GetWorkspaceDefaultImage(context.Context, *GetWorkspaceDefaultImageRequest) (*GetWorkspaceDefaultImageResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetWorkspaceDefaultImage not implemented")
}
@@ -336,6 +370,42 @@ func _WorkspaceService_StartWorkspace_Handler(srv interface{}, ctx context.Conte
return interceptor(ctx, in, info, handler)
}
+func _WorkspaceService_UpdateWorkspace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(UpdateWorkspaceRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(WorkspaceServiceServer).UpdateWorkspace(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/gitpod.v1.WorkspaceService/UpdateWorkspace",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(WorkspaceServiceServer).UpdateWorkspace(ctx, req.(*UpdateWorkspaceRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _WorkspaceService_ParseContextURL_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ParseContextURLRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(WorkspaceServiceServer).ParseContextURL(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/gitpod.v1.WorkspaceService/ParseContextURL",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(WorkspaceServiceServer).ParseContextURL(ctx, req.(*ParseContextURLRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
func _WorkspaceService_GetWorkspaceDefaultImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetWorkspaceDefaultImageRequest)
if err := dec(in); err != nil {
@@ -431,6 +501,14 @@ var WorkspaceService_ServiceDesc = grpc.ServiceDesc{
MethodName: "StartWorkspace",
Handler: _WorkspaceService_StartWorkspace_Handler,
},
+ {
+ MethodName: "UpdateWorkspace",
+ Handler: _WorkspaceService_UpdateWorkspace_Handler,
+ },
+ {
+ MethodName: "ParseContextURL",
+ Handler: _WorkspaceService_ParseContextURL_Handler,
+ },
{
MethodName: "GetWorkspaceDefaultImage",
Handler: _WorkspaceService_GetWorkspaceDefaultImage_Handler,
diff --git a/components/public-api/typescript-common/src/public-api-converter.spec.ts b/components/public-api/typescript-common/src/public-api-converter.spec.ts
index e637e281d6d515..64898cd3f954df 100644
--- a/components/public-api/typescript-common/src/public-api-converter.spec.ts
+++ b/components/public-api/typescript-common/src/public-api-converter.spec.ts
@@ -8,10 +8,10 @@
import { Timestamp, toPlainMessage } from "@bufbuild/protobuf";
import {
AdmissionLevel,
- WorkspaceEnvironmentVariable,
+ Workspace,
WorkspacePhase_Phase,
- WorkspacePort_Policy,
WorkspacePort_Protocol,
+ WorkspaceSpec_WorkspaceType,
} from "@gitpod/public-api/lib/gitpod/v1/workspace_pb";
import { expect } from "chai";
import { PartialConfiguration, PublicAPIConverter } from "./public-api-converter";
@@ -43,6 +43,7 @@ import {
} from "@gitpod/public-api/lib/gitpod/v1/authprovider_pb";
import {
ConfigurationEnvironmentVariable,
+ EnvironmentVariable,
EnvironmentVariableAdmission,
UserEnvironmentVariable,
} from "@gitpod/public-api/lib/gitpod/v1/envvar_pb";
@@ -273,18 +274,51 @@ describe("PublicAPIConverter", () => {
},
} as any);
expect(workspace).to.deep.equal(
- {
+ new Workspace({
id: "akosyakov-parceldemo-4crqn25qlwi",
- prebuild: false,
- organizationId: "ec76db37-9a48-4e2d-a78e-0ec7d2b4d2c0",
- name: "akosyakov/parcel-demo - master",
- pinned: false,
+ spec: {
+ ports: [],
+ type: WorkspaceSpec_WorkspaceType.REGULAR,
+ admission: AdmissionLevel.OWNER_ONLY,
+ environmentVariables: [],
+ initializer: {
+ specs: [
+ {
+ spec: {
+ case: "git",
+ value: {
+ remoteUri: "https://github.com/akosyakov/parcel-demo",
+ checkoutLocation: "parcel-demo",
+ config: {},
+ },
+ },
+ },
+ ],
+ },
+ git: {
+ username: "",
+ email: "",
+ },
+ class: "g1-standard",
+ editor: {
+ name: "code",
+ version: "stable",
+ },
+ },
+ metadata: {
+ ownerId: "827df1c8-d42d-4a69-bc38-64089af1f711",
+ configurationId: "",
+ organizationId: "ec76db37-9a48-4e2d-a78e-0ec7d2b4d2c0",
+ name: "akosyakov/parcel-demo - master",
+ pinned: false,
+ originalContextUrl: "https://github.com/akosyakov/parcel-demo",
+ },
status: {
+ statusVersion: Timestamp.fromDate(new Date("2023-10-16T20:18:24.923Z")).seconds,
phase: {
name: WorkspacePhase_Phase.CREATING,
lastTransitionTime: Timestamp.fromDate(new Date("2023-10-16T20:18:24.923Z")),
},
- message: "",
workspaceUrl:
"https://akosyakov-parceldemo-4crqn25qlwi.ws-dev.ak-public-26583c8c5c.preview.gitpod-dev.com",
gitStatus: {
@@ -298,24 +332,13 @@ describe("PublicAPIConverter", () => {
unpushedCommits: [],
untrackedFiles: [],
},
- ports: [],
- admission: AdmissionLevel.OWNER_ONLY,
instanceId: "226695b4-f10a-471a-a219-9b657645bf78",
conditions: {
failed: "",
timeout: "",
},
},
- additionalEnvironmentVariables: [],
- region: "dev",
- prebuildId: "",
- workspaceClass: "g1-standard",
- editor: {
- name: "code",
- version: "stable",
- },
- contextUrl: "https://github.com/akosyakov/parcel-demo",
- },
+ }),
"created",
);
workspace = converter.toWorkspace(
@@ -396,18 +419,59 @@ describe("PublicAPIConverter", () => {
workspace,
);
expect(workspace).to.deep.equal(
- {
+ new Workspace({
id: "akosyakov-parceldemo-4crqn25qlwi",
- prebuild: false,
- organizationId: "ec76db37-9a48-4e2d-a78e-0ec7d2b4d2c0",
- name: "akosyakov/parcel-demo - master",
- pinned: false,
+ spec: {
+ type: WorkspaceSpec_WorkspaceType.REGULAR,
+ editor: {
+ name: "code",
+ version: "stable",
+ },
+ ports: [
+ {
+ admission: AdmissionLevel.EVERYONE,
+ port: BigInt(1234),
+ protocol: WorkspacePort_Protocol.HTTP,
+ url: "https://1234-akosyakov-parceldemo-4crqn25qlwi.ws-dev.ak-public-26583c8c5c.preview.gitpod-dev.com",
+ },
+ ],
+ admission: AdmissionLevel.OWNER_ONLY,
+ environmentVariables: [],
+ class: "g1-standard",
+ initializer: {
+ specs: [
+ {
+ spec: {
+ case: "git",
+ value: {
+ remoteUri: "https://github.com/akosyakov/parcel-demo",
+ checkoutLocation: "parcel-demo",
+ config: {},
+ },
+ },
+ },
+ ],
+ },
+ git: {
+ username: "",
+ email: "",
+ },
+ },
+ metadata: {
+ ownerId: "827df1c8-d42d-4a69-bc38-64089af1f711",
+ organizationId: "ec76db37-9a48-4e2d-a78e-0ec7d2b4d2c0",
+ annotations: {},
+ configurationId: "",
+ name: "akosyakov/parcel-demo - master",
+ pinned: false,
+ originalContextUrl: "https://github.com/akosyakov/parcel-demo",
+ },
status: {
+ statusVersion: Timestamp.fromDate(new Date("2023-10-16T20:18:53.451Z")).seconds,
phase: {
name: WorkspacePhase_Phase.RUNNING,
lastTransitionTime: Timestamp.fromDate(new Date("2023-10-16T20:18:53.451Z")),
},
- message: "",
workspaceUrl:
"https://akosyakov-parceldemo-4crqn25qlwi.ws-dev.ak-public-26583c8c5c.preview.gitpod-dev.com",
gitStatus: {
@@ -421,31 +485,13 @@ describe("PublicAPIConverter", () => {
unpushedCommits: ["2203d16: tests"],
untrackedFiles: [],
},
- ports: [
- {
- policy: WorkspacePort_Policy.PUBLIC,
- port: BigInt(1234),
- protocol: WorkspacePort_Protocol.HTTP,
- url: "https://1234-akosyakov-parceldemo-4crqn25qlwi.ws-dev.ak-public-26583c8c5c.preview.gitpod-dev.com",
- },
- ],
- admission: AdmissionLevel.OWNER_ONLY,
instanceId: "226695b4-f10a-471a-a219-9b657645bf78",
conditions: {
failed: "",
timeout: "",
},
},
- additionalEnvironmentVariables: [],
- region: "dev",
- prebuildId: "",
- workspaceClass: "g1-standard",
- editor: {
- name: "code",
- version: "stable",
- },
- contextUrl: "https://github.com/akosyakov/parcel-demo",
- },
+ }),
"running",
);
workspace = converter.toWorkspace(
@@ -537,18 +583,59 @@ describe("PublicAPIConverter", () => {
workspace,
);
expect(workspace).to.deep.equal(
- {
+ new Workspace({
id: "akosyakov-parceldemo-4crqn25qlwi",
- prebuild: false,
- organizationId: "ec76db37-9a48-4e2d-a78e-0ec7d2b4d2c0",
- name: "akosyakov/parcel-demo - master",
- pinned: false,
+ spec: {
+ editor: {
+ name: "code",
+ version: "stable",
+ },
+ ports: [
+ {
+ admission: AdmissionLevel.EVERYONE,
+ port: BigInt(1234),
+ protocol: WorkspacePort_Protocol.HTTP,
+ url: "https://1234-akosyakov-parceldemo-4crqn25qlwi.ws-dev.ak-public-26583c8c5c.preview.gitpod-dev.com",
+ },
+ ],
+ type: WorkspaceSpec_WorkspaceType.REGULAR,
+ admission: AdmissionLevel.OWNER_ONLY,
+ environmentVariables: [],
+ initializer: {
+ specs: [
+ {
+ spec: {
+ case: "git",
+ value: {
+ remoteUri: "https://github.com/akosyakov/parcel-demo",
+ checkoutLocation: "parcel-demo",
+ config: {},
+ },
+ },
+ },
+ ],
+ },
+ git: {
+ username: "",
+ email: "",
+ },
+ class: "g1-standard",
+ },
+ metadata: {
+ ownerId: "827df1c8-d42d-4a69-bc38-64089af1f711",
+ configurationId: "",
+ organizationId: "ec76db37-9a48-4e2d-a78e-0ec7d2b4d2c0",
+ name: "akosyakov/parcel-demo - master",
+ pinned: false,
+ originalContextUrl: "https://github.com/akosyakov/parcel-demo",
+ },
status: {
+ statusVersion: Timestamp.fromDate(new Date("2023-10-16T20:36:16.205Z")).seconds,
+
phase: {
name: WorkspacePhase_Phase.STOPPED,
lastTransitionTime: Timestamp.fromDate(new Date("2023-10-16T20:36:16.205Z")),
},
- message: "",
workspaceUrl:
"https://akosyakov-parceldemo-4crqn25qlwi.ws-dev.ak-public-26583c8c5c.preview.gitpod-dev.com",
gitStatus: {
@@ -562,31 +649,13 @@ describe("PublicAPIConverter", () => {
unpushedCommits: ["2203d16: tests"],
untrackedFiles: [],
},
- ports: [
- {
- policy: WorkspacePort_Policy.PUBLIC,
- port: BigInt(1234),
- protocol: WorkspacePort_Protocol.HTTP,
- url: "https://1234-akosyakov-parceldemo-4crqn25qlwi.ws-dev.ak-public-26583c8c5c.preview.gitpod-dev.com",
- },
- ],
- admission: AdmissionLevel.OWNER_ONLY,
instanceId: "226695b4-f10a-471a-a219-9b657645bf78",
conditions: {
failed: "",
timeout: "",
},
},
- additionalEnvironmentVariables: [],
- region: "dev",
- prebuildId: "",
- workspaceClass: "g1-standard",
- editor: {
- name: "code",
- version: "stable",
- },
- contextUrl: "https://github.com/akosyakov/parcel-demo",
- },
+ }),
"stopped",
);
workspace = converter.toWorkspace(
@@ -660,18 +729,51 @@ describe("PublicAPIConverter", () => {
workspace,
);
expect(workspace).to.deep.equal(
- {
+ new Workspace({
id: "akosyakov-parceldemo-4crqn25qlwi",
- prebuild: false,
- organizationId: "ec76db37-9a48-4e2d-a78e-0ec7d2b4d2c0",
- name: "akosyakov/parcel-demo - master",
- pinned: false,
+ metadata: {
+ ownerId: "827df1c8-d42d-4a69-bc38-64089af1f711",
+ organizationId: "ec76db37-9a48-4e2d-a78e-0ec7d2b4d2c0",
+ configurationId: "",
+ name: "akosyakov/parcel-demo - master",
+ pinned: false,
+ originalContextUrl: "https://github.com/akosyakov/parcel-demo",
+ },
+ spec: {
+ editor: {
+ name: "code",
+ version: "stable",
+ },
+ environmentVariables: [],
+ type: WorkspaceSpec_WorkspaceType.REGULAR,
+ git: {
+ username: "",
+ email: "",
+ },
+ ports: [],
+ admission: AdmissionLevel.OWNER_ONLY,
+ class: "g1-standard",
+ initializer: {
+ specs: [
+ {
+ spec: {
+ case: "git",
+ value: {
+ remoteUri: "https://github.com/akosyakov/parcel-demo",
+ checkoutLocation: "parcel-demo",
+ config: {},
+ },
+ },
+ },
+ ],
+ },
+ },
status: {
+ statusVersion: Timestamp.fromDate(new Date("2023-10-16T20:38:51.092Z")).seconds,
phase: {
name: WorkspacePhase_Phase.RUNNING,
lastTransitionTime: Timestamp.fromDate(new Date("2023-10-16T20:38:51.092Z")),
},
- message: "",
workspaceUrl:
"https://akosyakov-parceldemo-4crqn25qlwi.ws-dev.ak-public-26583c8c5c.preview.gitpod-dev.com",
gitStatus: {
@@ -685,24 +787,13 @@ describe("PublicAPIConverter", () => {
unpushedCommits: ["2203d16: tests"],
untrackedFiles: [],
},
- ports: [],
- admission: AdmissionLevel.OWNER_ONLY,
instanceId: "e1148a46-a311-4215-8421-37cd3b907ee9",
conditions: {
failed: "",
timeout: "",
},
},
- additionalEnvironmentVariables: [],
- region: "dev",
- prebuildId: "",
- workspaceClass: "g1-standard",
- editor: {
- name: "code",
- version: "stable",
- },
- contextUrl: "https://github.com/akosyakov/parcel-demo",
- },
+ }),
"restarted",
);
});
@@ -878,7 +969,7 @@ describe("PublicAPIConverter", () => {
});
});
- describe("toWorkspaceEnvironmentVariables", () => {
+ describe("toEnvironmentVariables", () => {
const wsCtx: WithEnvvarsContext = {
title: "title",
envvars: [
@@ -888,9 +979,9 @@ describe("PublicAPIConverter", () => {
},
],
};
- const envVars = [new WorkspaceEnvironmentVariable({ name: "FOO", value: "bar" })];
+ const envVars = [new EnvironmentVariable({ name: "FOO", value: "bar" })];
it("should convert workspace environment variable types", () => {
- const result = converter.toWorkspaceEnvironmentVariables(wsCtx);
+ const result = converter.toEnvironmentVariables(wsCtx);
expect(result).to.deep.equal(envVars);
});
});
diff --git a/components/public-api/typescript-common/src/public-api-converter.ts b/components/public-api/typescript-common/src/public-api-converter.ts
index a33d6ec1adeba5..0cdf16d09b0616 100644
--- a/components/public-api/typescript-common/src/public-api-converter.ts
+++ b/components/public-api/typescript-common/src/public-api-converter.ts
@@ -39,21 +39,31 @@ import {
} from "@gitpod/public-api/lib/gitpod/v1/organization_pb";
import {
AdmissionLevel,
+ GitInitializer,
+ GitInitializer_GitConfig,
+ PrebuildInitializer,
+ SnapshotInitializer,
Workspace,
- WorkspaceConditions,
- WorkspaceEnvironmentVariable,
WorkspaceGitStatus,
+ WorkspaceInitializer,
+ WorkspaceInitializer_Spec,
+ WorkspaceMetadata,
WorkspacePhase,
WorkspacePhase_Phase,
WorkspacePort,
- WorkspacePort_Policy,
WorkspacePort_Protocol,
+ WorkspaceSpec,
+ WorkspaceSpec_GitSpec,
+ WorkspaceSpec_WorkspaceType,
WorkspaceStatus,
+ WorkspaceStatus_PrebuildResult,
+ WorkspaceStatus_WorkspaceConditions,
} from "@gitpod/public-api/lib/gitpod/v1/workspace_pb";
import { EditorReference } from "@gitpod/public-api/lib/gitpod/v1/editor_pb";
import { SSHPublicKey } from "@gitpod/public-api/lib/gitpod/v1/ssh_pb";
import {
ConfigurationEnvironmentVariable,
+ EnvironmentVariable,
EnvironmentVariableAdmission,
UserEnvironmentVariable,
} from "@gitpod/public-api/lib/gitpod/v1/envvar_pb";
@@ -84,6 +94,7 @@ import {
Token,
SuggestedRepository as SuggestedRepositoryProtocol,
UserSSHPublicKeyValue,
+ SnapshotContext,
} from "@gitpod/gitpod-protocol/lib//protocol";
import {
OrgMemberInfo,
@@ -118,45 +129,122 @@ export class PublicAPIConverter {
toWorkspace(arg: WorkspaceInfo | WorkspaceInstance, current?: Workspace): Workspace {
const workspace = current ?? new Workspace();
+ workspace.spec = this.toWorkspaceSpec(arg, workspace.spec);
+ workspace.status = this.toWorkspaceStatus(arg, workspace.status);
+ workspace.metadata = this.toWorkspaceMetadata(arg, workspace.metadata);
if ("workspace" in arg) {
workspace.id = arg.workspace.id;
- workspace.prebuild = arg.workspace.type === "prebuild";
- workspace.organizationId = arg.workspace.organizationId;
- workspace.name = arg.workspace.description;
- workspace.pinned = arg.workspace.pinned ?? false;
-
- const contextUrl = ContextURL.normalize(arg.workspace);
- if (contextUrl) {
- workspace.contextUrl = contextUrl;
+ if (arg.latestInstance) {
+ return this.toWorkspace(arg.latestInstance, workspace);
}
+ return workspace;
+ }
+ return workspace;
+ }
+
+ toWorkspaceSpec(arg: WorkspaceInfo | WorkspaceInstance, current?: WorkspaceSpec): WorkspaceSpec {
+ const spec = new WorkspaceSpec(current);
+ if ("workspace" in arg) {
+ spec.admission = this.toAdmission(arg.workspace.shareable);
+ spec.initializer = new WorkspaceInitializer(spec.initializer);
+ spec.type =
+ arg.workspace.type === "prebuild"
+ ? WorkspaceSpec_WorkspaceType.PREBUILD
+ : WorkspaceSpec_WorkspaceType.REGULAR;
+ spec.environmentVariables = this.toEnvironmentVariables(arg.workspace.context);
+
if (WithPrebuild.is(arg.workspace.context)) {
- workspace.prebuildId = arg.workspace.context.prebuildWorkspaceId;
+ const initializerSpec = new WorkspaceInitializer_Spec({
+ spec: {
+ case: "prebuild",
+ value: new PrebuildInitializer({
+ prebuildId: arg.workspace.context.prebuildWorkspaceId,
+ }),
+ },
+ });
+ spec.initializer.specs.push(initializerSpec);
+ } else if (CommitContext.is(arg.workspace.context)) {
+ const initializerSpec = new WorkspaceInitializer_Spec({
+ spec: {
+ case: "git",
+ value: new GitInitializer({
+ remoteUri: arg.workspace.context.normalizedContextURL,
+ upstreamRemoteUri: arg.workspace.context.upstreamRemoteURI,
+ // TODO:
+ // targetMode
+ // cloneTaget
+ checkoutLocation: arg.workspace.context.checkoutLocation,
+ // TODO: config
+ config: new GitInitializer_GitConfig(),
+ }),
+ },
+ });
+ spec.initializer.specs.push(initializerSpec);
+ } else if (SnapshotContext.is(arg.workspace.context)) {
+ const initializerSpec = new WorkspaceInitializer_Spec({
+ spec: {
+ case: "snapshot",
+ value: new SnapshotInitializer({
+ snapshotId: arg.workspace.context.snapshotId,
+ }),
+ },
+ });
+ spec.initializer.specs.push(initializerSpec);
}
+ // TODO: else if FileDownloadInitializer
- const status = new WorkspaceStatus();
- const phase = new WorkspacePhase();
- phase.lastTransitionTime = Timestamp.fromDate(new Date(arg.workspace.creationTime));
- status.phase = phase;
- status.admission = this.toAdmission(arg.workspace.shareable);
- status.gitStatus = this.toGitStatus(arg.workspace);
- workspace.status = status;
- workspace.additionalEnvironmentVariables = this.toWorkspaceEnvironmentVariables(arg.workspace.context);
+ spec.git = new WorkspaceSpec_GitSpec({
+ // TODO:
+ // username: "",
+ // email: "",
+ });
if (arg.latestInstance) {
- return this.toWorkspace(arg.latestInstance, workspace);
+ return this.toWorkspaceSpec(arg.latestInstance, spec);
}
- return workspace;
+ return spec;
+ }
+ spec.editor = this.toEditor(arg.configuration.ideConfig);
+ spec.ports = this.toPorts(arg.status.exposedPorts);
+ if (arg.status.timeout) {
+ // TODO: timeout
+ }
+ if (arg.workspaceClass) {
+ spec.class = arg.workspaceClass;
+ }
+ // TODO: ssh_public_keys
+ // TODO: subassembly_references
+ // TODO: log_url
+ return spec;
+ }
+
+ toWorkspaceStatus(arg: WorkspaceInfo | WorkspaceInstance, current?: WorkspaceStatus): WorkspaceStatus {
+ const status = new WorkspaceStatus(current);
+ status.phase = new WorkspacePhase(status.phase);
+
+ if ("workspace" in arg) {
+ if (arg.workspace.type === "prebuild") {
+ status.prebuildResult = new WorkspaceStatus_PrebuildResult({
+ // TODO:
+ // snapshot: "",
+ // errorMessage: "",
+ });
+ }
+ // TODO: timeout
+ status.phase.lastTransitionTime = Timestamp.fromDate(new Date(arg.workspace.creationTime));
+ status.gitStatus = this.toGitStatus(arg.workspace);
+ return status;
}
- const status = workspace.status ?? new WorkspaceStatus();
- workspace.status = status;
- const phase = status.phase ?? new WorkspacePhase();
- phase.name = this.toPhase(arg);
- status.phase = phase;
+ status.workspaceUrl = arg.ideUrl;
+ status.conditions = this.toWorkspaceConditions(arg.status.conditions);
let lastTransitionTime = new Date(arg.creationTime).getTime();
- if (phase.lastTransitionTime) {
- lastTransitionTime = Math.max(lastTransitionTime, new Date(phase.lastTransitionTime.toDate()).getTime());
+ if (status.phase.lastTransitionTime) {
+ lastTransitionTime = Math.max(
+ lastTransitionTime,
+ new Date(status.phase.lastTransitionTime.toDate()).getTime(),
+ );
}
if (arg.deployedTime) {
lastTransitionTime = Math.max(lastTransitionTime, new Date(arg.deployedTime).getTime());
@@ -170,30 +258,48 @@ export class PublicAPIConverter {
if (arg.stoppedTime) {
lastTransitionTime = Math.max(lastTransitionTime, new Date(arg.stoppedTime).getTime());
}
- phase.lastTransitionTime = Timestamp.fromDate(new Date(lastTransitionTime));
+ status.phase.lastTransitionTime = Timestamp.fromDate(new Date(lastTransitionTime));
+ // TODO: could be improved? But by original status source producer
+ status.statusVersion = status.phase.lastTransitionTime.seconds;
+
+ status.phase.name = this.toPhase(arg);
status.instanceId = arg.id;
if (arg.status.message) {
- status.message = arg.status.message;
+ status.conditions = new WorkspaceStatus_WorkspaceConditions({
+ failed: arg.status.message,
+ });
+ arg.status.conditions.failed;
}
- status.workspaceUrl = arg.ideUrl;
- status.ports = this.toPorts(arg.status.exposedPorts);
- status.conditions = this.toWorkspaceConditions(arg.status.conditions);
status.gitStatus = this.toGitStatus(arg, status.gitStatus);
- workspace.region = arg.region;
- if (arg.workspaceClass) {
- workspace.workspaceClass = arg.workspaceClass;
- }
- workspace.editor = this.toEditor(arg.configuration.ideConfig);
- return workspace;
+ return status;
}
- toWorkspaceConditions(conditions: WorkspaceInstanceConditions): WorkspaceConditions {
- return new WorkspaceConditions({
+ toWorkspaceMetadata(arg: WorkspaceInfo | WorkspaceInstance, current?: WorkspaceMetadata): WorkspaceMetadata {
+ const metadata = new WorkspaceMetadata(current);
+ if ("workspace" in arg) {
+ metadata.ownerId = arg.workspace.ownerId;
+ metadata.configurationId = arg.workspace.projectId ?? "";
+ // TODO: annotation
+ metadata.organizationId = arg.workspace.organizationId;
+ metadata.name = arg.workspace.description;
+ metadata.pinned = arg.workspace.pinned ?? false;
+ const contextUrl = ContextURL.normalize(arg.workspace);
+ if (contextUrl) {
+ metadata.originalContextUrl = contextUrl;
+ }
+ }
+ return metadata;
+ }
+
+ toWorkspaceConditions(conditions: WorkspaceInstanceConditions): WorkspaceStatus_WorkspaceConditions {
+ const result = new WorkspaceStatus_WorkspaceConditions({
failed: conditions.failed,
timeout: conditions.timeout,
});
+ // TODO: failedReason
+ return result;
}
toEditor(ideConfig: ConfigurationIdeConfig | undefined): EditorReference | undefined {
@@ -447,15 +553,15 @@ export class PublicAPIConverter {
return new ApplicationError(ErrorCodes.INTERNAL_SERVER_ERROR, reason.rawMessage);
}
- toWorkspaceEnvironmentVariables(context: WorkspaceContext): WorkspaceEnvironmentVariable[] {
+ toEnvironmentVariables(context: WorkspaceContext): EnvironmentVariable[] {
if (WithEnvvarsContext.is(context)) {
return context.envvars.map((envvar) => this.toWorkspaceEnvironmentVariable(envvar));
}
return [];
}
- toWorkspaceEnvironmentVariable(envVar: EnvVarWithValue): WorkspaceEnvironmentVariable {
- const result = new WorkspaceEnvironmentVariable();
+ toWorkspaceEnvironmentVariable(envVar: EnvVarWithValue): EnvironmentVariable {
+ const result = new EnvironmentVariable();
result.name = envVar.name;
result.value = envVar.value;
return result;
@@ -501,7 +607,7 @@ export class PublicAPIConverter {
if (port.url) {
result.url = port.url;
}
- result.policy = this.toPortPolicy(port.visibility);
+ result.admission = this.toAdmission(port.visibility === "public");
result.protocol = this.toPortProtocol(port.protocol);
return result;
}
@@ -515,15 +621,6 @@ export class PublicAPIConverter {
}
}
- toPortPolicy(visibility: string | undefined): WorkspacePort_Policy {
- switch (visibility) {
- case "public":
- return WorkspacePort_Policy.PUBLIC;
- default:
- return WorkspacePort_Policy.PRIVATE;
- }
- }
-
toGitStatus(
arg: WorkspaceInfo | ProtocolWorkspace | WorkspaceInstance,
current?: WorkspaceGitStatus,
@@ -580,6 +677,9 @@ export class PublicAPIConverter {
return WorkspacePhase_Phase.RUNNING;
case "interrupted":
return WorkspacePhase_Phase.INTERRUPTED;
+ // TODO:
+ // case "pause":
+ // return WorkspacePhase_Phase.PAUSED;
case "stopping":
return WorkspacePhase_Phase.STOPPING;
case "stopped":
diff --git a/components/public-api/typescript/src/gitpod/v1/envvar_pb.ts b/components/public-api/typescript/src/gitpod/v1/envvar_pb.ts
index 6d8e2fe0b3de14..38b80a17e0d784 100644
--- a/components/public-api/typescript/src/gitpod/v1/envvar_pb.ts
+++ b/components/public-api/typescript/src/gitpod/v1/envvar_pb.ts
@@ -861,9 +861,9 @@ export class ResolveWorkspaceEnvironmentVariablesRequest extends Message {
/**
- * @generated from field: repeated gitpod.v1.ResolveWorkspaceEnvironmentVariablesResponse.EnvironmentVariable environment_variables = 1;
+ * @generated from field: repeated gitpod.v1.EnvironmentVariable environment_variables = 1;
*/
- environmentVariables: ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable[] = [];
+ environmentVariables: EnvironmentVariable[] = [];
constructor(data?: PartialMessage) {
super();
@@ -873,7 +873,7 @@ export class ResolveWorkspaceEnvironmentVariablesResponse extends Message [
- { no: 1, name: "environment_variables", kind: "message", T: ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable, repeated: true },
+ { no: 1, name: "environment_variables", kind: "message", T: EnvironmentVariable, repeated: true },
]);
static fromBinary(bytes: Uint8Array, options?: Partial): ResolveWorkspaceEnvironmentVariablesResponse {
@@ -894,9 +894,9 @@ export class ResolveWorkspaceEnvironmentVariablesResponse extends Message {
+export class EnvironmentVariable extends Message {
/**
* @generated from field: string name = 1;
*/
@@ -907,31 +907,31 @@ export class ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable ex
*/
value = "";
- constructor(data?: PartialMessage) {
+ constructor(data?: PartialMessage) {
super();
proto3.util.initPartial(data, this);
}
static readonly runtime: typeof proto3 = proto3;
- static readonly typeName = "gitpod.v1.ResolveWorkspaceEnvironmentVariablesResponse.EnvironmentVariable";
+ static readonly typeName = "gitpod.v1.EnvironmentVariable";
static readonly fields: FieldList = proto3.util.newFieldList(() => [
{ no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
{ no: 2, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */ },
]);
- static fromBinary(bytes: Uint8Array, options?: Partial): ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable {
- return new ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable().fromBinary(bytes, options);
+ static fromBinary(bytes: Uint8Array, options?: Partial): EnvironmentVariable {
+ return new EnvironmentVariable().fromBinary(bytes, options);
}
- static fromJson(jsonValue: JsonValue, options?: Partial): ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable {
- return new ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable().fromJson(jsonValue, options);
+ static fromJson(jsonValue: JsonValue, options?: Partial): EnvironmentVariable {
+ return new EnvironmentVariable().fromJson(jsonValue, options);
}
- static fromJsonString(jsonString: string, options?: Partial): ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable {
- return new ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable().fromJsonString(jsonString, options);
+ static fromJsonString(jsonString: string, options?: Partial): EnvironmentVariable {
+ return new EnvironmentVariable().fromJsonString(jsonString, options);
}
- static equals(a: ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable | PlainMessage | undefined, b: ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable | PlainMessage | undefined): boolean {
- return proto3.util.equals(ResolveWorkspaceEnvironmentVariablesResponse_EnvironmentVariable, a, b);
+ static equals(a: EnvironmentVariable | PlainMessage | undefined, b: EnvironmentVariable | PlainMessage | undefined): boolean {
+ return proto3.util.equals(EnvironmentVariable, a, b);
}
}
diff --git a/components/public-api/typescript/src/gitpod/v1/workspace_connect.ts b/components/public-api/typescript/src/gitpod/v1/workspace_connect.ts
index fcec3dc6ac50cc..b89cb5dc9fb176 100644
--- a/components/public-api/typescript/src/gitpod/v1/workspace_connect.ts
+++ b/components/public-api/typescript/src/gitpod/v1/workspace_connect.ts
@@ -9,7 +9,7 @@
/* eslint-disable */
// @ts-nocheck
-import { CreateAndStartWorkspaceRequest, CreateAndStartWorkspaceResponse, GetWorkspaceDefaultImageRequest, GetWorkspaceDefaultImageResponse, GetWorkspaceEditorCredentialsRequest, GetWorkspaceEditorCredentialsResponse, GetWorkspaceOwnerTokenRequest, GetWorkspaceOwnerTokenResponse, GetWorkspaceRequest, GetWorkspaceResponse, ListWorkspacesRequest, ListWorkspacesResponse, SendHeartBeatRequest, SendHeartBeatResponse, StartWorkspaceRequest, StartWorkspaceResponse, WatchWorkspaceStatusRequest, WatchWorkspaceStatusResponse } from "./workspace_pb.js";
+import { CreateAndStartWorkspaceRequest, CreateAndStartWorkspaceResponse, GetWorkspaceDefaultImageRequest, GetWorkspaceDefaultImageResponse, GetWorkspaceEditorCredentialsRequest, GetWorkspaceEditorCredentialsResponse, GetWorkspaceOwnerTokenRequest, GetWorkspaceOwnerTokenResponse, GetWorkspaceRequest, GetWorkspaceResponse, ListWorkspacesRequest, ListWorkspacesResponse, ParseContextURLRequest, ParseContextURLResponse, SendHeartBeatRequest, SendHeartBeatResponse, StartWorkspaceRequest, StartWorkspaceResponse, UpdateWorkspaceRequest, UpdateWorkspaceResponse, WatchWorkspaceStatusRequest, WatchWorkspaceStatusResponse } from "./workspace_pb.js";
import { MethodKind } from "@bufbuild/protobuf";
/**
@@ -79,6 +79,29 @@ export const WorkspaceService = {
O: StartWorkspaceResponse,
kind: MethodKind.Unary,
},
+ /**
+ * UpdateWorkspace updates the workspace.
+ *
+ * @generated from rpc gitpod.v1.WorkspaceService.UpdateWorkspace
+ */
+ updateWorkspace: {
+ name: "UpdateWorkspace",
+ I: UpdateWorkspaceRequest,
+ O: UpdateWorkspaceResponse,
+ kind: MethodKind.Unary,
+ },
+ /**
+ * ParseContextURL parses a context URL and returns the workspace metadata and spec.
+ * Not implemented yet.
+ *
+ * @generated from rpc gitpod.v1.WorkspaceService.ParseContextURL
+ */
+ parseContextURL: {
+ name: "ParseContextURL",
+ I: ParseContextURLRequest,
+ O: ParseContextURLResponse,
+ kind: MethodKind.Unary,
+ },
/**
* GetWorkspaceDefaultImage returns the default workspace image of specified
* workspace.
diff --git a/components/public-api/typescript/src/gitpod/v1/workspace_pb.ts b/components/public-api/typescript/src/gitpod/v1/workspace_pb.ts
index 66f8481801ad41..29bea0033452df 100644
--- a/components/public-api/typescript/src/gitpod/v1/workspace_pb.ts
+++ b/components/public-api/typescript/src/gitpod/v1/workspace_pb.ts
@@ -10,9 +10,10 @@
// @ts-nocheck
import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
-import { Message, proto3, protoInt64, Timestamp } from "@bufbuild/protobuf";
+import { Duration, Message, proto3, protoInt64, Timestamp } from "@bufbuild/protobuf";
import { PaginationRequest, PaginationResponse } from "./pagination_pb.js";
import { EditorReference } from "./editor_pb.js";
+import { EnvironmentVariable } from "./envvar_pb.js";
/**
* Admission level describes who can access a workspace instance and its ports.
@@ -284,18 +285,18 @@ export class ListWorkspacesRequest extends Message {
*/
export class ListWorkspacesResponse extends Message {
/**
- * workspaces are the workspaces that matched the query
+ * pagination contains the pagination options for listing workspaces
*
- * @generated from field: repeated gitpod.v1.Workspace workspaces = 1;
+ * @generated from field: gitpod.v1.PaginationResponse pagination = 1;
*/
- workspaces: Workspace[] = [];
+ pagination?: PaginationResponse;
/**
- * pagination contains the pagination options for listing workspaces
+ * workspaces are the workspaces that matched the query
*
- * @generated from field: gitpod.v1.PaginationResponse pagination = 2;
+ * @generated from field: repeated gitpod.v1.Workspace workspaces = 2;
*/
- pagination?: PaginationResponse;
+ workspaces: Workspace[] = [];
constructor(data?: PartialMessage) {
super();
@@ -305,8 +306,8 @@ export class ListWorkspacesResponse extends Message {
static readonly runtime: typeof proto3 = proto3;
static readonly typeName = "gitpod.v1.ListWorkspacesResponse";
static readonly fields: FieldList = proto3.util.newFieldList(() => [
- { no: 1, name: "workspaces", kind: "message", T: Workspace, repeated: true },
- { no: 2, name: "pagination", kind: "message", T: PaginationResponse },
+ { no: 1, name: "pagination", kind: "message", T: PaginationResponse },
+ { no: 2, name: "workspaces", kind: "message", T: Workspace, repeated: true },
]);
static fromBinary(bytes: Uint8Array, options?: Partial): ListWorkspacesResponse {
@@ -327,95 +328,48 @@ export class ListWorkspacesResponse extends Message {
}
/**
+ * Required fields:
+ * - metadata.organization_id
+ * - metadata.configuration_id
+ *
* @generated from message gitpod.v1.CreateAndStartWorkspaceRequest
*/
export class CreateAndStartWorkspaceRequest extends Message {
/**
- * organization_id is the ID of the organization to create the workspace
- *
- * +required
- *
- * @generated from field: string organization_id = 1;
- */
- organizationId = "";
-
- /**
- * configuration_id is the ID of the configuration to use
+ * metadata is data associated with this workspace that's required for other parts of Gitpod to function
*
- * @generated from field: string configuration_id = 2;
+ * @generated from field: gitpod.v1.WorkspaceMetadata metadata = 1;
*/
- configurationId = "";
+ metadata?: WorkspaceMetadata;
/**
- * source describes the source refer of workspace.
- *
- * +required
- *
* @generated from oneof gitpod.v1.CreateAndStartWorkspaceRequest.source
*/
source: {
/**
- * git describes the source refer of workspace
- * Obtain available git using the ContextService.ParseContext operation if
- * not sure about it.
+ * context_url is the URL from which the workspace is created
*
- * @generated from field: gitpod.v1.CreateAndStartWorkspaceRequest.Git git = 3;
+ * @generated from field: gitpod.v1.CreateAndStartWorkspaceRequest.ContextURL context_url = 2;
*/
- value: CreateAndStartWorkspaceRequest_Git;
- case: "git";
+ value: CreateAndStartWorkspaceRequest_ContextURL;
+ case: "contextUrl";
} | {
/**
- * context_url is for backward compatiblity with the current dashboard, use
- * ContextService.ParseContext get get a Git source instead
+ * spec is the configuration of the workspace that's required for the to start the workspace
*
- * @generated from field: string context_url = 4 [deprecated = true];
- * @deprecated
+ * @generated from field: gitpod.v1.WorkspaceSpec spec = 3;
*/
- value: string;
- case: "contextUrl";
+ value: WorkspaceSpec;
+ case: "spec";
} | { case: undefined; value?: undefined } = { case: undefined };
- /**
- * additional_env_variables provide additional environment variables to the
- * workspace.
- * It will take precedence over environment variables provided by
- * the user and the configuration
- *
- * @generated from field: repeated gitpod.v1.WorkspaceEnvironmentVariable additional_env_variables = 5;
- */
- additionalEnvVariables: WorkspaceEnvironmentVariable[] = [];
-
- /**
- * @generated from field: string region = 6;
- */
- region = "";
-
- /**
- * @generated from field: string workspace_class = 7;
- */
- workspaceClass = "";
-
- /**
- * @generated from field: gitpod.v1.EditorReference editor = 8;
- */
- editor?: EditorReference;
-
- /**
- * @generated from field: string name = 9;
- */
- name = "";
-
- /**
- * @generated from field: bool pinned = 10;
- */
- pinned = false;
-
/**
* force_default_config indicates that the workspace should be created with
* the default configuration instead of the configuration provided in
* `.gitpod.yml` file
*
- * @generated from field: bool force_default_config = 11;
+ * @generated from field: bool force_default_config = 4 [deprecated = true];
+ * @deprecated
*/
forceDefaultConfig = false;
@@ -427,17 +381,10 @@ export class CreateAndStartWorkspaceRequest extends Message [
- { no: 1, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 2, name: "configuration_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 3, name: "git", kind: "message", T: CreateAndStartWorkspaceRequest_Git, oneof: "source" },
- { no: 4, name: "context_url", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "source" },
- { no: 5, name: "additional_env_variables", kind: "message", T: WorkspaceEnvironmentVariable, repeated: true },
- { no: 6, name: "region", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 7, name: "workspace_class", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 8, name: "editor", kind: "message", T: EditorReference },
- { no: 9, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 10, name: "pinned", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
- { no: 11, name: "force_default_config", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
+ { no: 1, name: "metadata", kind: "message", T: WorkspaceMetadata },
+ { no: 2, name: "context_url", kind: "message", T: CreateAndStartWorkspaceRequest_ContextURL, oneof: "source" },
+ { no: 3, name: "spec", kind: "message", T: WorkspaceSpec, oneof: "source" },
+ { no: 4, name: "force_default_config", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
]);
static fromBinary(bytes: Uint8Array, options?: Partial): CreateAndStartWorkspaceRequest {
@@ -458,59 +405,57 @@ export class CreateAndStartWorkspaceRequest extends Message {
+export class CreateAndStartWorkspaceRequest_ContextURL extends Message {
/**
- * clone_url is the URL of the repository to clone
+ * url is the URL from which the workspace is created
*
- * @generated from field: string clone_url = 1;
+ * @generated from field: string url = 1;
*/
- cloneUrl = "";
+ url = "";
/**
- * ref is an alternatively symbolic. e.g. refs/tags/v1.0,
- * empty string means the default branch of the repository
+ * workspace_class is the class of the workspace we ought to start
*
- * @generated from field: string ref = 2;
+ * @generated from field: string workspace_class = 2;
*/
- ref = "";
+ workspaceClass = "";
/**
- * create_local_branch is the branch you want to create based on provided
- * clone_url and ref when workspace started
+ * editor specifies the editor that will be used with this workspace.
*
- * @generated from field: string create_local_branch = 3;
+ * @generated from field: gitpod.v1.EditorReference editor = 3;
*/
- createLocalBranch = "";
+ editor?: EditorReference;
- constructor(data?: PartialMessage) {
+ constructor(data?: PartialMessage) {
super();
proto3.util.initPartial(data, this);
}
static readonly runtime: typeof proto3 = proto3;
- static readonly typeName = "gitpod.v1.CreateAndStartWorkspaceRequest.Git";
+ static readonly typeName = "gitpod.v1.CreateAndStartWorkspaceRequest.ContextURL";
static readonly fields: FieldList = proto3.util.newFieldList(() => [
- { no: 1, name: "clone_url", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 2, name: "ref", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 3, name: "create_local_branch", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 1, name: "url", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 2, name: "workspace_class", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 3, name: "editor", kind: "message", T: EditorReference },
]);
- static fromBinary(bytes: Uint8Array, options?: Partial): CreateAndStartWorkspaceRequest_Git {
- return new CreateAndStartWorkspaceRequest_Git().fromBinary(bytes, options);
+ static fromBinary(bytes: Uint8Array, options?: Partial): CreateAndStartWorkspaceRequest_ContextURL {
+ return new CreateAndStartWorkspaceRequest_ContextURL().fromBinary(bytes, options);
}
- static fromJson(jsonValue: JsonValue, options?: Partial): CreateAndStartWorkspaceRequest_Git {
- return new CreateAndStartWorkspaceRequest_Git().fromJson(jsonValue, options);
+ static fromJson(jsonValue: JsonValue, options?: Partial): CreateAndStartWorkspaceRequest_ContextURL {
+ return new CreateAndStartWorkspaceRequest_ContextURL().fromJson(jsonValue, options);
}
- static fromJsonString(jsonString: string, options?: Partial): CreateAndStartWorkspaceRequest_Git {
- return new CreateAndStartWorkspaceRequest_Git().fromJsonString(jsonString, options);
+ static fromJsonString(jsonString: string, options?: Partial): CreateAndStartWorkspaceRequest_ContextURL {
+ return new CreateAndStartWorkspaceRequest_ContextURL().fromJsonString(jsonString, options);
}
- static equals(a: CreateAndStartWorkspaceRequest_Git | PlainMessage | undefined, b: CreateAndStartWorkspaceRequest_Git | PlainMessage | undefined): boolean {
- return proto3.util.equals(CreateAndStartWorkspaceRequest_Git, a, b);
+ static equals(a: CreateAndStartWorkspaceRequest_ContextURL | PlainMessage | undefined, b: CreateAndStartWorkspaceRequest_ContextURL | PlainMessage | undefined): boolean {
+ return proto3.util.equals(CreateAndStartWorkspaceRequest_ContextURL, a, b);
}
}
@@ -565,7 +510,8 @@ export class StartWorkspaceRequest extends Message {
workspaceId = "";
/**
- * @generated from field: bool force_default_config = 2;
+ * @generated from field: bool force_default_config = 2 [deprecated = true];
+ * @deprecated
*/
forceDefaultConfig = false;
@@ -979,413 +925,765 @@ export class GetWorkspaceEditorCredentialsResponse extends Message {
/**
+ * ID is a unique identifier of this workspace. No other workspace with the same name must be managed by this workspace manager
+ *
* @generated from field: string id = 1;
*/
id = "";
/**
- * prebuild indicates it is a prebuild
- * TODO(ak) model prebuilds as a separate resource
+ * Metadata is data associated with this workspace that's required for other parts of Gitpod to function
*
- * @generated from field: bool prebuild = 2;
+ * @generated from field: gitpod.v1.WorkspaceMetadata metadata = 2;
*/
- prebuild = false;
+ metadata?: WorkspaceMetadata;
/**
- * @generated from field: string organization_id = 3;
+ * Spec is the configuration of the workspace that's required for the ws-manager to start the workspace
+ *
+ * @generated from field: gitpod.v1.WorkspaceSpec spec = 3;
*/
- organizationId = "";
+ spec?: WorkspaceSpec;
/**
- * @generated from field: string name = 4;
+ * Status is the current status of the workspace
+ *
+ * @generated from field: gitpod.v1.WorkspaceStatus status = 4;
*/
- name = "";
+ status?: WorkspaceStatus;
- /**
- * @generated from field: bool pinned = 5;
- */
- pinned = false;
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.Workspace";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 2, name: "metadata", kind: "message", T: WorkspaceMetadata },
+ { no: 3, name: "spec", kind: "message", T: WorkspaceSpec },
+ { no: 4, name: "status", kind: "message", T: WorkspaceStatus },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): Workspace {
+ return new Workspace().fromBinary(bytes, options);
+ }
+ static fromJson(jsonValue: JsonValue, options?: Partial): Workspace {
+ return new Workspace().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): Workspace {
+ return new Workspace().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: Workspace | PlainMessage | undefined, b: Workspace | PlainMessage | undefined): boolean {
+ return proto3.util.equals(Workspace, a, b);
+ }
+}
+
+/**
+ * WorkspaceMetadata is data associated with a workspace that's required for other parts of the system to function
+ *
+ * @generated from message gitpod.v1.WorkspaceMetadata
+ */
+export class WorkspaceMetadata extends Message {
/**
- * @generated from field: gitpod.v1.WorkspaceStatus status = 6;
+ * owner_id is the ID of the Gitpod user to whom we'll bill this workspace and who we consider responsible for its content
+ *
+ * @generated from field: string owner_id = 1;
*/
- status?: WorkspaceStatus;
+ ownerId = "";
/**
- * additional_environment_variables provide additional environment variables
- * which take precedence over environment variables provided by the project
- * and user.
+ * organization_id is the ID of the organization that contains the workspace
*
- * +optional
- *
- * @generated from field: repeated gitpod.v1.WorkspaceEnvironmentVariable additional_environment_variables = 7;
+ * @generated from field: string organization_id = 2;
*/
- additionalEnvironmentVariables: WorkspaceEnvironmentVariable[] = [];
+ organizationId = "";
/**
- * region specifies the region in which the workspace will be created.
- * Obtain available regions using the ListRegions operation.
- *
- * +optional defaults to the user's default region
+ * configuration_id is the ID of the configuration used by this workspace
*
- * @generated from field: string region = 8;
+ * @generated from field: string configuration_id = 3;
*/
- region = "";
+ configurationId = "";
/**
- * workspace_class specifies the workspace class with which to create the
- * workspace. Obtain available workspace classes using the ListWorkspaceClass
- * operation.
- *
- * +optional defaults to the class configured on the project or the cluster's
- * default class.
+ * annotations are key/value pairs that gets attached to the workspace.
+ * +internal - not yet implemented
*
- * @generated from field: string workspace_class = 9;
+ * @generated from field: map annotations = 4;
*/
- workspaceClass = "";
+ annotations: { [key: string]: string } = {};
/**
- * editor specifies the editor that will be used with this workspace.
- * Obtain available editors using the EditorService.ListEditors operation.
+ * name is the name of the workspace as specified by the user
*
- * +optional defaults to the default editor of the user
- *
- * @generated from field: gitpod.v1.EditorReference editor = 10;
+ * @generated from field: string name = 5;
*/
- editor?: EditorReference;
+ name = "";
/**
- * context_url is the normalized URL from which the workspace was created
- * TODO(ak) replace with resolveContextURL API
+ * pinned indicates whether the workspace is pinned
*
- * @generated from field: string context_url = 11;
+ * @generated from field: bool pinned = 6;
*/
- contextUrl = "";
+ pinned = false;
/**
- * Prebuild ID is the unique identifier of the prebuild
- * from which this workspace was created
- * +optional if empty then this workspace was not created from a prebuild
+ * original_context_url is the normalized URL from which the workspace was created
*
- * @generated from field: string prebuild_id = 12;
+ * @generated from field: string original_context_url = 7;
*/
- prebuildId = "";
+ originalContextUrl = "";
- constructor(data?: PartialMessage) {
+ constructor(data?: PartialMessage) {
super();
proto3.util.initPartial(data, this);
}
static readonly runtime: typeof proto3 = proto3;
- static readonly typeName = "gitpod.v1.Workspace";
+ static readonly typeName = "gitpod.v1.WorkspaceMetadata";
static readonly fields: FieldList = proto3.util.newFieldList(() => [
- { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 2, name: "prebuild", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
- { no: 3, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 4, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 5, name: "pinned", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
- { no: 6, name: "status", kind: "message", T: WorkspaceStatus },
- { no: 7, name: "additional_environment_variables", kind: "message", T: WorkspaceEnvironmentVariable, repeated: true },
- { no: 8, name: "region", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 9, name: "workspace_class", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 10, name: "editor", kind: "message", T: EditorReference },
- { no: 11, name: "context_url", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 12, name: "prebuild_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 1, name: "owner_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 2, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 3, name: "configuration_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 4, name: "annotations", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} },
+ { no: 5, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 6, name: "pinned", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
+ { no: 7, name: "original_context_url", kind: "scalar", T: 9 /* ScalarType.STRING */ },
]);
- static fromBinary(bytes: Uint8Array, options?: Partial): Workspace {
- return new Workspace().fromBinary(bytes, options);
+ static fromBinary(bytes: Uint8Array, options?: Partial): WorkspaceMetadata {
+ return new WorkspaceMetadata().fromBinary(bytes, options);
}
- static fromJson(jsonValue: JsonValue, options?: Partial): Workspace {
- return new Workspace().fromJson(jsonValue, options);
+ static fromJson(jsonValue: JsonValue, options?: Partial): WorkspaceMetadata {
+ return new WorkspaceMetadata().fromJson(jsonValue, options);
}
- static fromJsonString(jsonString: string, options?: Partial): Workspace {
- return new Workspace().fromJsonString(jsonString, options);
+ static fromJsonString(jsonString: string, options?: Partial): WorkspaceMetadata {
+ return new WorkspaceMetadata().fromJsonString(jsonString, options);
}
- static equals(a: Workspace | PlainMessage | undefined, b: Workspace | PlainMessage | undefined): boolean {
- return proto3.util.equals(Workspace, a, b);
+ static equals(a: WorkspaceMetadata | PlainMessage | undefined, b: WorkspaceMetadata | PlainMessage | undefined): boolean {
+ return proto3.util.equals(WorkspaceMetadata, a, b);
}
}
/**
- * @generated from message gitpod.v1.WorkspaceStatus
+ * WorkspaceSpec specifies the configuration of a workspace for a workspace start
+ *
+ * @generated from message gitpod.v1.WorkspaceSpec
*/
-export class WorkspaceStatus extends Message {
+export class WorkspaceSpec extends Message {
/**
- * Phase is a simple, high-level summary of where the workspace is in its
- * lifecycle. The phase is not intended to be a comprehensive rollup of
- * observations of the workspace state, nor is it intended to be a
- * comprehensive state machine.
+ * initializer configures how the workspace is to be initialized
*
- * @generated from field: gitpod.v1.WorkspacePhase phase = 1;
+ * @generated from field: gitpod.v1.WorkspaceInitializer initializer = 1;
*/
- phase?: WorkspacePhase;
+ initializer?: WorkspaceInitializer;
/**
- * message is an optional human-readable message detailing the current phase
+ * Type denots the kind of workspace we ought to start
*
- * @generated from field: string message = 2;
+ * @generated from field: gitpod.v1.WorkspaceSpec.WorkspaceType type = 2;
*/
- message = "";
+ type = WorkspaceSpec_WorkspaceType.UNSPECIFIED;
/**
- * workspace_url is the URL of the workspace. Only present when the phase is
- * running.
+ * ports is the set of ports which ought to be exposed to the internet
*
- * @generated from field: string workspace_url = 3;
+ * @generated from field: repeated gitpod.v1.WorkspacePort ports = 3;
*/
- workspaceUrl = "";
+ ports: WorkspacePort[] = [];
/**
- * git_status details the Git working copy status of the workspace.
- * Note: this is a best-effort field and more often than not will not be
- * present. Its absence does not indicate the absence of a working copy.
+ * envvars are user-defined environment variables which ought to be available in the workspace (shim'ed environment)
*
- * @generated from field: gitpod.v1.WorkspaceGitStatus git_status = 4;
+ * @generated from field: repeated gitpod.v1.EnvironmentVariable environment_variables = 4;
*/
- gitStatus?: WorkspaceGitStatus;
+ environmentVariables: EnvironmentVariable[] = [];
/**
- * ports lists the network ports currently available/known of this workspace
+ * Git configures the Git user in the workspace
*
- * @generated from field: repeated gitpod.v1.WorkspacePort ports = 5;
+ * @generated from field: gitpod.v1.WorkspaceSpec.GitSpec git = 5;
*/
- ports: WorkspacePort[] = [];
+ git?: WorkspaceSpec_GitSpec;
+
+ /**
+ * Timeout configures the workspace timeout
+ *
+ * @generated from field: gitpod.v1.WorkspaceSpec.Timeout timeout = 6;
+ */
+ timeout?: WorkspaceSpec_Timeout;
/**
- * Admission describes who can access a workspace instance and its ports.
+ * admission controlls who can access the workspace and its ports.
*
- * @generated from field: gitpod.v1.AdmissionLevel admission = 6;
+ * @generated from field: gitpod.v1.AdmissionLevel admission = 7;
*/
admission = AdmissionLevel.UNSPECIFIED;
/**
- * Instance ID is the unique identifier of the workspace instance
+ * Class denotes the class of the workspace we ought to start
*
- * @generated from field: string instance_id = 7;
+ * @generated from field: string class = 8;
*/
- instanceId = "";
+ class = "";
/**
- * Conditions contains observations of the workspace's current phase.
+ * ssh_public_keys is user's uploaded ssh public keys
*
- * @generated from field: gitpod.v1.WorkspaceConditions conditions = 8;
+ * @generated from field: repeated string ssh_public_keys = 9;
*/
- conditions?: WorkspaceConditions;
+ sshPublicKeys: string[] = [];
- constructor(data?: PartialMessage) {
+ /**
+ * subassembly_references is a list of workspace IDs that this workspace depends on.
+ * For example:
+ * index.docker.io/gitpod-io/subassmeblies/code:latest
+ *
+ * @generated from field: repeated string subassembly_references = 10;
+ */
+ subassemblyReferences: string[] = [];
+
+ /**
+ * last_user_activity is the time when the user last interacted with the workspace
+ *
+ * @generated from field: google.protobuf.Timestamp last_user_activity = 11;
+ */
+ lastUserActivity?: Timestamp;
+
+ /**
+ * log_url is the URL where we stream the workspace's logs to.
+ * Can be changed when the workspace is PENDING or STOPPED.
+ *
+ * @generated from field: string log_url = 12;
+ */
+ logUrl = "";
+
+ /**
+ * @generated from field: gitpod.v1.EditorReference editor = 13;
+ */
+ editor?: EditorReference;
+
+ constructor(data?: PartialMessage) {
super();
proto3.util.initPartial(data, this);
}
static readonly runtime: typeof proto3 = proto3;
- static readonly typeName = "gitpod.v1.WorkspaceStatus";
+ static readonly typeName = "gitpod.v1.WorkspaceSpec";
static readonly fields: FieldList = proto3.util.newFieldList(() => [
- { no: 1, name: "phase", kind: "message", T: WorkspacePhase },
- { no: 2, name: "message", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 3, name: "workspace_url", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 4, name: "git_status", kind: "message", T: WorkspaceGitStatus },
- { no: 5, name: "ports", kind: "message", T: WorkspacePort, repeated: true },
- { no: 6, name: "admission", kind: "enum", T: proto3.getEnumType(AdmissionLevel) },
- { no: 7, name: "instance_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 8, name: "conditions", kind: "message", T: WorkspaceConditions },
+ { no: 1, name: "initializer", kind: "message", T: WorkspaceInitializer },
+ { no: 2, name: "type", kind: "enum", T: proto3.getEnumType(WorkspaceSpec_WorkspaceType) },
+ { no: 3, name: "ports", kind: "message", T: WorkspacePort, repeated: true },
+ { no: 4, name: "environment_variables", kind: "message", T: EnvironmentVariable, repeated: true },
+ { no: 5, name: "git", kind: "message", T: WorkspaceSpec_GitSpec },
+ { no: 6, name: "timeout", kind: "message", T: WorkspaceSpec_Timeout },
+ { no: 7, name: "admission", kind: "enum", T: proto3.getEnumType(AdmissionLevel) },
+ { no: 8, name: "class", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 9, name: "ssh_public_keys", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
+ { no: 10, name: "subassembly_references", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
+ { no: 11, name: "last_user_activity", kind: "message", T: Timestamp },
+ { no: 12, name: "log_url", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 13, name: "editor", kind: "message", T: EditorReference },
]);
- static fromBinary(bytes: Uint8Array, options?: Partial): WorkspaceStatus {
- return new WorkspaceStatus().fromBinary(bytes, options);
+ static fromBinary(bytes: Uint8Array, options?: Partial): WorkspaceSpec {
+ return new WorkspaceSpec().fromBinary(bytes, options);
}
- static fromJson(jsonValue: JsonValue, options?: Partial): WorkspaceStatus {
- return new WorkspaceStatus().fromJson(jsonValue, options);
+ static fromJson(jsonValue: JsonValue, options?: Partial): WorkspaceSpec {
+ return new WorkspaceSpec().fromJson(jsonValue, options);
}
- static fromJsonString(jsonString: string, options?: Partial): WorkspaceStatus {
- return new WorkspaceStatus().fromJsonString(jsonString, options);
+ static fromJsonString(jsonString: string, options?: Partial): WorkspaceSpec {
+ return new WorkspaceSpec().fromJsonString(jsonString, options);
}
- static equals(a: WorkspaceStatus | PlainMessage | undefined, b: WorkspaceStatus | PlainMessage | undefined): boolean {
- return proto3.util.equals(WorkspaceStatus, a, b);
+ static equals(a: WorkspaceSpec | PlainMessage | undefined, b: WorkspaceSpec | PlainMessage | undefined): boolean {
+ return proto3.util.equals(WorkspaceSpec, a, b);
}
}
/**
- * @generated from message gitpod.v1.WorkspaceConditions
+ * WorkspaceType specifies the purpose/use of a workspace. Different workspace types are handled differently by all parts of the system.
+ *
+ * @generated from enum gitpod.v1.WorkspaceSpec.WorkspaceType
*/
-export class WorkspaceConditions extends Message {
+export enum WorkspaceSpec_WorkspaceType {
/**
- * failed contains technical details for the failure of the workspace.
- * +optional If this field is empty, the workspace has not failed.
+ * @generated from enum value: WORKSPACE_TYPE_UNSPECIFIED = 0;
+ */
+ UNSPECIFIED = 0,
+
+ /**
+ * Regular workspaces are your off-the-mill workspaces intended for users. They are directly user-facing and hence are most important.
*
- * @generated from field: string failed = 1;
+ * @generated from enum value: WORKSPACE_TYPE_REGULAR = 1;
*/
- failed = "";
+ REGULAR = 1,
/**
- * timeout contains the reason the workspace has timed out.
- * +optional If this field is empty, the workspace has not timed out.
+ * Prebuild workspaces are workspaces used to pre-build the content of other workspaces. They run headless and have no direct user-interaction.
*
- * @generated from field: string timeout = 2;
+ * @generated from enum value: WORKSPACE_TYPE_PREBUILD = 2;
*/
- timeout = "";
+ PREBUILD = 2,
+}
+// Retrieve enum metadata with: proto3.getEnumType(WorkspaceSpec_WorkspaceType)
+proto3.util.setEnumType(WorkspaceSpec_WorkspaceType, "gitpod.v1.WorkspaceSpec.WorkspaceType", [
+ { no: 0, name: "WORKSPACE_TYPE_UNSPECIFIED" },
+ { no: 1, name: "WORKSPACE_TYPE_REGULAR" },
+ { no: 2, name: "WORKSPACE_TYPE_PREBUILD" },
+]);
+
+/**
+ * Timeout configures the workspace timeout
+ *
+ * @generated from message gitpod.v1.WorkspaceSpec.Timeout
+ */
+export class WorkspaceSpec_Timeout extends Message {
+ /**
+ * inacitivity is the maximum time of inactivity before the workspace is stopped or paused
+ *
+ * @generated from field: google.protobuf.Duration inactivity = 1;
+ */
+ inactivity?: Duration;
+
+ /**
+ * inacitivity is the maximum time of disconnection before the workspace is stopped or paused
+ * set to zero to disable.
+ *
+ * @generated from field: google.protobuf.Duration disconnected = 2;
+ */
+ disconnected?: Duration;
+
+ /**
+ * maximum lifetime of the workspace
+ *
+ * @generated from field: google.protobuf.Duration maximum_lifetime = 3;
+ */
+ maximumLifetime?: Duration;
- constructor(data?: PartialMessage) {
+ constructor(data?: PartialMessage) {
super();
proto3.util.initPartial(data, this);
}
static readonly runtime: typeof proto3 = proto3;
- static readonly typeName = "gitpod.v1.WorkspaceConditions";
+ static readonly typeName = "gitpod.v1.WorkspaceSpec.Timeout";
static readonly fields: FieldList = proto3.util.newFieldList(() => [
- { no: 1, name: "failed", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 2, name: "timeout", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 1, name: "inactivity", kind: "message", T: Duration },
+ { no: 2, name: "disconnected", kind: "message", T: Duration },
+ { no: 3, name: "maximum_lifetime", kind: "message", T: Duration },
]);
- static fromBinary(bytes: Uint8Array, options?: Partial): WorkspaceConditions {
- return new WorkspaceConditions().fromBinary(bytes, options);
+ static fromBinary(bytes: Uint8Array, options?: Partial): WorkspaceSpec_Timeout {
+ return new WorkspaceSpec_Timeout().fromBinary(bytes, options);
}
- static fromJson(jsonValue: JsonValue, options?: Partial): WorkspaceConditions {
- return new WorkspaceConditions().fromJson(jsonValue, options);
+ static fromJson(jsonValue: JsonValue, options?: Partial): WorkspaceSpec_Timeout {
+ return new WorkspaceSpec_Timeout().fromJson(jsonValue, options);
}
- static fromJsonString(jsonString: string, options?: Partial): WorkspaceConditions {
- return new WorkspaceConditions().fromJsonString(jsonString, options);
+ static fromJsonString(jsonString: string, options?: Partial): WorkspaceSpec_Timeout {
+ return new WorkspaceSpec_Timeout().fromJsonString(jsonString, options);
}
- static equals(a: WorkspaceConditions | PlainMessage | undefined, b: WorkspaceConditions | PlainMessage | undefined): boolean {
- return proto3.util.equals(WorkspaceConditions, a, b);
+ static equals(a: WorkspaceSpec_Timeout | PlainMessage | undefined, b: WorkspaceSpec_Timeout | PlainMessage | undefined): boolean {
+ return proto3.util.equals(WorkspaceSpec_Timeout, a, b);
}
}
/**
- * @generated from message gitpod.v1.WorkspacePort
+ * GitSpec configures the Git available within the workspace
+ *
+ * @generated from message gitpod.v1.WorkspaceSpec.GitSpec
*/
-export class WorkspacePort extends Message {
- /**
- * port number
- *
- * @generated from field: uint64 port = 1;
- */
- port = protoInt64.zero;
-
- /**
- * policy of this port
- *
- * @generated from field: gitpod.v1.WorkspacePort.Policy policy = 2;
- */
- policy = WorkspacePort_Policy.UNSPECIFIED;
-
+export class WorkspaceSpec_GitSpec extends Message {
/**
- * url that can be used to access the port
+ * The Git username
*
- * @generated from field: string url = 3;
+ * @generated from field: string username = 1;
*/
- url = "";
+ username = "";
/**
- * backend protocol of this port
+ * The Git email address
*
- * @generated from field: gitpod.v1.WorkspacePort.Protocol protocol = 4;
+ * @generated from field: string email = 2;
*/
- protocol = WorkspacePort_Protocol.UNSPECIFIED;
+ email = "";
- constructor(data?: PartialMessage) {
+ constructor(data?: PartialMessage) {
super();
proto3.util.initPartial(data, this);
}
static readonly runtime: typeof proto3 = proto3;
- static readonly typeName = "gitpod.v1.WorkspacePort";
+ static readonly typeName = "gitpod.v1.WorkspaceSpec.GitSpec";
static readonly fields: FieldList = proto3.util.newFieldList(() => [
- { no: 1, name: "port", kind: "scalar", T: 4 /* ScalarType.UINT64 */ },
- { no: 2, name: "policy", kind: "enum", T: proto3.getEnumType(WorkspacePort_Policy) },
- { no: 3, name: "url", kind: "scalar", T: 9 /* ScalarType.STRING */ },
- { no: 4, name: "protocol", kind: "enum", T: proto3.getEnumType(WorkspacePort_Protocol) },
+ { no: 1, name: "username", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 2, name: "email", kind: "scalar", T: 9 /* ScalarType.STRING */ },
]);
- static fromBinary(bytes: Uint8Array, options?: Partial): WorkspacePort {
- return new WorkspacePort().fromBinary(bytes, options);
+ static fromBinary(bytes: Uint8Array, options?: Partial): WorkspaceSpec_GitSpec {
+ return new WorkspaceSpec_GitSpec().fromBinary(bytes, options);
}
- static fromJson(jsonValue: JsonValue, options?: Partial): WorkspacePort {
- return new WorkspacePort().fromJson(jsonValue, options);
+ static fromJson(jsonValue: JsonValue, options?: Partial): WorkspaceSpec_GitSpec {
+ return new WorkspaceSpec_GitSpec().fromJson(jsonValue, options);
}
- static fromJsonString(jsonString: string, options?: Partial): WorkspacePort {
- return new WorkspacePort().fromJsonString(jsonString, options);
+ static fromJsonString(jsonString: string, options?: Partial): WorkspaceSpec_GitSpec {
+ return new WorkspaceSpec_GitSpec().fromJsonString(jsonString, options);
}
- static equals(a: WorkspacePort | PlainMessage | undefined, b: WorkspacePort | PlainMessage | undefined): boolean {
- return proto3.util.equals(WorkspacePort, a, b);
+ static equals(a: WorkspaceSpec_GitSpec | PlainMessage | undefined, b: WorkspaceSpec_GitSpec | PlainMessage | undefined): boolean {
+ return proto3.util.equals(WorkspaceSpec_GitSpec, a, b);
}
}
/**
- * Policy defines the accssbility policy of a workspace port is guarded by an
- * authentication in the proxy
+ * WorkspaceStatus describes a workspace status
*
- * @generated from enum gitpod.v1.WorkspacePort.Policy
+ * @generated from message gitpod.v1.WorkspaceStatus
*/
-export enum WorkspacePort_Policy {
+export class WorkspaceStatus extends Message {
/**
- * @generated from enum value: POLICY_UNSPECIFIED = 0;
+ * version of the status update. Workspace instances themselves are unversioned,
+ * but their statuus has different versions.
+ * The value of this field has no semantic meaning (e.g. don't interpret it as
+ * as a timestemp), but it can be used to impose a partial order.
+ * If a.status_version < b.status_version then a was the status before b.
+ *
+ * @generated from field: uint64 status_version = 1;
*/
- UNSPECIFIED = 0,
+ statusVersion = protoInt64.zero;
/**
- * Private means the port is accessible by the workspace owner only using
- * the workspace port URL
+ * the phase of a workspace is a simple, high-level summary of where the workspace is in its lifecycle
*
- * @generated from enum value: POLICY_PRIVATE = 1;
+ * @generated from field: gitpod.v1.WorkspacePhase phase = 2;
*/
- PRIVATE = 1,
+ phase?: WorkspacePhase;
/**
- * Public means the port is accessible by everybody using the workspace port
- * URL
+ * workspace_url contains the URL at which the workspace can be accessed.
+ * This field is only set if the workspace is running.
*
- * @generated from enum value: POLICY_PUBLIC = 2;
+ * @generated from field: string workspace_url = 3;
*/
- PUBLIC = 2,
-}
-// Retrieve enum metadata with: proto3.getEnumType(WorkspacePort_Policy)
-proto3.util.setEnumType(WorkspacePort_Policy, "gitpod.v1.WorkspacePort.Policy", [
- { no: 0, name: "POLICY_UNSPECIFIED" },
- { no: 1, name: "POLICY_PRIVATE" },
- { no: 2, name: "POLICY_PUBLIC" },
-]);
+ workspaceUrl = "";
-/**
- * Protocol defines the backend protocol of port
- *
- * @generated from enum gitpod.v1.WorkspacePort.Protocol
- */
-export enum WorkspacePort_Protocol {
/**
- * @generated from enum value: PROTOCOL_UNSPECIFIED = 0;
+ * conditions detail the current state of the workspace
+ *
+ * @generated from field: gitpod.v1.WorkspaceStatus.WorkspaceConditions conditions = 4;
*/
- UNSPECIFIED = 0,
+ conditions?: WorkspaceStatus_WorkspaceConditions;
/**
- * Http means the port backend is http
+ * prebuild_result contains the result of a prebuild. Only if the workspace is
*
- * @generated from enum value: PROTOCOL_HTTP = 1;
+ * @generated from field: gitpod.v1.WorkspaceStatus.PrebuildResult prebuild_result = 5;
*/
- HTTP = 1,
+ prebuildResult?: WorkspaceStatus_PrebuildResult;
/**
- * Https means the port backend is https
+ * git_status details the Git working copy status of the workspace.
+ * Note: this is a best-effort field and more often than not will not be present. Its absence does not
+ * indicate the absence of a working copy.
*
- * @generated from enum value: PROTOCOL_HTTPS = 2;
+ * @generated from field: gitpod.v1.WorkspaceGitStatus git_status = 6;
*/
- HTTPS = 2,
-}
-// Retrieve enum metadata with: proto3.getEnumType(WorkspacePort_Protocol)
-proto3.util.setEnumType(WorkspacePort_Protocol, "gitpod.v1.WorkspacePort.Protocol", [
- { no: 0, name: "PROTOCOL_UNSPECIFIED" },
+ gitStatus?: WorkspaceGitStatus;
+
+ /**
+ * instance_id is the ID of the workspace instance - do not use, interpret or rely on this field
+ * unless you know what you're doing.
+ *
+ * @generated from field: string instance_id = 7 [deprecated = true];
+ * @deprecated
+ */
+ instanceId = "";
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.WorkspaceStatus";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "status_version", kind: "scalar", T: 4 /* ScalarType.UINT64 */ },
+ { no: 2, name: "phase", kind: "message", T: WorkspacePhase },
+ { no: 3, name: "workspace_url", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 4, name: "conditions", kind: "message", T: WorkspaceStatus_WorkspaceConditions },
+ { no: 5, name: "prebuild_result", kind: "message", T: WorkspaceStatus_PrebuildResult },
+ { no: 6, name: "git_status", kind: "message", T: WorkspaceGitStatus },
+ { no: 7, name: "instance_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): WorkspaceStatus {
+ return new WorkspaceStatus().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): WorkspaceStatus {
+ return new WorkspaceStatus().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): WorkspaceStatus {
+ return new WorkspaceStatus().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: WorkspaceStatus | PlainMessage | undefined, b: WorkspaceStatus | PlainMessage | undefined): boolean {
+ return proto3.util.equals(WorkspaceStatus, a, b);
+ }
+}
+
+/**
+ * WorkspaceCondition gives more detailed information as to the state of the workspace. Which condition actually
+ * has a value depends on the phase the workspace is in.
+ *
+ * @generated from message gitpod.v1.WorkspaceStatus.WorkspaceConditions
+ */
+export class WorkspaceStatus_WorkspaceConditions extends Message {
+ /**
+ * failed contains the reason the workspace failed to operate. If this field is empty, the workspace has not failed.
+ *
+ * @generated from field: string failed = 1;
+ */
+ failed = "";
+
+ /**
+ * failed_reason contains the reason the workspace failed to operate.
+ * This field is only set if the workspace has failed.
+ *
+ * @generated from field: gitpod.v1.WorkspaceStatus.WorkspaceConditions.FailedReason failed_reason = 2;
+ */
+ failedReason = WorkspaceStatus_WorkspaceConditions_FailedReason.UNSPECIFIED;
+
+ /**
+ * timeout contains the reason the workspace has timed out. If this field is empty, the workspace has not timed out.
+ *
+ * @generated from field: string timeout = 3;
+ */
+ timeout = "";
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.WorkspaceStatus.WorkspaceConditions";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "failed", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 2, name: "failed_reason", kind: "enum", T: proto3.getEnumType(WorkspaceStatus_WorkspaceConditions_FailedReason) },
+ { no: 3, name: "timeout", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): WorkspaceStatus_WorkspaceConditions {
+ return new WorkspaceStatus_WorkspaceConditions().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): WorkspaceStatus_WorkspaceConditions {
+ return new WorkspaceStatus_WorkspaceConditions().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): WorkspaceStatus_WorkspaceConditions {
+ return new WorkspaceStatus_WorkspaceConditions().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: WorkspaceStatus_WorkspaceConditions | PlainMessage | undefined, b: WorkspaceStatus_WorkspaceConditions | PlainMessage | undefined): boolean {
+ return proto3.util.equals(WorkspaceStatus_WorkspaceConditions, a, b);
+ }
+}
+
+/**
+ * @generated from enum gitpod.v1.WorkspaceStatus.WorkspaceConditions.FailedReason
+ */
+export enum WorkspaceStatus_WorkspaceConditions_FailedReason {
+ /**
+ * @generated from enum value: FAILED_REASON_UNSPECIFIED = 0;
+ */
+ UNSPECIFIED = 0,
+
+ /**
+ * @generated from enum value: FAILED_REASON_CONTENT_INITIALIZATION_FAILED = 1;
+ */
+ CONTENT_INITIALIZATION_FAILED = 1,
+
+ /**
+ * @generated from enum value: FAILED_REASON_BACKUP_FAILED = 2;
+ */
+ BACKUP_FAILED = 2,
+
+ /**
+ * @generated from enum value: FAILED_REASON_IMAGE_PULL_FAILURE = 3;
+ */
+ IMAGE_PULL_FAILURE = 3,
+
+ /**
+ * @generated from enum value: FAILED_REASON_UNEXPECTED_TERMINATION = 4;
+ */
+ UNEXPECTED_TERMINATION = 4,
+}
+// Retrieve enum metadata with: proto3.getEnumType(WorkspaceStatus_WorkspaceConditions_FailedReason)
+proto3.util.setEnumType(WorkspaceStatus_WorkspaceConditions_FailedReason, "gitpod.v1.WorkspaceStatus.WorkspaceConditions.FailedReason", [
+ { no: 0, name: "FAILED_REASON_UNSPECIFIED" },
+ { no: 1, name: "FAILED_REASON_CONTENT_INITIALIZATION_FAILED" },
+ { no: 2, name: "FAILED_REASON_BACKUP_FAILED" },
+ { no: 3, name: "FAILED_REASON_IMAGE_PULL_FAILURE" },
+ { no: 4, name: "FAILED_REASON_UNEXPECTED_TERMINATION" },
+]);
+
+/**
+ * @generated from message gitpod.v1.WorkspaceStatus.PrebuildResult
+ */
+export class WorkspaceStatus_PrebuildResult extends Message {
+ /**
+ * Snapshot points to the content of the prebuild. This string is opaque to the cluster manager,
+ * and must be returned unaltered.
+ *
+ * @generated from field: string snapshot = 1;
+ */
+ snapshot = "";
+
+ /**
+ * The prebuild's error message
+ *
+ * @generated from field: string error_message = 2;
+ */
+ errorMessage = "";
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.WorkspaceStatus.PrebuildResult";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "snapshot", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 2, name: "error_message", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): WorkspaceStatus_PrebuildResult {
+ return new WorkspaceStatus_PrebuildResult().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): WorkspaceStatus_PrebuildResult {
+ return new WorkspaceStatus_PrebuildResult().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): WorkspaceStatus_PrebuildResult {
+ return new WorkspaceStatus_PrebuildResult().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: WorkspaceStatus_PrebuildResult | PlainMessage | undefined, b: WorkspaceStatus_PrebuildResult | PlainMessage | undefined): boolean {
+ return proto3.util.equals(WorkspaceStatus_PrebuildResult, a, b);
+ }
+}
+
+/**
+ * @generated from message gitpod.v1.WorkspacePort
+ */
+export class WorkspacePort extends Message {
+ /**
+ * port number
+ *
+ * @generated from field: uint64 port = 1;
+ */
+ port = protoInt64.zero;
+
+ /**
+ * policy of this port
+ *
+ * @generated from field: gitpod.v1.AdmissionLevel admission = 2;
+ */
+ admission = AdmissionLevel.UNSPECIFIED;
+
+ /**
+ * url that can be used to access the port
+ *
+ * @generated from field: string url = 3;
+ */
+ url = "";
+
+ /**
+ * backend protocol of this port
+ *
+ * @generated from field: gitpod.v1.WorkspacePort.Protocol protocol = 4;
+ */
+ protocol = WorkspacePort_Protocol.UNSPECIFIED;
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.WorkspacePort";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "port", kind: "scalar", T: 4 /* ScalarType.UINT64 */ },
+ { no: 2, name: "admission", kind: "enum", T: proto3.getEnumType(AdmissionLevel) },
+ { no: 3, name: "url", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 4, name: "protocol", kind: "enum", T: proto3.getEnumType(WorkspacePort_Protocol) },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): WorkspacePort {
+ return new WorkspacePort().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): WorkspacePort {
+ return new WorkspacePort().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): WorkspacePort {
+ return new WorkspacePort().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: WorkspacePort | PlainMessage | undefined, b: WorkspacePort | PlainMessage | undefined): boolean {
+ return proto3.util.equals(WorkspacePort, a, b);
+ }
+}
+
+/**
+ * Protocol defines the backend protocol of port
+ *
+ * @generated from enum gitpod.v1.WorkspacePort.Protocol
+ */
+export enum WorkspacePort_Protocol {
+ /**
+ * @generated from enum value: PROTOCOL_UNSPECIFIED = 0;
+ */
+ UNSPECIFIED = 0,
+
+ /**
+ * Http means the port backend is http
+ *
+ * @generated from enum value: PROTOCOL_HTTP = 1;
+ */
+ HTTP = 1,
+
+ /**
+ * Https means the port backend is https
+ *
+ * @generated from enum value: PROTOCOL_HTTPS = 2;
+ */
+ HTTPS = 2,
+}
+// Retrieve enum metadata with: proto3.getEnumType(WorkspacePort_Protocol)
+proto3.util.setEnumType(WorkspacePort_Protocol, "gitpod.v1.WorkspacePort.Protocol", [
+ { no: 0, name: "PROTOCOL_UNSPECIFIED" },
{ no: 1, name: "PROTOCOL_HTTP" },
{ no: 2, name: "PROTOCOL_HTTPS" },
]);
@@ -1615,20 +1913,28 @@ export enum WorkspacePhase_Phase {
*/
INTERRUPTED = 7,
+ /**
+ * Paused means the workspace is currently unavailable, akin to stopped,
+ * but faster to wake up.
+ *
+ * @generated from enum value: PHASE_PAUSED = 8;
+ */
+ PAUSED = 8,
+
/**
* Stopping means that the workspace is currently shutting down. It could go
* to stopped every moment.
*
- * @generated from enum value: PHASE_STOPPING = 8;
+ * @generated from enum value: PHASE_STOPPING = 9;
*/
- STOPPING = 8,
+ STOPPING = 9,
/**
* Stopped means the workspace ended regularly because it was shut down.
*
- * @generated from enum value: PHASE_STOPPED = 9;
+ * @generated from enum value: PHASE_STOPPED = 10;
*/
- STOPPED = 9,
+ STOPPED = 10,
}
// Retrieve enum metadata with: proto3.getEnumType(WorkspacePhase_Phase)
proto3.util.setEnumType(WorkspacePhase_Phase, "gitpod.v1.WorkspacePhase.Phase", [
@@ -1640,49 +1946,967 @@ proto3.util.setEnumType(WorkspacePhase_Phase, "gitpod.v1.WorkspacePhase.Phase",
{ no: 5, name: "PHASE_INITIALIZING" },
{ no: 6, name: "PHASE_RUNNING" },
{ no: 7, name: "PHASE_INTERRUPTED" },
- { no: 8, name: "PHASE_STOPPING" },
- { no: 9, name: "PHASE_STOPPED" },
+ { no: 8, name: "PHASE_PAUSED" },
+ { no: 9, name: "PHASE_STOPPING" },
+ { no: 10, name: "PHASE_STOPPED" },
]);
/**
- * @generated from message gitpod.v1.WorkspaceEnvironmentVariable
+ * WorkspaceInitializer specifies how a workspace is to be initialized
+ *
+ * @generated from message gitpod.v1.WorkspaceInitializer
*/
-export class WorkspaceEnvironmentVariable extends Message {
+export class WorkspaceInitializer extends Message {
/**
- * @generated from field: string name = 1;
+ * @generated from field: repeated gitpod.v1.WorkspaceInitializer.Spec specs = 1;
*/
- name = "";
+ specs: WorkspaceInitializer_Spec[] = [];
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.WorkspaceInitializer";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "specs", kind: "message", T: WorkspaceInitializer_Spec, repeated: true },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): WorkspaceInitializer {
+ return new WorkspaceInitializer().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): WorkspaceInitializer {
+ return new WorkspaceInitializer().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): WorkspaceInitializer {
+ return new WorkspaceInitializer().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: WorkspaceInitializer | PlainMessage | undefined, b: WorkspaceInitializer | PlainMessage | undefined): boolean {
+ return proto3.util.equals(WorkspaceInitializer, a, b);
+ }
+}
+
+/**
+ * @generated from message gitpod.v1.WorkspaceInitializer.Spec
+ */
+export class WorkspaceInitializer_Spec extends Message {
+ /**
+ * @generated from oneof gitpod.v1.WorkspaceInitializer.Spec.spec
+ */
+ spec: {
+ /**
+ * @generated from field: gitpod.v1.GitInitializer git = 1;
+ */
+ value: GitInitializer;
+ case: "git";
+ } | {
+ /**
+ * @generated from field: gitpod.v1.SnapshotInitializer snapshot = 2;
+ */
+ value: SnapshotInitializer;
+ case: "snapshot";
+ } | {
+ /**
+ * @generated from field: gitpod.v1.PrebuildInitializer prebuild = 3;
+ */
+ value: PrebuildInitializer;
+ case: "prebuild";
+ } | {
+ /**
+ * @generated from field: gitpod.v1.FileDownloadInitializer download = 4;
+ */
+ value: FileDownloadInitializer;
+ case: "download";
+ } | { case: undefined; value?: undefined } = { case: undefined };
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.WorkspaceInitializer.Spec";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "git", kind: "message", T: GitInitializer, oneof: "spec" },
+ { no: 2, name: "snapshot", kind: "message", T: SnapshotInitializer, oneof: "spec" },
+ { no: 3, name: "prebuild", kind: "message", T: PrebuildInitializer, oneof: "spec" },
+ { no: 4, name: "download", kind: "message", T: FileDownloadInitializer, oneof: "spec" },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): WorkspaceInitializer_Spec {
+ return new WorkspaceInitializer_Spec().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): WorkspaceInitializer_Spec {
+ return new WorkspaceInitializer_Spec().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): WorkspaceInitializer_Spec {
+ return new WorkspaceInitializer_Spec().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: WorkspaceInitializer_Spec | PlainMessage | undefined, b: WorkspaceInitializer_Spec | PlainMessage | undefined): boolean {
+ return proto3.util.equals(WorkspaceInitializer_Spec, a, b);
+ }
+}
+
+/**
+ * @generated from message gitpod.v1.GitInitializer
+ */
+export class GitInitializer extends Message {
+ /**
+ * remote_uri is the Git remote origin
+ *
+ * @generated from field: string remote_uri = 1;
+ */
+ remoteUri = "";
+
+ /**
+ * upstream_Remote_uri is the fork upstream of a repository
+ *
+ * @generated from field: string upstream_remote_uri = 2;
+ */
+ upstreamRemoteUri = "";
+
+ /**
+ * the target mode determines what gets checked out
+ *
+ * @generated from field: gitpod.v1.GitInitializer.CloneTargetMode target_mode = 3;
+ */
+ targetMode = GitInitializer_CloneTargetMode.UNSPECIFIED;
+
+ /**
+ * the value for the clone target mode - use depends on the target mode
+ *
+ * @generated from field: string clone_taget = 4;
+ */
+ cloneTaget = "";
+
+ /**
+ * a path relative to the workspace root in which the code will be checked out to
+ *
+ * @generated from field: string checkout_location = 5;
+ */
+ checkoutLocation = "";
+
+ /**
+ * config specifies the Git configuration for this workspace
+ *
+ * @generated from field: gitpod.v1.GitInitializer.GitConfig config = 6;
+ */
+ config?: GitInitializer_GitConfig;
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.GitInitializer";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "remote_uri", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 2, name: "upstream_remote_uri", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 3, name: "target_mode", kind: "enum", T: proto3.getEnumType(GitInitializer_CloneTargetMode) },
+ { no: 4, name: "clone_taget", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 5, name: "checkout_location", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 6, name: "config", kind: "message", T: GitInitializer_GitConfig },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): GitInitializer {
+ return new GitInitializer().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): GitInitializer {
+ return new GitInitializer().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): GitInitializer {
+ return new GitInitializer().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: GitInitializer | PlainMessage | undefined, b: GitInitializer | PlainMessage | undefined): boolean {
+ return proto3.util.equals(GitInitializer, a, b);
+ }
+}
+
+/**
+ * CloneTargetMode is the target state in which we want to leave a GitWorkspace
+ *
+ * @generated from enum gitpod.v1.GitInitializer.CloneTargetMode
+ */
+export enum GitInitializer_CloneTargetMode {
+ /**
+ * @generated from enum value: CLONE_TARGET_MODE_UNSPECIFIED = 0;
+ */
+ UNSPECIFIED = 0,
+
+ /**
+ * REMOTE_HEAD has the local WS point at the remote branch head
+ *
+ * @generated from enum value: CLONE_TARGET_MODE_REMOTE_HEAD = 1;
+ */
+ REMOTE_HEAD = 1,
+
+ /**
+ * REMOTE_COMMIT has the local WS point at a specific commit
+ *
+ * @generated from enum value: CLONE_TARGET_MODE_REMOTE_COMMIT = 2;
+ */
+ REMOTE_COMMIT = 2,
+
+ /**
+ * REMOTE_BRANCH has the local WS point at a remote branch
+ *
+ * @generated from enum value: CLONE_TARGET_MODE_REMOTE_BRANCH = 3;
+ */
+ REMOTE_BRANCH = 3,
+
+ /**
+ * LOCAL_BRANCH creates a local branch in the workspace
+ *
+ * @generated from enum value: CLONE_TARGET_MODE_LOCAL_BRANCH = 4;
+ */
+ LOCAL_BRANCH = 4,
+}
+// Retrieve enum metadata with: proto3.getEnumType(GitInitializer_CloneTargetMode)
+proto3.util.setEnumType(GitInitializer_CloneTargetMode, "gitpod.v1.GitInitializer.CloneTargetMode", [
+ { no: 0, name: "CLONE_TARGET_MODE_UNSPECIFIED" },
+ { no: 1, name: "CLONE_TARGET_MODE_REMOTE_HEAD" },
+ { no: 2, name: "CLONE_TARGET_MODE_REMOTE_COMMIT" },
+ { no: 3, name: "CLONE_TARGET_MODE_REMOTE_BRANCH" },
+ { no: 4, name: "CLONE_TARGET_MODE_LOCAL_BRANCH" },
+]);
+
+/**
+ * AuthMethod is the means of authentication used during clone
+ *
+ * @generated from enum gitpod.v1.GitInitializer.AuthMethod
+ */
+export enum GitInitializer_AuthMethod {
+ /**
+ * NO_AUTH disables authentication during clone
+ *
+ * @generated from enum value: AUTH_METHOD_UNSPECIFIED = 0;
+ */
+ UNSPECIFIED = 0,
+
+ /**
+ * BASIC_AUTH uses HTTP basic auth during clone (fails if repo is not cloned through http)
+ *
+ * @generated from enum value: AUTH_METHOD_BASIC_AUTH = 1;
+ */
+ BASIC_AUTH = 1,
+
+ /**
+ * BASIC_AUTH_OTS uses HTTP basic auth during the clone with the secrets coming from the OTS URL.
+ * Fails if either the OTS download or the clone fail.
+ *
+ * @generated from enum value: AUTH_METHOD_BASIC_AUTH_OTS = 2;
+ */
+ BASIC_AUTH_OTS = 2,
+}
+// Retrieve enum metadata with: proto3.getEnumType(GitInitializer_AuthMethod)
+proto3.util.setEnumType(GitInitializer_AuthMethod, "gitpod.v1.GitInitializer.AuthMethod", [
+ { no: 0, name: "AUTH_METHOD_UNSPECIFIED" },
+ { no: 1, name: "AUTH_METHOD_BASIC_AUTH" },
+ { no: 2, name: "AUTH_METHOD_BASIC_AUTH_OTS" },
+]);
+
+/**
+ * @generated from message gitpod.v1.GitInitializer.GitConfig
+ */
+export class GitInitializer_GitConfig extends Message {
+ /**
+ * custom config values to be set on clone provided through `.gitpod.yml`
+ *
+ * @generated from field: map custom_config = 1;
+ */
+ customConfig: { [key: string]: string } = {};
+
+ /**
+ * authentication method
+ *
+ * @generated from field: gitpod.v1.GitInitializer.AuthMethod authentication = 2;
+ */
+ authentication = GitInitializer_AuthMethod.UNSPECIFIED;
+
+ /**
+ * auth_user is the username used to authenticate the clone
+ *
+ * @generated from field: string auth_user = 3;
+ */
+ authUser = "";
+
+ /**
+ * auth_password is the password used to authenticate the clone (can also be an API token)
+ *
+ * @generated from field: string auth_password = 4;
+ */
+ authPassword = "";
+
+ /**
+ * auth_ots is a URL where one can download the authentication secret (:)
+ * using a GET request.
+ *
+ * @generated from field: string auth_ots = 5;
+ */
+ authOts = "";
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.GitInitializer.GitConfig";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "custom_config", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} },
+ { no: 2, name: "authentication", kind: "enum", T: proto3.getEnumType(GitInitializer_AuthMethod) },
+ { no: 3, name: "auth_user", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 4, name: "auth_password", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 5, name: "auth_ots", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): GitInitializer_GitConfig {
+ return new GitInitializer_GitConfig().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): GitInitializer_GitConfig {
+ return new GitInitializer_GitConfig().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): GitInitializer_GitConfig {
+ return new GitInitializer_GitConfig().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: GitInitializer_GitConfig | PlainMessage | undefined, b: GitInitializer_GitConfig | PlainMessage | undefined): boolean {
+ return proto3.util.equals(GitInitializer_GitConfig, a, b);
+ }
+}
+
+/**
+ * @generated from message gitpod.v1.SnapshotInitializer
+ */
+export class SnapshotInitializer extends Message {
+ /**
+ * reference of the snapshot to restore
+ *
+ * @generated from field: string snapshot_id = 1;
+ */
+ snapshotId = "";
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.SnapshotInitializer";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "snapshot_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): SnapshotInitializer {
+ return new SnapshotInitializer().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): SnapshotInitializer {
+ return new SnapshotInitializer().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): SnapshotInitializer {
+ return new SnapshotInitializer().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: SnapshotInitializer | PlainMessage | undefined, b: SnapshotInitializer | PlainMessage | undefined): boolean {
+ return proto3.util.equals(SnapshotInitializer, a, b);
+ }
+}
+
+/**
+ * @generated from message gitpod.v1.PrebuildInitializer
+ */
+export class PrebuildInitializer extends Message {
+ /**
+ * reference of the prebuild to restore
+ *
+ * @generated from field: string prebuild_id = 1;
+ */
+ prebuildId = "";
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.PrebuildInitializer";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "prebuild_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): PrebuildInitializer {
+ return new PrebuildInitializer().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): PrebuildInitializer {
+ return new PrebuildInitializer().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): PrebuildInitializer {
+ return new PrebuildInitializer().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: PrebuildInitializer | PlainMessage | undefined, b: PrebuildInitializer | PlainMessage | undefined): boolean {
+ return proto3.util.equals(PrebuildInitializer, a, b);
+ }
+}
+
+/**
+ * FileDownloadInitializer downloads files and uses them as workspace content.
+ *
+ * @generated from message gitpod.v1.FileDownloadInitializer
+ */
+export class FileDownloadInitializer extends Message {
+ /**
+ * @generated from field: repeated gitpod.v1.FileDownloadInitializer.FileInfo files = 1;
+ */
+ files: FileDownloadInitializer_FileInfo[] = [];
+
+ /**
+ * @generated from field: string target_location = 2;
+ */
+ targetLocation = "";
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.FileDownloadInitializer";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "files", kind: "message", T: FileDownloadInitializer_FileInfo, repeated: true },
+ { no: 2, name: "target_location", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): FileDownloadInitializer {
+ return new FileDownloadInitializer().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): FileDownloadInitializer {
+ return new FileDownloadInitializer().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): FileDownloadInitializer {
+ return new FileDownloadInitializer().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: FileDownloadInitializer | PlainMessage | undefined, b: FileDownloadInitializer | PlainMessage | undefined): boolean {
+ return proto3.util.equals(FileDownloadInitializer, a, b);
+ }
+}
+
+/**
+ * @generated from message gitpod.v1.FileDownloadInitializer.FileInfo
+ */
+export class FileDownloadInitializer_FileInfo extends Message {
+ /**
+ * @generated from field: string url = 1;
+ */
+ url = "";
+
+ /**
+ * file_path is relative to the target_location, e.g. if target_location is in `/workspace/myrepo`
+ * a file_path of `foobar/file` would produce a file in `/workspace/myrepo/foobar/file`.
+ * file_path must include the filename. The FileDownloadInitializer will create any parent directories
+ * necessary to place the file.
+ *
+ * @generated from field: string file_path = 2;
+ */
+ filePath = "";
+
+ /**
+ * digest is a hash of the file content in the OCI digest format (see https://github.com/opencontainers/image-spec/blob/master/descriptor.md#digests).
+ * This information is used to compute subsequent
+ * content versions, and to validate the file content was downloaded correctly.
+ *
+ * @generated from field: string digest = 3;
+ */
+ digest = "";
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.FileDownloadInitializer.FileInfo";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "url", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 2, name: "file_path", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 3, name: "digest", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): FileDownloadInitializer_FileInfo {
+ return new FileDownloadInitializer_FileInfo().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): FileDownloadInitializer_FileInfo {
+ return new FileDownloadInitializer_FileInfo().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): FileDownloadInitializer_FileInfo {
+ return new FileDownloadInitializer_FileInfo().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: FileDownloadInitializer_FileInfo | PlainMessage | undefined, b: FileDownloadInitializer_FileInfo | PlainMessage | undefined): boolean {
+ return proto3.util.equals(FileDownloadInitializer_FileInfo, a, b);
+ }
+}
+
+/**
+ * GitStatus describes the current Git working copy status, akin to a combination of "git status" and "git branch"
+ *
+ * @generated from message gitpod.v1.GitStatus
+ */
+export class GitStatus extends Message {
+ /**
+ * branch is branch we're currently on
+ *
+ * @generated from field: string branch = 1;
+ */
+ branch = "";
+
+ /**
+ * latest_commit is the most recent commit on the current branch
+ *
+ * @generated from field: string latest_commit = 2;
+ */
+ latestCommit = "";
+
+ /**
+ * uncommited_files is the number of uncommitted files, possibly truncated
+ *
+ * @generated from field: repeated string uncommited_files = 3;
+ */
+ uncommitedFiles: string[] = [];
+
+ /**
+ * the total number of uncommited files
+ *
+ * @generated from field: int64 total_uncommited_files = 6;
+ */
+ totalUncommitedFiles = protoInt64.zero;
+
+ /**
+ * untracked_files is the number of untracked files in the workspace, possibly truncated
+ *
+ * @generated from field: repeated string untracked_files = 4;
+ */
+ untrackedFiles: string[] = [];
+
+ /**
+ * the total number of untracked files
+ *
+ * @generated from field: int64 total_untracked_files = 7;
+ */
+ totalUntrackedFiles = protoInt64.zero;
+
+ /**
+ * unpushed_commits is the number of unpushed changes in the workspace, possibly truncated
+ *
+ * @generated from field: repeated string unpushed_commits = 5;
+ */
+ unpushedCommits: string[] = [];
+
+ /**
+ * the total number of unpushed changes
+ *
+ * @generated from field: int64 total_unpushed_commits = 8;
+ */
+ totalUnpushedCommits = protoInt64.zero;
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.GitStatus";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "branch", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 2, name: "latest_commit", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 3, name: "uncommited_files", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
+ { no: 6, name: "total_uncommited_files", kind: "scalar", T: 3 /* ScalarType.INT64 */ },
+ { no: 4, name: "untracked_files", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
+ { no: 7, name: "total_untracked_files", kind: "scalar", T: 3 /* ScalarType.INT64 */ },
+ { no: 5, name: "unpushed_commits", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
+ { no: 8, name: "total_unpushed_commits", kind: "scalar", T: 3 /* ScalarType.INT64 */ },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): GitStatus {
+ return new GitStatus().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): GitStatus {
+ return new GitStatus().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): GitStatus {
+ return new GitStatus().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: GitStatus | PlainMessage | undefined, b: GitStatus | PlainMessage | undefined): boolean {
+ return proto3.util.equals(GitStatus, a, b);
+ }
+}
+
+/**
+ * @generated from message gitpod.v1.UpdateWorkspaceRequest
+ */
+export class UpdateWorkspaceRequest extends Message {
+ /**
+ * workspace_id specifies the workspace to update
+ *
+ * +required
+ *
+ * @generated from field: string workspace_id = 1;
+ */
+ workspaceId = "";
+
+ /**
+ * metadata is data associated with this workspace that's required for other parts of Gitpod to function
+ *
+ * @generated from field: optional gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceMetadata metadata = 2;
+ */
+ metadata?: UpdateWorkspaceRequest_UpdateWorkspaceMetadata;
+
+ /**
+ * spec is the configuration of the workspace that's required for the ws-manager to start the workspace
+ *
+ * @generated from field: optional gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceSpec spec = 3;
+ */
+ spec?: UpdateWorkspaceRequest_UpdateWorkspaceSpec;
+
+ /**
+ * git_status updates the git status of the workspace - this is only here during the migration
+ *
+ * @generated from field: optional gitpod.v1.WorkspaceGitStatus git_status = 4 [deprecated = true];
+ * @deprecated
+ */
+ gitStatus?: WorkspaceGitStatus;
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.UpdateWorkspaceRequest";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "workspace_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
+ { no: 2, name: "metadata", kind: "message", T: UpdateWorkspaceRequest_UpdateWorkspaceMetadata, opt: true },
+ { no: 3, name: "spec", kind: "message", T: UpdateWorkspaceRequest_UpdateWorkspaceSpec, opt: true },
+ { no: 4, name: "git_status", kind: "message", T: WorkspaceGitStatus, opt: true },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): UpdateWorkspaceRequest {
+ return new UpdateWorkspaceRequest().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): UpdateWorkspaceRequest {
+ return new UpdateWorkspaceRequest().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): UpdateWorkspaceRequest {
+ return new UpdateWorkspaceRequest().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: UpdateWorkspaceRequest | PlainMessage | undefined, b: UpdateWorkspaceRequest | PlainMessage | undefined): boolean {
+ return proto3.util.equals(UpdateWorkspaceRequest, a, b);
+ }
+}
+
+/**
+ * @generated from message gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceMetadata
+ */
+export class UpdateWorkspaceRequest_UpdateWorkspaceMetadata extends Message {
+ /**
+ * name is the name of the workspace as specified by the user
+ *
+ * @generated from field: optional string name = 1;
+ */
+ name?: string;
+
+ /**
+ * pinned indicates whether the workspace is pinned
+ *
+ * @generated from field: optional bool pinned = 2;
+ */
+ pinned?: boolean;
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceMetadata";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true },
+ { no: 2, name: "pinned", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): UpdateWorkspaceRequest_UpdateWorkspaceMetadata {
+ return new UpdateWorkspaceRequest_UpdateWorkspaceMetadata().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): UpdateWorkspaceRequest_UpdateWorkspaceMetadata {
+ return new UpdateWorkspaceRequest_UpdateWorkspaceMetadata().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): UpdateWorkspaceRequest_UpdateWorkspaceMetadata {
+ return new UpdateWorkspaceRequest_UpdateWorkspaceMetadata().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: UpdateWorkspaceRequest_UpdateWorkspaceMetadata | PlainMessage | undefined, b: UpdateWorkspaceRequest_UpdateWorkspaceMetadata | PlainMessage | undefined): boolean {
+ return proto3.util.equals(UpdateWorkspaceRequest_UpdateWorkspaceMetadata, a, b);
+ }
+}
+
+/**
+ * @generated from message gitpod.v1.UpdateWorkspaceRequest.UpdateTimeout
+ */
+export class UpdateWorkspaceRequest_UpdateTimeout extends Message {
+ /**
+ * inacitivity is the maximum time of inactivity before the workspace is stopped or paused
+ *
+ * @generated from field: optional google.protobuf.Duration inactivity = 1;
+ */
+ inactivity?: Duration;
+
+ /**
+ * inacitivity is the maximum time of disconnection before the workspace is stopped or paused
+ *
+ * @generated from field: optional google.protobuf.Duration disconnected = 2;
+ */
+ disconnected?: Duration;
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.UpdateWorkspaceRequest.UpdateTimeout";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "inactivity", kind: "message", T: Duration, opt: true },
+ { no: 2, name: "disconnected", kind: "message", T: Duration, opt: true },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): UpdateWorkspaceRequest_UpdateTimeout {
+ return new UpdateWorkspaceRequest_UpdateTimeout().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): UpdateWorkspaceRequest_UpdateTimeout {
+ return new UpdateWorkspaceRequest_UpdateTimeout().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): UpdateWorkspaceRequest_UpdateTimeout {
+ return new UpdateWorkspaceRequest_UpdateTimeout().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: UpdateWorkspaceRequest_UpdateTimeout | PlainMessage | undefined, b: UpdateWorkspaceRequest_UpdateTimeout | PlainMessage | undefined): boolean {
+ return proto3.util.equals(UpdateWorkspaceRequest_UpdateTimeout, a, b);
+ }
+}
+
+/**
+ * Note(cw): Ports cannot be updated here in favour of UpdateWorkspacePorts call which exists so that
+ * we can update individual ports.
+ *
+ * @generated from message gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceSpec
+ */
+export class UpdateWorkspaceRequest_UpdateWorkspaceSpec extends Message {
+ /**
+ * timeout configures the workspace timeout
+ *
+ * @generated from field: optional gitpod.v1.UpdateWorkspaceRequest.UpdateTimeout timeout = 1;
+ */
+ timeout?: UpdateWorkspaceRequest_UpdateTimeout;
+
+ /**
+ * admission controlls who can access the workspace and its ports.
+ *
+ * @generated from field: optional gitpod.v1.AdmissionLevel admission = 2;
+ */
+ admission?: AdmissionLevel;
+
+ /**
+ * Note(cw): repeated fields have implicit presence. There's a difference between passing an empty list or nothing.
+ *
+ * @generated from field: repeated string ssh_public_keys = 3;
+ */
+ sshPublicKeys: string[] = [];
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceSpec";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "timeout", kind: "message", T: UpdateWorkspaceRequest_UpdateTimeout, opt: true },
+ { no: 2, name: "admission", kind: "enum", T: proto3.getEnumType(AdmissionLevel), opt: true },
+ { no: 3, name: "ssh_public_keys", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): UpdateWorkspaceRequest_UpdateWorkspaceSpec {
+ return new UpdateWorkspaceRequest_UpdateWorkspaceSpec().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): UpdateWorkspaceRequest_UpdateWorkspaceSpec {
+ return new UpdateWorkspaceRequest_UpdateWorkspaceSpec().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): UpdateWorkspaceRequest_UpdateWorkspaceSpec {
+ return new UpdateWorkspaceRequest_UpdateWorkspaceSpec().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: UpdateWorkspaceRequest_UpdateWorkspaceSpec | PlainMessage | undefined, b: UpdateWorkspaceRequest_UpdateWorkspaceSpec | PlainMessage | undefined): boolean {
+ return proto3.util.equals(UpdateWorkspaceRequest_UpdateWorkspaceSpec, a, b);
+ }
+}
+
+/**
+ * @generated from message gitpod.v1.UpdateWorkspaceResponse
+ */
+export class UpdateWorkspaceResponse extends Message {
+ /**
+ * @generated from field: gitpod.v1.Workspace workspace = 1;
+ */
+ workspace?: Workspace;
+
+ constructor(data?: PartialMessage) {
+ super();
+ proto3.util.initPartial(data, this);
+ }
+
+ static readonly runtime: typeof proto3 = proto3;
+ static readonly typeName = "gitpod.v1.UpdateWorkspaceResponse";
+ static readonly fields: FieldList = proto3.util.newFieldList(() => [
+ { no: 1, name: "workspace", kind: "message", T: Workspace },
+ ]);
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): UpdateWorkspaceResponse {
+ return new UpdateWorkspaceResponse().fromBinary(bytes, options);
+ }
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): UpdateWorkspaceResponse {
+ return new UpdateWorkspaceResponse().fromJson(jsonValue, options);
+ }
+
+ static fromJsonString(jsonString: string, options?: Partial): UpdateWorkspaceResponse {
+ return new UpdateWorkspaceResponse().fromJsonString(jsonString, options);
+ }
+
+ static equals(a: UpdateWorkspaceResponse | PlainMessage | undefined, b: UpdateWorkspaceResponse | PlainMessage | undefined): boolean {
+ return proto3.util.equals(UpdateWorkspaceResponse, a, b);
+ }
+}
+
+/**
+ * @generated from message gitpod.v1.ParseContextURLRequest
+ */
+export class ParseContextURLRequest extends Message