Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(390)

Side by Side Diff: client/proto/isolate_bot.proto

Issue 2953253003: Replace custom blob gRPC API with ByteStream (Closed)
Patch Set: Import ndb directly to test code Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « client/proto/bytestream_pb2_grpc.py ('k') | client/proto/isolate_bot_pb2.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2016 The LUCI Authors. All rights reserved.
2 // Use of this source code is governed under the Apache License, Version 2.0
3 // that can be found in the LICENSE file.
4
5 // This describes the interface a Swarming bot can use to contact an Isolate
6 // server over a gRPC proxy. It essentially duplicates the portions of the
7 // "native" Isolate REST API that's used by the bot.
8 //
9 // This proto is *not yet stable* and *will* change over time in non-backward-
10 // compatible ways.
11
12 syntax = "proto3";
13
14 package luci.swarming.bot;
15
16 // FileService exposes the main operations of an Isolate server
17 // to upload and download blobs.
18 service FileService {
19 // Unlike in the native Isolate API, it is not *necessary* to
20 // call Contains prior to pushing a blob, as Contains does not
21 // return "upload tickets." The BlobStatus returned by Contains
22 // will have succeeded = True if all digests were found, and
23 // false for any other reason (missing blobs, network error,
24 // etc.)
25 rpc Contains(ContainsRequest) returns (ContainsReply);
26
27 // PushBlobs can push one or more blobs at a time (serially),
28 // with each blob transmitted as one or more chunks. At the
29 // beginning of a new blob, the chunk offset should be zero
30 // and the digest must be provided. The function returns true
31 // only if all blobs are successfully received, and returns
32 // as soon as an error occurs.
33 rpc PushBlobs(stream PushBlobsRequest) returns (PushBlobsReply);
34
35 // FetchBlobs takes a list of digests and returns them all as
36 // a stream of BlobChunks.
37 rpc FetchBlobs(FetchBlobsRequest) returns (stream FetchBlobsReply);
38 }
39
40 message ContainsRequest {
41 repeated ContentDigest digest = 1;
42 }
43
44 message ContainsReply {
45 BlobStatus status = 1;
46 }
47
48 message PushBlobsRequest {
49 BlobChunk data = 1;
50 }
51
52 message PushBlobsReply {
53 BlobStatus status = 1;
54 }
55
56 message FetchBlobsRequest {
57 repeated ContentDigest digest = 1;
58 }
59
60 message FetchBlobsReply {
61 BlobStatus status = 1;
62 BlobChunk data = 2;
63 }
64
65 message BlobChunk {
66 // The digest is optional for all chunks except
67 // the first that represents a blob.
68 ContentDigest digest = 1;
69 int64 offset = 2;
70 bytes data = 3;
71 }
72
73 message ContentDigest {
74 // At present, "digest" is a 20-byte SHA1 hash.
75 bytes digest = 1;
76
77 // size_bytes is the size of the blob during uploads.
78 // During requests to FetchBlobs, the size is ignored.
79 int64 size_bytes = 2;
80
81 // Currently "0" to represents the SHA1 hash; may
82 // be incremented to allow other hash functions.
83 int32 version = 3;
84 }
85
86 message BlobStatus {
87 // True if the entire function succeeded.
88 bool succeeded = 1;
89
90 // "error" will be set to one of the following if succeeded is false.
91 enum ErrorCode {
92 // Typically an internal proxy error; error_detail may have more
93 // information.
94 UNKNOWN = 0;
95
96 // The client behaved incorrectly. error_detail should have more
97 // information.
98 INVALID_ARGUMENT = 1;
99
100 // Isolate is missing the nodes specified by missing_digest.
101 MISSING_DIGEST = 2;
102
103 // Upload only error, when requested digest does not match the
104 // server side computed one.
105 DIGEST_MISMATCH = 3;
106 }
107 ErrorCode error = 2;
108
109 // Human-readable error text
110 string error_detail = 3;
111
112 // If error is MISSIN_DIGEST, this will be populated with the
113 // digests that are missing.
114 repeated ContentDigest missing_digest = 4;
115 }
116
OLDNEW
« no previous file with comments | « client/proto/bytestream_pb2_grpc.py ('k') | client/proto/isolate_bot_pb2.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698