// Copyright 2024 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.parallelstore.v1beta; 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/longrunning/operations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Cloud.Parallelstore.V1Beta"; option go_package = "cloud.google.com/go/parallelstore/apiv1beta/parallelstorepb;parallelstorepb"; option java_multiple_files = true; option java_outer_classname = "ParallelstoreProto"; option java_package = "com.google.cloud.parallelstore.v1beta"; option php_namespace = "Google\\Cloud\\Parallelstore\\V1beta"; option ruby_package = "Google::Cloud::Parallelstore::V1beta"; 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/Address" pattern: "projects/{project}/regions/{region}/addresses/{address}" }; // Service describing handlers for resources // Configures and manages parallelstore resources. // // Parallelstore service. // // The `parallelstore.googleapis.com` service implements the parallelstore API // and defines the following resource model for managing instances: // * The service works with a collection of cloud projects, named: `/projects/*` // * Each project has a collection of available locations, named: `/locations/*` // * Each location has a collection of instances named `/instances/*`. // * Parallelstore instances are resources of the form: // `/projects/{project_id}/locations/{location_id}/instances/{instance_id}` // // Note that location_id must be a Google Cloud `zone`; for example: // * `projects/12345/locations/us-central1-c/instances/my-parallelstore-share` service Parallelstore { option (google.api.default_host) = "parallelstore.googleapis.com"; option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; // Lists Instances in a given project and location. rpc ListInstances(ListInstancesRequest) returns (ListInstancesResponse) { option (google.api.http) = { get: "/v1beta/{parent=projects/*/locations/*}/instances" }; option (google.api.method_signature) = "parent"; } // Gets details of a single Instance. rpc GetInstance(GetInstanceRequest) returns (Instance) { option (google.api.http) = { get: "/v1beta/{name=projects/*/locations/*/instances/*}" }; option (google.api.method_signature) = "name"; } // Creates a Parallelstore instance in a given project and location. rpc CreateInstance(CreateInstanceRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1beta/{parent=projects/*/locations/*}/instances" body: "instance" }; option (google.api.method_signature) = "parent,instance,instance_id"; option (google.longrunning.operation_info) = { response_type: "Instance" metadata_type: "OperationMetadata" }; } // Updates the parameters of a single Instance. rpc UpdateInstance(UpdateInstanceRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v1beta/{instance.name=projects/*/locations/*/instances/*}" body: "instance" }; option (google.api.method_signature) = "instance,update_mask"; option (google.longrunning.operation_info) = { response_type: "Instance" metadata_type: "OperationMetadata" }; } // Deletes a single Instance. rpc DeleteInstance(DeleteInstanceRequest) returns (google.longrunning.Operation) { option (google.api.http) = { delete: "/v1beta/{name=projects/*/locations/*/instances/*}" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "OperationMetadata" }; } // ImportData copies data from Cloud Storage to Parallelstore. rpc ImportData(ImportDataRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1beta/{name=projects/*/locations/*/instances/*}:importData" body: "*" }; option (google.longrunning.operation_info) = { response_type: "ImportDataResponse" metadata_type: "ImportDataMetadata" }; } // ExportData copies data from Parallelstore to Cloud Storage rpc ExportData(ExportDataRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1beta/{name=projects/*/locations/*/instances/*}:exportData" body: "*" }; option (google.longrunning.operation_info) = { response_type: "ExportDataResponse" metadata_type: "ExportDataMetadata" }; } } // Type of transfer that occurred. enum TransferType { // Zero is an illegal value. TRANSFER_TYPE_UNSPECIFIED = 0; // Imports to Parallelstore. IMPORT = 1; // Exports from Parallelstore. EXPORT = 2; } // A Parallelstore instance. message Instance { option (google.api.resource) = { type: "parallelstore.googleapis.com/Instance" pattern: "projects/{project}/locations/{location}/instances/{instance}" plural: "instances" singular: "instance" }; // Represents the different states of a Parallelstore instance. enum State { // Not set. STATE_UNSPECIFIED = 0; // The instance is being created. CREATING = 1; // The instance is available for use. ACTIVE = 2; // The instance is being deleted. DELETING = 3; // The instance is not usable. FAILED = 4; } // Identifier. The resource name of the instance, in the format // `projects/{project}/locations/{location}/instances/{instance_id}` string name = 1 [(google.api.field_behavior) = IDENTIFIER]; // Optional. The description of the instance. 2048 characters or less. string description = 2 [(google.api.field_behavior) = OPTIONAL]; // Output only. The instance state. State state = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time when the instance was created. google.protobuf.Timestamp create_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time when the instance was updated. google.protobuf.Timestamp update_time = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // Optional. Cloud Labels are a flexible and lightweight mechanism for // organizing cloud resources into groups that reflect a customer's // organizational needs and deployment strategies. Cloud Labels can be used to // filter collections of resources. They can be used to control how resource // metrics are aggregated. And they can be used as arguments to policy // management rules (e.g. route, firewall, load balancing, etc.). // // * Label keys must be between 1 and 63 characters long and must conform to // the following regular expression: `[a-z][a-z0-9_-]{0,62}`. // * Label values must be between 0 and 63 characters long and must conform // to the regular expression `[a-z0-9_-]{0,63}`. // * No more than 64 labels can be associated with a given resource. // // See https://goo.gl/xmQnxf for more information on and examples of labels. // // If you plan to use labels in your own code, please note that additional // characters may be allowed in the future. Therefore, you are advised to use // an internal label representation, such as JSON, which doesn't rely upon // specific characters being disallowed. For example, representing labels // as the string: name + "_" + value would prove problematic if we were to // allow "_" in a future release. map labels = 6 [(google.api.field_behavior) = OPTIONAL]; // Required. Immutable. Storage capacity of Parallelstore instance in // Gibibytes (GiB). int64 capacity_gib = 8 [ (google.api.field_behavior) = IMMUTABLE, (google.api.field_behavior) = REQUIRED ]; // Output only. The version of DAOS software running in the instance string daos_version = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. List of access_points. // Contains a list of IPv4 addresses used for client side configuration. repeated string access_points = 10 [(google.api.field_behavior) = OUTPUT_ONLY]; // Optional. Immutable. The name of the Google Compute Engine // [VPC network](https://cloud.google.com/vpc/docs/vpc) to which the // instance is connected. string network = 11 [ (google.api.field_behavior) = IMMUTABLE, (google.api.field_behavior) = OPTIONAL, (google.api.resource_reference) = { type: "compute.googleapis.com/Network" } ]; // Optional. Immutable. Contains the id of the allocated IP address range // associated with the private service access connection for example, // "test-default" associated with IP range 10.0.0.0/29. If no range id is // provided all ranges will be considered. string reserved_ip_range = 12 [ (google.api.field_behavior) = IMMUTABLE, (google.api.field_behavior) = OPTIONAL, (google.api.resource_reference) = { type: "compute.googleapis.com/Address" } ]; // Output only. Immutable. Contains the id of the allocated IP address range // associated with the private service access connection for example, // "test-default" associated with IP range 10.0.0.0/29. This field is // populated by the service and and contains the value currently used by the // service. string effective_reserved_ip_range = 14 [ (google.api.field_behavior) = IMMUTABLE, (google.api.field_behavior) = OUTPUT_ONLY, (google.api.resource_reference) = { type: "compute.googleapis.com/Address" } ]; } // Message for requesting list of Instances message ListInstancesRequest { // Required. The project and location for which to retrieve instance // information, in the format `projects/{project_id}/locations/{location}`. // For Parallelstore locations map to Google Cloud zones, for example // **us-central1-a**. // To retrieve instance information for all locations, use "-" for the // `{location}` value. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "parallelstore.googleapis.com/Instance" } ]; // Optional. Requested page size. Server may return fewer items than // requested. If unspecified, server will pick an appropriate default. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. A token identifying a page of results the server should return. string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; // Optional. Filtering results string filter = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. Hint for how to order the results string order_by = 5 [(google.api.field_behavior) = OPTIONAL]; } // Message for response to listing Instances message ListInstancesResponse { // The list of Parallelstore Instances repeated Instance instances = 1; // A token identifying a page of results the server should return. string next_page_token = 2; // Locations that could not be reached. repeated string unreachable = 3; } // Request to get an instance's details. message GetInstanceRequest { // Required. The instance resource name, in the format // `projects/{project_id}/locations/{location}/instances/{instance_id}`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "parallelstore.googleapis.com/Instance" } ]; } // Request for // [CreateInstance][google.cloud.parallelstore.v1beta.Parallelstore.CreateInstance] message CreateInstanceRequest { // Required. The instance's project and location, in the format // `projects/{project}/locations/{location}`. // Locations map to Google Cloud zones, for example **us-west1-b**. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "parallelstore.googleapis.com/Instance" } ]; // Required. The logical name of the Parallelstore instance in the user // project with the following restrictions: // // * Must contain only lowercase letters, numbers, and hyphens. // * Must start with a letter. // * Must be between 1-63 characters. // * Must end with a number or a letter. // * Must be unique within the customer project / location string instance_id = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The instance to create. Instance instance = 3 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique // request ID so that if you must retry your request, the server will know to // ignore the request if it has already been completed. The server will // guarantee that for at least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and t // he request times out. If you make the request again with the same request // ID, the server can check if original operation with the same request ID // was received, and if so, will ignore the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 4 [(google.api.field_behavior) = OPTIONAL]; } // Message for updating a Instance message UpdateInstanceRequest { // Required. Mask of fields to update .Field mask is used to specify the // fields to be overwritten in the Instance resource by the update. At least // one path must be supplied in this field. The fields specified in the // update_mask are relative to the resource, not the full request. google.protobuf.FieldMask update_mask = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The instance to update Instance instance = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. An optional request ID to identify requests. Specify a unique // request ID so that if you must retry your request, the server will know to // ignore the request if it has already been completed. The server will // guarantee that for at least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and t // he request times out. If you make the request again with the same request // ID, the server can check if original operation with the same request ID // was received, and if so, will ignore the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 3 [(google.api.field_behavior) = OPTIONAL]; } // Message for deleting a Instance message DeleteInstanceRequest { // Required. Name of the resource string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "parallelstore.googleapis.com/Instance" } ]; // Optional. An optional request ID to identify requests. Specify a unique // request ID so that if you must retry your request, the server will know to // ignore the request if it has already been completed. The server will // guarantee that for at least 60 minutes after the first request. // // For example, consider a situation where you make an initial request and t // he request times out. If you make the request again with the same request // ID, the server can check if original operation with the same request ID // was received, and if so, will ignore the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 2 [(google.api.field_behavior) = OPTIONAL]; } // Represents the metadata of the long-running operation. message OperationMetadata { // Output only. The time the operation was created. google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time 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. Operations that have been cancelled successfully // have [Operation.error][] value with a // [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to // `Code.CANCELLED`. 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]; } // Google Cloud Storage as a source. message SourceGcsBucket { // Required. URI to a Cloud Storage object in format: // 'gs:///'. string uri = 1 [(google.api.field_behavior) = REQUIRED]; } // Google Cloud Storage as a destination. message DestinationGcsBucket { // Required. URI to a Cloud Storage object in format: // 'gs:///'. string uri = 1 [(google.api.field_behavior) = REQUIRED]; } // Pa as a source. message SourceParallelstore { // Optional. Root directory path to the Paralellstore filesystem, starting // with '/'. Defaults to '/' if unset. string path = 1 [(google.api.field_behavior) = OPTIONAL]; } // Parallelstore as a destination. message DestinationParallelstore { // Optional. Root directory path to the Paralellstore filesystem, starting // with '/'. Defaults to '/' if unset. string path = 1 [(google.api.field_behavior) = OPTIONAL]; } // Message representing the request importing data from parallelstore to Cloud // Storage. message ImportDataRequest { // The source of the data being imported into the parallelstore instance. oneof source { // Cloud Storage source. SourceGcsBucket source_gcs_bucket = 2; } // The destination of the data being imported into the parallelstore instance. oneof destination { // Parallelstore destination. DestinationParallelstore destination_parallelstore = 3; } // Required. Name of the resource. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "parallelstore.googleapis.com/Instance" } ]; // Optional. An optional request ID to identify requests. Specify a unique // request ID so that if you must retry your request, the server will know to // ignore the request if it has already been completed. The server will // guarantee that for at least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and t // he request times out. If you make the request again with the same request // ID, the server can check if original operation with the same request ID // was received, and if so, will ignore the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 4 [ (google.api.field_info).format = UUID4, (google.api.field_behavior) = OPTIONAL ]; } // Message representing the request exporting data from Cloud Storage to // parallelstore. message ExportDataRequest { // The source of the data exported from the parallelstore instance. oneof source { // Parallelstore source. SourceParallelstore source_parallelstore = 2; } // The destination of the data exported from the parallelstore instance. oneof destination { // Cloud Storage destination. DestinationGcsBucket destination_gcs_bucket = 3; } // Required. Name of the resource. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "parallelstore.googleapis.com/Instance" } ]; // Optional. An optional request ID to identify requests. Specify a unique // request ID so that if you must retry your request, the server will know to // ignore the request if it has already been completed. The server will // guarantee that for at least 60 minutes since the first request. // // For example, consider a situation where you make an initial request and t // he request times out. If you make the request again with the same request // ID, the server can check if original operation with the same request ID // was received, and if so, will ignore the second request. This prevents // clients from accidentally creating duplicate commitments. // // The request ID must be a valid UUID with the exception that zero UUID is // not supported (00000000-0000-0000-0000-000000000000). string request_id = 4 [ (google.api.field_info).format = UUID4, (google.api.field_behavior) = OPTIONAL ]; } // ImportDataResponse is the response returned from ImportData rpc. message ImportDataResponse {} // ImportDataMetadata contains import data operation metadata message ImportDataMetadata { // Contains the data transfer operation metadata. TransferOperationMetadata operation_metadata = 1; // Output only. The time the operation was created. google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time the operation finished running. google.protobuf.Timestamp end_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Server-defined resource path for the target of the operation. string target = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Name of the verb executed by the operation. string verb = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Human-readable status of the operation, if any. string status_message = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Identifies whether the user has requested cancellation // of the operation. Operations that have successfully been cancelled // have [Operation.error][] value with a // [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to // `Code.CANCELLED`. bool requested_cancellation = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. API version used to start the operation. string api_version = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; } // ExportDataResponse is the response returned from ExportData rpc message ExportDataResponse {} // ExportDataMetadata contains export data operation metadata message ExportDataMetadata { // Contains the data transfer operation metadata. TransferOperationMetadata operation_metadata = 1; // Output only. The time the operation was created. google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time the operation finished running. google.protobuf.Timestamp end_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Server-defined resource path for the target of the operation. string target = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Name of the verb executed by the operation. string verb = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Human-readable status of the operation, if any. string status_message = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Identifies whether the user has requested cancellation // of the operation. Operations that have successfully been cancelled // have [Operation.error][] value with a // [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to // `Code.CANCELLED`. bool requested_cancellation = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. API version used to start the operation. string api_version = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Represents the metadata of the long-running operation. message TransferOperationMetadata { // The source of transfer operation. oneof source { // Output only. Parallelstore source. SourceParallelstore source_parallelstore = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Cloud Storage source. SourceGcsBucket source_gcs_bucket = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The destination of transfer operation. oneof destination { // Output only. Cloud Storage destination. DestinationGcsBucket destination_gcs_bucket = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Parallelstore destination. DestinationParallelstore destination_parallelstore = 10 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Output only. Information about the progress of the transfer operation. TransferCounters counters = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The type of transfer occurring. TransferType transfer_type = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; } // A collection of counters that report the progress of a transfer operation. message TransferCounters { // Objects found in the data source that are scheduled to be transferred, // excluding any that are filtered based on object conditions or skipped due // to sync. int64 objects_found = 1; // Bytes found in the data source that are scheduled to be transferred, // excluding any that are filtered based on object conditions or skipped due // to sync. int64 bytes_found = 2; // Objects in the data source that are not transferred because they already // exist in the data destination. int64 objects_skipped = 3; // Bytes in the data source that are not transferred because they already // exist in the data destination. int64 bytes_skipped = 4; // Objects that are copied to the data destination. int64 objects_copied = 5; // Bytes that are copied to the data destination. int64 bytes_copied = 6; }