aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/protobuf/remote_protocol.proto
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/protobuf/remote_protocol.proto')
-rw-r--r--src/main/protobuf/remote_protocol.proto329
1 files changed, 0 insertions, 329 deletions
diff --git a/src/main/protobuf/remote_protocol.proto b/src/main/protobuf/remote_protocol.proto
deleted file mode 100644
index 2a68643d1e..0000000000
--- a/src/main/protobuf/remote_protocol.proto
+++ /dev/null
@@ -1,329 +0,0 @@
-// Copyright 2015 The Bazel Authors. All rights reserved.
-//
-// 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.devtools.remote_execution;
-
-option java_package = "com.google.devtools.build.lib.remote";
-
-message ContentDigest {
- bytes digest = 1; // A hash of the contents of the file, blob, or tree node
- // (see below). The contents are digested using SHA1 (20 bytes).
- int64 size_bytes = 2;
- int32 version = 3; // Will be 0 by default, and increase if we ever change
- // the hash function used, etc.
- // And maybe other metadata later.
-}
-
-message FileMetadata {
- ContentDigest digest = 1;
- bool executable = 3;
-}
-
-// A Platform is defined by a set of opaque name-value pairs.
-message Platform {
- message Property {
- string name = 1;
- string value = 2;
- }
- // Entries are sorted by name,value to ensure a canonical form.
- repeated Property entry = 1;
-}
-
-// All the fields of this message have the following in common: they are
-// expected to define a result. All instructions to remote execution that do
-// not affect the result should be out of this message, because this message
-// will be used as the Execution Cache key.
-message Action {
- // The digest of the command (as an encoded proto blob).
- // Digested separately, because it is both long and reusable.
- ContentDigest command_digest = 1;
- // The Merkle digest of the root input directory.
- ContentDigest input_root_digest = 2;
- // Relative paths to the action's output files and directories.
- // The standard output and error stream contents are always returned
- // in addition (see ActionResult message).
- // Any unnamed output files will be discarded.
- // A path will be interpreted as a directory iff it contains a trailing
- // slash.
- // This should be sorted!
- repeated string output_path = 4;
- Platform platform = 5;
- // All other requirements that affect the result of the action should be
- // here as well.
-}
-
-message Command {
- // The argument vector. argv[0] is the binary.
- repeated string argv = 1;
- // A map of environment variables.
- // This is part of the command rather than Platform, because it does not
- // affect scheduling.
- message EnvironmentEntry {
- string variable = 1;
- string value = 2;
- }
- // Environment variables, sorted by variable.
- repeated EnvironmentEntry environment = 2;
- // Possibly other fields the describe the setup actions of the command.
-}
-
-message Output {
- string path = 1;
- // Yes, we shouldn't have to repeat paths here, but it should not be too
- // costly, and might help.
- // The actual output bodies will be stored in CAS.
- oneof content {
- // Populated for directory outputs only, contains the root FileNode digest.
- ContentDigest digest = 2;
- // Populated for file outputs only.
- FileMetadata file_metadata = 3;
- }
-}
-
-message ActionResult {
- // Relative paths to the action's output files and directories.
- // Any unnamed output files will be discarded.
- // A path will be interpreted as a directory iff it contains a trailing
- // slash.
- // This should be sorted by path.
- repeated Output output = 1;
- int32 return_code = 2;
- ContentDigest stdout_digest = 3;
- ContentDigest stderr_digest = 4;
-}
-
-// Status message shared by all CAS requests.
-message CasStatus {
- bool succeeded = 1; // Whether the requested action had server side errors
- // or not.
- enum ErrorCode {
- UNKNOWN = 0;
- INVALID_ARGUMENT = 1; // The client behaved incorrectly. error_detail should
- // have more information.
- MISSING_DIGEST = 2; // Missing a node on tree download.
- DIGEST_MISMATCH = 3; // Upload only error, when requested digest does not
- // match the server side computed one.
- NODE_PARSE_ERROR = 4; // Failed to parse digested data as node.
- // more errors...
- }
- ErrorCode error = 2;
- string error_detail = 3; // Human readable error.
- // These are a common part of the status for many CAS requests:
- repeated ContentDigest missing_digest = 4;
- repeated ContentDigest parse_failed_digest = 5; // Only relevant to trees.
-}
-
-service CasService {
- // Looks up given content keys in CAS, and returns success when found.
- // The single returned status will have the potentially missing digests,
- // which need to be re-uploaded.
- rpc Lookup(CasLookupRequest) returns (CasLookupReply) { }
- // Uploads a directory tree into CAS. Not streamed, because it is only tree
- // metadata.
- rpc UploadTreeMetadata(CasUploadTreeMetadataRequest) returns
- (CasUploadTreeMetadataReply) { }
- // Uploads data blob(s) into CAS.
- rpc UploadBlob(stream CasUploadBlobRequest) returns (CasUploadBlobReply) { }
- // Downoads a directory tree metadata from CAS.
- rpc DownloadTreeMetadata(CasDownloadTreeMetadataRequest) returns
- (CasDownloadTreeMetadataReply) { }
- // Downoads a directory tree from CAS. Returns the entire root directory.
- rpc DownloadTree(CasDownloadTreeRequest) returns (stream CasDownloadReply) { }
- // Downoads data blob(s) from CAS, returns them.
- rpc DownloadBlob(CasDownloadBlobRequest) returns (stream CasDownloadReply) { }
-}
-
-message FileNode {
- FileMetadata file_metadata = 1;
- message Child {
- string path = 1;
- ContentDigest digest = 2;
- }
- // The children should be sorted by path, and not have equal subdirectory
- // prefixes.
- repeated Child child = 2;
-}
-
-message CasLookupRequest {
- repeated ContentDigest digest = 1;
-}
-
-message CasLookupReply {
- CasStatus status = 1;
-}
-
-message CasUploadTreeMetadataRequest {
- repeated FileNode tree_node = 1;
-}
-
-message CasUploadTreeMetadataReply {
- CasStatus status = 1;
-}
-
-message CasDownloadTreeMetadataRequest {
- ContentDigest root = 1;
-}
-
-message CasDownloadTreeMetadataReply {
- CasStatus status = 1;
- repeated FileNode tree_node = 2;
-}
-
-message BlobChunk {
- ContentDigest digest = 1; // Present only in first chunk.
- int64 offset = 2;
- bytes data = 3;
-}
-
-// This will be used for batching files/blobs.
-message CasUploadBlobRequest {
- BlobChunk data = 1;
-}
-
-message CasUploadBlobReply {
- CasStatus status = 1;
-}
-
-message CasDownloadTreeRequest {
- ContentDigest root_digest = 1;
-}
-
-// This message is streamed.
-message CasDownloadReply {
- CasStatus status = 1;
- BlobChunk data = 2;
- // For trees, data is the entire root directory, zipped (for a single root).
- // For blobs, sequential chunks of multiple blobs.
-}
-
-message CasDownloadBlobRequest {
- repeated ContentDigest digest = 1;
-}
-
-service ExecutionCacheService {
- // Gets results of a cached action.
- rpc GetCachedResult(ExecutionCacheRequest) returns (ExecutionCacheReply) { }
- // Set results of a cached action. This requires reproducible builds on
- // connected machines!
- rpc SetCachedResult(ExecutionCacheSetRequest) returns
- (ExecutionCacheSetReply) {}
-}
-
-message ExecutionCacheRequest {
- ContentDigest action_digest = 1;
-}
-
-message ExecutionCacheStatus {
- // Whether the request had any server side errors. For a lookup (get result)
- // request, a true value means the result was found in the cache.
- bool succeeded = 1;
- enum ErrorCode {
- UNKNOWN = 0;
- MISSING_RESULT = 1; // The result was not found in the execution cache.
- UNSUPPORTED = 2; // The request is not supported by the server.
- // More server errors...
- }
- ErrorCode error = 2;
- string error_detail = 3; // Human readable error.
-}
-
-message ExecutionCacheReply {
- ExecutionCacheStatus status = 1;
- ActionResult result = 2;
-}
-
-message ExecutionCacheSetRequest {
- ContentDigest action_digest = 1;
- ActionResult result = 2;
-}
-
-message ExecutionCacheSetReply {
- ExecutionCacheStatus status = 1;
-}
-
-service ExecuteService {
- // Executes an action remotely.
- rpc Execute(ExecuteRequest) returns (stream ExecuteReply) { }
-}
-
-message ExecuteRequest {
- Action action = 1;
- bool accept_cached = 2;
- // Later will probably add previous attempt history, as it will be
- // useful for monitoring and probably scheduling as well.
- // These fields will be useful for scheduling, error reporting (e.g. disk
- // exceeded) and for log analysis.
- int32 total_input_file_count = 3;
- int64 total_input_file_bytes = 4;
- // Used for monitoring and scheduling.
- BuildInfo build_info = 5;
- // Timeout milliseconds for running this action.
- int64 timeout_millis = 6; // Maybe add io_timeout as well, per
- // Marc Antoine's suggestion.
- // Add other fields such as required cores, RAM, etc, that affect scheduling,
- // but not result, later. All the requirements that DO affect results should
- // be part of the Action.
-}
-
-message BuildInfo {
- string build_id = 1;
- // TBD, Fields used to identify a build action.
- // This will be useful for analysis purposes.
- // Note: we don't want to put any Bazel-specific fields in this.
-}
-
-message ExecutionStats {
-// TBD, will contain all the stats related to the execution:
-// time it took, resources, etc. Maybe will break into sub-messages
-// for various execution phases.
-}
-
-message ExecuteReply {
- ExecutionStatus status = 1;
- ActionResult result = 2;
- bool cached_result = 3; // Filled by the server on Execution Cache hit.
- ExecutionStats execution_stats = 4;
- CasStatus cas_error = 5; // A possible server-side CAS error, e.g. missing
- // inputs. The message contains the missing digests.
- // Later will introduce return AttemptHistory for monitoring and use
- // in requests.
-}
-
-message ExecutionStatus {
- bool executed = 1; // Whether the action was executed.
- bool succeeded = 2; // Whether the action succeeded.
- enum ErrorCode {
- UNKNOWN_ERROR = 0;
- MISSING_COMMAND = 1; // Missing command digest in CAS.
- MISSING_INPUT = 2; // Missing one of the inputs in CAS.
- DEADLINE_EXCEEDED = 3;
- EXEC_FAILED = 4; // Action returned non-zero.
- // Other server errors. Some of these errors are client-retriable, and some
- // not; will have to comment clearly what will happen on each error.
- }
- ErrorCode error = 3;
- string error_detail = 4;
- // These fields allow returning streaming statuses for the action progress.
- enum ActionStage {
- UNKNOWN_STAGE = 0;
- QUEUED = 1;
- EXECUTING = 2;
- FINISHED = 3;
- }
- ActionStage stage = 5;
- // Optionally will add more details pertaining to current stage, for example
- // time executing, or position in queue, etc.
-}