mirror of
https://github.com/googleapis/googleapis.git
synced 2026-08-16 13:00:34 +02:00
1191 lines
45 KiB
Protocol Buffer
1191 lines
45 KiB
Protocol Buffer
// Copyright 2026 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.hypercomputecluster.v1;
|
|
|
|
import "google/api/annotations.proto";
|
|
import "google/api/client.proto";
|
|
import "google/api/field_behavior.proto";
|
|
import "google/api/field_info.proto";
|
|
import "google/api/resource.proto";
|
|
import "google/cloud/hypercomputecluster/v1/operation_metadata.proto";
|
|
import "google/longrunning/operations.proto";
|
|
import "google/protobuf/duration.proto";
|
|
import "google/protobuf/empty.proto";
|
|
import "google/protobuf/field_mask.proto";
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
option csharp_namespace = "Google.Cloud.HypercomputeCluster.V1";
|
|
option go_package = "cloud.google.com/go/hypercomputecluster/apiv1/hypercomputeclusterpb;hypercomputeclusterpb";
|
|
option java_multiple_files = true;
|
|
option java_outer_classname = "HypercomputeClusterProto";
|
|
option java_package = "com.google.cloud.hypercomputecluster.v1";
|
|
option php_namespace = "Google\\Cloud\\HypercomputeCluster\\V1";
|
|
option ruby_package = "Google::Cloud::HypercomputeCluster::V1";
|
|
option (google.api.resource_definition) = {
|
|
type: "compute.googleapis.com/ComputeInstance"
|
|
pattern: "projects/{project}/zones/{zone}/instances/{instance}"
|
|
};
|
|
option (google.api.resource_definition) = {
|
|
type: "compute.googleapis.com/DiskType"
|
|
pattern: "projects/{project}/zones/{zone}/diskTypes/{disk_type}"
|
|
};
|
|
option (google.api.resource_definition) = {
|
|
type: "compute.googleapis.com/Image"
|
|
pattern: "projects/{project}/global/images/{image}"
|
|
};
|
|
option (google.api.resource_definition) = {
|
|
type: "compute.googleapis.com/Network"
|
|
pattern: "projects/{project}/global/networks/{network}"
|
|
};
|
|
option (google.api.resource_definition) = {
|
|
type: "compute.googleapis.com/Reservation"
|
|
pattern: "projects/{project}/zones/{zone}/reservations/{reservation}"
|
|
};
|
|
option (google.api.resource_definition) = {
|
|
type: "compute.googleapis.com/ReservationBlock"
|
|
pattern: "projects/{project}/zones/{zone}/reservations/{reservation}/reservationBlocks/{reservation_block}"
|
|
};
|
|
option (google.api.resource_definition) = {
|
|
type: "compute.googleapis.com/ReservationSubBlock"
|
|
pattern: "projects/{project}/zones/{zone}/reservations/{reservation}/reservationBlocks/{reservation_block}/reservationSubBlocks/{reservation_sub_block}"
|
|
};
|
|
option (google.api.resource_definition) = {
|
|
type: "compute.googleapis.com/Subnetwork"
|
|
pattern: "projects/{project}/regions/{region}/subnetworks/{subnetwork}"
|
|
};
|
|
option (google.api.resource_definition) = {
|
|
type: "file.googleapis.com/FileInstance"
|
|
pattern: "projects/{project}/locations/{location}/instances/{instance}"
|
|
};
|
|
option (google.api.resource_definition) = {
|
|
type: "storage.googleapis.com/Bucket"
|
|
pattern: "projects/{project}/buckets/{bucket}"
|
|
};
|
|
|
|
// Service describing handlers for resources
|
|
service HypercomputeCluster {
|
|
option (google.api.default_host) = "hypercomputecluster.googleapis.com";
|
|
option (google.api.oauth_scopes) =
|
|
"https://www.googleapis.com/auth/cloud-platform";
|
|
|
|
// Lists Clusters in a given project and location.
|
|
rpc ListClusters(ListClustersRequest) returns (ListClustersResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/{parent=projects/*/locations/*}/clusters"
|
|
};
|
|
option (google.api.method_signature) = "parent";
|
|
}
|
|
|
|
// Gets details of a single Cluster.
|
|
rpc GetCluster(GetClusterRequest) returns (Cluster) {
|
|
option (google.api.http) = {
|
|
get: "/v1/{name=projects/*/locations/*/clusters/*}"
|
|
};
|
|
option (google.api.method_signature) = "name";
|
|
}
|
|
|
|
// Creates a new Cluster in a given project and location.
|
|
rpc CreateCluster(CreateClusterRequest)
|
|
returns (google.longrunning.Operation) {
|
|
option (google.api.http) = {
|
|
post: "/v1/{parent=projects/*/locations/*}/clusters"
|
|
body: "cluster"
|
|
};
|
|
option (google.api.method_signature) = "parent,cluster,cluster_id";
|
|
option (google.longrunning.operation_info) = {
|
|
response_type: "Cluster"
|
|
metadata_type: "OperationMetadata"
|
|
};
|
|
}
|
|
|
|
// Updates the parameters of a single Cluster.
|
|
rpc UpdateCluster(UpdateClusterRequest)
|
|
returns (google.longrunning.Operation) {
|
|
option (google.api.http) = {
|
|
patch: "/v1/{cluster.name=projects/*/locations/*/clusters/*}"
|
|
body: "cluster"
|
|
};
|
|
option (google.api.method_signature) = "cluster,update_mask";
|
|
option (google.longrunning.operation_info) = {
|
|
response_type: "Cluster"
|
|
metadata_type: "OperationMetadata"
|
|
};
|
|
}
|
|
|
|
// Deletes a single Cluster.
|
|
rpc DeleteCluster(DeleteClusterRequest)
|
|
returns (google.longrunning.Operation) {
|
|
option (google.api.http) = {
|
|
delete: "/v1/{name=projects/*/locations/*/clusters/*}"
|
|
};
|
|
option (google.api.method_signature) = "name";
|
|
option (google.longrunning.operation_info) = {
|
|
response_type: "google.protobuf.Empty"
|
|
metadata_type: "OperationMetadata"
|
|
};
|
|
}
|
|
}
|
|
|
|
// A collection of virtual machines and connected resources forming a
|
|
// high-performance computing cluster capable of running large-scale, tightly
|
|
// coupled workloads. A cluster combines a set a compute resources that perform
|
|
// computations, storage resources that contain inputs and store outputs, an
|
|
// orchestrator that is responsible for assigning jobs to compute resources, and
|
|
// network resources that connect everything together.
|
|
message Cluster {
|
|
option (google.api.resource) = {
|
|
type: "hypercomputecluster.googleapis.com/Cluster"
|
|
pattern: "projects/{project}/locations/{location}/clusters/{cluster}"
|
|
plural: "clusters"
|
|
singular: "cluster"
|
|
};
|
|
|
|
// Identifier. [Relative resource name](https://google.aip.dev/122) of the
|
|
// cluster, in the format
|
|
// `projects/{project}/locations/{location}/clusters/{cluster}`.
|
|
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
|
|
|
|
// Optional. User-provided description of the cluster.
|
|
string description = 9 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional.
|
|
// [Labels](https://cloud.google.com/compute/docs/labeling-resources) applied
|
|
// to the cluster. Labels can be used to organize clusters and to filter them
|
|
// in queries.
|
|
map<string, string> labels = 4 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Output only. Time that the cluster was originally created.
|
|
google.protobuf.Timestamp create_time = 2
|
|
[(google.api.field_behavior) = OUTPUT_ONLY];
|
|
|
|
// Output only. Time that the cluster was most recently updated.
|
|
google.protobuf.Timestamp update_time = 3
|
|
[(google.api.field_behavior) = OUTPUT_ONLY];
|
|
|
|
// Output only. Indicates whether changes to the cluster are currently in
|
|
// flight. If this is `true`, then the current state might not match the
|
|
// cluster's intended state.
|
|
bool reconciling = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
|
|
|
|
// Optional. Network resources available to the cluster. Must contain at most
|
|
// one value. Keys specify the ID of the network resource by which it can be
|
|
// referenced elsewhere, and must conform to
|
|
// [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) (lower-case,
|
|
// alphanumeric, and at most 63 characters).
|
|
map<string, NetworkResource> network_resources = 11
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Storage resources available to the cluster. Keys specify the ID
|
|
// of the storage resource by which it can be referenced elsewhere, and must
|
|
// conform to [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034)
|
|
// (lower-case, alphanumeric, and at most 63 characters).
|
|
map<string, StorageResource> storage_resources = 12
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Compute resources available to the cluster. Keys specify the ID
|
|
// of the compute resource by which it can be referenced elsewhere, and must
|
|
// conform to [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034)
|
|
// (lower-case, alphanumeric, and at most 63 characters).
|
|
map<string, ComputeResource> compute_resources = 13
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Orchestrator that is responsible for scheduling and running jobs
|
|
// on the cluster.
|
|
Orchestrator orchestrator = 8 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// Request message for
|
|
// [ListClusters][google.cloud.hypercomputecluster.v1.HypercomputeCluster.ListClusters].
|
|
message ListClustersRequest {
|
|
// Required. Parent location of the clusters to list, in the format
|
|
// `projects/{project}/locations/{location}`.
|
|
string parent = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.resource_reference) = {
|
|
child_type: "hypercomputecluster.googleapis.com/Cluster"
|
|
}
|
|
];
|
|
|
|
// Optional. Maximum number of clusters to return. The service may return
|
|
// fewer than this value.
|
|
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. A page token received from a previous `ListClusters` call.
|
|
// Provide this to retrieve the subsequent page. When paginating, all other
|
|
// parameters provided to `ListClusters` must match the call that provided the
|
|
// page token.
|
|
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. [Filter](https://google.aip.dev/160) to apply to the returned
|
|
// results.
|
|
string filter = 4 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. How to order the resulting clusters. Must be one of the following
|
|
// strings:
|
|
//
|
|
// * `name`
|
|
// * `name desc`
|
|
// * `create_time`
|
|
// * `create_time desc`
|
|
//
|
|
// If not specified, clusters will be returned in an arbitrary order.
|
|
string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// Response message for
|
|
// [ListClusters][google.cloud.hypercomputecluster.v1.HypercomputeCluster.ListClusters].
|
|
message ListClustersResponse {
|
|
// Clusters in the specified location.
|
|
repeated Cluster clusters = 1;
|
|
|
|
// A token that can be sent as `page_token` to retrieve the next page. If this
|
|
// field is absent, there are no subsequent pages.
|
|
string next_page_token = 2;
|
|
|
|
// Locations that could not be reached.
|
|
repeated string unreachable = 3;
|
|
}
|
|
|
|
// Request message for
|
|
// [GetCluster][google.cloud.hypercomputecluster.v1.HypercomputeCluster.GetCluster].
|
|
message GetClusterRequest {
|
|
// Required. Name of the cluster to retrieve, in the format
|
|
// `projects/{project}/locations/{location}/clusters/{cluster}`.
|
|
string name = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.resource_reference) = {
|
|
type: "hypercomputecluster.googleapis.com/Cluster"
|
|
}
|
|
];
|
|
}
|
|
|
|
// Request message for
|
|
// [CreateCluster][google.cloud.hypercomputecluster.v1.HypercomputeCluster.CreateCluster].
|
|
message CreateClusterRequest {
|
|
// Required. Parent location in which the cluster should be created, in the
|
|
// format `projects/{project}/locations/{location}`.
|
|
string parent = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.resource_reference) = {
|
|
child_type: "hypercomputecluster.googleapis.com/Cluster"
|
|
}
|
|
];
|
|
|
|
// Required. ID of the cluster to create. Must conform to
|
|
// [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) (lower-case,
|
|
// alphanumeric, and at most 63 characters).
|
|
string cluster_id = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Cluster to create.
|
|
Cluster cluster = 3 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Optional. A unique identifier for this request. A random UUID is
|
|
// recommended. This request is idempotent if and only if `request_id` is
|
|
// provided.
|
|
string request_id = 4 [
|
|
(google.api.field_info).format = UUID4,
|
|
(google.api.field_behavior) = OPTIONAL
|
|
];
|
|
}
|
|
|
|
// Request message for
|
|
// [UpdateCluster][google.cloud.hypercomputecluster.v1.HypercomputeCluster.UpdateCluster].
|
|
message UpdateClusterRequest {
|
|
// Required. Cluster to update.
|
|
Cluster cluster = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Optional. Mask specifying which fields in the cluster to update. All paths
|
|
// must be specified explicitly - wildcards are not supported. At least one
|
|
// path must be provided.
|
|
google.protobuf.FieldMask update_mask = 1
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. A unique identifier for this request. A random UUID is
|
|
// recommended. This request is idempotent if and only if `request_id` is
|
|
// provided.
|
|
string request_id = 3 [
|
|
(google.api.field_info).format = UUID4,
|
|
(google.api.field_behavior) = OPTIONAL
|
|
];
|
|
}
|
|
|
|
// Request message for
|
|
// [DeleteCluster][google.cloud.hypercomputecluster.v1.HypercomputeCluster.DeleteCluster].
|
|
message DeleteClusterRequest {
|
|
// Required. Name of the cluster to delete, in the format
|
|
// `projects/{project}/locations/{location}/clusters/{cluster}`.
|
|
string name = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.resource_reference) = {
|
|
type: "hypercomputecluster.googleapis.com/Cluster"
|
|
}
|
|
];
|
|
|
|
// Optional. A unique identifier for this request. A random UUID is
|
|
// recommended. This request is idempotent if and only if `request_id` is
|
|
// provided.
|
|
string request_id = 2 [
|
|
(google.api.field_info).format = UUID4,
|
|
(google.api.field_behavior) = OPTIONAL
|
|
];
|
|
}
|
|
|
|
// A resource representing a network that connects the various components of a
|
|
// cluster together.
|
|
message NetworkResource {
|
|
// Reference to the network resource in Google Cloud. Exactly one of these
|
|
// fields will be populated based on the configured type of network resource.
|
|
oneof reference {
|
|
// Reference to a network in Google Compute Engine.
|
|
NetworkReference network = 3;
|
|
}
|
|
|
|
// Immutable. Configuration for this network resource, which describes how it
|
|
// should be created or imported. This field only controls how the network
|
|
// resource is initially created or imported. Subsequent changes to the
|
|
// network resource should be made via the resource's API and will not be
|
|
// reflected in the configuration.
|
|
NetworkResourceConfig config = 2 [(google.api.field_behavior) = IMMUTABLE];
|
|
}
|
|
|
|
// A reference to a [VPC network](https://cloud.google.com/vpc/docs/vpc) in
|
|
// Google Compute Engine.
|
|
message NetworkReference {
|
|
// Output only. Name of the network, in the format
|
|
// `projects/{project}/global/networks/{network}`.
|
|
string network = 1 [
|
|
(google.api.field_behavior) = OUTPUT_ONLY,
|
|
(google.api.resource_reference) = { type: "compute.googleapis.com/Network" }
|
|
];
|
|
|
|
// Output only. Name of the particular subnetwork being used by the cluster,
|
|
// in the format
|
|
// `projects/{project}/regions/{region}/subnetworks/{subnetwork}`.
|
|
string subnetwork = 2 [
|
|
(google.api.field_behavior) = OUTPUT_ONLY,
|
|
(google.api.resource_reference) = {
|
|
type: "compute.googleapis.com/Subnetwork"
|
|
}
|
|
];
|
|
}
|
|
|
|
// Describes how a network resource should be initialized. Each network resource
|
|
// can either be imported from an existing Google Cloud resource or initialized
|
|
// when the cluster is created.
|
|
message NetworkResourceConfig {
|
|
// Particular type of configuration for this network resource.
|
|
oneof config {
|
|
// Optional. Immutable. If set, indicates that a new network should be
|
|
// created.
|
|
NewNetworkConfig new_network = 3 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Optional. Immutable. If set, indicates that an existing network should be
|
|
// imported.
|
|
ExistingNetworkConfig existing_network = 4 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
}
|
|
}
|
|
|
|
// When set in a
|
|
// [NetworkResourceConfig][google.cloud.hypercomputecluster.v1.NetworkResourceConfig],
|
|
// indicates that a new network should be created.
|
|
message NewNetworkConfig {
|
|
// Required. Immutable. Name of the network to create, in the format
|
|
// `projects/{project}/global/networks/{network}`.
|
|
string network = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE,
|
|
(google.api.resource_reference) = { type: "compute.googleapis.com/Network" }
|
|
];
|
|
|
|
// Optional. Immutable. Description of the network. Maximum of 2048
|
|
// characters.
|
|
string description = 2 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
}
|
|
|
|
// When set in a
|
|
// [NetworkResourceConfig][google.cloud.hypercomputecluster.v1.NetworkResourceConfig],
|
|
// indicates that an existing network should be imported.
|
|
message ExistingNetworkConfig {
|
|
// Required. Immutable. Name of the network to import, in the format
|
|
// `projects/{project}/global/networks/{network}`.
|
|
string network = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE,
|
|
(google.api.resource_reference) = { type: "compute.googleapis.com/Network" }
|
|
];
|
|
|
|
// Required. Immutable. Particular subnetwork to use, in the format
|
|
// `projects/{project}/regions/{region}/subnetworks/{subnetwork}`.
|
|
string subnetwork = 2 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE,
|
|
(google.api.resource_reference) = {
|
|
type: "compute.googleapis.com/Subnetwork"
|
|
}
|
|
];
|
|
}
|
|
|
|
// A resource representing a form of persistent storage that is accessible to
|
|
// compute resources in the cluster.
|
|
message StorageResource {
|
|
// Reference to the storage resource in Google Cloud. Exactly one of these
|
|
// fields will be populated based on the configured type of storage resource.
|
|
oneof reference {
|
|
// Reference to a Filestore instance. Populated if and only if the storage
|
|
// resource was configured to use Filestore.
|
|
FilestoreReference filestore = 1;
|
|
|
|
// Reference to a Google Cloud Storage bucket. Populated if and only if the
|
|
// storage resource was configured to use Google Cloud Storage.
|
|
BucketReference bucket = 2;
|
|
|
|
// Reference to a Managed Lustre instance. Populated if and only if the
|
|
// storage resource was configured to use Managed Lustre.
|
|
LustreReference lustre = 3;
|
|
}
|
|
|
|
// Required. Immutable. Configuration for this storage resource, which
|
|
// describes how it should be created or imported. This field only controls
|
|
// how the storage resource is initially created or imported. Subsequent
|
|
// changes to the storage resource should be made via the resource's API and
|
|
// will not be reflected in the configuration.
|
|
StorageResourceConfig config = 4 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
}
|
|
|
|
// A reference to a [Filestore](https://cloud.google.com/filestore) instance.
|
|
message FilestoreReference {
|
|
// Output only. Name of the Filestore instance, in the format
|
|
// `projects/{project}/locations/{location}/instances/{instance}`
|
|
string filestore = 1 [
|
|
(google.api.field_behavior) = OUTPUT_ONLY,
|
|
(google.api.resource_reference) = {
|
|
type: "file.googleapis.com/FileInstance"
|
|
}
|
|
];
|
|
}
|
|
|
|
// A reference to a [Google Cloud Storage](https://cloud.google.com/storage)
|
|
// bucket.
|
|
message BucketReference {
|
|
// Output only. Name of the bucket.
|
|
string bucket = 1 [
|
|
(google.api.field_behavior) = OUTPUT_ONLY,
|
|
(google.api.resource_reference) = { type: "storage.googleapis.com/Bucket" }
|
|
];
|
|
}
|
|
|
|
// A reference to a [Managed
|
|
// Lustre](https://cloud.google.com/products/managed-lustre) instance.
|
|
message LustreReference {
|
|
// Output only. Name of the Managed Lustre instance, in the format
|
|
// `projects/{project}/locations/{location}/instances/{instance}`
|
|
string lustre = 1 [
|
|
(google.api.field_behavior) = OUTPUT_ONLY,
|
|
(google.api.resource_reference) = { type: "lustre.googleapis.com/Instance" }
|
|
];
|
|
}
|
|
|
|
// Describes how a storage resource should be initialized. Each storage resource
|
|
// can either be imported from an existing Google Cloud resource or initialized
|
|
// when the cluster is created.
|
|
message StorageResourceConfig {
|
|
// Particular type of configuration for this storage resource.
|
|
oneof config {
|
|
// Optional. Immutable. If set, indicates that a new Filestore instance
|
|
// should be created.
|
|
NewFilestoreConfig new_filestore = 1 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Optional. Immutable. If set, indicates that an existing Filestore
|
|
// instance should be imported.
|
|
ExistingFilestoreConfig existing_filestore = 2 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Optional. Immutable. If set, indicates that a new Cloud Storage bucket
|
|
// should be created.
|
|
NewBucketConfig new_bucket = 3 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Optional. Immutable. If set, indicates that an existing Cloud Storage
|
|
// bucket should be imported.
|
|
ExistingBucketConfig existing_bucket = 4 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Optional. Immutable. If set, indicates that a new Managed Lustre instance
|
|
// should be created.
|
|
NewLustreConfig new_lustre = 5 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Optional. Immutable. If set, indicates that an existing Managed Lustre
|
|
// instance should be imported.
|
|
ExistingLustreConfig existing_lustre = 6 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
}
|
|
}
|
|
|
|
// When set in a
|
|
// [StorageResourceConfig][google.cloud.hypercomputecluster.v1.StorageResourceConfig],
|
|
// indicates that a new [Filestore](https://cloud.google.com/filestore) instance
|
|
// should be created.
|
|
message NewFilestoreConfig {
|
|
// Available [service
|
|
// tiers](https://cloud.google.com/filestore/docs/service-tiers) for Filestore
|
|
// instances.
|
|
enum Tier {
|
|
// Not set.
|
|
TIER_UNSPECIFIED = 0;
|
|
|
|
// Offers expanded capacity and performance scaling capabilities suitable
|
|
// for high-performance computing application requirements.
|
|
ZONAL = 4;
|
|
|
|
// Offers features and availability needed for mission-critical,
|
|
// high-performance computing workloads.
|
|
REGIONAL = 6;
|
|
}
|
|
|
|
// File access protocol for Filestore instances.
|
|
enum Protocol {
|
|
// Not set.
|
|
PROTOCOL_UNSPECIFIED = 0;
|
|
|
|
// NFS 3.0.
|
|
NFSV3 = 1;
|
|
|
|
// NFS 4.1.
|
|
NFSV41 = 2;
|
|
}
|
|
|
|
// Required. Immutable. Name of the Filestore instance to create, in the
|
|
// format `projects/{project}/locations/{location}/instances/{instance}`
|
|
string filestore = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE,
|
|
(google.api.resource_reference) = {
|
|
type: "file.googleapis.com/FileInstance"
|
|
}
|
|
];
|
|
|
|
// Optional. Immutable. Description of the instance. Maximum of 2048
|
|
// characters.
|
|
string description = 4 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Required. Immutable. File system shares on the instance. Exactly one file
|
|
// share must be specified.
|
|
repeated FileShareConfig file_shares = 2 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Required. Immutable. Service tier to use for the instance.
|
|
Tier tier = 3 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Optional. Immutable. Access protocol to use for all file shares in the
|
|
// instance. Defaults to NFS V3 if not set.
|
|
Protocol protocol = 5 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
}
|
|
|
|
// Message describing filestore configuration
|
|
message FileShareConfig {
|
|
// Required. Size of the filestore in GB. Must be between 1024 and 102400, and
|
|
// must meet scalability requirements described at
|
|
// https://cloud.google.com/filestore/docs/service-tiers.
|
|
int64 capacity_gb = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Filestore share location
|
|
string file_share = 2 [(google.api.field_behavior) = REQUIRED];
|
|
}
|
|
|
|
// When set in a
|
|
// [StorageResourceConfig][google.cloud.hypercomputecluster.v1.StorageResourceConfig],
|
|
// indicates that an existing [Filestore](https://cloud.google.com/filestore)
|
|
// instance should be imported.
|
|
message ExistingFilestoreConfig {
|
|
// Required. Immutable. Name of the Filestore instance to import, in the
|
|
// format `projects/{project}/locations/{location}/instances/{instance}`
|
|
string filestore = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE,
|
|
(google.api.resource_reference) = {
|
|
type: "file.googleapis.com/FileInstance"
|
|
}
|
|
];
|
|
}
|
|
|
|
// When set in a
|
|
// [StorageResourceConfig][google.cloud.hypercomputecluster.v1.StorageResourceConfig],
|
|
// indicates that a new [Google Cloud Storage](https://cloud.google.com/storage)
|
|
// bucket should be created.
|
|
message NewBucketConfig {
|
|
// [Storage class](https://cloud.google.com/storage/docs/storage-classes) for
|
|
// a Cloud Storage bucket.
|
|
enum StorageClass {
|
|
// Not set.
|
|
STORAGE_CLASS_UNSPECIFIED = 0;
|
|
|
|
// Best for data that is frequently accessed.
|
|
STANDARD = 1;
|
|
|
|
// Low-cost storage for data that is accessed less frequently.
|
|
NEARLINE = 2;
|
|
|
|
// Very low-cost storage for infrequently accessed data.
|
|
COLDLINE = 3;
|
|
|
|
// Lowest-cost storage for data archiving, online backup, and disaster
|
|
// recovery.
|
|
ARCHIVE = 4;
|
|
}
|
|
|
|
// Storage class of the bucket, which can be set automatically or explicitly.
|
|
oneof option {
|
|
// Optional. Immutable. If set, indicates that the bucket should use
|
|
// [Autoclass](https://cloud.google.com/storage/docs/autoclass).
|
|
GcsAutoclassConfig autoclass = 2 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Optional. Immutable. If set, uses the provided storage class as the
|
|
// bucket's default storage class.
|
|
StorageClass storage_class = 3 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
}
|
|
|
|
// Required. Immutable. Name of the Cloud Storage bucket to create.
|
|
string bucket = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE,
|
|
(google.api.resource_reference) = { type: "storage.googleapis.com/Bucket" }
|
|
];
|
|
|
|
// Optional. Immutable. If set, indicates that the bucket should use
|
|
// [hierarchical
|
|
// namespaces](https://cloud.google.com/storage/docs/hns-overview).
|
|
GcsHierarchicalNamespaceConfig hierarchical_namespace = 4 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
}
|
|
|
|
// Message describing Google Cloud Storage autoclass configuration
|
|
message GcsAutoclassConfig {
|
|
// Terminal storage class types of the autoclass bucket
|
|
enum TerminalStorageClass {
|
|
// Unspecified terminal storage class
|
|
TERMINAL_STORAGE_CLASS_UNSPECIFIED = 0;
|
|
}
|
|
|
|
// Required. Enables Auto-class feature.
|
|
bool enabled = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Optional. Terminal storage class of the autoclass bucket
|
|
TerminalStorageClass terminal_storage_class = 2
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// Message describing Google Cloud Storage hierarchical namespace configuration
|
|
message GcsHierarchicalNamespaceConfig {
|
|
// Required. Enables hierarchical namespace setup for the bucket.
|
|
bool enabled = 1 [(google.api.field_behavior) = REQUIRED];
|
|
}
|
|
|
|
// When set in a
|
|
// [StorageResourceConfig][google.cloud.hypercomputecluster.v1.StorageResourceConfig],
|
|
// indicates that an existing [Google Cloud
|
|
// Storage](https://cloud.google.com/storage) bucket should be imported.
|
|
message ExistingBucketConfig {
|
|
// Required. Immutable. Name of the Cloud Storage bucket to import.
|
|
string bucket = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE,
|
|
(google.api.resource_reference) = { type: "storage.googleapis.com/Bucket" }
|
|
];
|
|
}
|
|
|
|
// When set in a
|
|
// [StorageResourceConfig][google.cloud.hypercomputecluster.v1.StorageResourceConfig],
|
|
// indicates that a new [Managed
|
|
// Lustre](https://cloud.google.com/products/managed-lustre) instance should be
|
|
// created.
|
|
message NewLustreConfig {
|
|
// Required. Immutable. Name of the Managed Lustre instance to create, in the
|
|
// format `projects/{project}/locations/{location}/instances/{instance}`
|
|
string lustre = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Optional. Immutable. Description of the Managed Lustre instance. Maximum of
|
|
// 2048 characters.
|
|
string description = 2 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Required. Immutable. Filesystem name for this instance. This name is used
|
|
// by client-side tools, including when mounting the instance. Must be 8
|
|
// characters or less and can only contain letters and numbers.
|
|
string filesystem = 3 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Required. Immutable. Storage capacity of the instance in gibibytes (GiB).
|
|
// Allowed values are between 18000 and 7632000.
|
|
int64 capacity_gb = 4 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
}
|
|
|
|
// When set in a
|
|
// [StorageResourceConfig][google.cloud.hypercomputecluster.v1.StorageResourceConfig],
|
|
// indicates that an existing [Managed
|
|
// Lustre](https://cloud.google.com/products/managed-lustre) instance should be
|
|
// imported.
|
|
message ExistingLustreConfig {
|
|
// Required. Immutable. Name of the Managed Lustre instance to import, in the
|
|
// format `projects/{project}/locations/{location}/instances/{instance}`
|
|
string lustre = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE,
|
|
(google.api.resource_reference) = { type: "lustre.googleapis.com/Instance" }
|
|
];
|
|
}
|
|
|
|
// A resource defining how virtual machines and accelerators should be
|
|
// provisioned for the cluster.
|
|
message ComputeResource {
|
|
// Required. Immutable. Configuration for this compute resource, which
|
|
// describes how it should be created at runtime.
|
|
ComputeResourceConfig config = 6 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
}
|
|
|
|
// Describes how a compute resource should be created at runtime.
|
|
message ComputeResourceConfig {
|
|
// Particular type of configuration for this compute resource.
|
|
oneof config {
|
|
// Optional. Immutable. If set, indicates that this resource should use
|
|
// on-demand VMs.
|
|
NewOnDemandInstancesConfig new_on_demand_instances = 1 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Optional. Immutable. If set, indicates that this resource should use spot
|
|
// VMs.
|
|
NewSpotInstancesConfig new_spot_instances = 2 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Optional. Immutable. If set, indicates that this resource should use
|
|
// reserved VMs.
|
|
NewReservedInstancesConfig new_reserved_instances = 3 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Optional. Immutable. If set, indicates that this resource should use
|
|
// flex-start VMs.
|
|
NewFlexStartInstancesConfig new_flex_start_instances = 5 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
}
|
|
}
|
|
|
|
// When set in a
|
|
// [ComputeResourceConfig][google.cloud.hypercomputecluster.v1.ComputeResourceConfig],
|
|
// indicates that on-demand (i.e., using the standard provisioning model) VM
|
|
// instances should be created.
|
|
message NewOnDemandInstancesConfig {
|
|
// Required. Immutable. Name of the zone in which VM instances should run,
|
|
// e.g., `us-central1-a`. Must be in the same region as the cluster, and must
|
|
// match the zone of any other resources specified in the cluster.
|
|
string zone = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Required. Immutable. Name of the Compute Engine [machine
|
|
// type](https://cloud.google.com/compute/docs/machine-resource) to use, e.g.
|
|
// `n2-standard-2`.
|
|
string machine_type = 2 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
}
|
|
|
|
// When set in a
|
|
// [ComputeResourceConfig][google.cloud.hypercomputecluster.v1.ComputeResourceConfig],
|
|
// indicates that [spot
|
|
// VM](https://cloud.google.com/compute/docs/instances/spot) instances should be
|
|
// created.
|
|
message NewSpotInstancesConfig {
|
|
// Specifies the termination action of the instance
|
|
enum TerminationAction {
|
|
// Not set.
|
|
TERMINATION_ACTION_UNSPECIFIED = 0;
|
|
|
|
// Compute Engine stops the Spot VM on preemption.
|
|
STOP = 1;
|
|
|
|
// Compute Engine deletes the Spot VM on preemption.
|
|
DELETE = 2;
|
|
}
|
|
|
|
// Required. Immutable. Name of the zone in which VM instances should run,
|
|
// e.g., `us-central1-a`. Must be in the same region as the cluster, and must
|
|
// match the zone of any other resources specified in the cluster.
|
|
string zone = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Required. Immutable. Name of the Compute Engine [machine
|
|
// type](https://cloud.google.com/compute/docs/machine-resource) to use, e.g.
|
|
// `n2-standard-2`.
|
|
string machine_type = 2 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Optional. Termination action for the instance. If not specified, Compute
|
|
// Engine sets the termination action to DELETE.
|
|
TerminationAction termination_action = 5
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// When set in a
|
|
// [ComputeResourceConfig][google.cloud.hypercomputecluster.v1.ComputeResourceConfig],
|
|
// indicates that VM instances should be created from a
|
|
// [reservation](https://cloud.google.com/compute/docs/instances/reservations-overview).
|
|
message NewReservedInstancesConfig {
|
|
// Source of the reservation
|
|
oneof source {
|
|
// Optional. Immutable. Name of the reservation from which VM instances
|
|
// should be created, in the format
|
|
// `projects/{project}/zones/{zone}/reservations/{reservation}`.
|
|
string reservation = 1 [
|
|
(google.api.field_behavior) = OPTIONAL,
|
|
(google.api.field_behavior) = IMMUTABLE,
|
|
(google.api.resource_reference) = {
|
|
type: "compute.googleapis.com/Reservation"
|
|
}
|
|
];
|
|
}
|
|
}
|
|
|
|
// When set in a
|
|
// [ComputeResourceConfig][google.cloud.hypercomputecluster.v1.ComputeResourceConfig],
|
|
// indicates that VM instances should be created using [Flex
|
|
// Start](https://cloud.google.com/compute/docs/instances/provisioning-models).
|
|
message NewFlexStartInstancesConfig {
|
|
// Required. Immutable. Name of the zone in which VM instances should run,
|
|
// e.g., `us-central1-a`. Must be in the same region as the cluster, and must
|
|
// match the zone of any other resources specified in the cluster.
|
|
string zone = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Required. Immutable. Name of the Compute Engine [machine
|
|
// type](https://cloud.google.com/compute/docs/machine-resource) to use, e.g.
|
|
// `n2-standard-2`.
|
|
string machine_type = 2 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Required. Immutable. Specifies the time limit for created instances.
|
|
// Instances will be terminated at the end of this duration.
|
|
google.protobuf.Duration max_duration = 3 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
}
|
|
|
|
// A [Persistent disk](https://cloud.google.com/compute/docs/disks) used as the
|
|
// boot disk for a Compute Engine VM instance.
|
|
message BootDisk {
|
|
// Required. Immutable. [Persistent disk
|
|
// type](https://cloud.google.com/compute/docs/disks#disk-types), in the
|
|
// format `projects/{project}/zones/{zone}/diskTypes/{disk_type}`.
|
|
string type = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE,
|
|
(google.api.resource_reference) = {
|
|
type: "compute.googleapis.com/DiskType"
|
|
}
|
|
];
|
|
|
|
// Required. Immutable. Size of the disk in gigabytes. Must be at least 10GB.
|
|
int64 size_gb = 2 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
}
|
|
|
|
// The component responsible for scheduling and running workloads on the
|
|
// cluster as well as providing the user interface for interacting with the
|
|
// cluster at runtime.
|
|
message Orchestrator {
|
|
// Particular type of orchestrator to use in this cluster.
|
|
oneof option {
|
|
// Optional. If set, indicates that the cluster should use Slurm as the
|
|
// orchestrator.
|
|
SlurmOrchestrator slurm = 1 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
}
|
|
|
|
// When set in [Orchestrator][google.cloud.hypercomputecluster.v1.Orchestrator],
|
|
// indicates that the cluster should use [Slurm](https://slurm.schedmd.com/) as
|
|
// the orchestrator.
|
|
message SlurmOrchestrator {
|
|
// Required. Configuration for login nodes, which allow users to access the
|
|
// cluster over SSH.
|
|
SlurmLoginNodes login_nodes = 6 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Optional. Compute resource configuration for the Slurm nodesets in your
|
|
// cluster. If not specified, the cluster won't create any nodes.
|
|
repeated SlurmNodeSet node_sets = 1 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Configuration for the Slurm partitions in your cluster. Each
|
|
// partition can contain one or more nodesets, and you can submit separate
|
|
// jobs on each partition. If you don't specify at least one partition in your
|
|
// cluster, you can't submit jobs to the cluster.
|
|
repeated SlurmPartition partitions = 2
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Default partition to use for submitted jobs that do not
|
|
// explicitly specify a partition. Required if and only if there is more than
|
|
// one partition, in which case it must match the id of one of the partitions.
|
|
string default_partition = 3 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Slurm [prolog
|
|
// scripts](https://slurm.schedmd.com/prolog_epilog.html), which will be
|
|
// executed by compute nodes before a node begins running a new job. Values
|
|
// must not be empty.
|
|
repeated string prolog_bash_scripts = 4
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Slurm [epilog
|
|
// scripts](https://slurm.schedmd.com/prolog_epilog.html), which will be
|
|
// executed by compute nodes whenever a node finishes running a job. Values
|
|
// must not be empty.
|
|
repeated string epilog_bash_scripts = 5
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// Configuration for Slurm nodesets in the cluster. Nodesets are groups of
|
|
// compute nodes used by Slurm that are responsible for running workloads
|
|
// submitted to the cluster.
|
|
message SlurmNodeSet {
|
|
// Additional configuration for the nodeset. If not set, the nodeset will
|
|
// use
|
|
// [ComputeInstanceSlurmNodeSet][google.cloud.hypercomputecluster.v1.ComputeInstanceSlurmNodeSet]
|
|
// with default values.
|
|
oneof type {
|
|
// Optional. If set, indicates that the nodeset should be backed by Compute
|
|
// Engine instances.
|
|
ComputeInstanceSlurmNodeSet compute_instance = 17
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// Required. Identifier for the nodeset, which allows it to be referenced by
|
|
// partitions. Must conform to
|
|
// [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) (lower-case,
|
|
// alphanumeric, and at most 63 characters).
|
|
string id = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Optional. ID of the compute resource on which this nodeset will run. Must
|
|
// match a key in the cluster's
|
|
// [compute_resources][google.cloud.hypercomputecluster.v1.Cluster.compute_resources].
|
|
string compute_id = 16 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. How [storage
|
|
// resources][google.cloud.hypercomputecluster.v1.StorageResource] should be
|
|
// mounted on each compute node.
|
|
repeated StorageConfig storage_configs = 3
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Number of nodes to be statically created for this nodeset. The
|
|
// cluster will attempt to ensure that at least this many nodes exist at all
|
|
// times.
|
|
int64 static_node_count = 4 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Controls how many additional nodes a cluster can bring online to
|
|
// handle workloads. Set this value to enable dynamic node creation and limit
|
|
// the number of additional nodes the cluster can bring online. Leave empty if
|
|
// you do not want the cluster to create nodes dynamically, and instead rely
|
|
// only on static nodes.
|
|
int64 max_dynamic_node_count = 5 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// When set in a
|
|
// [SlurmNodeSet][google.cloud.hypercomputecluster.v1.SlurmNodeSet], indicates
|
|
// that the nodeset should be backed by Compute Engine VM instances.
|
|
message ComputeInstanceSlurmNodeSet {
|
|
// Optional. [Startup
|
|
// script](https://cloud.google.com/compute/docs/instances/startup-scripts/linux)
|
|
// to be run on each VM instance in the nodeset. Max 256KB.
|
|
string startup_script = 1 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional.
|
|
// [Labels](https://cloud.google.com/compute/docs/labeling-resources) that
|
|
// should be applied to each VM instance in the nodeset.
|
|
map<string, string> labels = 2 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Boot disk for the compute instance
|
|
BootDisk boot_disk = 3 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// Configuration for Slurm partitions in the cluster. Partitions are groups of
|
|
// nodesets, and are how clients specify where their workloads should be run.
|
|
message SlurmPartition {
|
|
// Required. ID of the partition, which is how users will identify it. Must
|
|
// conform to [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034)
|
|
// (lower-case, alphanumeric, and at most 63 characters).
|
|
string id = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. IDs of the nodesets that make up this partition. Values must
|
|
// match
|
|
// [SlurmNodeSet.id][google.cloud.hypercomputecluster.v1.SlurmNodeSet.id].
|
|
repeated string node_set_ids = 2 [(google.api.field_behavior) = REQUIRED];
|
|
}
|
|
|
|
// Configuration for Slurm [login
|
|
// nodes](https://slurm.schedmd.com/quickstart_admin.html#login) in the cluster.
|
|
// Login nodes are Compute Engine VM instances that allow users to access the
|
|
// cluster over SSH.
|
|
message SlurmLoginNodes {
|
|
// Required. Number of login node instances to create.
|
|
int64 count = 3 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Name of the zone in which login nodes should run, e.g.,
|
|
// `us-central1-a`. Must be in the same region as the cluster, and must match
|
|
// the zone of any other resources specified in the cluster.
|
|
string zone = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Name of the Compute Engine [machine
|
|
// type](https://cloud.google.com/compute/docs/machine-resource) to use for
|
|
// login nodes, e.g. `n2-standard-2`.
|
|
string machine_type = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Optional. [Startup
|
|
// script](https://cloud.google.com/compute/docs/instances/startup-scripts/linux)
|
|
// to be run on each login node instance. Max 256KB.
|
|
// The script must complete within the system-defined default timeout of 5
|
|
// minutes. For tasks that require more time, consider running them in the
|
|
// background using methods such as `&` or `nohup`.
|
|
string startup_script = 5 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Whether [OS Login](https://cloud.google.com/compute/docs/oslogin)
|
|
// should be enabled on login node instances.
|
|
bool enable_os_login = 6 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Whether login node instances should be assigned [external IP
|
|
// addresses](https://cloud.google.com/compute/docs/ip-addresses#externaladdresses).
|
|
bool enable_public_ips = 7 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional.
|
|
// [Labels](https://cloud.google.com/compute/docs/labeling-resources) that
|
|
// should be applied to each login node instance.
|
|
map<string, string> labels = 8 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. How [storage
|
|
// resources][google.cloud.hypercomputecluster.v1.StorageResource] should be
|
|
// mounted on each login node.
|
|
repeated StorageConfig storage_configs = 12
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Output only. Information about the login node instances that were created
|
|
// in Compute Engine.
|
|
repeated ComputeInstance instances = 10
|
|
[(google.api.field_behavior) = OUTPUT_ONLY];
|
|
|
|
// Optional. Boot disk for the login node.
|
|
BootDisk boot_disk = 13 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// Description of how a [storage
|
|
// resource][google.cloud.hypercomputecluster.v1.StorageResource] should be
|
|
// mounted on a VM instance.
|
|
message StorageConfig {
|
|
// Required. ID of the storage resource to mount, which must match a key in
|
|
// the cluster's
|
|
// [storage_resources][google.cloud.hypercomputecluster.v1.Cluster.storage_resources].
|
|
string id = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. A directory inside the VM instance's file system where the
|
|
// storage resource should be mounted (e.g., `/mnt/share`).
|
|
string local_mount = 2 [(google.api.field_behavior) = REQUIRED];
|
|
}
|
|
|
|
// Details about a Compute Engine
|
|
// [instance](https://cloud.google.com/compute/docs/instances).
|
|
message ComputeInstance {
|
|
// Output only. Name of the VM instance, in the format
|
|
// `projects/{project}/zones/{zone}/instances/{instance}`.
|
|
string instance = 1 [
|
|
(google.api.field_behavior) = OUTPUT_ONLY,
|
|
(google.api.resource_reference) = {
|
|
type: "compute.googleapis.com/ComputeInstance"
|
|
}
|
|
];
|
|
}
|