summaryrefslogtreecommitdiff
path: root/src/buildstream/_protos/buildstream/v2/buildstream.proto
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildstream/_protos/buildstream/v2/buildstream.proto')
-rw-r--r--src/buildstream/_protos/buildstream/v2/buildstream.proto95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/buildstream/_protos/buildstream/v2/buildstream.proto b/src/buildstream/_protos/buildstream/v2/buildstream.proto
new file mode 100644
index 000000000..f283d6f3f
--- /dev/null
+++ b/src/buildstream/_protos/buildstream/v2/buildstream.proto
@@ -0,0 +1,95 @@
+// Copyright 2018 Codethink Limited
+//
+// 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 buildstream.v2;
+
+import "build/bazel/remote/execution/v2/remote_execution.proto";
+import "google/api/annotations.proto";
+
+service ReferenceStorage {
+ // Retrieve a CAS [Directory][build.bazel.remote.execution.v2.Directory]
+ // digest by name.
+ //
+ // Errors:
+ // * `NOT_FOUND`: The requested reference is not in the cache.
+ rpc GetReference(GetReferenceRequest) returns (GetReferenceResponse) {
+ option (google.api.http) = { get: "/v2/{instance_name=**}/buildstream/refs/{key}" };
+ }
+
+ // Associate a name with a CAS [Directory][build.bazel.remote.execution.v2.Directory]
+ // digest.
+ //
+ // Errors:
+ // * `RESOURCE_EXHAUSTED`: There is insufficient storage space to add the
+ // entry to the cache.
+ rpc UpdateReference(UpdateReferenceRequest) returns (UpdateReferenceResponse) {
+ option (google.api.http) = { put: "/v2/{instance_name=**}/buildstream/refs/{key}" body: "digest" };
+ }
+
+ rpc Status(StatusRequest) returns (StatusResponse) {
+ option (google.api.http) = { put: "/v2/{instance_name=**}/buildstream/refs:status" };
+ }
+}
+
+message GetReferenceRequest {
+ // The instance of the execution system to operate against. A server may
+ // support multiple instances of the execution system (with their own workers,
+ // storage, caches, etc.). The server MAY require use of this field to select
+ // between them in an implementation-defined fashion, otherwise it can be
+ // omitted.
+ string instance_name = 1;
+
+ // The name of the reference.
+ string key = 2;
+}
+
+message GetReferenceResponse {
+ // The digest of the CAS [Directory][build.bazel.remote.execution.v2.Directory].
+ build.bazel.remote.execution.v2.Digest digest = 1;
+}
+
+message UpdateReferenceRequest {
+ // The instance of the execution system to operate against. A server may
+ // support multiple instances of the execution system (with their own workers,
+ // storage, caches, etc.). The server MAY require use of this field to select
+ // between them in an implementation-defined fashion, otherwise it can be
+ // omitted.
+ string instance_name = 1;
+
+ // The name of the reference.
+ repeated string keys = 2;
+
+ // The digest of the CAS [Directory][build.bazel.remote.execution.v2.Directory]
+ // to store in the cache.
+ build.bazel.remote.execution.v2.Digest digest = 3;
+}
+
+message UpdateReferenceResponse {
+}
+
+message StatusRequest {
+ // The instance of the execution system to operate against. A server may
+ // support multiple instances of the execution system (with their own workers,
+ // storage, caches, etc.). The server MAY require use of this field to select
+ // between them in an implementation-defined fashion, otherwise it can be
+ // omitted.
+ string instance_name = 1;
+}
+
+message StatusResponse {
+ // Whether reference updates are allowed for the connected client.
+ bool allow_updates = 1;
+}