-
Notifications
You must be signed in to change notification settings - Fork 95
/
Copy pathbb_storage.proto
128 lines (102 loc) · 5.42 KB
/
bb_storage.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
syntax = "proto3";
package buildbarn.configuration.bb_storage;
import "pkg/proto/configuration/auth/auth.proto";
import "pkg/proto/configuration/blobstore/blobstore.proto";
import "pkg/proto/configuration/builder/builder.proto";
import "pkg/proto/configuration/global/global.proto";
import "pkg/proto/configuration/grpc/grpc.proto";
option go_package = "github.com/buildbarn/bb-storage/pkg/proto/configuration/bb_storage";
message ApplicationConfiguration {
// Was 'blobstore'. The 'content_addressable_storage' and
// 'action_cache' fields have been moved into this message.
reserved 1;
// Jaeger configuration has moved into 'global'.
reserved 2;
// Was 'http_listen_address'. This option has been moved to
// 'global.diagnostics_http_listen_address'.
reserved 3;
// gRPC servers to spawn to listen for requests from clients.
repeated buildbarn.configuration.grpc.ServerConfiguration grpc_servers = 4;
// Map of schedulers available capable of running build actions, where
// the key corresponds to the instance name prefix to match. In case
// of multiple matches, the scheduler with the longest matching prefix
// is used. The matching prefix is removed from the resulting instance
// name.
//
// For example, if schedulers for instance name prefixes "acmecorp"
// and "acmecorp/rockets" are declared, requests for instance name
// "acmecorp/rockets/mars" will be forwarded to the latter. This
// scheduler will receive requests with instance name "mars".
//
// The empty string can be used to match all instance names, thereby
// causing all requests to be forwarded to a single scheduler.
map<string, buildbarn.configuration.builder.SchedulerConfiguration>
schedulers = 5;
// Was 'allow_ac_updates_for_instance_name_prefixes' which is now more
// flexibly supported by action_cache_authorizers.put.
reserved 6;
// Was 'verify_action_result_completeness'. This can now be enabled by
// using BlobAccessConfiguration.completeness_checking.
reserved 7;
// Maximum Protobuf message size to unmarshal.
int64 maximum_message_size_bytes = 8;
// Common configuration options that apply to all Buildbarn binaries.
buildbarn.configuration.global.Configuration global = 9;
// Optional: Blobstore configuration for the Content Addressable
// Storage (CAS).
ScannableBlobAccessConfiguration content_addressable_storage = 17;
// Optional: Blobstore configuration for the Action Cache (AC).
NonScannableBlobAccessConfiguration action_cache = 18;
// Optional: Blobstore configuration for the Indirect Content
// Addressable Storage (ICAS).
ScannableBlobAccessConfiguration indirect_content_addressable_storage = 10;
// Optional: Blobstore configuration for the Initial Size Class Cache
// (ISCC).
NonScannableBlobAccessConfiguration initial_size_class_cache = 11;
// Optional: Blobstore configuration for the File System Access Cache
// (FSAC).
NonScannableBlobAccessConfiguration file_system_access_cache = 19;
// Was 'content_addressable_storage_authorizers',
// 'indirect_content_addressable_storage_authorizers',
// 'action_cache_authorizers and
// 'initial_size_class_cache_authorizers'. Authorizer configuration
// has been moved into the blob storage configurations
reserved 12, 13, 14, 15;
// Authorization requirements applied to Execute() requests via schedulers.
//
// Note that this does not apply any authorization to WaitExecution() -
// any scheduler is expected to perform authorization on WaitExecution(),
// but in bb_storage we can't reliably know the instance name from an
// operation. This is hopefully safe, as operation names are hard to guess,
// and the forwarded-to scheduler should perform its own authorization.
buildbarn.configuration.auth.AuthorizerConfiguration execute_authorizer = 16;
}
// Storage configuration for backends which don't allow batch digest
// scanning.
message NonScannableBlobAccessConfiguration {
// Storage backend.
buildbarn.configuration.blobstore.BlobAccessConfiguration backend = 1;
// The authorizer for determining whether a client may read from storage.
buildbarn.configuration.auth.AuthorizerConfiguration get_authorizer = 2;
// The authorizer for determining whether a client may write to storage.
// For example, in case of the Content Addressable Storage (CAS),
// it pertains to ByteStream.Write() and BatchUpdateBlobs() operations,
// while for the Action Cache (AC) it pertains to UpdateActionResult().
buildbarn.configuration.auth.AuthorizerConfiguration put_authorizer = 3;
}
// Storage configuration for backends which allow batch digest scanning.
message ScannableBlobAccessConfiguration {
// Storage backend.
buildbarn.configuration.blobstore.BlobAccessConfiguration backend = 1;
// The authorizer for determining whether a client may read from storage.
buildbarn.configuration.auth.AuthorizerConfiguration get_authorizer = 2;
// The authorizer for determining whether a client may write to storage.
// For example, in case of the Content Addressable Storage (CAS),
// it pertains to ByteStream.Write() and BatchUpdateBlobs() operations,
// while for the Action Cache (AC) it pertains to UpdateActionResult().
buildbarn.configuration.auth.AuthorizerConfiguration put_authorizer = 3;
// The authorizer for determining whether a client may scan storage
// for the existence of a batch of digests.
buildbarn.configuration.auth.AuthorizerConfiguration find_missing_authorizer =
4;
}