Skip to content

Commit

Permalink
feat: onboard Resource Allowance API methods on v1alpha
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 619697259
  • Loading branch information
Google APIs authored and Copybara-Service committed Mar 27, 2024
1 parent 0e74ae7 commit 713ac6c
Show file tree
Hide file tree
Showing 3 changed files with 391 additions and 0 deletions.
211 changes: 211 additions & 0 deletions google/cloud/batch/v1alpha/batch.proto
Expand Up @@ -22,9 +22,11 @@ import "google/api/field_behavior.proto";
import "google/api/field_info.proto";
import "google/api/resource.proto";
import "google/cloud/batch/v1alpha/job.proto";
import "google/cloud/batch/v1alpha/resource_allowance.proto";
import "google/cloud/batch/v1alpha/task.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.Batch.V1Alpha";
Expand Down Expand Up @@ -96,6 +98,58 @@ service BatchService {
};
option (google.api.method_signature) = "parent";
}

// Create a Resource Allowance.
rpc CreateResourceAllowance(CreateResourceAllowanceRequest)
returns (ResourceAllowance) {
option (google.api.http) = {
post: "/v1alpha/{parent=projects/*/locations/*}/resourceAllowances"
body: "resource_allowance"
};
option (google.api.method_signature) =
"parent,resource_allowance,resource_allowance_id";
}

// Get a ResourceAllowance specified by its resource name.
rpc GetResourceAllowance(GetResourceAllowanceRequest)
returns (ResourceAllowance) {
option (google.api.http) = {
get: "/v1alpha/{name=projects/*/locations/*/resourceAllowances/*}"
};
option (google.api.method_signature) = "name";
}

// Delete a ResourceAllowance.
rpc DeleteResourceAllowance(DeleteResourceAllowanceRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
delete: "/v1alpha/{name=projects/*/locations/*/resourceAllowances/*}"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "google.protobuf.Empty"
metadata_type: "google.cloud.batch.v1alpha.OperationMetadata"
};
}

// List all ResourceAllowances for a project within a region.
rpc ListResourceAllowances(ListResourceAllowancesRequest)
returns (ListResourceAllowancesResponse) {
option (google.api.http) = {
get: "/v1alpha/{parent=projects/*/locations/*}/resourceAllowances"
};
option (google.api.method_signature) = "parent";
}

// Update a Resource Allowance.
rpc UpdateResourceAllowance(UpdateResourceAllowanceRequest)
returns (ResourceAllowance) {
option (google.api.http) = {
patch: "/v1alpha/{resource_allowance.name=projects/*/locations/*/resourceAllowances/*}"
body: "resource_allowance"
};
option (google.api.method_signature) = "resource_allowance,update_mask";
}
}

// CreateJob Request.
Expand Down Expand Up @@ -247,6 +301,163 @@ message GetTaskRequest {
];
}

// CreateResourceAllowance Request.
message CreateResourceAllowanceRequest {
// Required. The parent resource name where the ResourceAllowance will be
// created. Pattern: "projects/{project}/locations/{location}"
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "batch.googleapis.com/ResourceAllowance"
}
];

// ID used to uniquely identify the ResourceAllowance within its parent scope.
// This field should contain at most 63 characters and must start with
// lowercase characters.
// Only lowercase characters, numbers and '-' are accepted.
// The '-' character cannot be the first or the last one.
// A system generated ID will be used if the field is not set.
//
// The resource_allowance.name field in the request will be ignored and the
// created resource name of the ResourceAllowance will be
// "{parent}/resourceAllowances/{resource_allowance_id}".
string resource_allowance_id = 2;

// Required. The ResourceAllowance to create.
ResourceAllowance resource_allowance = 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
// the 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
];
}

// GetResourceAllowance Request.
message GetResourceAllowanceRequest {
// Required. ResourceAllowance name.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "batch.googleapis.com/ResourceAllowance"
}
];
}

// DeleteResourceAllowance Request.
message DeleteResourceAllowanceRequest {
// Required. ResourceAllowance name.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "batch.googleapis.com/ResourceAllowance"
}
];

// Optional. Reason for this deletion.
string reason = 2 [(google.api.field_behavior) = OPTIONAL];

// 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
// the 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
];
}

// ListResourceAllowances Request.
message ListResourceAllowancesRequest {
// Required. Parent path.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "batch.googleapis.com/ResourceAllowance"
}
];

// Optional. Page size.
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];

// Optional. Page token.
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
}

// ListResourceAllowances Response.
message ListResourceAllowancesResponse {
// ResourceAllowances.
repeated ResourceAllowance resource_allowances = 1;

// Next page token.
string next_page_token = 2;

// Locations that could not be reached.
repeated string unreachable = 3;
}

// UpdateResourceAllowance Request.
message UpdateResourceAllowanceRequest {
// Required. The ResourceAllowance to update.
// Update description.
// Only fields specified in `update_mask` are updated.
ResourceAllowance resource_allowance = 1
[(google.api.field_behavior) = REQUIRED];

// Required. Mask of fields to update.
//
// Field mask is used to specify the fields to be overwritten in the
// ResourceAllowance resource by the update.
// The fields specified in the update_mask are relative to the resource, not
// the full request. A field will be overwritten if it is in the mask. If the
// user does not provide a mask then all fields will be overwritten.
//
// UpdateResourceAllowance request now only supports update on `limit` field.
google.protobuf.FieldMask update_mask = 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
// the 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_info).format = UUID4,
(google.api.field_behavior) = OPTIONAL
];
}

// Represents the metadata of the long-running operation.
message OperationMetadata {
// Output only. The time the operation was created.
Expand Down
10 changes: 10 additions & 0 deletions google/cloud/batch/v1alpha/notification.proto
Expand Up @@ -26,3 +26,13 @@ option java_package = "com.google.cloud.batch.v1alpha";
option objc_class_prefix = "GCB";
option php_namespace = "Google\\Cloud\\Batch\\V1alpha";
option ruby_package = "Google::Cloud::Batch::V1alpha";

// Notification on resource state change.
message Notification {
// Required. The Pub/Sub topic where notifications like the resource allowance
// state changes will be published. The topic must exist in the same project
// as the job and billings will be charged to this project. If not specified,
// no Pub/Sub messages will be sent. Topic format:
// `projects/{project}/topics/{topic}`.
string pubsub_topic = 1 [(google.api.field_behavior) = REQUIRED];
}

0 comments on commit 713ac6c

Please sign in to comment.