1148 lines
40 KiB
1148 lines
40 KiB
// Copyright 2022 Google LLC |
|
// |
|
// Licensed under the Apache License, Version 2.0 (the "License"); |
|
// you may not use this file except in compliance with the License. |
|
// You may obtain a copy of the License at |
|
// |
|
// http://www.apache.org/licenses/LICENSE-2.0 |
|
// |
|
// Unless required by applicable law or agreed to in writing, software |
|
// distributed under the License is distributed on an "AS IS" BASIS, |
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
// See the License for the specific language governing permissions and |
|
// limitations under the License. |
|
|
|
syntax = "proto3"; |
|
|
|
package google.cloud.workstations.v1beta; |
|
|
|
import "google/api/annotations.proto"; |
|
import "google/api/client.proto"; |
|
import "google/api/field_behavior.proto"; |
|
import "google/api/resource.proto"; |
|
import "google/longrunning/operations.proto"; |
|
import "google/protobuf/duration.proto"; |
|
import "google/protobuf/field_mask.proto"; |
|
import "google/protobuf/timestamp.proto"; |
|
import "google/rpc/status.proto"; |
|
|
|
option go_package = "google.golang.org/genproto/googleapis/cloud/workstations/v1beta;workstations"; |
|
option java_multiple_files = true; |
|
option java_outer_classname = "WorkstationsProto"; |
|
option java_package = "com.google.cloud.workstations.v1beta"; |
|
|
|
// Service for interacting with Cloud Workstations. |
|
service Workstations { |
|
option (google.api.default_host) = "workstations.googleapis.com"; |
|
option (google.api.oauth_scopes) = |
|
"https://www.googleapis.com/auth/cloud-platform"; |
|
|
|
// Returns the requested workstation cluster. |
|
rpc GetWorkstationCluster(GetWorkstationClusterRequest) |
|
returns (WorkstationCluster) { |
|
option (google.api.http) = { |
|
get: "/v1beta/{name=projects/*/locations/*/workstationClusters/*}" |
|
}; |
|
option (google.api.method_signature) = "name"; |
|
} |
|
|
|
// Returns all workstation clusters in the specified location. |
|
rpc ListWorkstationClusters(ListWorkstationClustersRequest) |
|
returns (ListWorkstationClustersResponse) { |
|
option (google.api.http) = { |
|
get: "/v1beta/{parent=projects/*/locations/*}/workstationClusters" |
|
}; |
|
option (google.api.method_signature) = "parent"; |
|
} |
|
|
|
// Creates a new workstation cluster. |
|
rpc CreateWorkstationCluster(CreateWorkstationClusterRequest) |
|
returns (google.longrunning.Operation) { |
|
option (google.api.http) = { |
|
post: "/v1beta/{parent=projects/*/locations/*}/workstationClusters" |
|
body: "workstation_cluster" |
|
}; |
|
option (google.api.method_signature) = |
|
"parent,workstation_cluster,workstation_cluster_id"; |
|
option (google.longrunning.operation_info) = { |
|
response_type: "WorkstationCluster" |
|
metadata_type: "OperationMetadata" |
|
}; |
|
} |
|
|
|
// Updates an existing workstation cluster. |
|
rpc UpdateWorkstationCluster(UpdateWorkstationClusterRequest) |
|
returns (google.longrunning.Operation) { |
|
option (google.api.http) = { |
|
patch: "/v1beta/{workstation_cluster.name=projects/*/locations/*/workstationClusters/*}" |
|
body: "workstation_cluster" |
|
}; |
|
option (google.api.method_signature) = "workstation_cluster,update_mask"; |
|
option (google.longrunning.operation_info) = { |
|
response_type: "WorkstationCluster" |
|
metadata_type: "OperationMetadata" |
|
}; |
|
} |
|
|
|
// Deletes the specified workstation cluster. |
|
rpc DeleteWorkstationCluster(DeleteWorkstationClusterRequest) |
|
returns (google.longrunning.Operation) { |
|
option (google.api.http) = { |
|
delete: "/v1beta/{name=projects/*/locations/*/workstationClusters/*}" |
|
}; |
|
option (google.api.method_signature) = "name"; |
|
option (google.longrunning.operation_info) = { |
|
response_type: "WorkstationCluster" |
|
metadata_type: "OperationMetadata" |
|
}; |
|
} |
|
|
|
// Returns the requested workstation configuration. |
|
rpc GetWorkstationConfig(GetWorkstationConfigRequest) |
|
returns (WorkstationConfig) { |
|
option (google.api.http) = { |
|
get: "/v1beta/{name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*}" |
|
}; |
|
option (google.api.method_signature) = "name"; |
|
} |
|
|
|
// Returns all workstation configurations in the specified cluster. |
|
rpc ListWorkstationConfigs(ListWorkstationConfigsRequest) |
|
returns (ListWorkstationConfigsResponse) { |
|
option (google.api.http) = { |
|
get: "/v1beta/{parent=projects/*/locations/*/workstationClusters/*}/workstationConfigs" |
|
}; |
|
option (google.api.method_signature) = "parent"; |
|
} |
|
|
|
// Returns all workstation configurations in the specified cluster on which |
|
// the caller has the "workstations.workstation.create" permission. |
|
rpc ListUsableWorkstationConfigs(ListUsableWorkstationConfigsRequest) |
|
returns (ListUsableWorkstationConfigsResponse) { |
|
option (google.api.http) = { |
|
get: "/v1beta/{parent=projects/*/locations/*/workstationClusters/*}/workstationConfigs:listUsable" |
|
}; |
|
option (google.api.method_signature) = "parent"; |
|
} |
|
|
|
// Creates a new workstation configuration. |
|
rpc CreateWorkstationConfig(CreateWorkstationConfigRequest) |
|
returns (google.longrunning.Operation) { |
|
option (google.api.http) = { |
|
post: "/v1beta/{parent=projects/*/locations/*/workstationClusters/*}/workstationConfigs" |
|
body: "workstation_config" |
|
}; |
|
option (google.api.method_signature) = |
|
"parent,workstation_config,workstation_config_id"; |
|
option (google.longrunning.operation_info) = { |
|
response_type: "WorkstationConfig" |
|
metadata_type: "OperationMetadata" |
|
}; |
|
} |
|
|
|
// Updates an existing workstation configuration. |
|
rpc UpdateWorkstationConfig(UpdateWorkstationConfigRequest) |
|
returns (google.longrunning.Operation) { |
|
option (google.api.http) = { |
|
patch: "/v1beta/{workstation_config.name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*}" |
|
body: "workstation_config" |
|
}; |
|
option (google.api.method_signature) = "workstation_config,update_mask"; |
|
option (google.longrunning.operation_info) = { |
|
response_type: "WorkstationConfig" |
|
metadata_type: "OperationMetadata" |
|
}; |
|
} |
|
|
|
// Deletes the specified workstation configuration. |
|
rpc DeleteWorkstationConfig(DeleteWorkstationConfigRequest) |
|
returns (google.longrunning.Operation) { |
|
option (google.api.http) = { |
|
delete: "/v1beta/{name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*}" |
|
}; |
|
option (google.api.method_signature) = "name"; |
|
option (google.longrunning.operation_info) = { |
|
response_type: "WorkstationConfig" |
|
metadata_type: "OperationMetadata" |
|
}; |
|
} |
|
|
|
// Returns the requested workstation. |
|
rpc GetWorkstation(GetWorkstationRequest) returns (Workstation) { |
|
option (google.api.http) = { |
|
get: "/v1beta/{name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*/workstations/*}" |
|
}; |
|
option (google.api.method_signature) = "name"; |
|
} |
|
|
|
// Returns all Workstations using the specified config. |
|
rpc ListWorkstations(ListWorkstationsRequest) |
|
returns (ListWorkstationsResponse) { |
|
option (google.api.http) = { |
|
get: "/v1beta/{parent=projects/*/locations/*/workstationClusters/*/workstationConfigs/*}/workstations" |
|
}; |
|
option (google.api.method_signature) = "parent"; |
|
} |
|
|
|
// Returns all Workstations using the specified config on which the caller has |
|
// the "workstations.workstations.use" permission. |
|
rpc ListUsableWorkstations(ListUsableWorkstationsRequest) |
|
returns (ListUsableWorkstationsResponse) { |
|
option (google.api.http) = { |
|
get: "/v1beta/{parent=projects/*/locations/*/workstationClusters/*/workstationConfigs/*}/workstations:listUsable" |
|
}; |
|
option (google.api.method_signature) = "parent"; |
|
} |
|
|
|
// Creates a new workstation. |
|
rpc CreateWorkstation(CreateWorkstationRequest) |
|
returns (google.longrunning.Operation) { |
|
option (google.api.http) = { |
|
post: "/v1beta/{parent=projects/*/locations/*/workstationClusters/*/workstationConfigs/*}/workstations" |
|
body: "workstation" |
|
}; |
|
option (google.api.method_signature) = "parent,workstation,workstation_id"; |
|
option (google.longrunning.operation_info) = { |
|
response_type: "Workstation" |
|
metadata_type: "OperationMetadata" |
|
}; |
|
} |
|
|
|
// Updates an existing workstation. |
|
rpc UpdateWorkstation(UpdateWorkstationRequest) |
|
returns (google.longrunning.Operation) { |
|
option (google.api.http) = { |
|
patch: "/v1beta/{workstation.name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*/workstations/*}" |
|
body: "workstation" |
|
}; |
|
option (google.api.method_signature) = "workstation,update_mask"; |
|
option (google.longrunning.operation_info) = { |
|
response_type: "Workstation" |
|
metadata_type: "OperationMetadata" |
|
}; |
|
} |
|
|
|
// Deletes the specified workstation. |
|
rpc DeleteWorkstation(DeleteWorkstationRequest) |
|
returns (google.longrunning.Operation) { |
|
option (google.api.http) = { |
|
delete: "/v1beta/{name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*/workstations/*}" |
|
}; |
|
option (google.api.method_signature) = "name"; |
|
option (google.longrunning.operation_info) = { |
|
response_type: "Workstation" |
|
metadata_type: "OperationMetadata" |
|
}; |
|
} |
|
|
|
// Starts running a workstation so that users can connect to it. |
|
rpc StartWorkstation(StartWorkstationRequest) |
|
returns (google.longrunning.Operation) { |
|
option (google.api.http) = { |
|
post: "/v1beta/{name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*/workstations/*}:start" |
|
body: "*" |
|
}; |
|
option (google.api.method_signature) = "name"; |
|
option (google.longrunning.operation_info) = { |
|
response_type: "Workstation" |
|
metadata_type: "OperationMetadata" |
|
}; |
|
} |
|
|
|
// Stops running a workstation, reducing costs. |
|
rpc StopWorkstation(StopWorkstationRequest) |
|
returns (google.longrunning.Operation) { |
|
option (google.api.http) = { |
|
post: "/v1beta/{name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*/workstations/*}:stop" |
|
body: "*" |
|
}; |
|
option (google.api.method_signature) = "name"; |
|
option (google.longrunning.operation_info) = { |
|
response_type: "Workstation" |
|
metadata_type: "OperationMetadata" |
|
}; |
|
} |
|
|
|
// Returns a short-lived credential that can be used to send authenticated and |
|
// authorized traffic to a workstation. |
|
rpc GenerateAccessToken(GenerateAccessTokenRequest) |
|
returns (GenerateAccessTokenResponse) { |
|
option (google.api.http) = { |
|
post: "/v1beta/{workstation=projects/*/locations/*/workstationClusters/*/workstationConfigs/*/workstations/*}:generateAccessToken" |
|
body: "*" |
|
}; |
|
option (google.api.method_signature) = "workstation"; |
|
} |
|
} |
|
|
|
// A grouping of workstation configurations and the associated workstations |
|
// in that region. |
|
message WorkstationCluster { |
|
option (google.api.resource) = { |
|
type: "workstations.googleapis.com/WorkstationCluster" |
|
pattern: "projects/{project}/locations/{location}/workstationClusters/{workstation_cluster}" |
|
style: DECLARATIVE_FRIENDLY |
|
}; |
|
|
|
// Configuration options for private clusters. |
|
message PrivateClusterConfig { |
|
// Immutable. Whether Workstations endpoint is private. |
|
bool enable_private_endpoint = 1 [(google.api.field_behavior) = IMMUTABLE]; |
|
|
|
// Output only. Hostname for the workstation cluster. This field will be |
|
// populated only when private endpoint is enabled. To access workstations |
|
// in the cluster, create a new DNS zone mapping this domain name to an |
|
// internal IP address and a forwarding rule mapping that address to the |
|
// service attachment. |
|
string cluster_hostname = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Service attachment URI for the workstation cluster. The |
|
// service attachemnt is created when private endpoint is enabled. To access |
|
// workstations in the cluster, configure access to the managed service |
|
// using [Private Service |
|
// Connect](https://cloud.google.com/vpc/docs/configure-private-service-connect-services). |
|
string service_attachment_uri = 3 |
|
[(google.api.field_behavior) = OUTPUT_ONLY]; |
|
} |
|
|
|
// Full name of this resource. |
|
string name = 1; |
|
|
|
// Human-readable name for this resource. |
|
string display_name = 2; |
|
|
|
// Output only. A system-assigned unique identified for this resource. |
|
string uid = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Indicates whether this resource is currently being updated to |
|
// match its intended state. |
|
bool reconciling = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Client-specified annotations. |
|
map<string, string> annotations = 5; |
|
|
|
// Client-specified labels that are applied to the resource and that are also |
|
// propagated to the underlying Compute Engine resources. |
|
map<string, string> labels = 15; |
|
|
|
// Output only. Time when this resource was created. |
|
google.protobuf.Timestamp create_time = 6 |
|
[(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Time when this resource was most recently updated. |
|
google.protobuf.Timestamp update_time = 7 |
|
[(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Time when this resource was soft-deleted. |
|
google.protobuf.Timestamp delete_time = 8 |
|
[(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Checksum computed by the server. May be sent on update and delete requests |
|
// to ensure that the client has an up-to-date value before proceeding. |
|
string etag = 9; |
|
|
|
// Immutable. Name of the Compute Engine network in which instances associated |
|
// with this cluster will be created. |
|
string network = 10 [(google.api.field_behavior) = IMMUTABLE]; |
|
|
|
// Immutable. Name of the Compute Engine subnetwork in which instances |
|
// associated with this cluster will be created. Must be part of the |
|
// subnetwork specified for this cluster. |
|
string subnetwork = 11 [(google.api.field_behavior) = IMMUTABLE]; |
|
|
|
// Configuration for private cluster. |
|
PrivateClusterConfig private_cluster_config = 12; |
|
|
|
// Output only. Whether this resource is in degraded mode, in which case it |
|
// may require user action to restore full functionality. Details can be found |
|
// in the `conditions` field. |
|
bool degraded = 13 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Status conditions describing the current resource state. |
|
repeated google.rpc.Status conditions = 14 |
|
[(google.api.field_behavior) = OUTPUT_ONLY]; |
|
} |
|
|
|
// A set of configuration options describing how a workstation will be run. |
|
// Workstation configurations are intended to be shared across multiple |
|
// workstations. |
|
message WorkstationConfig { |
|
option (google.api.resource) = { |
|
type: "workstations.googleapis.com/WorkstationConfig" |
|
pattern: "projects/{project}/locations/{location}/workstationClusters/{workstation_cluster}/workstationConfigs/{workstation_config}" |
|
style: DECLARATIVE_FRIENDLY |
|
}; |
|
|
|
// Runtime host for a workstation. |
|
message Host { |
|
// A runtime using a Compute Engine instance. |
|
message GceInstance { |
|
// A set of Compute Engine Shielded instance options. |
|
message GceShieldedInstanceConfig { |
|
// Whether the instance has Secure Boot enabled. |
|
bool enable_secure_boot = 1; |
|
|
|
// Whether the instance has the vTPM enabled. |
|
bool enable_vtpm = 2; |
|
|
|
// Whether the instance has integrity monitoring enabled. |
|
bool enable_integrity_monitoring = 3; |
|
} |
|
|
|
// A set of Compute Engine Confidential VM instance options. |
|
message GceConfidentialInstanceConfig { |
|
// Whether the instance has confidential compute enabled. |
|
bool enable_confidential_compute = 1; |
|
} |
|
|
|
// The name of a Compute Engine machine type. |
|
string machine_type = 1; |
|
|
|
// Email address of the service account that will be used on VM instances |
|
// used to support this config. This service account must have permission |
|
// to pull the specified container image. If not set, VMs will run without |
|
// a service account, in which case the image must be publicly accessible. |
|
string service_account = 2; |
|
|
|
// Network tags to add to the Compute Engine machines backing the |
|
// Workstations. |
|
repeated string tags = 4; |
|
|
|
// Number of instances to pool for faster workstation starup. |
|
int32 pool_size = 5; |
|
|
|
// Whether instances have no public IP address. |
|
bool disable_public_ip_addresses = 6; |
|
|
|
// A set of Compute Engine Shielded instance options. |
|
GceShieldedInstanceConfig shielded_instance_config = 8; |
|
|
|
// A set of Compute Engine Confidential VM instance options. |
|
GceConfidentialInstanceConfig confidential_instance_config = 10; |
|
|
|
// Size of the boot disk in GB. |
|
int32 boot_disk_size_gb = 9; |
|
} |
|
|
|
// Type of host that will be used for the workstation's runtime. |
|
oneof config { |
|
// Specifies a Compute Engine instance as the host. |
|
GceInstance gce_instance = 1; |
|
} |
|
} |
|
|
|
// A directory to persist across workstation sessions. |
|
message PersistentDirectory { |
|
// A PersistentDirectory backed by a Compute Engine regional persistent |
|
// disk. |
|
message GceRegionalPersistentDisk { |
|
// Value representing what should happen to the disk after the workstation |
|
// is deleted. |
|
enum ReclaimPolicy { |
|
// Do not use. |
|
RECLAIM_POLICY_UNSPECIFIED = 0; |
|
|
|
// The persistent disk will be deleted with the workstation. |
|
DELETE = 1; |
|
|
|
// The persistent disk will be remain after the workstation is deleted, |
|
// and the administrator must manually delete the disk. |
|
RETAIN = 2; |
|
} |
|
|
|
// Size of the disk in GB. Must be empty if source_snapshot is set. |
|
int32 size_gb = 1; |
|
|
|
// Type of file system that the disk should be formatted with. The |
|
// workstation image must support this file system type. Must be empty |
|
// if source_snapshot is set. |
|
string fs_type = 2; |
|
|
|
// Type of the disk to use. |
|
string disk_type = 3; |
|
|
|
// What should happen to the disk after the workstation is deleted. |
|
// Defaults to DELETE. |
|
ReclaimPolicy reclaim_policy = 4; |
|
} |
|
|
|
// Location of this directory in the running workstation. |
|
string mount_path = 1; |
|
|
|
// How a persistent directory should be implemented. |
|
oneof directory_type { |
|
// A PersistentDirectory backed by a Compute Engine persistent disk. |
|
GceRegionalPersistentDisk gce_pd = 2; |
|
} |
|
} |
|
|
|
// A Docker container. |
|
message Container { |
|
// Docker image defining the container. This image must be accessible by the |
|
// config's service account. |
|
string image = 1; |
|
|
|
// If set, overrides the default ENTRYPOINT specified by the image. |
|
repeated string command = 2; |
|
|
|
// Arguments passed to the entrypoint. |
|
repeated string args = 3; |
|
|
|
// Environment variables passed to the container. |
|
map<string, string> env = 4; |
|
|
|
// If set, overrides the default DIR specified by the image. |
|
string working_dir = 5; |
|
|
|
// If set, overrides the USER specified in the image with the given uid. |
|
int32 run_as_user = 6; |
|
} |
|
|
|
// A customer-specified encryption key for the Compute Engine resources |
|
// of this workstation configuration. |
|
message CustomerEncryptionKey { |
|
// The name of the encryption key that is stored in Google Cloud KMS, for |
|
// example, |
|
// `projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME`. |
|
string kms_key = 1; |
|
|
|
// The service account being used for the encryption request for the |
|
// given KMS key. If absent, the Compute Engine default service account |
|
// is used. However, it is recommended to use a separate service account |
|
// and to follow KMS best practices mentioned at |
|
// https://cloud.google.com/kms/docs/separation-of-duties |
|
string kms_key_service_account = 2; |
|
} |
|
|
|
// Full name of this resource. |
|
string name = 1; |
|
|
|
// Human-readable name for this resource. |
|
string display_name = 2; |
|
|
|
// Output only. A system-assigned unique identified for this resource. |
|
string uid = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Indicates whether this resource is currently being updated to |
|
// match its intended state. |
|
bool reconciling = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Client-specified annotations. |
|
map<string, string> annotations = 5; |
|
|
|
// Client-specified labels that are applied to the resource and that are also |
|
// propagated to the underlying Compute Engine resources. |
|
map<string, string> labels = 18; |
|
|
|
// Output only. Time when this resource was created. |
|
google.protobuf.Timestamp create_time = 6 |
|
[(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Time when this resource was most recently updated. |
|
google.protobuf.Timestamp update_time = 7 |
|
[(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Time when this resource was soft-deleted. |
|
google.protobuf.Timestamp delete_time = 8 |
|
[(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Checksum computed by the server. May be sent on update and delete requests |
|
// to ensure that the client has an up-to-date value before proceeding. |
|
string etag = 9; |
|
|
|
// How long to wait before automatically stopping an instance that hasn't |
|
// received any user traffic. A value of 0 indicates that this instance |
|
// should never time out due to idleness. Defaults to 20 minutes. |
|
google.protobuf.Duration idle_timeout = 10; |
|
|
|
// How long to wait before automatically stopping a workstation after it |
|
// started. A value of 0 indicates that workstations using this config should |
|
// never time out. Must be greater than 0 and less than 24 hours if |
|
// encryption_key is set. Defaults to 12 hours. |
|
google.protobuf.Duration running_timeout = 11; |
|
|
|
// Runtime host for the workstation. |
|
Host host = 12; |
|
|
|
// Directories to persist across workstation sessions. |
|
repeated PersistentDirectory persistent_directories = 13; |
|
|
|
// Container that will be run for each workstation using this configuration |
|
// when that workstation is started. |
|
Container container = 14; |
|
|
|
// Encrypts resources of this workstation configuration using a |
|
// customer-specified encryption key. |
|
// |
|
// If specified, the boot disk of the Compute Engine instance and the |
|
// persistent disk will be encrypted using this encryption key. If |
|
// this field is not set, the disks will be encrypted using a generated |
|
// key. Customer-specified encryption keys do not protect disk metadata. |
|
// |
|
// If the customer-specified encryption key is rotated, when the workstation |
|
// instance is stopped, the system will attempt to recreate the |
|
// persistent disk with the new version of the key. Be sure to keep |
|
// older versions of the key until the persistent disk is recreated. |
|
// Otherwise, data on the persistent disk will be lost. |
|
// |
|
// If the encryption key is revoked, the workstation session will |
|
// automatically be stopped within 7 hours. |
|
CustomerEncryptionKey encryption_key = 17; |
|
|
|
// Output only. Whether this resource is in degraded mode, in which case it |
|
// may require user action to restore full functionality. Details can be found |
|
// in the `conditions` field. |
|
bool degraded = 15 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Status conditions describing the current resource state. |
|
repeated google.rpc.Status conditions = 16 |
|
[(google.api.field_behavior) = OUTPUT_ONLY]; |
|
} |
|
|
|
// A single instance of a developer workstation with its own persistent storage. |
|
message Workstation { |
|
option (google.api.resource) = { |
|
type: "workstations.googleapis.com/Workstation" |
|
pattern: "projects/{project}/locations/{location}/workstationClusters/{workstation_cluster}/workstationConfigs/{workstation_config}/workstations/{workstation}" |
|
style: DECLARATIVE_FRIENDLY |
|
}; |
|
|
|
// Whether a workstation is running and ready to receive user requests. |
|
enum State { |
|
// Do not use. |
|
STATE_UNSPECIFIED = 0; |
|
|
|
// The workstation is not yet ready to accept requests from users but will |
|
// be soon. |
|
STATE_STARTING = 1; |
|
|
|
// The workstation is ready to accept requests from users. |
|
STATE_RUNNING = 2; |
|
|
|
// The workstation is being stopped. |
|
STATE_STOPPING = 3; |
|
|
|
// The workstation is stopped and will not be able to receive requests until |
|
// it is started. |
|
STATE_STOPPED = 4; |
|
} |
|
|
|
// Full name of this resource. |
|
string name = 1; |
|
|
|
// Human-readable name for this resource. |
|
string display_name = 2; |
|
|
|
// Output only. A system-assigned unique identified for this resource. |
|
string uid = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Indicates whether this resource is currently being updated to |
|
// match its intended state. |
|
bool reconciling = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Client-specified annotations. |
|
map<string, string> annotations = 5; |
|
|
|
// Client-specified labels that are applied to the resource and that are also |
|
// propagated to the underlying Compute Engine resources. |
|
map<string, string> labels = 13; |
|
|
|
// Output only. Time when this resource was created. |
|
google.protobuf.Timestamp create_time = 6 |
|
[(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Time when this resource was most recently updated. |
|
google.protobuf.Timestamp update_time = 7 |
|
[(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Time when this resource was soft-deleted. |
|
google.protobuf.Timestamp delete_time = 8 |
|
[(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Checksum computed by the server. May be sent on update and delete requests |
|
// to ensure that the client has an up-to-date value before proceeding. |
|
string etag = 9; |
|
|
|
// Output only. Current state of the workstation. |
|
State state = 10 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Host to which clients can send HTTPS traffic that will be |
|
// received by the workstation. Authorized traffic will be received to the |
|
// workstation as HTTP on port 80. To send traffic to a different port, |
|
// clients may prefix the host with the destination port in the format |
|
// `{port}-{host}`. |
|
string host = 11 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
} |
|
|
|
// Request message for GetWorkstationCluster. |
|
message GetWorkstationClusterRequest { |
|
// Required. Name of the requested resource. |
|
string name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "workstations.googleapis.com/WorkstationCluster" |
|
} |
|
]; |
|
} |
|
|
|
// Request message for ListWorkstationClusters. |
|
message ListWorkstationClustersRequest { |
|
// Required. Parent resource name. |
|
string parent = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
child_type: "workstations.googleapis.com/WorkstationCluster" |
|
} |
|
]; |
|
|
|
// Maximum number of items to return. |
|
int32 page_size = 2; |
|
|
|
// next_page_token value returned from a previous List request, if any. |
|
string page_token = 3; |
|
} |
|
|
|
// Response message for ListWorkstationClusters. |
|
message ListWorkstationClustersResponse { |
|
// The requested clusters. |
|
repeated WorkstationCluster workstation_clusters = 1; |
|
|
|
// Token to retrieve the next page of results, or empty if there are no more |
|
// results in the list. |
|
string next_page_token = 2; |
|
|
|
// Unreachable resources. |
|
repeated string unreachable = 3; |
|
} |
|
|
|
// Message for creating a CreateWorkstationCluster. |
|
message CreateWorkstationClusterRequest { |
|
// Required. Parent resource name. |
|
string parent = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
child_type: "workstations.googleapis.com/WorkstationCluster" |
|
} |
|
]; |
|
|
|
// Required. ID to use for the cluster. |
|
string workstation_cluster_id = 2 [(google.api.field_behavior) = REQUIRED]; |
|
|
|
// Required. Cluster to create. |
|
WorkstationCluster workstation_cluster = 3 |
|
[(google.api.field_behavior) = REQUIRED]; |
|
|
|
// If set, validate the request and preview the review, but do not actually |
|
// apply it. |
|
bool validate_only = 4; |
|
} |
|
|
|
// Request message for UpdateWorkstationCluster. |
|
message UpdateWorkstationClusterRequest { |
|
// Required. Cluster to update. |
|
WorkstationCluster workstation_cluster = 1 |
|
[(google.api.field_behavior) = REQUIRED]; |
|
|
|
// Required. Mask specifying which fields in the cluster should be updated. |
|
google.protobuf.FieldMask update_mask = 2 |
|
[(google.api.field_behavior) = REQUIRED]; |
|
|
|
// If set, validate the request and preview the review, but do not actually |
|
// apply it. |
|
bool validate_only = 3; |
|
|
|
// If set, and the cluster is not found, a new cluster will be created. |
|
// In this situation, update_mask is ignored. |
|
bool allow_missing = 4; |
|
} |
|
|
|
// Message for deleting a workstation cluster. |
|
message DeleteWorkstationClusterRequest { |
|
// Required. Name of the cluster to delete. |
|
string name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "workstations.googleapis.com/WorkstationCluster" |
|
} |
|
]; |
|
|
|
// If set, validate the request and preview the review, but do not actually |
|
// apply it. |
|
bool validate_only = 2; |
|
|
|
// If set, the request will be rejected if the latest version of the cluster |
|
// on the server does not have this etag. |
|
string etag = 3; |
|
|
|
// If set, any workstation configurations and workstations in the cluster will |
|
// also be deleted. Otherwise, the request will work only if the cluster has |
|
// no configurations or workstations. |
|
bool force = 4; |
|
} |
|
|
|
// Request message for GetWorkstationConfig. |
|
message GetWorkstationConfigRequest { |
|
// Required. Name of the requested resource. |
|
string name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "workstations.googleapis.com/WorkstationConfig" |
|
} |
|
]; |
|
} |
|
|
|
// Request message for ListWorkstationConfigs. |
|
message ListWorkstationConfigsRequest { |
|
// Required. Parent resource name. |
|
string parent = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "workstations.googleapis.com/WorkstationCluster" |
|
} |
|
]; |
|
|
|
// Maximum number of items to return. |
|
int32 page_size = 2; |
|
|
|
// next_page_token value returned from a previous List request, if any. |
|
string page_token = 3; |
|
} |
|
|
|
// Response message for ListWorkstationConfigs. |
|
message ListWorkstationConfigsResponse { |
|
// The requested configs. |
|
repeated WorkstationConfig workstation_configs = 1; |
|
|
|
// Token to retrieve the next page of results, or empty if there are no more |
|
// results in the list. |
|
string next_page_token = 2; |
|
|
|
// Unreachable resources. |
|
repeated string unreachable = 3; |
|
} |
|
|
|
// Request message for ListUsableWorkstationConfigs. |
|
message ListUsableWorkstationConfigsRequest { |
|
// Required. Parent resource name. |
|
string parent = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "workstations.googleapis.com/WorkstationCluster" |
|
} |
|
]; |
|
|
|
// Maximum number of items to return. |
|
int32 page_size = 2; |
|
|
|
// next_page_token value returned from a previous List request, if any. |
|
string page_token = 3; |
|
} |
|
|
|
// Response message for ListUsableWorkstationConfigs. |
|
message ListUsableWorkstationConfigsResponse { |
|
// The requested configs. |
|
repeated WorkstationConfig workstation_configs = 1; |
|
|
|
// Token to retrieve the next page of results, or empty if there are no more |
|
// results in the list. |
|
string next_page_token = 2; |
|
|
|
// Unreachable resources. |
|
repeated string unreachable = 3; |
|
} |
|
|
|
// Message for creating a CreateWorkstationConfig. |
|
message CreateWorkstationConfigRequest { |
|
// Required. Parent resource name. |
|
string parent = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "workstations.googleapis.com/WorkstationCluster" |
|
} |
|
]; |
|
|
|
// Required. ID to use for the config. |
|
string workstation_config_id = 2 [(google.api.field_behavior) = REQUIRED]; |
|
|
|
// Required. Config to create. |
|
WorkstationConfig workstation_config = 3 |
|
[(google.api.field_behavior) = REQUIRED]; |
|
|
|
// If set, validate the request and preview the review, but do not actually |
|
// apply it. |
|
bool validate_only = 4; |
|
} |
|
|
|
// Request message for UpdateWorkstationConfig. |
|
message UpdateWorkstationConfigRequest { |
|
// Required. Config to update. |
|
WorkstationConfig workstation_config = 1 |
|
[(google.api.field_behavior) = REQUIRED]; |
|
|
|
// Required. Mask specifying which fields in the config should be updated. |
|
google.protobuf.FieldMask update_mask = 2 |
|
[(google.api.field_behavior) = REQUIRED]; |
|
|
|
// If set, validate the request and preview the review, but do not actually |
|
// apply it. |
|
bool validate_only = 3; |
|
|
|
// If set, and the config is not found, a new config will be created. |
|
// In this situation, update_mask is ignored. |
|
bool allow_missing = 4; |
|
} |
|
|
|
// Message for deleting a workstation configuration. |
|
message DeleteWorkstationConfigRequest { |
|
// Required. Name of the config to delete. |
|
string name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "workstations.googleapis.com/WorkstationConfig" |
|
} |
|
]; |
|
|
|
// If set, validate the request and preview the review, but do not actually |
|
// apply it. |
|
bool validate_only = 2; |
|
|
|
// If set, the request will be rejected if the latest version of the config on |
|
// the server does not have this etag. |
|
string etag = 3; |
|
|
|
// If set, any Workstations in the config will also be deleted. Otherwise, |
|
// the request will work only if the config has no workstations. |
|
bool force = 4; |
|
} |
|
|
|
// Request message for GetWorkstation. |
|
message GetWorkstationRequest { |
|
// Required. Name of the requested resource. |
|
string name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "workstations.googleapis.com/Workstation" |
|
} |
|
]; |
|
} |
|
|
|
// Request message for ListWorkstations. |
|
message ListWorkstationsRequest { |
|
// Required. Parent resource name. |
|
string parent = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "workstations.googleapis.com/WorkstationConfig" |
|
} |
|
]; |
|
|
|
// Maximum number of items to return. |
|
int32 page_size = 2; |
|
|
|
// next_page_token value returned from a previous List request, if any. |
|
string page_token = 3; |
|
} |
|
|
|
// Response message for ListWorkstations. |
|
message ListWorkstationsResponse { |
|
// The requested workstations. |
|
repeated Workstation workstations = 1; |
|
|
|
// Token to retrieve the next page of results, or empty if there are no more |
|
// results in the list. |
|
string next_page_token = 2; |
|
|
|
// Unreachable resources. |
|
repeated string unreachable = 3; |
|
} |
|
|
|
// Request message for ListUsableWorkstations. |
|
message ListUsableWorkstationsRequest { |
|
// Required. Parent resource name. |
|
string parent = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "workstations.googleapis.com/WorkstationConfig" |
|
} |
|
]; |
|
|
|
// Maximum number of items to return. |
|
int32 page_size = 2; |
|
|
|
// next_page_token value returned from a previous List request, if any. |
|
string page_token = 3; |
|
} |
|
|
|
// Response message for ListUsableWorkstations. |
|
message ListUsableWorkstationsResponse { |
|
// The requested workstations. |
|
repeated Workstation workstations = 1; |
|
|
|
// Token to retrieve the next page of results, or empty if there are no more |
|
// results in the list. |
|
string next_page_token = 2; |
|
|
|
// Unreachable resources. |
|
repeated string unreachable = 3; |
|
} |
|
|
|
// Message for creating a CreateWorkstation. |
|
message CreateWorkstationRequest { |
|
// Required. Parent resource name. |
|
string parent = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "workstations.googleapis.com/WorkstationConfig" |
|
} |
|
]; |
|
|
|
// Required. ID to use for the workstation. |
|
string workstation_id = 2 [(google.api.field_behavior) = REQUIRED]; |
|
|
|
// Required. Workstation to create. |
|
Workstation workstation = 3 [(google.api.field_behavior) = REQUIRED]; |
|
|
|
// If set, validate the request and preview the review, but do not actually |
|
// apply it. |
|
bool validate_only = 4; |
|
} |
|
|
|
// Request message for UpdateWorkstation. |
|
message UpdateWorkstationRequest { |
|
// Required. Workstation to update. |
|
Workstation workstation = 1 [(google.api.field_behavior) = REQUIRED]; |
|
|
|
// Required. Mask specifying which fields in the config should be updated. |
|
google.protobuf.FieldMask update_mask = 2 |
|
[(google.api.field_behavior) = REQUIRED]; |
|
|
|
// If set, validate the request and preview the review, but do not actually |
|
// apply it. |
|
bool validate_only = 3; |
|
|
|
// If set, and the config is not found, a new config will be created. |
|
// In this situation, update_mask is ignored. |
|
bool allow_missing = 4; |
|
} |
|
|
|
// Request message for DeleteWorkstation. |
|
message DeleteWorkstationRequest { |
|
// Required. Name of the workstation to delete. |
|
string name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "workstations.googleapis.com/Workstation" |
|
} |
|
]; |
|
|
|
// If set, validate the request and preview the review, but do not actually |
|
// apply it. |
|
bool validate_only = 2; |
|
|
|
// If set, the request will be rejected if the latest version of the |
|
// workstation on the server does not have this etag. |
|
string etag = 3; |
|
} |
|
|
|
// Request message for StartWorkstation. |
|
message StartWorkstationRequest { |
|
// Required. Name of the workstation to start. |
|
string name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "workstations.googleapis.com/Workstation" |
|
} |
|
]; |
|
|
|
// If set, validate the request and preview the review, but do not actually |
|
// apply it. |
|
bool validate_only = 2; |
|
|
|
// If set, the request will be rejected if the latest version of the |
|
// workstation on the server does not have this etag. |
|
string etag = 3; |
|
} |
|
|
|
// Request message for StopWorkstation. |
|
message StopWorkstationRequest { |
|
// Required. Name of the workstation to stop. |
|
string name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "workstations.googleapis.com/Workstation" |
|
} |
|
]; |
|
|
|
// If set, validate the request and preview the review, but do not actually |
|
// apply it. |
|
bool validate_only = 2; |
|
|
|
// If set, the request will be rejected if the latest version of the |
|
// workstation on the server does not have this etag. |
|
string etag = 3; |
|
} |
|
|
|
// Request message for GenerateAccessToken. |
|
message GenerateAccessTokenRequest { |
|
// Required. Name of the workstation for which the access token should be |
|
// generated. |
|
string workstation = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "workstations.googleapis.com/Workstation" |
|
} |
|
]; |
|
|
|
// Desired expiration or lifetime of the access token. |
|
oneof expiration { |
|
// Desired expiration time of the access token. This value must |
|
// be at most 24 hours in the future. If a value is not specified, the |
|
// token's expiration time will be set to a default value of 1 hour in the |
|
// future. |
|
google.protobuf.Timestamp expire_time = 2; |
|
|
|
// Desired lifetime duration of the access token. This value must |
|
// be at most 24 hours. If a value is not specified, the token's lifetime |
|
// will be set to a default value of 1 hour. |
|
google.protobuf.Duration ttl = 3; |
|
} |
|
} |
|
|
|
// Response message for GenerateAccessToken. |
|
message GenerateAccessTokenResponse { |
|
// The generated bearer access token. To use this token, include it in an |
|
// Authorization header of an HTTP request sent to the associated |
|
// workstation's hostname, for example, `Authorization: Bearer |
|
// <access_token>`. |
|
string access_token = 1; |
|
|
|
// Time at which the generated token will expire. |
|
google.protobuf.Timestamp expire_time = 2; |
|
} |
|
|
|
// Metadata for long-running operations. |
|
message OperationMetadata { |
|
// Output only. Time that the operation was created. |
|
google.protobuf.Timestamp create_time = 1 |
|
[(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Time that the operation finished running. |
|
google.protobuf.Timestamp end_time = 2 |
|
[(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Server-defined resource path for the target of the operation. |
|
string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Name of the verb executed by the operation. |
|
string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Human-readable status of the operation, if any. |
|
string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. Identifies whether the user has requested cancellation |
|
// of the operation. |
|
bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
|
|
// Output only. API version used to start the operation. |
|
string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; |
|
}
|
|
|