// 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.baremetalsolution.v2; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/cloud/baremetalsolution/v2/instance.proto"; import "google/cloud/baremetalsolution/v2/lun.proto"; import "google/cloud/baremetalsolution/v2/network.proto"; import "google/cloud/baremetalsolution/v2/nfs_share.proto"; import "google/cloud/baremetalsolution/v2/volume.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Cloud.BareMetalSolution.V2"; option go_package = "cloud.google.com/go/baremetalsolution/apiv2/baremetalsolutionpb;baremetalsolutionpb"; option java_multiple_files = true; option java_outer_classname = "BareMetalSolutionProto"; option java_package = "com.google.cloud.baremetalsolution.v2"; option php_namespace = "Google\\Cloud\\BareMetalSolution\\V2"; option ruby_package = "Google::Cloud::BareMetalSolution::V2"; // Performs management operations on Bare Metal Solution servers. // // The `baremetalsolution.googleapis.com` service provides management // capabilities for Bare Metal Solution servers. To access the API methods, you // must assign Bare Metal Solution IAM roles containing the desired permissions // to your staff in your Google Cloud project. You must also enable the Bare // Metal Solution API. Once enabled, the methods act // upon specific servers in your Bare Metal Solution environment. service BareMetalSolution { option (google.api.default_host) = "baremetalsolution.googleapis.com"; option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; // List servers in a given project and location. rpc ListInstances(ListInstancesRequest) returns (ListInstancesResponse) { option (google.api.http) = { get: "/v2/{parent=projects/*/locations/*}/instances" }; option (google.api.method_signature) = "parent"; } // Get details about a single server. rpc GetInstance(GetInstanceRequest) returns (Instance) { option (google.api.http) = { get: "/v2/{name=projects/*/locations/*/instances/*}" }; option (google.api.method_signature) = "name"; } // Update details of a single server. rpc UpdateInstance(UpdateInstanceRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v2/{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" }; } // Perform an ungraceful, hard reset on a server. Equivalent to shutting the // power off and then turning it back on. rpc ResetInstance(ResetInstanceRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v2/{name=projects/*/locations/*/instances/*}:reset" body: "*" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "ResetInstanceResponse" metadata_type: "OperationMetadata" }; } // Starts a server that was shutdown. rpc StartInstance(StartInstanceRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v2/{name=projects/*/locations/*/instances/*}:start" body: "*" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "StartInstanceResponse" metadata_type: "OperationMetadata" }; } // Stop a running server. rpc StopInstance(StopInstanceRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v2/{name=projects/*/locations/*/instances/*}:stop" body: "*" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "StopInstanceResponse" metadata_type: "OperationMetadata" }; } // Detach LUN from Instance. rpc DetachLun(DetachLunRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v2/{instance=projects/*/locations/*/instances/*}:detachLun" body: "*" }; option (google.api.method_signature) = "instance,lun"; option (google.longrunning.operation_info) = { response_type: "Instance" metadata_type: "OperationMetadata" }; } // List storage volumes in a given project and location. rpc ListVolumes(ListVolumesRequest) returns (ListVolumesResponse) { option (google.api.http) = { get: "/v2/{parent=projects/*/locations/*}/volumes" }; option (google.api.method_signature) = "parent"; } // Get details of a single storage volume. rpc GetVolume(GetVolumeRequest) returns (Volume) { option (google.api.http) = { get: "/v2/{name=projects/*/locations/*/volumes/*}" }; option (google.api.method_signature) = "name"; } // Update details of a single storage volume. rpc UpdateVolume(UpdateVolumeRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v2/{volume.name=projects/*/locations/*/volumes/*}" body: "volume" }; option (google.api.method_signature) = "volume,update_mask"; option (google.longrunning.operation_info) = { response_type: "Volume" metadata_type: "OperationMetadata" }; } // Emergency Volume resize. rpc ResizeVolume(ResizeVolumeRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v2/{volume=projects/*/locations/*/volumes/*}:resize" body: "*" }; option (google.api.method_signature) = "volume,size_gib"; option (google.longrunning.operation_info) = { response_type: "Volume" metadata_type: "OperationMetadata" }; } // List network in a given project and location. rpc ListNetworks(ListNetworksRequest) returns (ListNetworksResponse) { option (google.api.http) = { get: "/v2/{parent=projects/*/locations/*}/networks" }; option (google.api.method_signature) = "parent"; } // List all Networks (and used IPs for each Network) in the vendor account // associated with the specified project. rpc ListNetworkUsage(ListNetworkUsageRequest) returns (ListNetworkUsageResponse) { option (google.api.http) = { get: "/v2/{location=projects/*/locations/*}/networks:listNetworkUsage" }; option (google.api.method_signature) = "location"; } // Get details of a single network. rpc GetNetwork(GetNetworkRequest) returns (Network) { option (google.api.http) = { get: "/v2/{name=projects/*/locations/*/networks/*}" }; option (google.api.method_signature) = "name"; } // Update details of a single network. rpc UpdateNetwork(UpdateNetworkRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v2/{network.name=projects/*/locations/*/networks/*}" body: "network" }; option (google.api.method_signature) = "network,update_mask"; option (google.longrunning.operation_info) = { response_type: "Network" metadata_type: "OperationMetadata" }; } // Get details of a single storage logical unit number(LUN). rpc GetLun(GetLunRequest) returns (Lun) { option (google.api.http) = { get: "/v2/{name=projects/*/locations/*/volumes/*/luns/*}" }; option (google.api.method_signature) = "name"; } // List storage volume luns for given storage volume. rpc ListLuns(ListLunsRequest) returns (ListLunsResponse) { option (google.api.http) = { get: "/v2/{parent=projects/*/locations/*/volumes/*}/luns" }; option (google.api.method_signature) = "parent"; } // Get details of a single NFS share. rpc GetNfsShare(GetNfsShareRequest) returns (NfsShare) { option (google.api.http) = { get: "/v2/{name=projects/*/locations/*/nfsShares/*}" }; option (google.api.method_signature) = "name"; } // List NFS shares. rpc ListNfsShares(ListNfsSharesRequest) returns (ListNfsSharesResponse) { option (google.api.http) = { get: "/v2/{parent=projects/*/locations/*}/nfsShares" }; option (google.api.method_signature) = "parent"; } // Update details of a single NFS share. rpc UpdateNfsShare(UpdateNfsShareRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v2/{nfs_share.name=projects/*/locations/*/nfsShares/*}" body: "nfs_share" }; option (google.api.method_signature) = "nfs_share,update_mask"; option (google.longrunning.operation_info) = { response_type: "NfsShare" metadata_type: "OperationMetadata" }; } } // Represents the metadata from a long-running operation. message OperationMetadata { // The time the operation was created. google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // The time the operation finished running. google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Server-defined resource path for the target of the operation. string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Name of the action executed by the operation. string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Human-readable status of the operation, if any. string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // Identifies whether the user requested the cancellation // of the operation. Operations that have been successfully cancelled // have [Operation.error][] value with a [google.rpc.Status.code][] of 1, // corresponding to `Code.CANCELLED`. bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; // API version used with the operation. string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Response message from resetting a server. message ResetInstanceResponse { }