From 080fe77ef40c9c873fd54ab9c0d469dff5ea668f Mon Sep 17 00:00:00 2001 From: Jacob Geiger Date: Tue, 2 Aug 2016 15:54:41 -0700 Subject: [PATCH] Add runtimeconfig, storagetransfer protos --- .../runtimeconfig/v1beta1/runtimeconfig.proto | 365 ++++++++++++++++++ google/storagetransfer/v1/transfer.proto | 167 ++++++++ 2 files changed, 532 insertions(+) create mode 100644 google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto create mode 100644 google/storagetransfer/v1/transfer.proto diff --git a/google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto b/google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto new file mode 100644 index 00000000..893303e5 --- /dev/null +++ b/google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto @@ -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; +} diff --git a/google/storagetransfer/v1/transfer.proto b/google/storagetransfer/v1/transfer.proto new file mode 100644 index 00000000..3b8970b0 --- /dev/null +++ b/google/storagetransfer/v1/transfer.proto @@ -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; +}