Add runtimeconfig, storagetransfer protos

This commit is contained in:
Jacob Geiger 2016-08-02 15:54:41 -07:00
parent c5c2ae8804
commit 080fe77ef4
2 changed files with 532 additions and 0 deletions

View File

@ -0,0 +1,365 @@
// Copyright 2016 Google Inc.
//
// 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.runtimeconfig.v1beta1;
import "google/api/annotations.proto";
import "google/cloud/runtimeconfig/v1beta1/resources.proto";
import "google/longrunning/operations.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/timestamp.proto";
option java_multiple_files = true;
option java_package = "com.google.cloud.runtimeconfig.v1beta1";
// RuntimeConfig API represents configuration objects and operations on those
// configuration objects.
// RuntimeConfig objects consist of Variables logically grouped in the those
// objects.
// Variables are simple key-value pairs. Variables can be watched for changes or
// deletions. Variable key can be hieararchical, e.g. ports/serving_port,
// ports/monitoring_port, etc. Variable names can be hierarchical. No variable
// name can be prefix of another.
// Config objects represent logical containers for variables, e.g. flags,
// passwords, etc.
service RuntimeConfigManager {
// Lists all the RuntimeConfig resources within project.
rpc ListConfigs(ListConfigsRequest) returns (ListConfigsResponse) {
option (google.api.http) = { get: "/v1beta1/{parent=projects/*}/configs" };
}
// Gets information about a RuntimeConfig resource.
rpc GetConfig(GetConfigRequest) returns (google.cloud.runtimeconfig.v1beta1.RuntimeConfig) {
option (google.api.http) = { get: "/v1beta1/{name=projects/*/configs/*}" };
}
// Creates a new RuntimeConfig resource. The configuration name must be
// unique within project.
rpc CreateConfig(CreateConfigRequest) returns (google.cloud.runtimeconfig.v1beta1.RuntimeConfig) {
option (google.api.http) = { post: "/v1beta1/{parent=projects/*}/configs" body: "config" };
}
// Updates a RuntimeConfig resource. The configuration must exist beforehand.
rpc UpdateConfig(UpdateConfigRequest) returns (google.cloud.runtimeconfig.v1beta1.RuntimeConfig) {
option (google.api.http) = { put: "/v1beta1/{name=projects/*/configs/*}" body: "config" };
}
// Deletes a RuntimeConfig resource.
rpc DeleteConfig(DeleteConfigRequest) returns (google.protobuf.Empty) {
option (google.api.http) = { delete: "/v1beta1/{name=projects/*/configs/*}" };
}
// Lists variables within given a configuration, matching any provided filters.
// This only lists variable names, not the values.
rpc ListVariables(ListVariablesRequest) returns (ListVariablesResponse) {
option (google.api.http) = { get: "/v1beta1/{parent=projects/*/configs/*}/variables" };
}
// Gets information about a single variable.
rpc GetVariable(GetVariableRequest) returns (google.cloud.runtimeconfig.v1beta1.Variable) {
option (google.api.http) = { get: "/v1beta1/{name=projects/*/configs/*/variables/**}" };
}
// Watches a specific variable and waits for a change in the variable's value.
// When there is a change, this method returns the new value or times out.
//
// If a variable is deleted while being watched, the `variableState` state is
// set to `DELETED` and the method returns the last known variable `value`.
//
// If you set the deadline for watching to a larger value than internal timeout
// (60 seconds), the current variable value is returned and the `variableState`
// will be `VARIABLE_STATE_UNSPECIFIED`.
//
// To learn more about creating a watcher, read the
// [Watching a Variable for Changes](/deployment-manager/runtime-configurator/watching-a-variable)
// documentation.
rpc WatchVariable(WatchVariableRequest) returns (google.cloud.runtimeconfig.v1beta1.Variable) {
option (google.api.http) = { post: "/v1beta1/{name=projects/*/configs/*/variables/**}:watch" body: "*" };
}
// Creates a variable within the given configuration. You cannot create
// a variable with a name that is a prefix of an existing variable name, or a
// name that has an existing variable name as a prefix.
//
// To learn more about creating a variable, read the
// [Setting and Getting Data](/deployment-manager/runtime-configurator/set-and-get-variables)
// documentation.
rpc CreateVariable(CreateVariableRequest) returns (google.cloud.runtimeconfig.v1beta1.Variable) {
option (google.api.http) = { post: "/v1beta1/{parent=projects/*/configs/*}/variables" body: "variable" };
}
// Updates an existing variable with a new value.
rpc UpdateVariable(UpdateVariableRequest) returns (google.cloud.runtimeconfig.v1beta1.Variable) {
option (google.api.http) = { put: "/v1beta1/{name=projects/*/configs/*/variables/**}" body: "variable" };
}
// Deletes a variable or multiple variables.
//
// If you specify a variable name, then that variable is deleted. If you
// specify a prefix and `recursive` is true, then all variables with that
// prefix are deleted. You must set a `recursive` to true if you delete
// variables by prefix.
rpc DeleteVariable(DeleteVariableRequest) returns (google.protobuf.Empty) {
option (google.api.http) = { delete: "/v1beta1/{name=projects/*/configs/*/variables/**}" };
}
// List waiters within the given configuration.
rpc ListWaiters(ListWaitersRequest) returns (ListWaitersResponse) {
option (google.api.http) = { get: "/v1beta1/{parent=projects/*/configs/*}/waiters" };
}
// Gets information about a single waiter.
rpc GetWaiter(GetWaiterRequest) returns (google.cloud.runtimeconfig.v1beta1.Waiter) {
option (google.api.http) = { get: "/v1beta1/{name=projects/*/configs/*/waiters/*}" };
}
// Creates a Waiter resource. This operation returns a long-running Operation
// resource which can be polled for completion. However, a waiter with the
// given name will exist (and can be retrieved) prior to the operation
// completing. If the operation fails, the failed Waiter resource will
// still exist and must be deleted prior to subsequent creation attempts.
rpc CreateWaiter(CreateWaiterRequest) returns (google.longrunning.Operation) {
option (google.api.http) = { post: "/v1beta1/{parent=projects/*/configs/*}/waiters" body: "waiter" };
}
// Deletes the waiter with the specified name.
rpc DeleteWaiter(DeleteWaiterRequest) returns (google.protobuf.Empty) {
option (google.api.http) = { delete: "/v1beta1/{name=projects/*/configs/*/waiters/*}" };
}
}
// Request for the `ListConfigs()` method.
message ListConfigsRequest {
// The [project ID](https://support.google.com/cloud/answer/6158840?hl=en&ref_topic=6158848)
// for this request, in the format `projects/[PROJECT_ID]`.
string parent = 1;
// Specifies the number of results to return per page. If there are fewer
// elements than the specified number, returns all elements.
int32 page_size = 2;
// Specifies a page token to use. Set `pageToken` to a `nextPageToken`
// returned by a previous list request to get the next page of results.
string page_token = 3;
}
// `ListConfigs()` returns the following response. The order of returned
// objects is arbitrary; that is, it is not ordered in any particular way.
message ListConfigsResponse {
// A list of the configurations in the project. The order of returned
// objects is arbitrary; that is, it is not ordered in any particular way.
repeated google.cloud.runtimeconfig.v1beta1.RuntimeConfig configs = 1;
// This token allows you to get the next page of results for list requests.
// If the number of results is larger than `pageSize`, use the `nextPageToken`
// as a value for the query parameter `pageToken` in the next list request.
// Subsequent list requests will have their own `nextPageToken` to continue
// paging through the results
string next_page_token = 2;
}
// Gets a RuntimeConfig resource.
message GetConfigRequest {
// The name of the RuntimeConfig resource to retrieve, in the format:
//
// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
string name = 2;
}
// Creates a RuntimeConfig resource.
message CreateConfigRequest {
// The [project ID](https://support.google.com/cloud/answer/6158840?hl=en&ref_topic=6158848)
// for this request, in the format `projects/[PROJECT_ID]`.
string parent = 1;
// The RuntimeConfig to create.
google.cloud.runtimeconfig.v1beta1.RuntimeConfig config = 2;
}
// Request message for `UpdateConfig()` method.
message UpdateConfigRequest {
// The name of the RuntimeConfig resource to update, in the format:
//
// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
string name = 1;
// The config resource to update.
google.cloud.runtimeconfig.v1beta1.RuntimeConfig config = 2;
}
// Request for the `DeleteConfig()` method.
message DeleteConfigRequest {
// The RuntimeConfig resource to delete, in the format:
//
// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
string name = 1;
}
// Request for the `ListVariables()` method.
message ListVariablesRequest {
// The path to the RuntimeConfig resource for which you want to list variables.
// The configuration must exist beforehand; the path must by in the format:
//
// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
string parent = 1;
// Filters variables by matching the specified filter. For example:
//
// `projects/example-project/config/[CONFIG_NAME]/variables/example-variable`.
string filter = 2;
// Specifies the number of results to return per page. If there are fewer
// elements than the specified number, returns all elements.
int32 page_size = 3;
// Specifies a page token to use. Set `pageToken` to a `nextPageToken`
// returned by a previous list request to get the next page of results.
string page_token = 4;
}
// Response for the `ListVariables()` method.
message ListVariablesResponse {
// A list of variables and their values. The order of returned variable
// objects is arbitrary.
repeated google.cloud.runtimeconfig.v1beta1.Variable variables = 1;
// This token allows you to get the next page of results for list requests.
// If the number of results is larger than `pageSize`, use the `nextPageToken`
// as a value for the query parameter `pageToken` in the next list request.
// Subsequent list requests will have their own `nextPageToken` to continue
// paging through the results
string next_page_token = 2;
}
// Request for the `WatchVariable()` method.
message WatchVariableRequest {
// The name of the variable to watch, in the format:
//
// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
string name = 1;
// If specified, checks the current timestamp of the variable and if the
// current timestamp is newer than `newerThan` timestamp, the method returns
// immediately.
//
// If not specified or the variable has an older timestamp, the watcher waits
// for a the value to change before returning.
google.protobuf.Timestamp newer_than = 4;
}
// Request for the `GetVariable()` method.
message GetVariableRequest {
// The name of the variable to return, in the format:
//
// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIBLE_NAME]`
string name = 1;
}
// Request for the `CreateVariable()` method.
message CreateVariableRequest {
// The path to the RutimeConfig resource that this variable should belong to.
// The configuration must exist beforehand; the path must by in the format:
//
// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
string parent = 1;
// The variable to create.
google.cloud.runtimeconfig.v1beta1.Variable variable = 2;
}
// Request for the `UpdateVariable()` method.
message UpdateVariableRequest {
// The name of the variable to update, in the format:
//
// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]`
string name = 1;
// The variable to update.
google.cloud.runtimeconfig.v1beta1.Variable variable = 2;
}
// Request for the `DeleteVariable()` method.
message DeleteVariableRequest {
// The name of the variable to delete, in the format:
//
// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]`
string name = 1;
// Set to `true` to recursively delete multiple variables with the same
// prefix.
bool recursive = 2;
}
// Request for the `ListWaiters()` method.
message ListWaitersRequest {
// The path to the configuration for which you want to get a list of waiters.
// The configuration must exist beforehand; the path must by in the format:
//
// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
string parent = 1;
// Specifies the number of results to return per page. If there are fewer
// elements than the specified number, returns all elements.
int32 page_size = 2;
// Specifies a page token to use. Set `pageToken` to a `nextPageToken`
// returned by a previous list request to get the next page of results.
string page_token = 3;
}
// Response for the `ListWaiters()` method.
// Order of returned waiter objects is arbitrary.
message ListWaitersResponse {
// Found waiters in the project.
repeated google.cloud.runtimeconfig.v1beta1.Waiter waiters = 1;
// This token allows you to get the next page of results for list requests.
// If the number of results is larger than `pageSize`, use the `nextPageToken`
// as a value for the query parameter `pageToken` in the next list request.
// Subsequent list requests will have their own `nextPageToken` to continue
// paging through the results
string next_page_token = 2;
}
// Request for the `GetWaiter()` method.
message GetWaiterRequest {
// The fully-qualified name of the Waiter resource object to retrieve, in the
// format:
//
// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]`
string name = 1;
}
// Request message for `CreateWaiter()` method.
message CreateWaiterRequest {
// The path to the configuration that will own the waiter.
// The configuration must exist beforehand; the path must by in the format:
//
// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`.
string parent = 1;
// The Waiter resource to create.
google.cloud.runtimeconfig.v1beta1.Waiter waiter = 2;
}
// Request for the `DeleteWaiter()` method.
message DeleteWaiterRequest {
// The Waiter resource to delete, in the format:
//
// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]`
string name = 1;
}

View File

@ -0,0 +1,167 @@
// Copyright 2016 Google Inc.
//
// 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.storagetransfer.v1;
import "google/api/annotations.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/field_mask.proto";
import "google/storagetransfer/v1/transfer_types.proto";
option cc_enable_arenas = true;
option java_outer_classname = "TransferProto";
option java_package = "com.google.storagetransfer.v1.proto";
// Transfers data between between Google Cloud Storage buckets or from a data
// source external to Google to a Cloud Storage bucket.
service StorageTransferService {
// Returns the Google service account that is used by Storage Transfer
// Service to access buckets in the project where transfers
// run or in other projects. Each Google service account is associated
// with one Google Cloud Platform Console project. Users
// should add this service account to the Google Cloud Storage bucket
// ACLs to grant access to Storage Transfer Service. This service
// account is created and owned by Storage Transfer Service and can
// only be used by Storage Transfer Service.
rpc GetGoogleServiceAccount(GetGoogleServiceAccountRequest) returns (google.storagetransfer.v1.GoogleServiceAccount) {
option (google.api.http) = { get: "/v1/googleServiceAccounts/{project_id}" };
}
// Creates a transfer job that runs periodically.
rpc CreateTransferJob(CreateTransferJobRequest) returns (google.storagetransfer.v1.TransferJob) {
option (google.api.http) = { post: "/v1/transferJobs" body: "transfer_job" };
}
// Updates a transfer job. Updating a job's transfer spec does not affect
// transfer operations that are running already. Updating the scheduling
// of a job is not allowed.
rpc UpdateTransferJob(UpdateTransferJobRequest) returns (google.storagetransfer.v1.TransferJob) {
option (google.api.http) = { patch: "/v1/{job_name=transferJobs/**}" body: "*" };
}
// Gets a transfer job.
rpc GetTransferJob(GetTransferJobRequest) returns (google.storagetransfer.v1.TransferJob) {
option (google.api.http) = { get: "/v1/{job_name=transferJobs/**}" };
}
// Lists transfer jobs.
rpc ListTransferJobs(ListTransferJobsRequest) returns (ListTransferJobsResponse) {
option (google.api.http) = { get: "/v1/transferJobs" };
}
// Pauses a transfer operation.
rpc PauseTransferOperation(PauseTransferOperationRequest) returns (google.protobuf.Empty) {
option (google.api.http) = { post: "/v1/{name=transferOperations/**}:pause" body: "*" };
}
// Resumes a transfer operation that is paused.
rpc ResumeTransferOperation(ResumeTransferOperationRequest) returns (google.protobuf.Empty) {
option (google.api.http) = { post: "/v1/{name=transferOperations/**}:resume" body: "*" };
}
}
// Request passed to GetGoogleServiceAccount.
message GetGoogleServiceAccountRequest {
// The ID of the Google Cloud Platform Console project that the Google service
// account is associated with.
// Required.
string project_id = 1;
}
// Request passed to CreateTransferJob.
message CreateTransferJobRequest {
// The job to create.
// Required.
google.storagetransfer.v1.TransferJob transfer_job = 1;
}
// Request passed to UpdateTransferJob.
message UpdateTransferJobRequest {
// The name of job to update.
// Required.
string job_name = 1;
// The ID of the Google Cloud Platform Console project that owns the job.
// Required.
string project_id = 2;
// The job to update.
// Required.
google.storagetransfer.v1.TransferJob transfer_job = 3;
// The field mask of the fields in `transferJob` that are to be updated in
// this request. Fields in `transferJob` that can be updated are:
// `description`, `transferSpec`, and `status`. To update the `transferSpec`
// of the job, a complete transfer specification has to be provided. An
// incomplete specification which misses any required fields will be rejected
// with the error `INVALID_ARGUMENT`.
google.protobuf.FieldMask update_transfer_job_field_mask = 4;
}
// Request passed to GetTransferJob.
message GetTransferJobRequest {
// The job to get.
// Required.
string job_name = 1;
// The ID of the Google Cloud Platform Console project that owns the job.
// Required.
string project_id = 2;
}
// `project_id`, `job_names`, and `job_statuses` are query parameters that can
// be specified when listing transfer jobs.
message ListTransferJobsRequest {
// A list of query parameters specified as JSON text in the form of
// {"project_id":"my_project_id",
// "job_names":["jobid1","jobid2",...],
// "job_statuses":["status1","status2",...]}.
// Since `job_names` and `job_statuses` support multiple values, their values
// must be specified with array notation. `project_id` is required. `job_names`
// and `job_statuses` are optional. The valid values for `job_statuses` are
// case-insensitive: `ENABLED`, `DISABLED`, and `DELETED`.
string filter = 1;
// The list page size. The max allowed value is 256.
int32 page_size = 4;
// The list page token.
string page_token = 5;
}
// Response from ListTransferJobs.
message ListTransferJobsResponse {
// A list of transfer jobs.
repeated google.storagetransfer.v1.TransferJob transfer_jobs = 1;
// The list next page token.
string next_page_token = 2;
}
// Request passed to PauseTransferOperation.
message PauseTransferOperationRequest {
// The name of the transfer operation.
// Required.
string name = 1;
}
// Request passed to ResumeTransferOperation.
message ResumeTransferOperationRequest {
// The name of the transfer operation.
// Required.
string name = 1;
}