diff --git a/doc/source/using_config.rst b/doc/source/using_config.rst
index 13768e117..d6d75353d 100644
--- a/doc/source/using_config.rst
+++ b/doc/source/using_config.rst
@@ -140,12 +140,6 @@ toplevel of your configuration file, like so:
# Avoid caching build trees if we don't need them
cache-buildtrees: auto
- # Connection config is parameters given to grpc. It's completely
- # optional. By default keepalive time is unset and grpc defaults
- # are used.
- connection-config:
- keepalive-time: 60
-
#
# Support CAS server as remote cache
# Useful to minimize network traffic with remote execution
@@ -158,6 +152,11 @@ toplevel of your configuration file, like so:
client-key: client.key
access-token: access.token
access-token-reload-interval: 60
+ connection-config:
+ keepalive-time: 60
+ retry-limit: 4
+ retry-delay: 1000
+ request-timeout: 300
Attributes
@@ -778,6 +777,49 @@ or sources without authentication. Authentication can be configured by setting
``access-token`` or both ``client-key`` and ``client-cert``.
+.. _config_connection_config:
+
+Connection configuration
+~~~~~~~~~~~~~~~~~~~~~~~~
+BuildStream uses gRPC to communicate with remote services.
+
+All remote service configuration blocks come with an optional ``connection-config``
+block which allows setting gRPC connection options.
+
+The ``connection-config`` block looks like this:
+
+.. code:: yaml
+
+ connection-config:
+ keepalive-time: 60
+ retry-limit: 4
+ retry-delay: 1000
+ request-timeout: 300
+
+
+Attributes
+''''''''''
+
+* ``keepalive-time``
+
+ The interval in seconds between gRPC PING frames. Disabled by default.
+ `gRPC keepalive guide `_
+
+* ``retry-limit``
+
+ The maximum number of retries, not including the original request.
+
+* ``retry-delay``
+
+ The initial backoff in milliseconds for retries.
+ `gRPC retry guide `_
+
+* ``request-timeout``
+
+ The timeout for gRPC requests in seconds. No timeout by default.
+ `gRPC deadline guide `_
+
+
.. _config_cache_servers:
Cache servers
@@ -817,6 +859,11 @@ Cache server configuration is declared in the following way:
server-cert: server.crt
client-cert: client.crt
client-key: client.key
+ connection-config:
+ keepalive-time: 60
+ retry-limit: 4
+ retry-delay: 1000
+ request-timeout: 300
Attributes
@@ -1141,6 +1188,11 @@ which looks like this:
server-cert: /keys/server.crt
client-cert: /keys/client.crt
client-key: /keys/client.key
+ connection-config:
+ keepalive-time: 60
+ retry-limit: 4
+ retry-delay: 1000
+ request-timeout: 300
**Attributes:**
diff --git a/src/buildstream/_cas/casdprocessmanager.py b/src/buildstream/_cas/casdprocessmanager.py
index d1157dd93..899a5473d 100644
--- a/src/buildstream/_cas/casdprocessmanager.py
+++ b/src/buildstream/_cas/casdprocessmanager.py
@@ -121,6 +121,12 @@ def __init__(
)
if remote_cache_spec.keepalive_time is not None:
casd_args.append("--cas-keepalive-time={}".format(remote_cache_spec.keepalive_time))
+ if remote_cache_spec.retry_limit is not None:
+ casd_args.append("--cas-retry-limit={}".format(remote_cache_spec.retry_limit))
+ if remote_cache_spec.retry_delay is not None:
+ casd_args.append("--cas-retry-delay={}".format(remote_cache_spec.retry_delay))
+ if remote_cache_spec.request_timeout is not None:
+ casd_args.append("--cas-request-timeout={}".format(remote_cache_spec.request_timeout))
casd_args.append(path)
diff --git a/src/buildstream/_protos/build/bazel/remote/asset/v1/remote_asset_pb2.py b/src/buildstream/_protos/build/bazel/remote/asset/v1/remote_asset_pb2.py
index 001d7a9f1..ce8f6c62e 100644
--- a/src/buildstream/_protos/build/bazel/remote/asset/v1/remote_asset_pb2.py
+++ b/src/buildstream/_protos/build/bazel/remote/asset/v1/remote_asset_pb2.py
@@ -1,12 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
+# NO CHECKED-IN PROTOBUF GENCODE
# source: build/bazel/remote/asset/v1/remote_asset.proto
+# Protobuf Python Version: 5.28.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
+from google.protobuf import runtime_version as _runtime_version
from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+_runtime_version.ValidateProtobufRuntimeVersion(
+ _runtime_version.Domain.PUBLIC,
+ 5,
+ 28,
+ 1,
+ '',
+ 'build/bazel/remote/asset/v1/remote_asset.proto'
+)
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
@@ -21,114 +31,40 @@
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.build/bazel/remote/asset/v1/remote_asset.proto\x12\x1b\x62uild.bazel.remote.asset.v1\x1a\x36\x62uild/bazel/remote/execution/v2/remote_execution.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\"(\n\tQualifier\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xac\x02\n\x10\x46\x65tchBlobRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12*\n\x07timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12;\n\x17oldest_content_accepted\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04uris\x18\x04 \x03(\t\x12:\n\nqualifiers\x18\x05 \x03(\x0b\x32&.build.bazel.remote.asset.v1.Qualifier\x12N\n\x0f\x64igest_function\x18\x06 \x01(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\"\xbe\x02\n\x11\x46\x65tchBlobResponse\x12\"\n\x06status\x18\x01 \x01(\x0b\x32\x12.google.rpc.Status\x12\x0b\n\x03uri\x18\x02 \x01(\t\x12:\n\nqualifiers\x18\x03 \x03(\x0b\x32&.build.bazel.remote.asset.v1.Qualifier\x12.\n\nexpires_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12<\n\x0b\x62lob_digest\x18\x05 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12N\n\x0f\x64igest_function\x18\x06 \x01(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\"\xb1\x02\n\x15\x46\x65tchDirectoryRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12*\n\x07timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12;\n\x17oldest_content_accepted\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04uris\x18\x04 \x03(\t\x12:\n\nqualifiers\x18\x05 \x03(\x0b\x32&.build.bazel.remote.asset.v1.Qualifier\x12N\n\x0f\x64igest_function\x18\x06 \x01(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\"\xcd\x02\n\x16\x46\x65tchDirectoryResponse\x12\"\n\x06status\x18\x01 \x01(\x0b\x32\x12.google.rpc.Status\x12\x0b\n\x03uri\x18\x02 \x01(\t\x12:\n\nqualifiers\x18\x03 \x03(\x0b\x32&.build.bazel.remote.asset.v1.Qualifier\x12.\n\nexpires_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x46\n\x15root_directory_digest\x18\x05 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12N\n\x0f\x64igest_function\x18\x06 \x01(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\"\xbb\x03\n\x0fPushBlobRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x0c\n\x04uris\x18\x02 \x03(\t\x12:\n\nqualifiers\x18\x03 \x03(\x0b\x32&.build.bazel.remote.asset.v1.Qualifier\x12-\n\texpire_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12<\n\x0b\x62lob_digest\x18\x05 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x41\n\x10references_blobs\x18\x06 \x03(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12G\n\x16references_directories\x18\x07 \x03(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12N\n\x0f\x64igest_function\x18\x08 \x01(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\"\x12\n\x10PushBlobResponse\"\xca\x03\n\x14PushDirectoryRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x0c\n\x04uris\x18\x02 \x03(\t\x12:\n\nqualifiers\x18\x03 \x03(\x0b\x32&.build.bazel.remote.asset.v1.Qualifier\x12-\n\texpire_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x46\n\x15root_directory_digest\x18\x05 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x41\n\x10references_blobs\x18\x06 \x03(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12G\n\x16references_directories\x18\x07 \x03(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12N\n\x0f\x64igest_function\x18\x08 \x01(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\"\x17\n\x15PushDirectoryResponse2\xdd\x02\n\x05\x46\x65tch\x12\x9e\x01\n\tFetchBlob\x12-.build.bazel.remote.asset.v1.FetchBlobRequest\x1a..build.bazel.remote.asset.v1.FetchBlobResponse\"2\x82\xd3\xe4\x93\x02,\"\'/v1/{instance_name=**}/assets:fetchBlob:\x01*\x12\xb2\x01\n\x0e\x46\x65tchDirectory\x12\x32.build.bazel.remote.asset.v1.FetchDirectoryRequest\x1a\x33.build.bazel.remote.asset.v1.FetchDirectoryResponse\"7\x82\xd3\xe4\x93\x02\x31\",/v1/{instance_name=**}/assets:fetchDirectory:\x01*2\xd4\x02\n\x04Push\x12\x9a\x01\n\x08PushBlob\x12,.build.bazel.remote.asset.v1.PushBlobRequest\x1a-.build.bazel.remote.asset.v1.PushBlobResponse\"1\x82\xd3\xe4\x93\x02+\"&/v1/{instance_name=**}/assets:pushBlob:\x01*\x12\xae\x01\n\rPushDirectory\x12\x31.build.bazel.remote.asset.v1.PushDirectoryRequest\x1a\x32.build.bazel.remote.asset.v1.PushDirectoryResponse\"6\x82\xd3\xe4\x93\x02\x30\"+/v1/{instance_name=**}/assets:pushDirectory:\x01*B\x9f\x01\n\x1b\x62uild.bazel.remote.asset.v1B\x10RemoteAssetProtoP\x01ZIgithub.com/bazelbuild/remote-apis/build/bazel/remote/asset/v1;remoteasset\xa2\x02\x02RA\xaa\x02\x1b\x42uild.Bazel.Remote.Asset.v1b\x06proto3')
-
-
-_QUALIFIER = DESCRIPTOR.message_types_by_name['Qualifier']
-_FETCHBLOBREQUEST = DESCRIPTOR.message_types_by_name['FetchBlobRequest']
-_FETCHBLOBRESPONSE = DESCRIPTOR.message_types_by_name['FetchBlobResponse']
-_FETCHDIRECTORYREQUEST = DESCRIPTOR.message_types_by_name['FetchDirectoryRequest']
-_FETCHDIRECTORYRESPONSE = DESCRIPTOR.message_types_by_name['FetchDirectoryResponse']
-_PUSHBLOBREQUEST = DESCRIPTOR.message_types_by_name['PushBlobRequest']
-_PUSHBLOBRESPONSE = DESCRIPTOR.message_types_by_name['PushBlobResponse']
-_PUSHDIRECTORYREQUEST = DESCRIPTOR.message_types_by_name['PushDirectoryRequest']
-_PUSHDIRECTORYRESPONSE = DESCRIPTOR.message_types_by_name['PushDirectoryResponse']
-Qualifier = _reflection.GeneratedProtocolMessageType('Qualifier', (_message.Message,), {
- 'DESCRIPTOR' : _QUALIFIER,
- '__module__' : 'build.bazel.remote.asset.v1.remote_asset_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.asset.v1.Qualifier)
- })
-_sym_db.RegisterMessage(Qualifier)
-
-FetchBlobRequest = _reflection.GeneratedProtocolMessageType('FetchBlobRequest', (_message.Message,), {
- 'DESCRIPTOR' : _FETCHBLOBREQUEST,
- '__module__' : 'build.bazel.remote.asset.v1.remote_asset_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.asset.v1.FetchBlobRequest)
- })
-_sym_db.RegisterMessage(FetchBlobRequest)
-
-FetchBlobResponse = _reflection.GeneratedProtocolMessageType('FetchBlobResponse', (_message.Message,), {
- 'DESCRIPTOR' : _FETCHBLOBRESPONSE,
- '__module__' : 'build.bazel.remote.asset.v1.remote_asset_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.asset.v1.FetchBlobResponse)
- })
-_sym_db.RegisterMessage(FetchBlobResponse)
-
-FetchDirectoryRequest = _reflection.GeneratedProtocolMessageType('FetchDirectoryRequest', (_message.Message,), {
- 'DESCRIPTOR' : _FETCHDIRECTORYREQUEST,
- '__module__' : 'build.bazel.remote.asset.v1.remote_asset_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.asset.v1.FetchDirectoryRequest)
- })
-_sym_db.RegisterMessage(FetchDirectoryRequest)
-
-FetchDirectoryResponse = _reflection.GeneratedProtocolMessageType('FetchDirectoryResponse', (_message.Message,), {
- 'DESCRIPTOR' : _FETCHDIRECTORYRESPONSE,
- '__module__' : 'build.bazel.remote.asset.v1.remote_asset_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.asset.v1.FetchDirectoryResponse)
- })
-_sym_db.RegisterMessage(FetchDirectoryResponse)
-
-PushBlobRequest = _reflection.GeneratedProtocolMessageType('PushBlobRequest', (_message.Message,), {
- 'DESCRIPTOR' : _PUSHBLOBREQUEST,
- '__module__' : 'build.bazel.remote.asset.v1.remote_asset_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.asset.v1.PushBlobRequest)
- })
-_sym_db.RegisterMessage(PushBlobRequest)
-
-PushBlobResponse = _reflection.GeneratedProtocolMessageType('PushBlobResponse', (_message.Message,), {
- 'DESCRIPTOR' : _PUSHBLOBRESPONSE,
- '__module__' : 'build.bazel.remote.asset.v1.remote_asset_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.asset.v1.PushBlobResponse)
- })
-_sym_db.RegisterMessage(PushBlobResponse)
-
-PushDirectoryRequest = _reflection.GeneratedProtocolMessageType('PushDirectoryRequest', (_message.Message,), {
- 'DESCRIPTOR' : _PUSHDIRECTORYREQUEST,
- '__module__' : 'build.bazel.remote.asset.v1.remote_asset_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.asset.v1.PushDirectoryRequest)
- })
-_sym_db.RegisterMessage(PushDirectoryRequest)
-
-PushDirectoryResponse = _reflection.GeneratedProtocolMessageType('PushDirectoryResponse', (_message.Message,), {
- 'DESCRIPTOR' : _PUSHDIRECTORYRESPONSE,
- '__module__' : 'build.bazel.remote.asset.v1.remote_asset_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.asset.v1.PushDirectoryResponse)
- })
-_sym_db.RegisterMessage(PushDirectoryResponse)
-
-_FETCH = DESCRIPTOR.services_by_name['Fetch']
-_PUSH = DESCRIPTOR.services_by_name['Push']
-if _descriptor._USE_C_DESCRIPTORS == False:
-
- DESCRIPTOR._options = None
- DESCRIPTOR._serialized_options = b'\n\033build.bazel.remote.asset.v1B\020RemoteAssetProtoP\001ZIgithub.com/bazelbuild/remote-apis/build/bazel/remote/asset/v1;remoteasset\242\002\002RA\252\002\033Build.Bazel.Remote.Asset.v1'
- _FETCH.methods_by_name['FetchBlob']._options = None
- _FETCH.methods_by_name['FetchBlob']._serialized_options = b'\202\323\344\223\002,\"\'/v1/{instance_name=**}/assets:fetchBlob:\001*'
- _FETCH.methods_by_name['FetchDirectory']._options = None
- _FETCH.methods_by_name['FetchDirectory']._serialized_options = b'\202\323\344\223\0021\",/v1/{instance_name=**}/assets:fetchDirectory:\001*'
- _PUSH.methods_by_name['PushBlob']._options = None
- _PUSH.methods_by_name['PushBlob']._serialized_options = b'\202\323\344\223\002+\"&/v1/{instance_name=**}/assets:pushBlob:\001*'
- _PUSH.methods_by_name['PushDirectory']._options = None
- _PUSH.methods_by_name['PushDirectory']._serialized_options = b'\202\323\344\223\0020\"+/v1/{instance_name=**}/assets:pushDirectory:\001*'
- _QUALIFIER._serialized_start=255
- _QUALIFIER._serialized_end=295
- _FETCHBLOBREQUEST._serialized_start=298
- _FETCHBLOBREQUEST._serialized_end=598
- _FETCHBLOBRESPONSE._serialized_start=601
- _FETCHBLOBRESPONSE._serialized_end=919
- _FETCHDIRECTORYREQUEST._serialized_start=922
- _FETCHDIRECTORYREQUEST._serialized_end=1227
- _FETCHDIRECTORYRESPONSE._serialized_start=1230
- _FETCHDIRECTORYRESPONSE._serialized_end=1563
- _PUSHBLOBREQUEST._serialized_start=1566
- _PUSHBLOBREQUEST._serialized_end=2009
- _PUSHBLOBRESPONSE._serialized_start=2011
- _PUSHBLOBRESPONSE._serialized_end=2029
- _PUSHDIRECTORYREQUEST._serialized_start=2032
- _PUSHDIRECTORYREQUEST._serialized_end=2490
- _PUSHDIRECTORYRESPONSE._serialized_start=2492
- _PUSHDIRECTORYRESPONSE._serialized_end=2515
- _FETCH._serialized_start=2518
- _FETCH._serialized_end=2867
- _PUSH._serialized_start=2870
- _PUSH._serialized_end=3210
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'build.bazel.remote.asset.v1.remote_asset_pb2', _globals)
+if not _descriptor._USE_C_DESCRIPTORS:
+ _globals['DESCRIPTOR']._loaded_options = None
+ _globals['DESCRIPTOR']._serialized_options = b'\n\033build.bazel.remote.asset.v1B\020RemoteAssetProtoP\001ZIgithub.com/bazelbuild/remote-apis/build/bazel/remote/asset/v1;remoteasset\242\002\002RA\252\002\033Build.Bazel.Remote.Asset.v1'
+ _globals['_FETCH'].methods_by_name['FetchBlob']._loaded_options = None
+ _globals['_FETCH'].methods_by_name['FetchBlob']._serialized_options = b'\202\323\344\223\002,\"\'/v1/{instance_name=**}/assets:fetchBlob:\001*'
+ _globals['_FETCH'].methods_by_name['FetchDirectory']._loaded_options = None
+ _globals['_FETCH'].methods_by_name['FetchDirectory']._serialized_options = b'\202\323\344\223\0021\",/v1/{instance_name=**}/assets:fetchDirectory:\001*'
+ _globals['_PUSH'].methods_by_name['PushBlob']._loaded_options = None
+ _globals['_PUSH'].methods_by_name['PushBlob']._serialized_options = b'\202\323\344\223\002+\"&/v1/{instance_name=**}/assets:pushBlob:\001*'
+ _globals['_PUSH'].methods_by_name['PushDirectory']._loaded_options = None
+ _globals['_PUSH'].methods_by_name['PushDirectory']._serialized_options = b'\202\323\344\223\0020\"+/v1/{instance_name=**}/assets:pushDirectory:\001*'
+ _globals['_QUALIFIER']._serialized_start=255
+ _globals['_QUALIFIER']._serialized_end=295
+ _globals['_FETCHBLOBREQUEST']._serialized_start=298
+ _globals['_FETCHBLOBREQUEST']._serialized_end=598
+ _globals['_FETCHBLOBRESPONSE']._serialized_start=601
+ _globals['_FETCHBLOBRESPONSE']._serialized_end=919
+ _globals['_FETCHDIRECTORYREQUEST']._serialized_start=922
+ _globals['_FETCHDIRECTORYREQUEST']._serialized_end=1227
+ _globals['_FETCHDIRECTORYRESPONSE']._serialized_start=1230
+ _globals['_FETCHDIRECTORYRESPONSE']._serialized_end=1563
+ _globals['_PUSHBLOBREQUEST']._serialized_start=1566
+ _globals['_PUSHBLOBREQUEST']._serialized_end=2009
+ _globals['_PUSHBLOBRESPONSE']._serialized_start=2011
+ _globals['_PUSHBLOBRESPONSE']._serialized_end=2029
+ _globals['_PUSHDIRECTORYREQUEST']._serialized_start=2032
+ _globals['_PUSHDIRECTORYREQUEST']._serialized_end=2490
+ _globals['_PUSHDIRECTORYRESPONSE']._serialized_start=2492
+ _globals['_PUSHDIRECTORYRESPONSE']._serialized_end=2515
+ _globals['_FETCH']._serialized_start=2518
+ _globals['_FETCH']._serialized_end=2867
+ _globals['_PUSH']._serialized_start=2870
+ _globals['_PUSH']._serialized_end=3210
# @@protoc_insertion_point(module_scope)
diff --git a/src/buildstream/_protos/build/bazel/remote/asset/v1/remote_asset_pb2.pyi b/src/buildstream/_protos/build/bazel/remote/asset/v1/remote_asset_pb2.pyi
new file mode 100644
index 000000000..660fa2de4
--- /dev/null
+++ b/src/buildstream/_protos/build/bazel/remote/asset/v1/remote_asset_pb2.pyi
@@ -0,0 +1,131 @@
+from build.bazel.remote.execution.v2 import remote_execution_pb2 as _remote_execution_pb2
+from google.api import annotations_pb2 as _annotations_pb2
+from google.protobuf import duration_pb2 as _duration_pb2
+from google.protobuf import timestamp_pb2 as _timestamp_pb2
+from google.rpc import status_pb2 as _status_pb2
+from google.protobuf.internal import containers as _containers
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
+
+DESCRIPTOR: _descriptor.FileDescriptor
+
+class Qualifier(_message.Message):
+ __slots__ = ("name", "value")
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ VALUE_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ value: str
+ def __init__(self, name: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
+
+class FetchBlobRequest(_message.Message):
+ __slots__ = ("instance_name", "timeout", "oldest_content_accepted", "uris", "qualifiers", "digest_function")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ TIMEOUT_FIELD_NUMBER: _ClassVar[int]
+ OLDEST_CONTENT_ACCEPTED_FIELD_NUMBER: _ClassVar[int]
+ URIS_FIELD_NUMBER: _ClassVar[int]
+ QUALIFIERS_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FUNCTION_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ timeout: _duration_pb2.Duration
+ oldest_content_accepted: _timestamp_pb2.Timestamp
+ uris: _containers.RepeatedScalarFieldContainer[str]
+ qualifiers: _containers.RepeatedCompositeFieldContainer[Qualifier]
+ digest_function: _remote_execution_pb2.DigestFunction.Value
+ def __init__(self, instance_name: _Optional[str] = ..., timeout: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., oldest_content_accepted: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., uris: _Optional[_Iterable[str]] = ..., qualifiers: _Optional[_Iterable[_Union[Qualifier, _Mapping]]] = ..., digest_function: _Optional[_Union[_remote_execution_pb2.DigestFunction.Value, str]] = ...) -> None: ...
+
+class FetchBlobResponse(_message.Message):
+ __slots__ = ("status", "uri", "qualifiers", "expires_at", "blob_digest", "digest_function")
+ STATUS_FIELD_NUMBER: _ClassVar[int]
+ URI_FIELD_NUMBER: _ClassVar[int]
+ QUALIFIERS_FIELD_NUMBER: _ClassVar[int]
+ EXPIRES_AT_FIELD_NUMBER: _ClassVar[int]
+ BLOB_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FUNCTION_FIELD_NUMBER: _ClassVar[int]
+ status: _status_pb2.Status
+ uri: str
+ qualifiers: _containers.RepeatedCompositeFieldContainer[Qualifier]
+ expires_at: _timestamp_pb2.Timestamp
+ blob_digest: _remote_execution_pb2.Digest
+ digest_function: _remote_execution_pb2.DigestFunction.Value
+ def __init__(self, status: _Optional[_Union[_status_pb2.Status, _Mapping]] = ..., uri: _Optional[str] = ..., qualifiers: _Optional[_Iterable[_Union[Qualifier, _Mapping]]] = ..., expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., blob_digest: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., digest_function: _Optional[_Union[_remote_execution_pb2.DigestFunction.Value, str]] = ...) -> None: ...
+
+class FetchDirectoryRequest(_message.Message):
+ __slots__ = ("instance_name", "timeout", "oldest_content_accepted", "uris", "qualifiers", "digest_function")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ TIMEOUT_FIELD_NUMBER: _ClassVar[int]
+ OLDEST_CONTENT_ACCEPTED_FIELD_NUMBER: _ClassVar[int]
+ URIS_FIELD_NUMBER: _ClassVar[int]
+ QUALIFIERS_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FUNCTION_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ timeout: _duration_pb2.Duration
+ oldest_content_accepted: _timestamp_pb2.Timestamp
+ uris: _containers.RepeatedScalarFieldContainer[str]
+ qualifiers: _containers.RepeatedCompositeFieldContainer[Qualifier]
+ digest_function: _remote_execution_pb2.DigestFunction.Value
+ def __init__(self, instance_name: _Optional[str] = ..., timeout: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., oldest_content_accepted: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., uris: _Optional[_Iterable[str]] = ..., qualifiers: _Optional[_Iterable[_Union[Qualifier, _Mapping]]] = ..., digest_function: _Optional[_Union[_remote_execution_pb2.DigestFunction.Value, str]] = ...) -> None: ...
+
+class FetchDirectoryResponse(_message.Message):
+ __slots__ = ("status", "uri", "qualifiers", "expires_at", "root_directory_digest", "digest_function")
+ STATUS_FIELD_NUMBER: _ClassVar[int]
+ URI_FIELD_NUMBER: _ClassVar[int]
+ QUALIFIERS_FIELD_NUMBER: _ClassVar[int]
+ EXPIRES_AT_FIELD_NUMBER: _ClassVar[int]
+ ROOT_DIRECTORY_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FUNCTION_FIELD_NUMBER: _ClassVar[int]
+ status: _status_pb2.Status
+ uri: str
+ qualifiers: _containers.RepeatedCompositeFieldContainer[Qualifier]
+ expires_at: _timestamp_pb2.Timestamp
+ root_directory_digest: _remote_execution_pb2.Digest
+ digest_function: _remote_execution_pb2.DigestFunction.Value
+ def __init__(self, status: _Optional[_Union[_status_pb2.Status, _Mapping]] = ..., uri: _Optional[str] = ..., qualifiers: _Optional[_Iterable[_Union[Qualifier, _Mapping]]] = ..., expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., root_directory_digest: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., digest_function: _Optional[_Union[_remote_execution_pb2.DigestFunction.Value, str]] = ...) -> None: ...
+
+class PushBlobRequest(_message.Message):
+ __slots__ = ("instance_name", "uris", "qualifiers", "expire_at", "blob_digest", "references_blobs", "references_directories", "digest_function")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ URIS_FIELD_NUMBER: _ClassVar[int]
+ QUALIFIERS_FIELD_NUMBER: _ClassVar[int]
+ EXPIRE_AT_FIELD_NUMBER: _ClassVar[int]
+ BLOB_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ REFERENCES_BLOBS_FIELD_NUMBER: _ClassVar[int]
+ REFERENCES_DIRECTORIES_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FUNCTION_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ uris: _containers.RepeatedScalarFieldContainer[str]
+ qualifiers: _containers.RepeatedCompositeFieldContainer[Qualifier]
+ expire_at: _timestamp_pb2.Timestamp
+ blob_digest: _remote_execution_pb2.Digest
+ references_blobs: _containers.RepeatedCompositeFieldContainer[_remote_execution_pb2.Digest]
+ references_directories: _containers.RepeatedCompositeFieldContainer[_remote_execution_pb2.Digest]
+ digest_function: _remote_execution_pb2.DigestFunction.Value
+ def __init__(self, instance_name: _Optional[str] = ..., uris: _Optional[_Iterable[str]] = ..., qualifiers: _Optional[_Iterable[_Union[Qualifier, _Mapping]]] = ..., expire_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., blob_digest: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., references_blobs: _Optional[_Iterable[_Union[_remote_execution_pb2.Digest, _Mapping]]] = ..., references_directories: _Optional[_Iterable[_Union[_remote_execution_pb2.Digest, _Mapping]]] = ..., digest_function: _Optional[_Union[_remote_execution_pb2.DigestFunction.Value, str]] = ...) -> None: ...
+
+class PushBlobResponse(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+
+class PushDirectoryRequest(_message.Message):
+ __slots__ = ("instance_name", "uris", "qualifiers", "expire_at", "root_directory_digest", "references_blobs", "references_directories", "digest_function")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ URIS_FIELD_NUMBER: _ClassVar[int]
+ QUALIFIERS_FIELD_NUMBER: _ClassVar[int]
+ EXPIRE_AT_FIELD_NUMBER: _ClassVar[int]
+ ROOT_DIRECTORY_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ REFERENCES_BLOBS_FIELD_NUMBER: _ClassVar[int]
+ REFERENCES_DIRECTORIES_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FUNCTION_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ uris: _containers.RepeatedScalarFieldContainer[str]
+ qualifiers: _containers.RepeatedCompositeFieldContainer[Qualifier]
+ expire_at: _timestamp_pb2.Timestamp
+ root_directory_digest: _remote_execution_pb2.Digest
+ references_blobs: _containers.RepeatedCompositeFieldContainer[_remote_execution_pb2.Digest]
+ references_directories: _containers.RepeatedCompositeFieldContainer[_remote_execution_pb2.Digest]
+ digest_function: _remote_execution_pb2.DigestFunction.Value
+ def __init__(self, instance_name: _Optional[str] = ..., uris: _Optional[_Iterable[str]] = ..., qualifiers: _Optional[_Iterable[_Union[Qualifier, _Mapping]]] = ..., expire_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., root_directory_digest: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., references_blobs: _Optional[_Iterable[_Union[_remote_execution_pb2.Digest, _Mapping]]] = ..., references_directories: _Optional[_Iterable[_Union[_remote_execution_pb2.Digest, _Mapping]]] = ..., digest_function: _Optional[_Union[_remote_execution_pb2.DigestFunction.Value, str]] = ...) -> None: ...
+
+class PushDirectoryResponse(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
diff --git a/src/buildstream/_protos/build/bazel/remote/asset/v1/remote_asset_pb2_grpc.py b/src/buildstream/_protos/build/bazel/remote/asset/v1/remote_asset_pb2_grpc.py
index 2677149fb..ad2feca8e 100644
--- a/src/buildstream/_protos/build/bazel/remote/asset/v1/remote_asset_pb2_grpc.py
+++ b/src/buildstream/_protos/build/bazel/remote/asset/v1/remote_asset_pb2_grpc.py
@@ -1,9 +1,29 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
+import warnings
from buildstream._protos.build.bazel.remote.asset.v1 import remote_asset_pb2 as build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2
+GRPC_GENERATED_VERSION = '1.68.0'
+GRPC_VERSION = grpc.__version__
+_version_not_supported = False
+
+try:
+ from grpc._utilities import first_version_is_lower
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
+except ImportError:
+ _version_not_supported = True
+
+if _version_not_supported:
+ raise RuntimeError(
+ f'The grpc package installed is at version {GRPC_VERSION},'
+ + f' but the generated code in build/bazel/remote/asset/v1/remote_asset_pb2_grpc.py depends on'
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
+ )
+
class FetchStub(object):
"""The Fetch service resolves or fetches assets referenced by URI and
@@ -26,12 +46,12 @@ def __init__(self, channel):
'/build.bazel.remote.asset.v1.Fetch/FetchBlob',
request_serializer=build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.FetchBlobRequest.SerializeToString,
response_deserializer=build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.FetchBlobResponse.FromString,
- )
+ _registered_method=True)
self.FetchDirectory = channel.unary_unary(
'/build.bazel.remote.asset.v1.Fetch/FetchDirectory',
request_serializer=build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.FetchDirectoryRequest.SerializeToString,
response_deserializer=build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.FetchDirectoryResponse.FromString,
- )
+ _registered_method=True)
class FetchServicer(object):
@@ -131,6 +151,7 @@ def add_FetchServicer_to_server(servicer, server):
generic_handler = grpc.method_handlers_generic_handler(
'build.bazel.remote.asset.v1.Fetch', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
+ server.add_registered_method_handlers('build.bazel.remote.asset.v1.Fetch', rpc_method_handlers)
# This class is part of an EXPERIMENTAL API.
@@ -156,11 +177,21 @@ def FetchBlob(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.bazel.remote.asset.v1.Fetch/FetchBlob',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.bazel.remote.asset.v1.Fetch/FetchBlob',
build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.FetchBlobRequest.SerializeToString,
build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.FetchBlobResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def FetchDirectory(request,
@@ -173,11 +204,21 @@ def FetchDirectory(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.bazel.remote.asset.v1.Fetch/FetchDirectory',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.bazel.remote.asset.v1.Fetch/FetchDirectory',
build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.FetchDirectoryRequest.SerializeToString,
build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.FetchDirectoryResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
class PushStub(object):
@@ -200,12 +241,12 @@ def __init__(self, channel):
'/build.bazel.remote.asset.v1.Push/PushBlob',
request_serializer=build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.PushBlobRequest.SerializeToString,
response_deserializer=build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.PushBlobResponse.FromString,
- )
+ _registered_method=True)
self.PushDirectory = channel.unary_unary(
'/build.bazel.remote.asset.v1.Push/PushDirectory',
request_serializer=build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.PushDirectoryRequest.SerializeToString,
response_deserializer=build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.PushDirectoryResponse.FromString,
- )
+ _registered_method=True)
class PushServicer(object):
@@ -281,6 +322,7 @@ def add_PushServicer_to_server(servicer, server):
generic_handler = grpc.method_handlers_generic_handler(
'build.bazel.remote.asset.v1.Push', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
+ server.add_registered_method_handlers('build.bazel.remote.asset.v1.Push', rpc_method_handlers)
# This class is part of an EXPERIMENTAL API.
@@ -305,11 +347,21 @@ def PushBlob(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.bazel.remote.asset.v1.Push/PushBlob',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.bazel.remote.asset.v1.Push/PushBlob',
build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.PushBlobRequest.SerializeToString,
build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.PushBlobResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def PushDirectory(request,
@@ -322,8 +374,18 @@ def PushDirectory(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.bazel.remote.asset.v1.Push/PushDirectory',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.bazel.remote.asset.v1.Push/PushDirectory',
build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.PushDirectoryRequest.SerializeToString,
build_dot_bazel_dot_remote_dot_asset_dot_v1_dot_remote__asset__pb2.PushDirectoryResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
diff --git a/src/buildstream/_protos/build/bazel/remote/execution/v2/remote_execution_pb2.py b/src/buildstream/_protos/build/bazel/remote/execution/v2/remote_execution_pb2.py
index da10f4f9a..147dd4c31 100644
--- a/src/buildstream/_protos/build/bazel/remote/execution/v2/remote_execution_pb2.py
+++ b/src/buildstream/_protos/build/bazel/remote/execution/v2/remote_execution_pb2.py
@@ -1,12 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
+# NO CHECKED-IN PROTOBUF GENCODE
# source: build/bazel/remote/execution/v2/remote_execution.proto
+# Protobuf Python Version: 5.28.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
+from google.protobuf import runtime_version as _runtime_version
from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+_runtime_version.ValidateProtobufRuntimeVersion(
+ _runtime_version.Domain.PUBLIC,
+ 5,
+ 28,
+ 1,
+ '',
+ 'build/bazel/remote/execution/v2/remote_execution.proto'
+)
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
@@ -24,594 +34,162 @@
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n6build/bazel/remote/execution/v2/remote_execution.proto\x12\x1f\x62uild.bazel.remote.execution.v2\x1a\x1f\x62uild/bazel/semver/semver.proto\x1a\x1cgoogle/api/annotations.proto\x1a#google/longrunning/operations.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x17google/rpc/status.proto\"\xa6\x02\n\x06\x41\x63tion\x12?\n\x0e\x63ommand_digest\x18\x01 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x42\n\x11input_root_digest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12*\n\x07timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x14\n\x0c\x64o_not_cache\x18\x07 \x01(\x08\x12\x0c\n\x04salt\x18\t \x01(\x0c\x12;\n\x08platform\x18\n \x01(\x0b\x32).build.bazel.remote.execution.v2.PlatformJ\x04\x08\x03\x10\x06J\x04\x08\x08\x10\t\"\xae\x04\n\x07\x43ommand\x12\x11\n\targuments\x18\x01 \x03(\t\x12[\n\x15\x65nvironment_variables\x18\x02 \x03(\x0b\x32<.build.bazel.remote.execution.v2.Command.EnvironmentVariable\x12\x18\n\x0coutput_files\x18\x03 \x03(\tB\x02\x18\x01\x12\x1e\n\x12output_directories\x18\x04 \x03(\tB\x02\x18\x01\x12\x14\n\x0coutput_paths\x18\x07 \x03(\t\x12?\n\x08platform\x18\x05 \x01(\x0b\x32).build.bazel.remote.execution.v2.PlatformB\x02\x18\x01\x12\x19\n\x11working_directory\x18\x06 \x01(\t\x12\x1e\n\x16output_node_properties\x18\x08 \x03(\t\x12_\n\x17output_directory_format\x18\t \x01(\x0e\x32>.build.bazel.remote.execution.v2.Command.OutputDirectoryFormat\x1a\x32\n\x13\x45nvironmentVariable\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"R\n\x15OutputDirectoryFormat\x12\r\n\tTREE_ONLY\x10\x00\x12\x12\n\x0e\x44IRECTORY_ONLY\x10\x01\x12\x16\n\x12TREE_AND_DIRECTORY\x10\x02\"{\n\x08Platform\x12\x46\n\nproperties\x18\x01 \x03(\x0b\x32\x32.build.bazel.remote.execution.v2.Platform.Property\x1a\'\n\x08Property\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x9a\x02\n\tDirectory\x12\x38\n\x05\x66iles\x18\x01 \x03(\x0b\x32).build.bazel.remote.execution.v2.FileNode\x12\x43\n\x0b\x64irectories\x18\x02 \x03(\x0b\x32..build.bazel.remote.execution.v2.DirectoryNode\x12>\n\x08symlinks\x18\x03 \x03(\x0b\x32,.build.bazel.remote.execution.v2.SymlinkNode\x12H\n\x0fnode_properties\x18\x05 \x01(\x0b\x32/.build.bazel.remote.execution.v2.NodePropertiesJ\x04\x08\x04\x10\x05\"+\n\x0cNodeProperty\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xaf\x01\n\x0eNodeProperties\x12\x41\n\nproperties\x18\x01 \x03(\x0b\x32-.build.bazel.remote.execution.v2.NodeProperty\x12)\n\x05mtime\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\tunix_mode\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\"\xbe\x01\n\x08\x46ileNode\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x37\n\x06\x64igest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x15\n\ris_executable\x18\x04 \x01(\x08\x12H\n\x0fnode_properties\x18\x06 \x01(\x0b\x32/.build.bazel.remote.execution.v2.NodePropertiesJ\x04\x08\x03\x10\x04J\x04\x08\x05\x10\x06\"V\n\rDirectoryNode\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x37\n\x06\x64igest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\"{\n\x0bSymlinkNode\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06target\x18\x02 \x01(\t\x12H\n\x0fnode_properties\x18\x04 \x01(\x0b\x32/.build.bazel.remote.execution.v2.NodePropertiesJ\x04\x08\x03\x10\x04\"*\n\x06\x44igest\x12\x0c\n\x04hash\x18\x01 \x01(\t\x12\x12\n\nsize_bytes\x18\x02 \x01(\x03\"\xdd\x05\n\x16\x45xecutedActionMetadata\x12\x0e\n\x06worker\x18\x01 \x01(\t\x12\x34\n\x10queued_timestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12:\n\x16worker_start_timestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12>\n\x1aworker_completed_timestamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12?\n\x1binput_fetch_start_timestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x43\n\x1finput_fetch_completed_timestamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12=\n\x19\x65xecution_start_timestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x41\n\x1d\x65xecution_completed_timestamp\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12=\n\x1avirtual_execution_duration\x18\x0c \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x41\n\x1doutput_upload_start_timestamp\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x45\n!output_upload_completed_timestamp\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x12\x61uxiliary_metadata\x18\x0b \x03(\x0b\x32\x14.google.protobuf.Any\"\xa7\x05\n\x0c\x41\x63tionResult\x12\x41\n\x0coutput_files\x18\x02 \x03(\x0b\x32+.build.bazel.remote.execution.v2.OutputFile\x12P\n\x14output_file_symlinks\x18\n \x03(\x0b\x32..build.bazel.remote.execution.v2.OutputSymlinkB\x02\x18\x01\x12G\n\x0foutput_symlinks\x18\x0c \x03(\x0b\x32..build.bazel.remote.execution.v2.OutputSymlink\x12L\n\x12output_directories\x18\x03 \x03(\x0b\x32\x30.build.bazel.remote.execution.v2.OutputDirectory\x12U\n\x19output_directory_symlinks\x18\x0b \x03(\x0b\x32..build.bazel.remote.execution.v2.OutputSymlinkB\x02\x18\x01\x12\x11\n\texit_code\x18\x04 \x01(\x05\x12\x12\n\nstdout_raw\x18\x05 \x01(\x0c\x12>\n\rstdout_digest\x18\x06 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x12\n\nstderr_raw\x18\x07 \x01(\x0c\x12>\n\rstderr_digest\x18\x08 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12S\n\x12\x65xecution_metadata\x18\t \x01(\x0b\x32\x37.build.bazel.remote.execution.v2.ExecutedActionMetadataJ\x04\x08\x01\x10\x02\"\xd2\x01\n\nOutputFile\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x37\n\x06\x64igest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x15\n\ris_executable\x18\x04 \x01(\x08\x12\x10\n\x08\x63ontents\x18\x05 \x01(\x0c\x12H\n\x0fnode_properties\x18\x07 \x01(\x0b\x32/.build.bazel.remote.execution.v2.NodePropertiesJ\x04\x08\x03\x10\x04J\x04\x08\x06\x10\x07\"~\n\x04Tree\x12\x38\n\x04root\x18\x01 \x01(\x0b\x32*.build.bazel.remote.execution.v2.Directory\x12<\n\x08\x63hildren\x18\x02 \x03(\x0b\x32*.build.bazel.remote.execution.v2.Directory\"\xcc\x01\n\x0fOutputDirectory\x12\x0c\n\x04path\x18\x01 \x01(\t\x12<\n\x0btree_digest\x18\x03 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x1f\n\x17is_topologically_sorted\x18\x04 \x01(\x08\x12\x46\n\x15root_directory_digest\x18\x05 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.DigestJ\x04\x08\x02\x10\x03\"}\n\rOutputSymlink\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0e\n\x06target\x18\x02 \x01(\t\x12H\n\x0fnode_properties\x18\x04 \x01(\x0b\x32/.build.bazel.remote.execution.v2.NodePropertiesJ\x04\x08\x03\x10\x04\"#\n\x0f\x45xecutionPolicy\x12\x10\n\x08priority\x18\x01 \x01(\x05\"&\n\x12ResultsCachePolicy\x12\x10\n\x08priority\x18\x01 \x01(\x05\"\xce\x03\n\x0e\x45xecuteRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x19\n\x11skip_cache_lookup\x18\x03 \x01(\x08\x12>\n\raction_digest\x18\x06 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12J\n\x10\x65xecution_policy\x18\x07 \x01(\x0b\x32\x30.build.bazel.remote.execution.v2.ExecutionPolicy\x12Q\n\x14results_cache_policy\x18\x08 \x01(\x0b\x32\x33.build.bazel.remote.execution.v2.ResultsCachePolicy\x12N\n\x0f\x64igest_function\x18\t \x01(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\x12\x15\n\rinline_stdout\x18\n \x01(\x08\x12\x15\n\rinline_stderr\x18\x0b \x01(\x08\x12\x1b\n\x13inline_output_files\x18\x0c \x03(\tJ\x04\x08\x02\x10\x03J\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06\"Z\n\x07LogFile\x12\x37\n\x06\x64igest\x18\x01 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x16\n\x0ehuman_readable\x18\x02 \x01(\x08\"\xd0\x02\n\x0f\x45xecuteResponse\x12=\n\x06result\x18\x01 \x01(\x0b\x32-.build.bazel.remote.execution.v2.ActionResult\x12\x15\n\rcached_result\x18\x02 \x01(\x08\x12\"\n\x06status\x18\x03 \x01(\x0b\x32\x12.google.rpc.Status\x12U\n\x0bserver_logs\x18\x04 \x03(\x0b\x32@.build.bazel.remote.execution.v2.ExecuteResponse.ServerLogsEntry\x12\x0f\n\x07message\x18\x05 \x01(\t\x1a[\n\x0fServerLogsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x37\n\x05value\x18\x02 \x01(\x0b\x32(.build.bazel.remote.execution.v2.LogFile:\x02\x38\x01\"a\n\x0e\x45xecutionStage\"O\n\x05Value\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0f\n\x0b\x43\x41\x43HE_CHECK\x10\x01\x12\n\n\x06QUEUED\x10\x02\x12\r\n\tEXECUTING\x10\x03\x12\r\n\tCOMPLETED\x10\x04\"\xb5\x02\n\x18\x45xecuteOperationMetadata\x12\x44\n\x05stage\x18\x01 \x01(\x0e\x32\x35.build.bazel.remote.execution.v2.ExecutionStage.Value\x12>\n\raction_digest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x1a\n\x12stdout_stream_name\x18\x03 \x01(\t\x12\x1a\n\x12stderr_stream_name\x18\x04 \x01(\t\x12[\n\x1apartial_execution_metadata\x18\x05 \x01(\x0b\x32\x37.build.bazel.remote.execution.v2.ExecutedActionMetadata\"$\n\x14WaitExecutionRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x8a\x02\n\x16GetActionResultRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12>\n\raction_digest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x15\n\rinline_stdout\x18\x03 \x01(\x08\x12\x15\n\rinline_stderr\x18\x04 \x01(\x08\x12\x1b\n\x13inline_output_files\x18\x05 \x03(\t\x12N\n\x0f\x64igest_function\x18\x06 \x01(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\"\xdb\x02\n\x19UpdateActionResultRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12>\n\raction_digest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x44\n\raction_result\x18\x03 \x01(\x0b\x32-.build.bazel.remote.execution.v2.ActionResult\x12Q\n\x14results_cache_policy\x18\x04 \x01(\x0b\x32\x33.build.bazel.remote.execution.v2.ResultsCachePolicy\x12N\n\x0f\x64igest_function\x18\x05 \x01(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\"\xbf\x01\n\x17\x46indMissingBlobsRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12=\n\x0c\x62lob_digests\x18\x02 \x03(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12N\n\x0f\x64igest_function\x18\x03 \x01(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\"a\n\x18\x46indMissingBlobsResponse\x12\x45\n\x14missing_blob_digests\x18\x02 \x03(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\"\xee\x02\n\x17\x42\x61tchUpdateBlobsRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12R\n\x08requests\x18\x02 \x03(\x0b\x32@.build.bazel.remote.execution.v2.BatchUpdateBlobsRequest.Request\x12N\n\x0f\x64igest_function\x18\x05 \x01(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\x1a\x97\x01\n\x07Request\x12\x37\n\x06\x64igest\x18\x01 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\x45\n\ncompressor\x18\x03 \x01(\x0e\x32\x31.build.bazel.remote.execution.v2.Compressor.Value\"\xda\x01\n\x18\x42\x61tchUpdateBlobsResponse\x12U\n\tresponses\x18\x01 \x03(\x0b\x32\x42.build.bazel.remote.execution.v2.BatchUpdateBlobsResponse.Response\x1ag\n\x08Response\x12\x37\n\x06\x64igest\x18\x01 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\"\n\x06status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\"\x8b\x02\n\x15\x42\x61tchReadBlobsRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x38\n\x07\x64igests\x18\x02 \x03(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12Q\n\x16\x61\x63\x63\x65ptable_compressors\x18\x03 \x03(\x0e\x32\x31.build.bazel.remote.execution.v2.Compressor.Value\x12N\n\x0f\x64igest_function\x18\x04 \x01(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\"\xac\x02\n\x16\x42\x61tchReadBlobsResponse\x12S\n\tresponses\x18\x01 \x03(\x0b\x32@.build.bazel.remote.execution.v2.BatchReadBlobsResponse.Response\x1a\xbc\x01\n\x08Response\x12\x37\n\x06\x64igest\x18\x01 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\x45\n\ncompressor\x18\x04 \x01(\x0e\x32\x31.build.bazel.remote.execution.v2.Compressor.Value\x12\"\n\x06status\x18\x03 \x01(\x0b\x32\x12.google.rpc.Status\"\xdc\x01\n\x0eGetTreeRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12<\n\x0broot_digest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x12\n\npage_token\x18\x04 \x01(\t\x12N\n\x0f\x64igest_function\x18\x05 \x01(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\"k\n\x0fGetTreeResponse\x12?\n\x0b\x64irectories\x18\x01 \x03(\x0b\x32*.build.bazel.remote.execution.v2.Directory\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"/\n\x16GetCapabilitiesRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\"\xe3\x02\n\x12ServerCapabilities\x12N\n\x12\x63\x61\x63he_capabilities\x18\x01 \x01(\x0b\x32\x32.build.bazel.remote.execution.v2.CacheCapabilities\x12V\n\x16\x65xecution_capabilities\x18\x02 \x01(\x0b\x32\x36.build.bazel.remote.execution.v2.ExecutionCapabilities\x12:\n\x16\x64\x65precated_api_version\x18\x03 \x01(\x0b\x32\x1a.build.bazel.semver.SemVer\x12\x33\n\x0flow_api_version\x18\x04 \x01(\x0b\x32\x1a.build.bazel.semver.SemVer\x12\x34\n\x10high_api_version\x18\x05 \x01(\x0b\x32\x1a.build.bazel.semver.SemVer\"\x8f\x01\n\x0e\x44igestFunction\"}\n\x05Value\x12\x0b\n\x07UNKNOWN\x10\x00\x12\n\n\x06SHA256\x10\x01\x12\x08\n\x04SHA1\x10\x02\x12\x07\n\x03MD5\x10\x03\x12\x07\n\x03VSO\x10\x04\x12\n\n\x06SHA384\x10\x05\x12\n\n\x06SHA512\x10\x06\x12\x0b\n\x07MURMUR3\x10\x07\x12\x0e\n\nSHA256TREE\x10\x08\x12\n\n\x06\x42LAKE3\x10\t\"7\n\x1d\x41\x63tionCacheUpdateCapabilities\x12\x16\n\x0eupdate_enabled\x18\x01 \x01(\x08\"\xac\x01\n\x14PriorityCapabilities\x12W\n\npriorities\x18\x01 \x03(\x0b\x32\x43.build.bazel.remote.execution.v2.PriorityCapabilities.PriorityRange\x1a;\n\rPriorityRange\x12\x14\n\x0cmin_priority\x18\x01 \x01(\x05\x12\x14\n\x0cmax_priority\x18\x02 \x01(\x05\"P\n\x1bSymlinkAbsolutePathStrategy\"1\n\x05Value\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0e\n\nDISALLOWED\x10\x01\x12\x0b\n\x07\x41LLOWED\x10\x02\"F\n\nCompressor\"8\n\x05Value\x12\x0c\n\x08IDENTITY\x10\x00\x12\x08\n\x04ZSTD\x10\x01\x12\x0b\n\x07\x44\x45\x46LATE\x10\x02\x12\n\n\x06\x42ROTLI\x10\x03\"\xeb\x04\n\x11\x43\x61\x63heCapabilities\x12O\n\x10\x64igest_functions\x18\x01 \x03(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\x12h\n action_cache_update_capabilities\x18\x02 \x01(\x0b\x32>.build.bazel.remote.execution.v2.ActionCacheUpdateCapabilities\x12Z\n\x1b\x63\x61\x63he_priority_capabilities\x18\x03 \x01(\x0b\x32\x35.build.bazel.remote.execution.v2.PriorityCapabilities\x12\"\n\x1amax_batch_total_size_bytes\x18\x04 \x01(\x03\x12j\n\x1esymlink_absolute_path_strategy\x18\x05 \x01(\x0e\x32\x42.build.bazel.remote.execution.v2.SymlinkAbsolutePathStrategy.Value\x12P\n\x15supported_compressors\x18\x06 \x03(\x0e\x32\x31.build.bazel.remote.execution.v2.Compressor.Value\x12]\n\"supported_batch_update_compressors\x18\x07 \x03(\x0e\x32\x31.build.bazel.remote.execution.v2.Compressor.Value\"\xd1\x02\n\x15\x45xecutionCapabilities\x12N\n\x0f\x64igest_function\x18\x01 \x01(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\x12\x14\n\x0c\x65xec_enabled\x18\x02 \x01(\x08\x12^\n\x1f\x65xecution_priority_capabilities\x18\x03 \x01(\x0b\x32\x35.build.bazel.remote.execution.v2.PriorityCapabilities\x12!\n\x19supported_node_properties\x18\x04 \x03(\t\x12O\n\x10\x64igest_functions\x18\x05 \x03(\x0e\x32\x35.build.bazel.remote.execution.v2.DigestFunction.Value\"6\n\x0bToolDetails\x12\x11\n\ttool_name\x18\x01 \x01(\t\x12\x14\n\x0ctool_version\x18\x02 \x01(\t\"\xed\x01\n\x0fRequestMetadata\x12\x42\n\x0ctool_details\x18\x01 \x01(\x0b\x32,.build.bazel.remote.execution.v2.ToolDetails\x12\x11\n\taction_id\x18\x02 \x01(\t\x12\x1a\n\x12tool_invocation_id\x18\x03 \x01(\t\x12!\n\x19\x63orrelated_invocations_id\x18\x04 \x01(\t\x12\x17\n\x0f\x61\x63tion_mnemonic\x18\x05 \x01(\t\x12\x11\n\ttarget_id\x18\x06 \x01(\t\x12\x18\n\x10\x63onfiguration_id\x18\x07 \x01(\t2\xb9\x02\n\tExecution\x12\x8e\x01\n\x07\x45xecute\x12/.build.bazel.remote.execution.v2.ExecuteRequest\x1a\x1d.google.longrunning.Operation\"1\x82\xd3\xe4\x93\x02+\"&/v2/{instance_name=**}/actions:execute:\x01*0\x01\x12\x9a\x01\n\rWaitExecution\x12\x35.build.bazel.remote.execution.v2.WaitExecutionRequest\x1a\x1d.google.longrunning.Operation\"1\x82\xd3\xe4\x93\x02+\"&/v2/{name=operations/**}:waitExecution:\x01*0\x01\x32\xd6\x03\n\x0b\x41\x63tionCache\x12\xd7\x01\n\x0fGetActionResult\x12\x37.build.bazel.remote.execution.v2.GetActionResultRequest\x1a-.build.bazel.remote.execution.v2.ActionResult\"\\\x82\xd3\xe4\x93\x02V\x12T/v2/{instance_name=**}/actionResults/{action_digest.hash}/{action_digest.size_bytes}\x12\xec\x01\n\x12UpdateActionResult\x12:.build.bazel.remote.execution.v2.UpdateActionResultRequest\x1a-.build.bazel.remote.execution.v2.ActionResult\"k\x82\xd3\xe4\x93\x02\x65\x1aT/v2/{instance_name=**}/actionResults/{action_digest.hash}/{action_digest.size_bytes}:\raction_result2\x9b\x06\n\x19\x43ontentAddressableStorage\x12\xbc\x01\n\x10\x46indMissingBlobs\x12\x38.build.bazel.remote.execution.v2.FindMissingBlobsRequest\x1a\x39.build.bazel.remote.execution.v2.FindMissingBlobsResponse\"3\x82\xd3\xe4\x93\x02-\"(/v2/{instance_name=**}/blobs:findMissing:\x01*\x12\xbc\x01\n\x10\x42\x61tchUpdateBlobs\x12\x38.build.bazel.remote.execution.v2.BatchUpdateBlobsRequest\x1a\x39.build.bazel.remote.execution.v2.BatchUpdateBlobsResponse\"3\x82\xd3\xe4\x93\x02-\"(/v2/{instance_name=**}/blobs:batchUpdate:\x01*\x12\xb4\x01\n\x0e\x42\x61tchReadBlobs\x12\x36.build.bazel.remote.execution.v2.BatchReadBlobsRequest\x1a\x37.build.bazel.remote.execution.v2.BatchReadBlobsResponse\"1\x82\xd3\xe4\x93\x02+\"&/v2/{instance_name=**}/blobs:batchRead:\x01*\x12\xc8\x01\n\x07GetTree\x12/.build.bazel.remote.execution.v2.GetTreeRequest\x1a\x30.build.bazel.remote.execution.v2.GetTreeResponse\"X\x82\xd3\xe4\x93\x02R\x12P/v2/{instance_name=**}/blobs/{root_digest.hash}/{root_digest.size_bytes}:getTree0\x01\x32\xbd\x01\n\x0c\x43\x61pabilities\x12\xac\x01\n\x0fGetCapabilities\x12\x37.build.bazel.remote.execution.v2.GetCapabilitiesRequest\x1a\x33.build.bazel.remote.execution.v2.ServerCapabilities\"+\x82\xd3\xe4\x93\x02%\x12#/v2/{instance_name=**}/capabilitiesB\xb4\x01\n\x1f\x62uild.bazel.remote.execution.v2B\x14RemoteExecutionProtoP\x01ZQgithub.com/bazelbuild/remote-apis/build/bazel/remote/execution/v2;remoteexecution\xa2\x02\x03REX\xaa\x02\x1f\x42uild.Bazel.Remote.Execution.V2b\x06proto3')
-
-
-_ACTION = DESCRIPTOR.message_types_by_name['Action']
-_COMMAND = DESCRIPTOR.message_types_by_name['Command']
-_COMMAND_ENVIRONMENTVARIABLE = _COMMAND.nested_types_by_name['EnvironmentVariable']
-_PLATFORM = DESCRIPTOR.message_types_by_name['Platform']
-_PLATFORM_PROPERTY = _PLATFORM.nested_types_by_name['Property']
-_DIRECTORY = DESCRIPTOR.message_types_by_name['Directory']
-_NODEPROPERTY = DESCRIPTOR.message_types_by_name['NodeProperty']
-_NODEPROPERTIES = DESCRIPTOR.message_types_by_name['NodeProperties']
-_FILENODE = DESCRIPTOR.message_types_by_name['FileNode']
-_DIRECTORYNODE = DESCRIPTOR.message_types_by_name['DirectoryNode']
-_SYMLINKNODE = DESCRIPTOR.message_types_by_name['SymlinkNode']
-_DIGEST = DESCRIPTOR.message_types_by_name['Digest']
-_EXECUTEDACTIONMETADATA = DESCRIPTOR.message_types_by_name['ExecutedActionMetadata']
-_ACTIONRESULT = DESCRIPTOR.message_types_by_name['ActionResult']
-_OUTPUTFILE = DESCRIPTOR.message_types_by_name['OutputFile']
-_TREE = DESCRIPTOR.message_types_by_name['Tree']
-_OUTPUTDIRECTORY = DESCRIPTOR.message_types_by_name['OutputDirectory']
-_OUTPUTSYMLINK = DESCRIPTOR.message_types_by_name['OutputSymlink']
-_EXECUTIONPOLICY = DESCRIPTOR.message_types_by_name['ExecutionPolicy']
-_RESULTSCACHEPOLICY = DESCRIPTOR.message_types_by_name['ResultsCachePolicy']
-_EXECUTEREQUEST = DESCRIPTOR.message_types_by_name['ExecuteRequest']
-_LOGFILE = DESCRIPTOR.message_types_by_name['LogFile']
-_EXECUTERESPONSE = DESCRIPTOR.message_types_by_name['ExecuteResponse']
-_EXECUTERESPONSE_SERVERLOGSENTRY = _EXECUTERESPONSE.nested_types_by_name['ServerLogsEntry']
-_EXECUTIONSTAGE = DESCRIPTOR.message_types_by_name['ExecutionStage']
-_EXECUTEOPERATIONMETADATA = DESCRIPTOR.message_types_by_name['ExecuteOperationMetadata']
-_WAITEXECUTIONREQUEST = DESCRIPTOR.message_types_by_name['WaitExecutionRequest']
-_GETACTIONRESULTREQUEST = DESCRIPTOR.message_types_by_name['GetActionResultRequest']
-_UPDATEACTIONRESULTREQUEST = DESCRIPTOR.message_types_by_name['UpdateActionResultRequest']
-_FINDMISSINGBLOBSREQUEST = DESCRIPTOR.message_types_by_name['FindMissingBlobsRequest']
-_FINDMISSINGBLOBSRESPONSE = DESCRIPTOR.message_types_by_name['FindMissingBlobsResponse']
-_BATCHUPDATEBLOBSREQUEST = DESCRIPTOR.message_types_by_name['BatchUpdateBlobsRequest']
-_BATCHUPDATEBLOBSREQUEST_REQUEST = _BATCHUPDATEBLOBSREQUEST.nested_types_by_name['Request']
-_BATCHUPDATEBLOBSRESPONSE = DESCRIPTOR.message_types_by_name['BatchUpdateBlobsResponse']
-_BATCHUPDATEBLOBSRESPONSE_RESPONSE = _BATCHUPDATEBLOBSRESPONSE.nested_types_by_name['Response']
-_BATCHREADBLOBSREQUEST = DESCRIPTOR.message_types_by_name['BatchReadBlobsRequest']
-_BATCHREADBLOBSRESPONSE = DESCRIPTOR.message_types_by_name['BatchReadBlobsResponse']
-_BATCHREADBLOBSRESPONSE_RESPONSE = _BATCHREADBLOBSRESPONSE.nested_types_by_name['Response']
-_GETTREEREQUEST = DESCRIPTOR.message_types_by_name['GetTreeRequest']
-_GETTREERESPONSE = DESCRIPTOR.message_types_by_name['GetTreeResponse']
-_GETCAPABILITIESREQUEST = DESCRIPTOR.message_types_by_name['GetCapabilitiesRequest']
-_SERVERCAPABILITIES = DESCRIPTOR.message_types_by_name['ServerCapabilities']
-_DIGESTFUNCTION = DESCRIPTOR.message_types_by_name['DigestFunction']
-_ACTIONCACHEUPDATECAPABILITIES = DESCRIPTOR.message_types_by_name['ActionCacheUpdateCapabilities']
-_PRIORITYCAPABILITIES = DESCRIPTOR.message_types_by_name['PriorityCapabilities']
-_PRIORITYCAPABILITIES_PRIORITYRANGE = _PRIORITYCAPABILITIES.nested_types_by_name['PriorityRange']
-_SYMLINKABSOLUTEPATHSTRATEGY = DESCRIPTOR.message_types_by_name['SymlinkAbsolutePathStrategy']
-_COMPRESSOR = DESCRIPTOR.message_types_by_name['Compressor']
-_CACHECAPABILITIES = DESCRIPTOR.message_types_by_name['CacheCapabilities']
-_EXECUTIONCAPABILITIES = DESCRIPTOR.message_types_by_name['ExecutionCapabilities']
-_TOOLDETAILS = DESCRIPTOR.message_types_by_name['ToolDetails']
-_REQUESTMETADATA = DESCRIPTOR.message_types_by_name['RequestMetadata']
-_COMMAND_OUTPUTDIRECTORYFORMAT = _COMMAND.enum_types_by_name['OutputDirectoryFormat']
-_EXECUTIONSTAGE_VALUE = _EXECUTIONSTAGE.enum_types_by_name['Value']
-_DIGESTFUNCTION_VALUE = _DIGESTFUNCTION.enum_types_by_name['Value']
-_SYMLINKABSOLUTEPATHSTRATEGY_VALUE = _SYMLINKABSOLUTEPATHSTRATEGY.enum_types_by_name['Value']
-_COMPRESSOR_VALUE = _COMPRESSOR.enum_types_by_name['Value']
-Action = _reflection.GeneratedProtocolMessageType('Action', (_message.Message,), {
- 'DESCRIPTOR' : _ACTION,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.Action)
- })
-_sym_db.RegisterMessage(Action)
-
-Command = _reflection.GeneratedProtocolMessageType('Command', (_message.Message,), {
-
- 'EnvironmentVariable' : _reflection.GeneratedProtocolMessageType('EnvironmentVariable', (_message.Message,), {
- 'DESCRIPTOR' : _COMMAND_ENVIRONMENTVARIABLE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.Command.EnvironmentVariable)
- })
- ,
- 'DESCRIPTOR' : _COMMAND,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.Command)
- })
-_sym_db.RegisterMessage(Command)
-_sym_db.RegisterMessage(Command.EnvironmentVariable)
-
-Platform = _reflection.GeneratedProtocolMessageType('Platform', (_message.Message,), {
-
- 'Property' : _reflection.GeneratedProtocolMessageType('Property', (_message.Message,), {
- 'DESCRIPTOR' : _PLATFORM_PROPERTY,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.Platform.Property)
- })
- ,
- 'DESCRIPTOR' : _PLATFORM,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.Platform)
- })
-_sym_db.RegisterMessage(Platform)
-_sym_db.RegisterMessage(Platform.Property)
-
-Directory = _reflection.GeneratedProtocolMessageType('Directory', (_message.Message,), {
- 'DESCRIPTOR' : _DIRECTORY,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.Directory)
- })
-_sym_db.RegisterMessage(Directory)
-
-NodeProperty = _reflection.GeneratedProtocolMessageType('NodeProperty', (_message.Message,), {
- 'DESCRIPTOR' : _NODEPROPERTY,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.NodeProperty)
- })
-_sym_db.RegisterMessage(NodeProperty)
-
-NodeProperties = _reflection.GeneratedProtocolMessageType('NodeProperties', (_message.Message,), {
- 'DESCRIPTOR' : _NODEPROPERTIES,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.NodeProperties)
- })
-_sym_db.RegisterMessage(NodeProperties)
-
-FileNode = _reflection.GeneratedProtocolMessageType('FileNode', (_message.Message,), {
- 'DESCRIPTOR' : _FILENODE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.FileNode)
- })
-_sym_db.RegisterMessage(FileNode)
-
-DirectoryNode = _reflection.GeneratedProtocolMessageType('DirectoryNode', (_message.Message,), {
- 'DESCRIPTOR' : _DIRECTORYNODE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.DirectoryNode)
- })
-_sym_db.RegisterMessage(DirectoryNode)
-
-SymlinkNode = _reflection.GeneratedProtocolMessageType('SymlinkNode', (_message.Message,), {
- 'DESCRIPTOR' : _SYMLINKNODE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.SymlinkNode)
- })
-_sym_db.RegisterMessage(SymlinkNode)
-
-Digest = _reflection.GeneratedProtocolMessageType('Digest', (_message.Message,), {
- 'DESCRIPTOR' : _DIGEST,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.Digest)
- })
-_sym_db.RegisterMessage(Digest)
-
-ExecutedActionMetadata = _reflection.GeneratedProtocolMessageType('ExecutedActionMetadata', (_message.Message,), {
- 'DESCRIPTOR' : _EXECUTEDACTIONMETADATA,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.ExecutedActionMetadata)
- })
-_sym_db.RegisterMessage(ExecutedActionMetadata)
-
-ActionResult = _reflection.GeneratedProtocolMessageType('ActionResult', (_message.Message,), {
- 'DESCRIPTOR' : _ACTIONRESULT,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.ActionResult)
- })
-_sym_db.RegisterMessage(ActionResult)
-
-OutputFile = _reflection.GeneratedProtocolMessageType('OutputFile', (_message.Message,), {
- 'DESCRIPTOR' : _OUTPUTFILE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.OutputFile)
- })
-_sym_db.RegisterMessage(OutputFile)
-
-Tree = _reflection.GeneratedProtocolMessageType('Tree', (_message.Message,), {
- 'DESCRIPTOR' : _TREE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.Tree)
- })
-_sym_db.RegisterMessage(Tree)
-
-OutputDirectory = _reflection.GeneratedProtocolMessageType('OutputDirectory', (_message.Message,), {
- 'DESCRIPTOR' : _OUTPUTDIRECTORY,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.OutputDirectory)
- })
-_sym_db.RegisterMessage(OutputDirectory)
-
-OutputSymlink = _reflection.GeneratedProtocolMessageType('OutputSymlink', (_message.Message,), {
- 'DESCRIPTOR' : _OUTPUTSYMLINK,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.OutputSymlink)
- })
-_sym_db.RegisterMessage(OutputSymlink)
-
-ExecutionPolicy = _reflection.GeneratedProtocolMessageType('ExecutionPolicy', (_message.Message,), {
- 'DESCRIPTOR' : _EXECUTIONPOLICY,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.ExecutionPolicy)
- })
-_sym_db.RegisterMessage(ExecutionPolicy)
-
-ResultsCachePolicy = _reflection.GeneratedProtocolMessageType('ResultsCachePolicy', (_message.Message,), {
- 'DESCRIPTOR' : _RESULTSCACHEPOLICY,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.ResultsCachePolicy)
- })
-_sym_db.RegisterMessage(ResultsCachePolicy)
-
-ExecuteRequest = _reflection.GeneratedProtocolMessageType('ExecuteRequest', (_message.Message,), {
- 'DESCRIPTOR' : _EXECUTEREQUEST,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.ExecuteRequest)
- })
-_sym_db.RegisterMessage(ExecuteRequest)
-
-LogFile = _reflection.GeneratedProtocolMessageType('LogFile', (_message.Message,), {
- 'DESCRIPTOR' : _LOGFILE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.LogFile)
- })
-_sym_db.RegisterMessage(LogFile)
-
-ExecuteResponse = _reflection.GeneratedProtocolMessageType('ExecuteResponse', (_message.Message,), {
-
- 'ServerLogsEntry' : _reflection.GeneratedProtocolMessageType('ServerLogsEntry', (_message.Message,), {
- 'DESCRIPTOR' : _EXECUTERESPONSE_SERVERLOGSENTRY,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.ExecuteResponse.ServerLogsEntry)
- })
- ,
- 'DESCRIPTOR' : _EXECUTERESPONSE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.ExecuteResponse)
- })
-_sym_db.RegisterMessage(ExecuteResponse)
-_sym_db.RegisterMessage(ExecuteResponse.ServerLogsEntry)
-
-ExecutionStage = _reflection.GeneratedProtocolMessageType('ExecutionStage', (_message.Message,), {
- 'DESCRIPTOR' : _EXECUTIONSTAGE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.ExecutionStage)
- })
-_sym_db.RegisterMessage(ExecutionStage)
-
-ExecuteOperationMetadata = _reflection.GeneratedProtocolMessageType('ExecuteOperationMetadata', (_message.Message,), {
- 'DESCRIPTOR' : _EXECUTEOPERATIONMETADATA,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.ExecuteOperationMetadata)
- })
-_sym_db.RegisterMessage(ExecuteOperationMetadata)
-
-WaitExecutionRequest = _reflection.GeneratedProtocolMessageType('WaitExecutionRequest', (_message.Message,), {
- 'DESCRIPTOR' : _WAITEXECUTIONREQUEST,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.WaitExecutionRequest)
- })
-_sym_db.RegisterMessage(WaitExecutionRequest)
-
-GetActionResultRequest = _reflection.GeneratedProtocolMessageType('GetActionResultRequest', (_message.Message,), {
- 'DESCRIPTOR' : _GETACTIONRESULTREQUEST,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.GetActionResultRequest)
- })
-_sym_db.RegisterMessage(GetActionResultRequest)
-
-UpdateActionResultRequest = _reflection.GeneratedProtocolMessageType('UpdateActionResultRequest', (_message.Message,), {
- 'DESCRIPTOR' : _UPDATEACTIONRESULTREQUEST,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.UpdateActionResultRequest)
- })
-_sym_db.RegisterMessage(UpdateActionResultRequest)
-
-FindMissingBlobsRequest = _reflection.GeneratedProtocolMessageType('FindMissingBlobsRequest', (_message.Message,), {
- 'DESCRIPTOR' : _FINDMISSINGBLOBSREQUEST,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.FindMissingBlobsRequest)
- })
-_sym_db.RegisterMessage(FindMissingBlobsRequest)
-
-FindMissingBlobsResponse = _reflection.GeneratedProtocolMessageType('FindMissingBlobsResponse', (_message.Message,), {
- 'DESCRIPTOR' : _FINDMISSINGBLOBSRESPONSE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.FindMissingBlobsResponse)
- })
-_sym_db.RegisterMessage(FindMissingBlobsResponse)
-
-BatchUpdateBlobsRequest = _reflection.GeneratedProtocolMessageType('BatchUpdateBlobsRequest', (_message.Message,), {
-
- 'Request' : _reflection.GeneratedProtocolMessageType('Request', (_message.Message,), {
- 'DESCRIPTOR' : _BATCHUPDATEBLOBSREQUEST_REQUEST,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.BatchUpdateBlobsRequest.Request)
- })
- ,
- 'DESCRIPTOR' : _BATCHUPDATEBLOBSREQUEST,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.BatchUpdateBlobsRequest)
- })
-_sym_db.RegisterMessage(BatchUpdateBlobsRequest)
-_sym_db.RegisterMessage(BatchUpdateBlobsRequest.Request)
-
-BatchUpdateBlobsResponse = _reflection.GeneratedProtocolMessageType('BatchUpdateBlobsResponse', (_message.Message,), {
-
- 'Response' : _reflection.GeneratedProtocolMessageType('Response', (_message.Message,), {
- 'DESCRIPTOR' : _BATCHUPDATEBLOBSRESPONSE_RESPONSE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.BatchUpdateBlobsResponse.Response)
- })
- ,
- 'DESCRIPTOR' : _BATCHUPDATEBLOBSRESPONSE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.BatchUpdateBlobsResponse)
- })
-_sym_db.RegisterMessage(BatchUpdateBlobsResponse)
-_sym_db.RegisterMessage(BatchUpdateBlobsResponse.Response)
-
-BatchReadBlobsRequest = _reflection.GeneratedProtocolMessageType('BatchReadBlobsRequest', (_message.Message,), {
- 'DESCRIPTOR' : _BATCHREADBLOBSREQUEST,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.BatchReadBlobsRequest)
- })
-_sym_db.RegisterMessage(BatchReadBlobsRequest)
-
-BatchReadBlobsResponse = _reflection.GeneratedProtocolMessageType('BatchReadBlobsResponse', (_message.Message,), {
-
- 'Response' : _reflection.GeneratedProtocolMessageType('Response', (_message.Message,), {
- 'DESCRIPTOR' : _BATCHREADBLOBSRESPONSE_RESPONSE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.BatchReadBlobsResponse.Response)
- })
- ,
- 'DESCRIPTOR' : _BATCHREADBLOBSRESPONSE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.BatchReadBlobsResponse)
- })
-_sym_db.RegisterMessage(BatchReadBlobsResponse)
-_sym_db.RegisterMessage(BatchReadBlobsResponse.Response)
-
-GetTreeRequest = _reflection.GeneratedProtocolMessageType('GetTreeRequest', (_message.Message,), {
- 'DESCRIPTOR' : _GETTREEREQUEST,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.GetTreeRequest)
- })
-_sym_db.RegisterMessage(GetTreeRequest)
-
-GetTreeResponse = _reflection.GeneratedProtocolMessageType('GetTreeResponse', (_message.Message,), {
- 'DESCRIPTOR' : _GETTREERESPONSE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.GetTreeResponse)
- })
-_sym_db.RegisterMessage(GetTreeResponse)
-
-GetCapabilitiesRequest = _reflection.GeneratedProtocolMessageType('GetCapabilitiesRequest', (_message.Message,), {
- 'DESCRIPTOR' : _GETCAPABILITIESREQUEST,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.GetCapabilitiesRequest)
- })
-_sym_db.RegisterMessage(GetCapabilitiesRequest)
-
-ServerCapabilities = _reflection.GeneratedProtocolMessageType('ServerCapabilities', (_message.Message,), {
- 'DESCRIPTOR' : _SERVERCAPABILITIES,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.ServerCapabilities)
- })
-_sym_db.RegisterMessage(ServerCapabilities)
-
-DigestFunction = _reflection.GeneratedProtocolMessageType('DigestFunction', (_message.Message,), {
- 'DESCRIPTOR' : _DIGESTFUNCTION,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.DigestFunction)
- })
-_sym_db.RegisterMessage(DigestFunction)
-
-ActionCacheUpdateCapabilities = _reflection.GeneratedProtocolMessageType('ActionCacheUpdateCapabilities', (_message.Message,), {
- 'DESCRIPTOR' : _ACTIONCACHEUPDATECAPABILITIES,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.ActionCacheUpdateCapabilities)
- })
-_sym_db.RegisterMessage(ActionCacheUpdateCapabilities)
-
-PriorityCapabilities = _reflection.GeneratedProtocolMessageType('PriorityCapabilities', (_message.Message,), {
-
- 'PriorityRange' : _reflection.GeneratedProtocolMessageType('PriorityRange', (_message.Message,), {
- 'DESCRIPTOR' : _PRIORITYCAPABILITIES_PRIORITYRANGE,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.PriorityCapabilities.PriorityRange)
- })
- ,
- 'DESCRIPTOR' : _PRIORITYCAPABILITIES,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.PriorityCapabilities)
- })
-_sym_db.RegisterMessage(PriorityCapabilities)
-_sym_db.RegisterMessage(PriorityCapabilities.PriorityRange)
-
-SymlinkAbsolutePathStrategy = _reflection.GeneratedProtocolMessageType('SymlinkAbsolutePathStrategy', (_message.Message,), {
- 'DESCRIPTOR' : _SYMLINKABSOLUTEPATHSTRATEGY,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.SymlinkAbsolutePathStrategy)
- })
-_sym_db.RegisterMessage(SymlinkAbsolutePathStrategy)
-
-Compressor = _reflection.GeneratedProtocolMessageType('Compressor', (_message.Message,), {
- 'DESCRIPTOR' : _COMPRESSOR,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.Compressor)
- })
-_sym_db.RegisterMessage(Compressor)
-
-CacheCapabilities = _reflection.GeneratedProtocolMessageType('CacheCapabilities', (_message.Message,), {
- 'DESCRIPTOR' : _CACHECAPABILITIES,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.CacheCapabilities)
- })
-_sym_db.RegisterMessage(CacheCapabilities)
-
-ExecutionCapabilities = _reflection.GeneratedProtocolMessageType('ExecutionCapabilities', (_message.Message,), {
- 'DESCRIPTOR' : _EXECUTIONCAPABILITIES,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.ExecutionCapabilities)
- })
-_sym_db.RegisterMessage(ExecutionCapabilities)
-
-ToolDetails = _reflection.GeneratedProtocolMessageType('ToolDetails', (_message.Message,), {
- 'DESCRIPTOR' : _TOOLDETAILS,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.ToolDetails)
- })
-_sym_db.RegisterMessage(ToolDetails)
-
-RequestMetadata = _reflection.GeneratedProtocolMessageType('RequestMetadata', (_message.Message,), {
- 'DESCRIPTOR' : _REQUESTMETADATA,
- '__module__' : 'build.bazel.remote.execution.v2.remote_execution_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.RequestMetadata)
- })
-_sym_db.RegisterMessage(RequestMetadata)
-
-_EXECUTION = DESCRIPTOR.services_by_name['Execution']
-_ACTIONCACHE = DESCRIPTOR.services_by_name['ActionCache']
-_CONTENTADDRESSABLESTORAGE = DESCRIPTOR.services_by_name['ContentAddressableStorage']
-_CAPABILITIES = DESCRIPTOR.services_by_name['Capabilities']
-if _descriptor._USE_C_DESCRIPTORS == False:
-
- DESCRIPTOR._options = None
- DESCRIPTOR._serialized_options = b'\n\037build.bazel.remote.execution.v2B\024RemoteExecutionProtoP\001ZQgithub.com/bazelbuild/remote-apis/build/bazel/remote/execution/v2;remoteexecution\242\002\003REX\252\002\037Build.Bazel.Remote.Execution.V2'
- _COMMAND.fields_by_name['output_files']._options = None
- _COMMAND.fields_by_name['output_files']._serialized_options = b'\030\001'
- _COMMAND.fields_by_name['output_directories']._options = None
- _COMMAND.fields_by_name['output_directories']._serialized_options = b'\030\001'
- _COMMAND.fields_by_name['platform']._options = None
- _COMMAND.fields_by_name['platform']._serialized_options = b'\030\001'
- _ACTIONRESULT.fields_by_name['output_file_symlinks']._options = None
- _ACTIONRESULT.fields_by_name['output_file_symlinks']._serialized_options = b'\030\001'
- _ACTIONRESULT.fields_by_name['output_directory_symlinks']._options = None
- _ACTIONRESULT.fields_by_name['output_directory_symlinks']._serialized_options = b'\030\001'
- _EXECUTERESPONSE_SERVERLOGSENTRY._options = None
- _EXECUTERESPONSE_SERVERLOGSENTRY._serialized_options = b'8\001'
- _EXECUTION.methods_by_name['Execute']._options = None
- _EXECUTION.methods_by_name['Execute']._serialized_options = b'\202\323\344\223\002+\"&/v2/{instance_name=**}/actions:execute:\001*'
- _EXECUTION.methods_by_name['WaitExecution']._options = None
- _EXECUTION.methods_by_name['WaitExecution']._serialized_options = b'\202\323\344\223\002+\"&/v2/{name=operations/**}:waitExecution:\001*'
- _ACTIONCACHE.methods_by_name['GetActionResult']._options = None
- _ACTIONCACHE.methods_by_name['GetActionResult']._serialized_options = b'\202\323\344\223\002V\022T/v2/{instance_name=**}/actionResults/{action_digest.hash}/{action_digest.size_bytes}'
- _ACTIONCACHE.methods_by_name['UpdateActionResult']._options = None
- _ACTIONCACHE.methods_by_name['UpdateActionResult']._serialized_options = b'\202\323\344\223\002e\032T/v2/{instance_name=**}/actionResults/{action_digest.hash}/{action_digest.size_bytes}:\raction_result'
- _CONTENTADDRESSABLESTORAGE.methods_by_name['FindMissingBlobs']._options = None
- _CONTENTADDRESSABLESTORAGE.methods_by_name['FindMissingBlobs']._serialized_options = b'\202\323\344\223\002-\"(/v2/{instance_name=**}/blobs:findMissing:\001*'
- _CONTENTADDRESSABLESTORAGE.methods_by_name['BatchUpdateBlobs']._options = None
- _CONTENTADDRESSABLESTORAGE.methods_by_name['BatchUpdateBlobs']._serialized_options = b'\202\323\344\223\002-\"(/v2/{instance_name=**}/blobs:batchUpdate:\001*'
- _CONTENTADDRESSABLESTORAGE.methods_by_name['BatchReadBlobs']._options = None
- _CONTENTADDRESSABLESTORAGE.methods_by_name['BatchReadBlobs']._serialized_options = b'\202\323\344\223\002+\"&/v2/{instance_name=**}/blobs:batchRead:\001*'
- _CONTENTADDRESSABLESTORAGE.methods_by_name['GetTree']._options = None
- _CONTENTADDRESSABLESTORAGE.methods_by_name['GetTree']._serialized_options = b'\202\323\344\223\002R\022P/v2/{instance_name=**}/blobs/{root_digest.hash}/{root_digest.size_bytes}:getTree'
- _CAPABILITIES.methods_by_name['GetCapabilities']._options = None
- _CAPABILITIES.methods_by_name['GetCapabilities']._serialized_options = b'\202\323\344\223\002%\022#/v2/{instance_name=**}/capabilities'
- _ACTION._serialized_start=341
- _ACTION._serialized_end=635
- _COMMAND._serialized_start=638
- _COMMAND._serialized_end=1196
- _COMMAND_ENVIRONMENTVARIABLE._serialized_start=1062
- _COMMAND_ENVIRONMENTVARIABLE._serialized_end=1112
- _COMMAND_OUTPUTDIRECTORYFORMAT._serialized_start=1114
- _COMMAND_OUTPUTDIRECTORYFORMAT._serialized_end=1196
- _PLATFORM._serialized_start=1198
- _PLATFORM._serialized_end=1321
- _PLATFORM_PROPERTY._serialized_start=1282
- _PLATFORM_PROPERTY._serialized_end=1321
- _DIRECTORY._serialized_start=1324
- _DIRECTORY._serialized_end=1606
- _NODEPROPERTY._serialized_start=1608
- _NODEPROPERTY._serialized_end=1651
- _NODEPROPERTIES._serialized_start=1654
- _NODEPROPERTIES._serialized_end=1829
- _FILENODE._serialized_start=1832
- _FILENODE._serialized_end=2022
- _DIRECTORYNODE._serialized_start=2024
- _DIRECTORYNODE._serialized_end=2110
- _SYMLINKNODE._serialized_start=2112
- _SYMLINKNODE._serialized_end=2235
- _DIGEST._serialized_start=2237
- _DIGEST._serialized_end=2279
- _EXECUTEDACTIONMETADATA._serialized_start=2282
- _EXECUTEDACTIONMETADATA._serialized_end=3015
- _ACTIONRESULT._serialized_start=3018
- _ACTIONRESULT._serialized_end=3697
- _OUTPUTFILE._serialized_start=3700
- _OUTPUTFILE._serialized_end=3910
- _TREE._serialized_start=3912
- _TREE._serialized_end=4038
- _OUTPUTDIRECTORY._serialized_start=4041
- _OUTPUTDIRECTORY._serialized_end=4245
- _OUTPUTSYMLINK._serialized_start=4247
- _OUTPUTSYMLINK._serialized_end=4372
- _EXECUTIONPOLICY._serialized_start=4374
- _EXECUTIONPOLICY._serialized_end=4409
- _RESULTSCACHEPOLICY._serialized_start=4411
- _RESULTSCACHEPOLICY._serialized_end=4449
- _EXECUTEREQUEST._serialized_start=4452
- _EXECUTEREQUEST._serialized_end=4914
- _LOGFILE._serialized_start=4916
- _LOGFILE._serialized_end=5006
- _EXECUTERESPONSE._serialized_start=5009
- _EXECUTERESPONSE._serialized_end=5345
- _EXECUTERESPONSE_SERVERLOGSENTRY._serialized_start=5254
- _EXECUTERESPONSE_SERVERLOGSENTRY._serialized_end=5345
- _EXECUTIONSTAGE._serialized_start=5347
- _EXECUTIONSTAGE._serialized_end=5444
- _EXECUTIONSTAGE_VALUE._serialized_start=5365
- _EXECUTIONSTAGE_VALUE._serialized_end=5444
- _EXECUTEOPERATIONMETADATA._serialized_start=5447
- _EXECUTEOPERATIONMETADATA._serialized_end=5756
- _WAITEXECUTIONREQUEST._serialized_start=5758
- _WAITEXECUTIONREQUEST._serialized_end=5794
- _GETACTIONRESULTREQUEST._serialized_start=5797
- _GETACTIONRESULTREQUEST._serialized_end=6063
- _UPDATEACTIONRESULTREQUEST._serialized_start=6066
- _UPDATEACTIONRESULTREQUEST._serialized_end=6413
- _FINDMISSINGBLOBSREQUEST._serialized_start=6416
- _FINDMISSINGBLOBSREQUEST._serialized_end=6607
- _FINDMISSINGBLOBSRESPONSE._serialized_start=6609
- _FINDMISSINGBLOBSRESPONSE._serialized_end=6706
- _BATCHUPDATEBLOBSREQUEST._serialized_start=6709
- _BATCHUPDATEBLOBSREQUEST._serialized_end=7075
- _BATCHUPDATEBLOBSREQUEST_REQUEST._serialized_start=6924
- _BATCHUPDATEBLOBSREQUEST_REQUEST._serialized_end=7075
- _BATCHUPDATEBLOBSRESPONSE._serialized_start=7078
- _BATCHUPDATEBLOBSRESPONSE._serialized_end=7296
- _BATCHUPDATEBLOBSRESPONSE_RESPONSE._serialized_start=7193
- _BATCHUPDATEBLOBSRESPONSE_RESPONSE._serialized_end=7296
- _BATCHREADBLOBSREQUEST._serialized_start=7299
- _BATCHREADBLOBSREQUEST._serialized_end=7566
- _BATCHREADBLOBSRESPONSE._serialized_start=7569
- _BATCHREADBLOBSRESPONSE._serialized_end=7869
- _BATCHREADBLOBSRESPONSE_RESPONSE._serialized_start=7681
- _BATCHREADBLOBSRESPONSE_RESPONSE._serialized_end=7869
- _GETTREEREQUEST._serialized_start=7872
- _GETTREEREQUEST._serialized_end=8092
- _GETTREERESPONSE._serialized_start=8094
- _GETTREERESPONSE._serialized_end=8201
- _GETCAPABILITIESREQUEST._serialized_start=8203
- _GETCAPABILITIESREQUEST._serialized_end=8250
- _SERVERCAPABILITIES._serialized_start=8253
- _SERVERCAPABILITIES._serialized_end=8608
- _DIGESTFUNCTION._serialized_start=8611
- _DIGESTFUNCTION._serialized_end=8754
- _DIGESTFUNCTION_VALUE._serialized_start=8629
- _DIGESTFUNCTION_VALUE._serialized_end=8754
- _ACTIONCACHEUPDATECAPABILITIES._serialized_start=8756
- _ACTIONCACHEUPDATECAPABILITIES._serialized_end=8811
- _PRIORITYCAPABILITIES._serialized_start=8814
- _PRIORITYCAPABILITIES._serialized_end=8986
- _PRIORITYCAPABILITIES_PRIORITYRANGE._serialized_start=8927
- _PRIORITYCAPABILITIES_PRIORITYRANGE._serialized_end=8986
- _SYMLINKABSOLUTEPATHSTRATEGY._serialized_start=8988
- _SYMLINKABSOLUTEPATHSTRATEGY._serialized_end=9068
- _SYMLINKABSOLUTEPATHSTRATEGY_VALUE._serialized_start=9019
- _SYMLINKABSOLUTEPATHSTRATEGY_VALUE._serialized_end=9068
- _COMPRESSOR._serialized_start=9070
- _COMPRESSOR._serialized_end=9140
- _COMPRESSOR_VALUE._serialized_start=9084
- _COMPRESSOR_VALUE._serialized_end=9140
- _CACHECAPABILITIES._serialized_start=9143
- _CACHECAPABILITIES._serialized_end=9762
- _EXECUTIONCAPABILITIES._serialized_start=9765
- _EXECUTIONCAPABILITIES._serialized_end=10102
- _TOOLDETAILS._serialized_start=10104
- _TOOLDETAILS._serialized_end=10158
- _REQUESTMETADATA._serialized_start=10161
- _REQUESTMETADATA._serialized_end=10398
- _EXECUTION._serialized_start=10401
- _EXECUTION._serialized_end=10714
- _ACTIONCACHE._serialized_start=10717
- _ACTIONCACHE._serialized_end=11187
- _CONTENTADDRESSABLESTORAGE._serialized_start=11190
- _CONTENTADDRESSABLESTORAGE._serialized_end=11985
- _CAPABILITIES._serialized_start=11988
- _CAPABILITIES._serialized_end=12177
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'build.bazel.remote.execution.v2.remote_execution_pb2', _globals)
+if not _descriptor._USE_C_DESCRIPTORS:
+ _globals['DESCRIPTOR']._loaded_options = None
+ _globals['DESCRIPTOR']._serialized_options = b'\n\037build.bazel.remote.execution.v2B\024RemoteExecutionProtoP\001ZQgithub.com/bazelbuild/remote-apis/build/bazel/remote/execution/v2;remoteexecution\242\002\003REX\252\002\037Build.Bazel.Remote.Execution.V2'
+ _globals['_COMMAND'].fields_by_name['output_files']._loaded_options = None
+ _globals['_COMMAND'].fields_by_name['output_files']._serialized_options = b'\030\001'
+ _globals['_COMMAND'].fields_by_name['output_directories']._loaded_options = None
+ _globals['_COMMAND'].fields_by_name['output_directories']._serialized_options = b'\030\001'
+ _globals['_COMMAND'].fields_by_name['platform']._loaded_options = None
+ _globals['_COMMAND'].fields_by_name['platform']._serialized_options = b'\030\001'
+ _globals['_ACTIONRESULT'].fields_by_name['output_file_symlinks']._loaded_options = None
+ _globals['_ACTIONRESULT'].fields_by_name['output_file_symlinks']._serialized_options = b'\030\001'
+ _globals['_ACTIONRESULT'].fields_by_name['output_directory_symlinks']._loaded_options = None
+ _globals['_ACTIONRESULT'].fields_by_name['output_directory_symlinks']._serialized_options = b'\030\001'
+ _globals['_EXECUTERESPONSE_SERVERLOGSENTRY']._loaded_options = None
+ _globals['_EXECUTERESPONSE_SERVERLOGSENTRY']._serialized_options = b'8\001'
+ _globals['_EXECUTION'].methods_by_name['Execute']._loaded_options = None
+ _globals['_EXECUTION'].methods_by_name['Execute']._serialized_options = b'\202\323\344\223\002+\"&/v2/{instance_name=**}/actions:execute:\001*'
+ _globals['_EXECUTION'].methods_by_name['WaitExecution']._loaded_options = None
+ _globals['_EXECUTION'].methods_by_name['WaitExecution']._serialized_options = b'\202\323\344\223\002+\"&/v2/{name=operations/**}:waitExecution:\001*'
+ _globals['_ACTIONCACHE'].methods_by_name['GetActionResult']._loaded_options = None
+ _globals['_ACTIONCACHE'].methods_by_name['GetActionResult']._serialized_options = b'\202\323\344\223\002V\022T/v2/{instance_name=**}/actionResults/{action_digest.hash}/{action_digest.size_bytes}'
+ _globals['_ACTIONCACHE'].methods_by_name['UpdateActionResult']._loaded_options = None
+ _globals['_ACTIONCACHE'].methods_by_name['UpdateActionResult']._serialized_options = b'\202\323\344\223\002e\032T/v2/{instance_name=**}/actionResults/{action_digest.hash}/{action_digest.size_bytes}:\raction_result'
+ _globals['_CONTENTADDRESSABLESTORAGE'].methods_by_name['FindMissingBlobs']._loaded_options = None
+ _globals['_CONTENTADDRESSABLESTORAGE'].methods_by_name['FindMissingBlobs']._serialized_options = b'\202\323\344\223\002-\"(/v2/{instance_name=**}/blobs:findMissing:\001*'
+ _globals['_CONTENTADDRESSABLESTORAGE'].methods_by_name['BatchUpdateBlobs']._loaded_options = None
+ _globals['_CONTENTADDRESSABLESTORAGE'].methods_by_name['BatchUpdateBlobs']._serialized_options = b'\202\323\344\223\002-\"(/v2/{instance_name=**}/blobs:batchUpdate:\001*'
+ _globals['_CONTENTADDRESSABLESTORAGE'].methods_by_name['BatchReadBlobs']._loaded_options = None
+ _globals['_CONTENTADDRESSABLESTORAGE'].methods_by_name['BatchReadBlobs']._serialized_options = b'\202\323\344\223\002+\"&/v2/{instance_name=**}/blobs:batchRead:\001*'
+ _globals['_CONTENTADDRESSABLESTORAGE'].methods_by_name['GetTree']._loaded_options = None
+ _globals['_CONTENTADDRESSABLESTORAGE'].methods_by_name['GetTree']._serialized_options = b'\202\323\344\223\002R\022P/v2/{instance_name=**}/blobs/{root_digest.hash}/{root_digest.size_bytes}:getTree'
+ _globals['_CAPABILITIES'].methods_by_name['GetCapabilities']._loaded_options = None
+ _globals['_CAPABILITIES'].methods_by_name['GetCapabilities']._serialized_options = b'\202\323\344\223\002%\022#/v2/{instance_name=**}/capabilities'
+ _globals['_ACTION']._serialized_start=341
+ _globals['_ACTION']._serialized_end=635
+ _globals['_COMMAND']._serialized_start=638
+ _globals['_COMMAND']._serialized_end=1196
+ _globals['_COMMAND_ENVIRONMENTVARIABLE']._serialized_start=1062
+ _globals['_COMMAND_ENVIRONMENTVARIABLE']._serialized_end=1112
+ _globals['_COMMAND_OUTPUTDIRECTORYFORMAT']._serialized_start=1114
+ _globals['_COMMAND_OUTPUTDIRECTORYFORMAT']._serialized_end=1196
+ _globals['_PLATFORM']._serialized_start=1198
+ _globals['_PLATFORM']._serialized_end=1321
+ _globals['_PLATFORM_PROPERTY']._serialized_start=1282
+ _globals['_PLATFORM_PROPERTY']._serialized_end=1321
+ _globals['_DIRECTORY']._serialized_start=1324
+ _globals['_DIRECTORY']._serialized_end=1606
+ _globals['_NODEPROPERTY']._serialized_start=1608
+ _globals['_NODEPROPERTY']._serialized_end=1651
+ _globals['_NODEPROPERTIES']._serialized_start=1654
+ _globals['_NODEPROPERTIES']._serialized_end=1829
+ _globals['_FILENODE']._serialized_start=1832
+ _globals['_FILENODE']._serialized_end=2022
+ _globals['_DIRECTORYNODE']._serialized_start=2024
+ _globals['_DIRECTORYNODE']._serialized_end=2110
+ _globals['_SYMLINKNODE']._serialized_start=2112
+ _globals['_SYMLINKNODE']._serialized_end=2235
+ _globals['_DIGEST']._serialized_start=2237
+ _globals['_DIGEST']._serialized_end=2279
+ _globals['_EXECUTEDACTIONMETADATA']._serialized_start=2282
+ _globals['_EXECUTEDACTIONMETADATA']._serialized_end=3015
+ _globals['_ACTIONRESULT']._serialized_start=3018
+ _globals['_ACTIONRESULT']._serialized_end=3697
+ _globals['_OUTPUTFILE']._serialized_start=3700
+ _globals['_OUTPUTFILE']._serialized_end=3910
+ _globals['_TREE']._serialized_start=3912
+ _globals['_TREE']._serialized_end=4038
+ _globals['_OUTPUTDIRECTORY']._serialized_start=4041
+ _globals['_OUTPUTDIRECTORY']._serialized_end=4245
+ _globals['_OUTPUTSYMLINK']._serialized_start=4247
+ _globals['_OUTPUTSYMLINK']._serialized_end=4372
+ _globals['_EXECUTIONPOLICY']._serialized_start=4374
+ _globals['_EXECUTIONPOLICY']._serialized_end=4409
+ _globals['_RESULTSCACHEPOLICY']._serialized_start=4411
+ _globals['_RESULTSCACHEPOLICY']._serialized_end=4449
+ _globals['_EXECUTEREQUEST']._serialized_start=4452
+ _globals['_EXECUTEREQUEST']._serialized_end=4914
+ _globals['_LOGFILE']._serialized_start=4916
+ _globals['_LOGFILE']._serialized_end=5006
+ _globals['_EXECUTERESPONSE']._serialized_start=5009
+ _globals['_EXECUTERESPONSE']._serialized_end=5345
+ _globals['_EXECUTERESPONSE_SERVERLOGSENTRY']._serialized_start=5254
+ _globals['_EXECUTERESPONSE_SERVERLOGSENTRY']._serialized_end=5345
+ _globals['_EXECUTIONSTAGE']._serialized_start=5347
+ _globals['_EXECUTIONSTAGE']._serialized_end=5444
+ _globals['_EXECUTIONSTAGE_VALUE']._serialized_start=5365
+ _globals['_EXECUTIONSTAGE_VALUE']._serialized_end=5444
+ _globals['_EXECUTEOPERATIONMETADATA']._serialized_start=5447
+ _globals['_EXECUTEOPERATIONMETADATA']._serialized_end=5756
+ _globals['_WAITEXECUTIONREQUEST']._serialized_start=5758
+ _globals['_WAITEXECUTIONREQUEST']._serialized_end=5794
+ _globals['_GETACTIONRESULTREQUEST']._serialized_start=5797
+ _globals['_GETACTIONRESULTREQUEST']._serialized_end=6063
+ _globals['_UPDATEACTIONRESULTREQUEST']._serialized_start=6066
+ _globals['_UPDATEACTIONRESULTREQUEST']._serialized_end=6413
+ _globals['_FINDMISSINGBLOBSREQUEST']._serialized_start=6416
+ _globals['_FINDMISSINGBLOBSREQUEST']._serialized_end=6607
+ _globals['_FINDMISSINGBLOBSRESPONSE']._serialized_start=6609
+ _globals['_FINDMISSINGBLOBSRESPONSE']._serialized_end=6706
+ _globals['_BATCHUPDATEBLOBSREQUEST']._serialized_start=6709
+ _globals['_BATCHUPDATEBLOBSREQUEST']._serialized_end=7075
+ _globals['_BATCHUPDATEBLOBSREQUEST_REQUEST']._serialized_start=6924
+ _globals['_BATCHUPDATEBLOBSREQUEST_REQUEST']._serialized_end=7075
+ _globals['_BATCHUPDATEBLOBSRESPONSE']._serialized_start=7078
+ _globals['_BATCHUPDATEBLOBSRESPONSE']._serialized_end=7296
+ _globals['_BATCHUPDATEBLOBSRESPONSE_RESPONSE']._serialized_start=7193
+ _globals['_BATCHUPDATEBLOBSRESPONSE_RESPONSE']._serialized_end=7296
+ _globals['_BATCHREADBLOBSREQUEST']._serialized_start=7299
+ _globals['_BATCHREADBLOBSREQUEST']._serialized_end=7566
+ _globals['_BATCHREADBLOBSRESPONSE']._serialized_start=7569
+ _globals['_BATCHREADBLOBSRESPONSE']._serialized_end=7869
+ _globals['_BATCHREADBLOBSRESPONSE_RESPONSE']._serialized_start=7681
+ _globals['_BATCHREADBLOBSRESPONSE_RESPONSE']._serialized_end=7869
+ _globals['_GETTREEREQUEST']._serialized_start=7872
+ _globals['_GETTREEREQUEST']._serialized_end=8092
+ _globals['_GETTREERESPONSE']._serialized_start=8094
+ _globals['_GETTREERESPONSE']._serialized_end=8201
+ _globals['_GETCAPABILITIESREQUEST']._serialized_start=8203
+ _globals['_GETCAPABILITIESREQUEST']._serialized_end=8250
+ _globals['_SERVERCAPABILITIES']._serialized_start=8253
+ _globals['_SERVERCAPABILITIES']._serialized_end=8608
+ _globals['_DIGESTFUNCTION']._serialized_start=8611
+ _globals['_DIGESTFUNCTION']._serialized_end=8754
+ _globals['_DIGESTFUNCTION_VALUE']._serialized_start=8629
+ _globals['_DIGESTFUNCTION_VALUE']._serialized_end=8754
+ _globals['_ACTIONCACHEUPDATECAPABILITIES']._serialized_start=8756
+ _globals['_ACTIONCACHEUPDATECAPABILITIES']._serialized_end=8811
+ _globals['_PRIORITYCAPABILITIES']._serialized_start=8814
+ _globals['_PRIORITYCAPABILITIES']._serialized_end=8986
+ _globals['_PRIORITYCAPABILITIES_PRIORITYRANGE']._serialized_start=8927
+ _globals['_PRIORITYCAPABILITIES_PRIORITYRANGE']._serialized_end=8986
+ _globals['_SYMLINKABSOLUTEPATHSTRATEGY']._serialized_start=8988
+ _globals['_SYMLINKABSOLUTEPATHSTRATEGY']._serialized_end=9068
+ _globals['_SYMLINKABSOLUTEPATHSTRATEGY_VALUE']._serialized_start=9019
+ _globals['_SYMLINKABSOLUTEPATHSTRATEGY_VALUE']._serialized_end=9068
+ _globals['_COMPRESSOR']._serialized_start=9070
+ _globals['_COMPRESSOR']._serialized_end=9140
+ _globals['_COMPRESSOR_VALUE']._serialized_start=9084
+ _globals['_COMPRESSOR_VALUE']._serialized_end=9140
+ _globals['_CACHECAPABILITIES']._serialized_start=9143
+ _globals['_CACHECAPABILITIES']._serialized_end=9762
+ _globals['_EXECUTIONCAPABILITIES']._serialized_start=9765
+ _globals['_EXECUTIONCAPABILITIES']._serialized_end=10102
+ _globals['_TOOLDETAILS']._serialized_start=10104
+ _globals['_TOOLDETAILS']._serialized_end=10158
+ _globals['_REQUESTMETADATA']._serialized_start=10161
+ _globals['_REQUESTMETADATA']._serialized_end=10398
+ _globals['_EXECUTION']._serialized_start=10401
+ _globals['_EXECUTION']._serialized_end=10714
+ _globals['_ACTIONCACHE']._serialized_start=10717
+ _globals['_ACTIONCACHE']._serialized_end=11187
+ _globals['_CONTENTADDRESSABLESTORAGE']._serialized_start=11190
+ _globals['_CONTENTADDRESSABLESTORAGE']._serialized_end=11985
+ _globals['_CAPABILITIES']._serialized_start=11988
+ _globals['_CAPABILITIES']._serialized_end=12177
# @@protoc_insertion_point(module_scope)
diff --git a/src/buildstream/_protos/build/bazel/remote/execution/v2/remote_execution_pb2.pyi b/src/buildstream/_protos/build/bazel/remote/execution/v2/remote_execution_pb2.pyi
new file mode 100644
index 000000000..14badbac9
--- /dev/null
+++ b/src/buildstream/_protos/build/bazel/remote/execution/v2/remote_execution_pb2.pyi
@@ -0,0 +1,624 @@
+from build.bazel.semver import semver_pb2 as _semver_pb2
+from google.api import annotations_pb2 as _annotations_pb2
+from google.longrunning import operations_pb2 as _operations_pb2
+from google.protobuf import any_pb2 as _any_pb2
+from google.protobuf import duration_pb2 as _duration_pb2
+from google.protobuf import timestamp_pb2 as _timestamp_pb2
+from google.protobuf import wrappers_pb2 as _wrappers_pb2
+from google.rpc import status_pb2 as _status_pb2
+from google.protobuf.internal import containers as _containers
+from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
+
+DESCRIPTOR: _descriptor.FileDescriptor
+
+class Action(_message.Message):
+ __slots__ = ("command_digest", "input_root_digest", "timeout", "do_not_cache", "salt", "platform")
+ COMMAND_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ INPUT_ROOT_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ TIMEOUT_FIELD_NUMBER: _ClassVar[int]
+ DO_NOT_CACHE_FIELD_NUMBER: _ClassVar[int]
+ SALT_FIELD_NUMBER: _ClassVar[int]
+ PLATFORM_FIELD_NUMBER: _ClassVar[int]
+ command_digest: Digest
+ input_root_digest: Digest
+ timeout: _duration_pb2.Duration
+ do_not_cache: bool
+ salt: bytes
+ platform: Platform
+ def __init__(self, command_digest: _Optional[_Union[Digest, _Mapping]] = ..., input_root_digest: _Optional[_Union[Digest, _Mapping]] = ..., timeout: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., do_not_cache: bool = ..., salt: _Optional[bytes] = ..., platform: _Optional[_Union[Platform, _Mapping]] = ...) -> None: ...
+
+class Command(_message.Message):
+ __slots__ = ("arguments", "environment_variables", "output_files", "output_directories", "output_paths", "platform", "working_directory", "output_node_properties", "output_directory_format")
+ class OutputDirectoryFormat(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
+ __slots__ = ()
+ TREE_ONLY: _ClassVar[Command.OutputDirectoryFormat]
+ DIRECTORY_ONLY: _ClassVar[Command.OutputDirectoryFormat]
+ TREE_AND_DIRECTORY: _ClassVar[Command.OutputDirectoryFormat]
+ TREE_ONLY: Command.OutputDirectoryFormat
+ DIRECTORY_ONLY: Command.OutputDirectoryFormat
+ TREE_AND_DIRECTORY: Command.OutputDirectoryFormat
+ class EnvironmentVariable(_message.Message):
+ __slots__ = ("name", "value")
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ VALUE_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ value: str
+ def __init__(self, name: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
+ ARGUMENTS_FIELD_NUMBER: _ClassVar[int]
+ ENVIRONMENT_VARIABLES_FIELD_NUMBER: _ClassVar[int]
+ OUTPUT_FILES_FIELD_NUMBER: _ClassVar[int]
+ OUTPUT_DIRECTORIES_FIELD_NUMBER: _ClassVar[int]
+ OUTPUT_PATHS_FIELD_NUMBER: _ClassVar[int]
+ PLATFORM_FIELD_NUMBER: _ClassVar[int]
+ WORKING_DIRECTORY_FIELD_NUMBER: _ClassVar[int]
+ OUTPUT_NODE_PROPERTIES_FIELD_NUMBER: _ClassVar[int]
+ OUTPUT_DIRECTORY_FORMAT_FIELD_NUMBER: _ClassVar[int]
+ arguments: _containers.RepeatedScalarFieldContainer[str]
+ environment_variables: _containers.RepeatedCompositeFieldContainer[Command.EnvironmentVariable]
+ output_files: _containers.RepeatedScalarFieldContainer[str]
+ output_directories: _containers.RepeatedScalarFieldContainer[str]
+ output_paths: _containers.RepeatedScalarFieldContainer[str]
+ platform: Platform
+ working_directory: str
+ output_node_properties: _containers.RepeatedScalarFieldContainer[str]
+ output_directory_format: Command.OutputDirectoryFormat
+ def __init__(self, arguments: _Optional[_Iterable[str]] = ..., environment_variables: _Optional[_Iterable[_Union[Command.EnvironmentVariable, _Mapping]]] = ..., output_files: _Optional[_Iterable[str]] = ..., output_directories: _Optional[_Iterable[str]] = ..., output_paths: _Optional[_Iterable[str]] = ..., platform: _Optional[_Union[Platform, _Mapping]] = ..., working_directory: _Optional[str] = ..., output_node_properties: _Optional[_Iterable[str]] = ..., output_directory_format: _Optional[_Union[Command.OutputDirectoryFormat, str]] = ...) -> None: ...
+
+class Platform(_message.Message):
+ __slots__ = ("properties",)
+ class Property(_message.Message):
+ __slots__ = ("name", "value")
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ VALUE_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ value: str
+ def __init__(self, name: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
+ PROPERTIES_FIELD_NUMBER: _ClassVar[int]
+ properties: _containers.RepeatedCompositeFieldContainer[Platform.Property]
+ def __init__(self, properties: _Optional[_Iterable[_Union[Platform.Property, _Mapping]]] = ...) -> None: ...
+
+class Directory(_message.Message):
+ __slots__ = ("files", "directories", "symlinks", "node_properties")
+ FILES_FIELD_NUMBER: _ClassVar[int]
+ DIRECTORIES_FIELD_NUMBER: _ClassVar[int]
+ SYMLINKS_FIELD_NUMBER: _ClassVar[int]
+ NODE_PROPERTIES_FIELD_NUMBER: _ClassVar[int]
+ files: _containers.RepeatedCompositeFieldContainer[FileNode]
+ directories: _containers.RepeatedCompositeFieldContainer[DirectoryNode]
+ symlinks: _containers.RepeatedCompositeFieldContainer[SymlinkNode]
+ node_properties: NodeProperties
+ def __init__(self, files: _Optional[_Iterable[_Union[FileNode, _Mapping]]] = ..., directories: _Optional[_Iterable[_Union[DirectoryNode, _Mapping]]] = ..., symlinks: _Optional[_Iterable[_Union[SymlinkNode, _Mapping]]] = ..., node_properties: _Optional[_Union[NodeProperties, _Mapping]] = ...) -> None: ...
+
+class NodeProperty(_message.Message):
+ __slots__ = ("name", "value")
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ VALUE_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ value: str
+ def __init__(self, name: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
+
+class NodeProperties(_message.Message):
+ __slots__ = ("properties", "mtime", "unix_mode")
+ PROPERTIES_FIELD_NUMBER: _ClassVar[int]
+ MTIME_FIELD_NUMBER: _ClassVar[int]
+ UNIX_MODE_FIELD_NUMBER: _ClassVar[int]
+ properties: _containers.RepeatedCompositeFieldContainer[NodeProperty]
+ mtime: _timestamp_pb2.Timestamp
+ unix_mode: _wrappers_pb2.UInt32Value
+ def __init__(self, properties: _Optional[_Iterable[_Union[NodeProperty, _Mapping]]] = ..., mtime: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., unix_mode: _Optional[_Union[_wrappers_pb2.UInt32Value, _Mapping]] = ...) -> None: ...
+
+class FileNode(_message.Message):
+ __slots__ = ("name", "digest", "is_executable", "node_properties")
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FIELD_NUMBER: _ClassVar[int]
+ IS_EXECUTABLE_FIELD_NUMBER: _ClassVar[int]
+ NODE_PROPERTIES_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ digest: Digest
+ is_executable: bool
+ node_properties: NodeProperties
+ def __init__(self, name: _Optional[str] = ..., digest: _Optional[_Union[Digest, _Mapping]] = ..., is_executable: bool = ..., node_properties: _Optional[_Union[NodeProperties, _Mapping]] = ...) -> None: ...
+
+class DirectoryNode(_message.Message):
+ __slots__ = ("name", "digest")
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ digest: Digest
+ def __init__(self, name: _Optional[str] = ..., digest: _Optional[_Union[Digest, _Mapping]] = ...) -> None: ...
+
+class SymlinkNode(_message.Message):
+ __slots__ = ("name", "target", "node_properties")
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ TARGET_FIELD_NUMBER: _ClassVar[int]
+ NODE_PROPERTIES_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ target: str
+ node_properties: NodeProperties
+ def __init__(self, name: _Optional[str] = ..., target: _Optional[str] = ..., node_properties: _Optional[_Union[NodeProperties, _Mapping]] = ...) -> None: ...
+
+class Digest(_message.Message):
+ __slots__ = ("hash", "size_bytes")
+ HASH_FIELD_NUMBER: _ClassVar[int]
+ SIZE_BYTES_FIELD_NUMBER: _ClassVar[int]
+ hash: str
+ size_bytes: int
+ def __init__(self, hash: _Optional[str] = ..., size_bytes: _Optional[int] = ...) -> None: ...
+
+class ExecutedActionMetadata(_message.Message):
+ __slots__ = ("worker", "queued_timestamp", "worker_start_timestamp", "worker_completed_timestamp", "input_fetch_start_timestamp", "input_fetch_completed_timestamp", "execution_start_timestamp", "execution_completed_timestamp", "virtual_execution_duration", "output_upload_start_timestamp", "output_upload_completed_timestamp", "auxiliary_metadata")
+ WORKER_FIELD_NUMBER: _ClassVar[int]
+ QUEUED_TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
+ WORKER_START_TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
+ WORKER_COMPLETED_TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
+ INPUT_FETCH_START_TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
+ INPUT_FETCH_COMPLETED_TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
+ EXECUTION_START_TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
+ EXECUTION_COMPLETED_TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
+ VIRTUAL_EXECUTION_DURATION_FIELD_NUMBER: _ClassVar[int]
+ OUTPUT_UPLOAD_START_TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
+ OUTPUT_UPLOAD_COMPLETED_TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
+ AUXILIARY_METADATA_FIELD_NUMBER: _ClassVar[int]
+ worker: str
+ queued_timestamp: _timestamp_pb2.Timestamp
+ worker_start_timestamp: _timestamp_pb2.Timestamp
+ worker_completed_timestamp: _timestamp_pb2.Timestamp
+ input_fetch_start_timestamp: _timestamp_pb2.Timestamp
+ input_fetch_completed_timestamp: _timestamp_pb2.Timestamp
+ execution_start_timestamp: _timestamp_pb2.Timestamp
+ execution_completed_timestamp: _timestamp_pb2.Timestamp
+ virtual_execution_duration: _duration_pb2.Duration
+ output_upload_start_timestamp: _timestamp_pb2.Timestamp
+ output_upload_completed_timestamp: _timestamp_pb2.Timestamp
+ auxiliary_metadata: _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]
+ def __init__(self, worker: _Optional[str] = ..., queued_timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., worker_start_timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., worker_completed_timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., input_fetch_start_timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., input_fetch_completed_timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., execution_start_timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., execution_completed_timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., virtual_execution_duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., output_upload_start_timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., output_upload_completed_timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., auxiliary_metadata: _Optional[_Iterable[_Union[_any_pb2.Any, _Mapping]]] = ...) -> None: ...
+
+class ActionResult(_message.Message):
+ __slots__ = ("output_files", "output_file_symlinks", "output_symlinks", "output_directories", "output_directory_symlinks", "exit_code", "stdout_raw", "stdout_digest", "stderr_raw", "stderr_digest", "execution_metadata")
+ OUTPUT_FILES_FIELD_NUMBER: _ClassVar[int]
+ OUTPUT_FILE_SYMLINKS_FIELD_NUMBER: _ClassVar[int]
+ OUTPUT_SYMLINKS_FIELD_NUMBER: _ClassVar[int]
+ OUTPUT_DIRECTORIES_FIELD_NUMBER: _ClassVar[int]
+ OUTPUT_DIRECTORY_SYMLINKS_FIELD_NUMBER: _ClassVar[int]
+ EXIT_CODE_FIELD_NUMBER: _ClassVar[int]
+ STDOUT_RAW_FIELD_NUMBER: _ClassVar[int]
+ STDOUT_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ STDERR_RAW_FIELD_NUMBER: _ClassVar[int]
+ STDERR_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ EXECUTION_METADATA_FIELD_NUMBER: _ClassVar[int]
+ output_files: _containers.RepeatedCompositeFieldContainer[OutputFile]
+ output_file_symlinks: _containers.RepeatedCompositeFieldContainer[OutputSymlink]
+ output_symlinks: _containers.RepeatedCompositeFieldContainer[OutputSymlink]
+ output_directories: _containers.RepeatedCompositeFieldContainer[OutputDirectory]
+ output_directory_symlinks: _containers.RepeatedCompositeFieldContainer[OutputSymlink]
+ exit_code: int
+ stdout_raw: bytes
+ stdout_digest: Digest
+ stderr_raw: bytes
+ stderr_digest: Digest
+ execution_metadata: ExecutedActionMetadata
+ def __init__(self, output_files: _Optional[_Iterable[_Union[OutputFile, _Mapping]]] = ..., output_file_symlinks: _Optional[_Iterable[_Union[OutputSymlink, _Mapping]]] = ..., output_symlinks: _Optional[_Iterable[_Union[OutputSymlink, _Mapping]]] = ..., output_directories: _Optional[_Iterable[_Union[OutputDirectory, _Mapping]]] = ..., output_directory_symlinks: _Optional[_Iterable[_Union[OutputSymlink, _Mapping]]] = ..., exit_code: _Optional[int] = ..., stdout_raw: _Optional[bytes] = ..., stdout_digest: _Optional[_Union[Digest, _Mapping]] = ..., stderr_raw: _Optional[bytes] = ..., stderr_digest: _Optional[_Union[Digest, _Mapping]] = ..., execution_metadata: _Optional[_Union[ExecutedActionMetadata, _Mapping]] = ...) -> None: ...
+
+class OutputFile(_message.Message):
+ __slots__ = ("path", "digest", "is_executable", "contents", "node_properties")
+ PATH_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FIELD_NUMBER: _ClassVar[int]
+ IS_EXECUTABLE_FIELD_NUMBER: _ClassVar[int]
+ CONTENTS_FIELD_NUMBER: _ClassVar[int]
+ NODE_PROPERTIES_FIELD_NUMBER: _ClassVar[int]
+ path: str
+ digest: Digest
+ is_executable: bool
+ contents: bytes
+ node_properties: NodeProperties
+ def __init__(self, path: _Optional[str] = ..., digest: _Optional[_Union[Digest, _Mapping]] = ..., is_executable: bool = ..., contents: _Optional[bytes] = ..., node_properties: _Optional[_Union[NodeProperties, _Mapping]] = ...) -> None: ...
+
+class Tree(_message.Message):
+ __slots__ = ("root", "children")
+ ROOT_FIELD_NUMBER: _ClassVar[int]
+ CHILDREN_FIELD_NUMBER: _ClassVar[int]
+ root: Directory
+ children: _containers.RepeatedCompositeFieldContainer[Directory]
+ def __init__(self, root: _Optional[_Union[Directory, _Mapping]] = ..., children: _Optional[_Iterable[_Union[Directory, _Mapping]]] = ...) -> None: ...
+
+class OutputDirectory(_message.Message):
+ __slots__ = ("path", "tree_digest", "is_topologically_sorted", "root_directory_digest")
+ PATH_FIELD_NUMBER: _ClassVar[int]
+ TREE_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ IS_TOPOLOGICALLY_SORTED_FIELD_NUMBER: _ClassVar[int]
+ ROOT_DIRECTORY_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ path: str
+ tree_digest: Digest
+ is_topologically_sorted: bool
+ root_directory_digest: Digest
+ def __init__(self, path: _Optional[str] = ..., tree_digest: _Optional[_Union[Digest, _Mapping]] = ..., is_topologically_sorted: bool = ..., root_directory_digest: _Optional[_Union[Digest, _Mapping]] = ...) -> None: ...
+
+class OutputSymlink(_message.Message):
+ __slots__ = ("path", "target", "node_properties")
+ PATH_FIELD_NUMBER: _ClassVar[int]
+ TARGET_FIELD_NUMBER: _ClassVar[int]
+ NODE_PROPERTIES_FIELD_NUMBER: _ClassVar[int]
+ path: str
+ target: str
+ node_properties: NodeProperties
+ def __init__(self, path: _Optional[str] = ..., target: _Optional[str] = ..., node_properties: _Optional[_Union[NodeProperties, _Mapping]] = ...) -> None: ...
+
+class ExecutionPolicy(_message.Message):
+ __slots__ = ("priority",)
+ PRIORITY_FIELD_NUMBER: _ClassVar[int]
+ priority: int
+ def __init__(self, priority: _Optional[int] = ...) -> None: ...
+
+class ResultsCachePolicy(_message.Message):
+ __slots__ = ("priority",)
+ PRIORITY_FIELD_NUMBER: _ClassVar[int]
+ priority: int
+ def __init__(self, priority: _Optional[int] = ...) -> None: ...
+
+class ExecuteRequest(_message.Message):
+ __slots__ = ("instance_name", "skip_cache_lookup", "action_digest", "execution_policy", "results_cache_policy", "digest_function", "inline_stdout", "inline_stderr", "inline_output_files")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ SKIP_CACHE_LOOKUP_FIELD_NUMBER: _ClassVar[int]
+ ACTION_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ EXECUTION_POLICY_FIELD_NUMBER: _ClassVar[int]
+ RESULTS_CACHE_POLICY_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FUNCTION_FIELD_NUMBER: _ClassVar[int]
+ INLINE_STDOUT_FIELD_NUMBER: _ClassVar[int]
+ INLINE_STDERR_FIELD_NUMBER: _ClassVar[int]
+ INLINE_OUTPUT_FILES_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ skip_cache_lookup: bool
+ action_digest: Digest
+ execution_policy: ExecutionPolicy
+ results_cache_policy: ResultsCachePolicy
+ digest_function: DigestFunction.Value
+ inline_stdout: bool
+ inline_stderr: bool
+ inline_output_files: _containers.RepeatedScalarFieldContainer[str]
+ def __init__(self, instance_name: _Optional[str] = ..., skip_cache_lookup: bool = ..., action_digest: _Optional[_Union[Digest, _Mapping]] = ..., execution_policy: _Optional[_Union[ExecutionPolicy, _Mapping]] = ..., results_cache_policy: _Optional[_Union[ResultsCachePolicy, _Mapping]] = ..., digest_function: _Optional[_Union[DigestFunction.Value, str]] = ..., inline_stdout: bool = ..., inline_stderr: bool = ..., inline_output_files: _Optional[_Iterable[str]] = ...) -> None: ...
+
+class LogFile(_message.Message):
+ __slots__ = ("digest", "human_readable")
+ DIGEST_FIELD_NUMBER: _ClassVar[int]
+ HUMAN_READABLE_FIELD_NUMBER: _ClassVar[int]
+ digest: Digest
+ human_readable: bool
+ def __init__(self, digest: _Optional[_Union[Digest, _Mapping]] = ..., human_readable: bool = ...) -> None: ...
+
+class ExecuteResponse(_message.Message):
+ __slots__ = ("result", "cached_result", "status", "server_logs", "message")
+ class ServerLogsEntry(_message.Message):
+ __slots__ = ("key", "value")
+ KEY_FIELD_NUMBER: _ClassVar[int]
+ VALUE_FIELD_NUMBER: _ClassVar[int]
+ key: str
+ value: LogFile
+ def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[LogFile, _Mapping]] = ...) -> None: ...
+ RESULT_FIELD_NUMBER: _ClassVar[int]
+ CACHED_RESULT_FIELD_NUMBER: _ClassVar[int]
+ STATUS_FIELD_NUMBER: _ClassVar[int]
+ SERVER_LOGS_FIELD_NUMBER: _ClassVar[int]
+ MESSAGE_FIELD_NUMBER: _ClassVar[int]
+ result: ActionResult
+ cached_result: bool
+ status: _status_pb2.Status
+ server_logs: _containers.MessageMap[str, LogFile]
+ message: str
+ def __init__(self, result: _Optional[_Union[ActionResult, _Mapping]] = ..., cached_result: bool = ..., status: _Optional[_Union[_status_pb2.Status, _Mapping]] = ..., server_logs: _Optional[_Mapping[str, LogFile]] = ..., message: _Optional[str] = ...) -> None: ...
+
+class ExecutionStage(_message.Message):
+ __slots__ = ()
+ class Value(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
+ __slots__ = ()
+ UNKNOWN: _ClassVar[ExecutionStage.Value]
+ CACHE_CHECK: _ClassVar[ExecutionStage.Value]
+ QUEUED: _ClassVar[ExecutionStage.Value]
+ EXECUTING: _ClassVar[ExecutionStage.Value]
+ COMPLETED: _ClassVar[ExecutionStage.Value]
+ UNKNOWN: ExecutionStage.Value
+ CACHE_CHECK: ExecutionStage.Value
+ QUEUED: ExecutionStage.Value
+ EXECUTING: ExecutionStage.Value
+ COMPLETED: ExecutionStage.Value
+ def __init__(self) -> None: ...
+
+class ExecuteOperationMetadata(_message.Message):
+ __slots__ = ("stage", "action_digest", "stdout_stream_name", "stderr_stream_name", "partial_execution_metadata")
+ STAGE_FIELD_NUMBER: _ClassVar[int]
+ ACTION_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ STDOUT_STREAM_NAME_FIELD_NUMBER: _ClassVar[int]
+ STDERR_STREAM_NAME_FIELD_NUMBER: _ClassVar[int]
+ PARTIAL_EXECUTION_METADATA_FIELD_NUMBER: _ClassVar[int]
+ stage: ExecutionStage.Value
+ action_digest: Digest
+ stdout_stream_name: str
+ stderr_stream_name: str
+ partial_execution_metadata: ExecutedActionMetadata
+ def __init__(self, stage: _Optional[_Union[ExecutionStage.Value, str]] = ..., action_digest: _Optional[_Union[Digest, _Mapping]] = ..., stdout_stream_name: _Optional[str] = ..., stderr_stream_name: _Optional[str] = ..., partial_execution_metadata: _Optional[_Union[ExecutedActionMetadata, _Mapping]] = ...) -> None: ...
+
+class WaitExecutionRequest(_message.Message):
+ __slots__ = ("name",)
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ def __init__(self, name: _Optional[str] = ...) -> None: ...
+
+class GetActionResultRequest(_message.Message):
+ __slots__ = ("instance_name", "action_digest", "inline_stdout", "inline_stderr", "inline_output_files", "digest_function")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ ACTION_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ INLINE_STDOUT_FIELD_NUMBER: _ClassVar[int]
+ INLINE_STDERR_FIELD_NUMBER: _ClassVar[int]
+ INLINE_OUTPUT_FILES_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FUNCTION_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ action_digest: Digest
+ inline_stdout: bool
+ inline_stderr: bool
+ inline_output_files: _containers.RepeatedScalarFieldContainer[str]
+ digest_function: DigestFunction.Value
+ def __init__(self, instance_name: _Optional[str] = ..., action_digest: _Optional[_Union[Digest, _Mapping]] = ..., inline_stdout: bool = ..., inline_stderr: bool = ..., inline_output_files: _Optional[_Iterable[str]] = ..., digest_function: _Optional[_Union[DigestFunction.Value, str]] = ...) -> None: ...
+
+class UpdateActionResultRequest(_message.Message):
+ __slots__ = ("instance_name", "action_digest", "action_result", "results_cache_policy", "digest_function")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ ACTION_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ ACTION_RESULT_FIELD_NUMBER: _ClassVar[int]
+ RESULTS_CACHE_POLICY_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FUNCTION_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ action_digest: Digest
+ action_result: ActionResult
+ results_cache_policy: ResultsCachePolicy
+ digest_function: DigestFunction.Value
+ def __init__(self, instance_name: _Optional[str] = ..., action_digest: _Optional[_Union[Digest, _Mapping]] = ..., action_result: _Optional[_Union[ActionResult, _Mapping]] = ..., results_cache_policy: _Optional[_Union[ResultsCachePolicy, _Mapping]] = ..., digest_function: _Optional[_Union[DigestFunction.Value, str]] = ...) -> None: ...
+
+class FindMissingBlobsRequest(_message.Message):
+ __slots__ = ("instance_name", "blob_digests", "digest_function")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ BLOB_DIGESTS_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FUNCTION_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ blob_digests: _containers.RepeatedCompositeFieldContainer[Digest]
+ digest_function: DigestFunction.Value
+ def __init__(self, instance_name: _Optional[str] = ..., blob_digests: _Optional[_Iterable[_Union[Digest, _Mapping]]] = ..., digest_function: _Optional[_Union[DigestFunction.Value, str]] = ...) -> None: ...
+
+class FindMissingBlobsResponse(_message.Message):
+ __slots__ = ("missing_blob_digests",)
+ MISSING_BLOB_DIGESTS_FIELD_NUMBER: _ClassVar[int]
+ missing_blob_digests: _containers.RepeatedCompositeFieldContainer[Digest]
+ def __init__(self, missing_blob_digests: _Optional[_Iterable[_Union[Digest, _Mapping]]] = ...) -> None: ...
+
+class BatchUpdateBlobsRequest(_message.Message):
+ __slots__ = ("instance_name", "requests", "digest_function")
+ class Request(_message.Message):
+ __slots__ = ("digest", "data", "compressor")
+ DIGEST_FIELD_NUMBER: _ClassVar[int]
+ DATA_FIELD_NUMBER: _ClassVar[int]
+ COMPRESSOR_FIELD_NUMBER: _ClassVar[int]
+ digest: Digest
+ data: bytes
+ compressor: Compressor.Value
+ def __init__(self, digest: _Optional[_Union[Digest, _Mapping]] = ..., data: _Optional[bytes] = ..., compressor: _Optional[_Union[Compressor.Value, str]] = ...) -> None: ...
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ REQUESTS_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FUNCTION_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ requests: _containers.RepeatedCompositeFieldContainer[BatchUpdateBlobsRequest.Request]
+ digest_function: DigestFunction.Value
+ def __init__(self, instance_name: _Optional[str] = ..., requests: _Optional[_Iterable[_Union[BatchUpdateBlobsRequest.Request, _Mapping]]] = ..., digest_function: _Optional[_Union[DigestFunction.Value, str]] = ...) -> None: ...
+
+class BatchUpdateBlobsResponse(_message.Message):
+ __slots__ = ("responses",)
+ class Response(_message.Message):
+ __slots__ = ("digest", "status")
+ DIGEST_FIELD_NUMBER: _ClassVar[int]
+ STATUS_FIELD_NUMBER: _ClassVar[int]
+ digest: Digest
+ status: _status_pb2.Status
+ def __init__(self, digest: _Optional[_Union[Digest, _Mapping]] = ..., status: _Optional[_Union[_status_pb2.Status, _Mapping]] = ...) -> None: ...
+ RESPONSES_FIELD_NUMBER: _ClassVar[int]
+ responses: _containers.RepeatedCompositeFieldContainer[BatchUpdateBlobsResponse.Response]
+ def __init__(self, responses: _Optional[_Iterable[_Union[BatchUpdateBlobsResponse.Response, _Mapping]]] = ...) -> None: ...
+
+class BatchReadBlobsRequest(_message.Message):
+ __slots__ = ("instance_name", "digests", "acceptable_compressors", "digest_function")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ DIGESTS_FIELD_NUMBER: _ClassVar[int]
+ ACCEPTABLE_COMPRESSORS_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FUNCTION_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ digests: _containers.RepeatedCompositeFieldContainer[Digest]
+ acceptable_compressors: _containers.RepeatedScalarFieldContainer[Compressor.Value]
+ digest_function: DigestFunction.Value
+ def __init__(self, instance_name: _Optional[str] = ..., digests: _Optional[_Iterable[_Union[Digest, _Mapping]]] = ..., acceptable_compressors: _Optional[_Iterable[_Union[Compressor.Value, str]]] = ..., digest_function: _Optional[_Union[DigestFunction.Value, str]] = ...) -> None: ...
+
+class BatchReadBlobsResponse(_message.Message):
+ __slots__ = ("responses",)
+ class Response(_message.Message):
+ __slots__ = ("digest", "data", "compressor", "status")
+ DIGEST_FIELD_NUMBER: _ClassVar[int]
+ DATA_FIELD_NUMBER: _ClassVar[int]
+ COMPRESSOR_FIELD_NUMBER: _ClassVar[int]
+ STATUS_FIELD_NUMBER: _ClassVar[int]
+ digest: Digest
+ data: bytes
+ compressor: Compressor.Value
+ status: _status_pb2.Status
+ def __init__(self, digest: _Optional[_Union[Digest, _Mapping]] = ..., data: _Optional[bytes] = ..., compressor: _Optional[_Union[Compressor.Value, str]] = ..., status: _Optional[_Union[_status_pb2.Status, _Mapping]] = ...) -> None: ...
+ RESPONSES_FIELD_NUMBER: _ClassVar[int]
+ responses: _containers.RepeatedCompositeFieldContainer[BatchReadBlobsResponse.Response]
+ def __init__(self, responses: _Optional[_Iterable[_Union[BatchReadBlobsResponse.Response, _Mapping]]] = ...) -> None: ...
+
+class GetTreeRequest(_message.Message):
+ __slots__ = ("instance_name", "root_digest", "page_size", "page_token", "digest_function")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ ROOT_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ PAGE_SIZE_FIELD_NUMBER: _ClassVar[int]
+ PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FUNCTION_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ root_digest: Digest
+ page_size: int
+ page_token: str
+ digest_function: DigestFunction.Value
+ def __init__(self, instance_name: _Optional[str] = ..., root_digest: _Optional[_Union[Digest, _Mapping]] = ..., page_size: _Optional[int] = ..., page_token: _Optional[str] = ..., digest_function: _Optional[_Union[DigestFunction.Value, str]] = ...) -> None: ...
+
+class GetTreeResponse(_message.Message):
+ __slots__ = ("directories", "next_page_token")
+ DIRECTORIES_FIELD_NUMBER: _ClassVar[int]
+ NEXT_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
+ directories: _containers.RepeatedCompositeFieldContainer[Directory]
+ next_page_token: str
+ def __init__(self, directories: _Optional[_Iterable[_Union[Directory, _Mapping]]] = ..., next_page_token: _Optional[str] = ...) -> None: ...
+
+class GetCapabilitiesRequest(_message.Message):
+ __slots__ = ("instance_name",)
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ def __init__(self, instance_name: _Optional[str] = ...) -> None: ...
+
+class ServerCapabilities(_message.Message):
+ __slots__ = ("cache_capabilities", "execution_capabilities", "deprecated_api_version", "low_api_version", "high_api_version")
+ CACHE_CAPABILITIES_FIELD_NUMBER: _ClassVar[int]
+ EXECUTION_CAPABILITIES_FIELD_NUMBER: _ClassVar[int]
+ DEPRECATED_API_VERSION_FIELD_NUMBER: _ClassVar[int]
+ LOW_API_VERSION_FIELD_NUMBER: _ClassVar[int]
+ HIGH_API_VERSION_FIELD_NUMBER: _ClassVar[int]
+ cache_capabilities: CacheCapabilities
+ execution_capabilities: ExecutionCapabilities
+ deprecated_api_version: _semver_pb2.SemVer
+ low_api_version: _semver_pb2.SemVer
+ high_api_version: _semver_pb2.SemVer
+ def __init__(self, cache_capabilities: _Optional[_Union[CacheCapabilities, _Mapping]] = ..., execution_capabilities: _Optional[_Union[ExecutionCapabilities, _Mapping]] = ..., deprecated_api_version: _Optional[_Union[_semver_pb2.SemVer, _Mapping]] = ..., low_api_version: _Optional[_Union[_semver_pb2.SemVer, _Mapping]] = ..., high_api_version: _Optional[_Union[_semver_pb2.SemVer, _Mapping]] = ...) -> None: ...
+
+class DigestFunction(_message.Message):
+ __slots__ = ()
+ class Value(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
+ __slots__ = ()
+ UNKNOWN: _ClassVar[DigestFunction.Value]
+ SHA256: _ClassVar[DigestFunction.Value]
+ SHA1: _ClassVar[DigestFunction.Value]
+ MD5: _ClassVar[DigestFunction.Value]
+ VSO: _ClassVar[DigestFunction.Value]
+ SHA384: _ClassVar[DigestFunction.Value]
+ SHA512: _ClassVar[DigestFunction.Value]
+ MURMUR3: _ClassVar[DigestFunction.Value]
+ SHA256TREE: _ClassVar[DigestFunction.Value]
+ BLAKE3: _ClassVar[DigestFunction.Value]
+ UNKNOWN: DigestFunction.Value
+ SHA256: DigestFunction.Value
+ SHA1: DigestFunction.Value
+ MD5: DigestFunction.Value
+ VSO: DigestFunction.Value
+ SHA384: DigestFunction.Value
+ SHA512: DigestFunction.Value
+ MURMUR3: DigestFunction.Value
+ SHA256TREE: DigestFunction.Value
+ BLAKE3: DigestFunction.Value
+ def __init__(self) -> None: ...
+
+class ActionCacheUpdateCapabilities(_message.Message):
+ __slots__ = ("update_enabled",)
+ UPDATE_ENABLED_FIELD_NUMBER: _ClassVar[int]
+ update_enabled: bool
+ def __init__(self, update_enabled: bool = ...) -> None: ...
+
+class PriorityCapabilities(_message.Message):
+ __slots__ = ("priorities",)
+ class PriorityRange(_message.Message):
+ __slots__ = ("min_priority", "max_priority")
+ MIN_PRIORITY_FIELD_NUMBER: _ClassVar[int]
+ MAX_PRIORITY_FIELD_NUMBER: _ClassVar[int]
+ min_priority: int
+ max_priority: int
+ def __init__(self, min_priority: _Optional[int] = ..., max_priority: _Optional[int] = ...) -> None: ...
+ PRIORITIES_FIELD_NUMBER: _ClassVar[int]
+ priorities: _containers.RepeatedCompositeFieldContainer[PriorityCapabilities.PriorityRange]
+ def __init__(self, priorities: _Optional[_Iterable[_Union[PriorityCapabilities.PriorityRange, _Mapping]]] = ...) -> None: ...
+
+class SymlinkAbsolutePathStrategy(_message.Message):
+ __slots__ = ()
+ class Value(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
+ __slots__ = ()
+ UNKNOWN: _ClassVar[SymlinkAbsolutePathStrategy.Value]
+ DISALLOWED: _ClassVar[SymlinkAbsolutePathStrategy.Value]
+ ALLOWED: _ClassVar[SymlinkAbsolutePathStrategy.Value]
+ UNKNOWN: SymlinkAbsolutePathStrategy.Value
+ DISALLOWED: SymlinkAbsolutePathStrategy.Value
+ ALLOWED: SymlinkAbsolutePathStrategy.Value
+ def __init__(self) -> None: ...
+
+class Compressor(_message.Message):
+ __slots__ = ()
+ class Value(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
+ __slots__ = ()
+ IDENTITY: _ClassVar[Compressor.Value]
+ ZSTD: _ClassVar[Compressor.Value]
+ DEFLATE: _ClassVar[Compressor.Value]
+ BROTLI: _ClassVar[Compressor.Value]
+ IDENTITY: Compressor.Value
+ ZSTD: Compressor.Value
+ DEFLATE: Compressor.Value
+ BROTLI: Compressor.Value
+ def __init__(self) -> None: ...
+
+class CacheCapabilities(_message.Message):
+ __slots__ = ("digest_functions", "action_cache_update_capabilities", "cache_priority_capabilities", "max_batch_total_size_bytes", "symlink_absolute_path_strategy", "supported_compressors", "supported_batch_update_compressors")
+ DIGEST_FUNCTIONS_FIELD_NUMBER: _ClassVar[int]
+ ACTION_CACHE_UPDATE_CAPABILITIES_FIELD_NUMBER: _ClassVar[int]
+ CACHE_PRIORITY_CAPABILITIES_FIELD_NUMBER: _ClassVar[int]
+ MAX_BATCH_TOTAL_SIZE_BYTES_FIELD_NUMBER: _ClassVar[int]
+ SYMLINK_ABSOLUTE_PATH_STRATEGY_FIELD_NUMBER: _ClassVar[int]
+ SUPPORTED_COMPRESSORS_FIELD_NUMBER: _ClassVar[int]
+ SUPPORTED_BATCH_UPDATE_COMPRESSORS_FIELD_NUMBER: _ClassVar[int]
+ digest_functions: _containers.RepeatedScalarFieldContainer[DigestFunction.Value]
+ action_cache_update_capabilities: ActionCacheUpdateCapabilities
+ cache_priority_capabilities: PriorityCapabilities
+ max_batch_total_size_bytes: int
+ symlink_absolute_path_strategy: SymlinkAbsolutePathStrategy.Value
+ supported_compressors: _containers.RepeatedScalarFieldContainer[Compressor.Value]
+ supported_batch_update_compressors: _containers.RepeatedScalarFieldContainer[Compressor.Value]
+ def __init__(self, digest_functions: _Optional[_Iterable[_Union[DigestFunction.Value, str]]] = ..., action_cache_update_capabilities: _Optional[_Union[ActionCacheUpdateCapabilities, _Mapping]] = ..., cache_priority_capabilities: _Optional[_Union[PriorityCapabilities, _Mapping]] = ..., max_batch_total_size_bytes: _Optional[int] = ..., symlink_absolute_path_strategy: _Optional[_Union[SymlinkAbsolutePathStrategy.Value, str]] = ..., supported_compressors: _Optional[_Iterable[_Union[Compressor.Value, str]]] = ..., supported_batch_update_compressors: _Optional[_Iterable[_Union[Compressor.Value, str]]] = ...) -> None: ...
+
+class ExecutionCapabilities(_message.Message):
+ __slots__ = ("digest_function", "exec_enabled", "execution_priority_capabilities", "supported_node_properties", "digest_functions")
+ DIGEST_FUNCTION_FIELD_NUMBER: _ClassVar[int]
+ EXEC_ENABLED_FIELD_NUMBER: _ClassVar[int]
+ EXECUTION_PRIORITY_CAPABILITIES_FIELD_NUMBER: _ClassVar[int]
+ SUPPORTED_NODE_PROPERTIES_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FUNCTIONS_FIELD_NUMBER: _ClassVar[int]
+ digest_function: DigestFunction.Value
+ exec_enabled: bool
+ execution_priority_capabilities: PriorityCapabilities
+ supported_node_properties: _containers.RepeatedScalarFieldContainer[str]
+ digest_functions: _containers.RepeatedScalarFieldContainer[DigestFunction.Value]
+ def __init__(self, digest_function: _Optional[_Union[DigestFunction.Value, str]] = ..., exec_enabled: bool = ..., execution_priority_capabilities: _Optional[_Union[PriorityCapabilities, _Mapping]] = ..., supported_node_properties: _Optional[_Iterable[str]] = ..., digest_functions: _Optional[_Iterable[_Union[DigestFunction.Value, str]]] = ...) -> None: ...
+
+class ToolDetails(_message.Message):
+ __slots__ = ("tool_name", "tool_version")
+ TOOL_NAME_FIELD_NUMBER: _ClassVar[int]
+ TOOL_VERSION_FIELD_NUMBER: _ClassVar[int]
+ tool_name: str
+ tool_version: str
+ def __init__(self, tool_name: _Optional[str] = ..., tool_version: _Optional[str] = ...) -> None: ...
+
+class RequestMetadata(_message.Message):
+ __slots__ = ("tool_details", "action_id", "tool_invocation_id", "correlated_invocations_id", "action_mnemonic", "target_id", "configuration_id")
+ TOOL_DETAILS_FIELD_NUMBER: _ClassVar[int]
+ ACTION_ID_FIELD_NUMBER: _ClassVar[int]
+ TOOL_INVOCATION_ID_FIELD_NUMBER: _ClassVar[int]
+ CORRELATED_INVOCATIONS_ID_FIELD_NUMBER: _ClassVar[int]
+ ACTION_MNEMONIC_FIELD_NUMBER: _ClassVar[int]
+ TARGET_ID_FIELD_NUMBER: _ClassVar[int]
+ CONFIGURATION_ID_FIELD_NUMBER: _ClassVar[int]
+ tool_details: ToolDetails
+ action_id: str
+ tool_invocation_id: str
+ correlated_invocations_id: str
+ action_mnemonic: str
+ target_id: str
+ configuration_id: str
+ def __init__(self, tool_details: _Optional[_Union[ToolDetails, _Mapping]] = ..., action_id: _Optional[str] = ..., tool_invocation_id: _Optional[str] = ..., correlated_invocations_id: _Optional[str] = ..., action_mnemonic: _Optional[str] = ..., target_id: _Optional[str] = ..., configuration_id: _Optional[str] = ...) -> None: ...
diff --git a/src/buildstream/_protos/build/bazel/remote/execution/v2/remote_execution_pb2_grpc.py b/src/buildstream/_protos/build/bazel/remote/execution/v2/remote_execution_pb2_grpc.py
index 1ed5dc9d9..2f8680032 100644
--- a/src/buildstream/_protos/build/bazel/remote/execution/v2/remote_execution_pb2_grpc.py
+++ b/src/buildstream/_protos/build/bazel/remote/execution/v2/remote_execution_pb2_grpc.py
@@ -1,10 +1,30 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
+import warnings
from buildstream._protos.build.bazel.remote.execution.v2 import remote_execution_pb2 as build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2
from buildstream._protos.google.longrunning import operations_pb2 as google_dot_longrunning_dot_operations__pb2
+GRPC_GENERATED_VERSION = '1.68.0'
+GRPC_VERSION = grpc.__version__
+_version_not_supported = False
+
+try:
+ from grpc._utilities import first_version_is_lower
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
+except ImportError:
+ _version_not_supported = True
+
+if _version_not_supported:
+ raise RuntimeError(
+ f'The grpc package installed is at version {GRPC_VERSION},'
+ + f' but the generated code in build/bazel/remote/execution/v2/remote_execution_pb2_grpc.py depends on'
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
+ )
+
class ExecutionStub(object):
"""The Remote Execution API is used to execute an
@@ -27,12 +47,12 @@ def __init__(self, channel):
'/build.bazel.remote.execution.v2.Execution/Execute',
request_serializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.ExecuteRequest.SerializeToString,
response_deserializer=google_dot_longrunning_dot_operations__pb2.Operation.FromString,
- )
+ _registered_method=True)
self.WaitExecution = channel.unary_stream(
'/build.bazel.remote.execution.v2.Execution/WaitExecution',
request_serializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.WaitExecutionRequest.SerializeToString,
response_deserializer=google_dot_longrunning_dot_operations__pb2.Operation.FromString,
- )
+ _registered_method=True)
class ExecutionServicer(object):
@@ -162,6 +182,7 @@ def add_ExecutionServicer_to_server(servicer, server):
generic_handler = grpc.method_handlers_generic_handler(
'build.bazel.remote.execution.v2.Execution', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
+ server.add_registered_method_handlers('build.bazel.remote.execution.v2.Execution', rpc_method_handlers)
# This class is part of an EXPERIMENTAL API.
@@ -187,11 +208,21 @@ def Execute(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_stream(request, target, '/build.bazel.remote.execution.v2.Execution/Execute',
+ return grpc.experimental.unary_stream(
+ request,
+ target,
+ '/build.bazel.remote.execution.v2.Execution/Execute',
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.ExecuteRequest.SerializeToString,
google_dot_longrunning_dot_operations__pb2.Operation.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def WaitExecution(request,
@@ -204,11 +235,21 @@ def WaitExecution(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_stream(request, target, '/build.bazel.remote.execution.v2.Execution/WaitExecution',
+ return grpc.experimental.unary_stream(
+ request,
+ target,
+ '/build.bazel.remote.execution.v2.Execution/WaitExecution',
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.WaitExecutionRequest.SerializeToString,
google_dot_longrunning_dot_operations__pb2.Operation.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
class ActionCacheStub(object):
@@ -240,12 +281,12 @@ def __init__(self, channel):
'/build.bazel.remote.execution.v2.ActionCache/GetActionResult',
request_serializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.GetActionResultRequest.SerializeToString,
response_deserializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.ActionResult.FromString,
- )
+ _registered_method=True)
self.UpdateActionResult = channel.unary_unary(
'/build.bazel.remote.execution.v2.ActionCache/UpdateActionResult',
request_serializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.UpdateActionResultRequest.SerializeToString,
response_deserializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.ActionResult.FromString,
- )
+ _registered_method=True)
class ActionCacheServicer(object):
@@ -327,6 +368,7 @@ def add_ActionCacheServicer_to_server(servicer, server):
generic_handler = grpc.method_handlers_generic_handler(
'build.bazel.remote.execution.v2.ActionCache', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
+ server.add_registered_method_handlers('build.bazel.remote.execution.v2.ActionCache', rpc_method_handlers)
# This class is part of an EXPERIMENTAL API.
@@ -360,11 +402,21 @@ def GetActionResult(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.bazel.remote.execution.v2.ActionCache/GetActionResult',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.bazel.remote.execution.v2.ActionCache/GetActionResult',
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.GetActionResultRequest.SerializeToString,
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.ActionResult.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def UpdateActionResult(request,
@@ -377,11 +429,21 @@ def UpdateActionResult(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.bazel.remote.execution.v2.ActionCache/UpdateActionResult',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.bazel.remote.execution.v2.ActionCache/UpdateActionResult',
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.UpdateActionResultRequest.SerializeToString,
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.ActionResult.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
class ContentAddressableStorageStub(object):
@@ -540,22 +602,22 @@ def __init__(self, channel):
'/build.bazel.remote.execution.v2.ContentAddressableStorage/FindMissingBlobs',
request_serializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.FindMissingBlobsRequest.SerializeToString,
response_deserializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.FindMissingBlobsResponse.FromString,
- )
+ _registered_method=True)
self.BatchUpdateBlobs = channel.unary_unary(
'/build.bazel.remote.execution.v2.ContentAddressableStorage/BatchUpdateBlobs',
request_serializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.BatchUpdateBlobsRequest.SerializeToString,
response_deserializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.BatchUpdateBlobsResponse.FromString,
- )
+ _registered_method=True)
self.BatchReadBlobs = channel.unary_unary(
'/build.bazel.remote.execution.v2.ContentAddressableStorage/BatchReadBlobs',
request_serializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.BatchReadBlobsRequest.SerializeToString,
response_deserializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.BatchReadBlobsResponse.FromString,
- )
+ _registered_method=True)
self.GetTree = channel.unary_stream(
'/build.bazel.remote.execution.v2.ContentAddressableStorage/GetTree',
request_serializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.GetTreeRequest.SerializeToString,
response_deserializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.GetTreeResponse.FromString,
- )
+ _registered_method=True)
class ContentAddressableStorageServicer(object):
@@ -831,6 +893,7 @@ def add_ContentAddressableStorageServicer_to_server(servicer, server):
generic_handler = grpc.method_handlers_generic_handler(
'build.bazel.remote.execution.v2.ContentAddressableStorage', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
+ server.add_registered_method_handlers('build.bazel.remote.execution.v2.ContentAddressableStorage', rpc_method_handlers)
# This class is part of an EXPERIMENTAL API.
@@ -991,11 +1054,21 @@ def FindMissingBlobs(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.bazel.remote.execution.v2.ContentAddressableStorage/FindMissingBlobs',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.bazel.remote.execution.v2.ContentAddressableStorage/FindMissingBlobs',
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.FindMissingBlobsRequest.SerializeToString,
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.FindMissingBlobsResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def BatchUpdateBlobs(request,
@@ -1008,11 +1081,21 @@ def BatchUpdateBlobs(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.bazel.remote.execution.v2.ContentAddressableStorage/BatchUpdateBlobs',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.bazel.remote.execution.v2.ContentAddressableStorage/BatchUpdateBlobs',
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.BatchUpdateBlobsRequest.SerializeToString,
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.BatchUpdateBlobsResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def BatchReadBlobs(request,
@@ -1025,11 +1108,21 @@ def BatchReadBlobs(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.bazel.remote.execution.v2.ContentAddressableStorage/BatchReadBlobs',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.bazel.remote.execution.v2.ContentAddressableStorage/BatchReadBlobs',
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.BatchReadBlobsRequest.SerializeToString,
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.BatchReadBlobsResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def GetTree(request,
@@ -1042,11 +1135,21 @@ def GetTree(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_stream(request, target, '/build.bazel.remote.execution.v2.ContentAddressableStorage/GetTree',
+ return grpc.experimental.unary_stream(
+ request,
+ target,
+ '/build.bazel.remote.execution.v2.ContentAddressableStorage/GetTree',
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.GetTreeRequest.SerializeToString,
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.GetTreeResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
class CapabilitiesStub(object):
@@ -1068,7 +1171,7 @@ def __init__(self, channel):
'/build.bazel.remote.execution.v2.Capabilities/GetCapabilities',
request_serializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.GetCapabilitiesRequest.SerializeToString,
response_deserializer=build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.ServerCapabilities.FromString,
- )
+ _registered_method=True)
class CapabilitiesServicer(object):
@@ -1108,6 +1211,7 @@ def add_CapabilitiesServicer_to_server(servicer, server):
generic_handler = grpc.method_handlers_generic_handler(
'build.bazel.remote.execution.v2.Capabilities', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
+ server.add_registered_method_handlers('build.bazel.remote.execution.v2.Capabilities', rpc_method_handlers)
# This class is part of an EXPERIMENTAL API.
@@ -1131,8 +1235,18 @@ def GetCapabilities(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.bazel.remote.execution.v2.Capabilities/GetCapabilities',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.bazel.remote.execution.v2.Capabilities/GetCapabilities',
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.GetCapabilitiesRequest.SerializeToString,
build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.ServerCapabilities.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
diff --git a/src/buildstream/_protos/build/bazel/semver/semver_pb2.py b/src/buildstream/_protos/build/bazel/semver/semver_pb2.py
index c663eaf23..325c2ea33 100644
--- a/src/buildstream/_protos/build/bazel/semver/semver_pb2.py
+++ b/src/buildstream/_protos/build/bazel/semver/semver_pb2.py
@@ -1,12 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
+# NO CHECKED-IN PROTOBUF GENCODE
# source: build/bazel/semver/semver.proto
+# Protobuf Python Version: 5.28.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
+from google.protobuf import runtime_version as _runtime_version
from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+_runtime_version.ValidateProtobufRuntimeVersion(
+ _runtime_version.Domain.PUBLIC,
+ 5,
+ 28,
+ 1,
+ '',
+ 'build/bazel/semver/semver.proto'
+)
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
@@ -16,19 +26,11 @@
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x62uild/bazel/semver/semver.proto\x12\x12\x62uild.bazel.semver\"I\n\x06SemVer\x12\r\n\x05major\x18\x01 \x01(\x05\x12\r\n\x05minor\x18\x02 \x01(\x05\x12\r\n\x05patch\x18\x03 \x01(\x05\x12\x12\n\nprerelease\x18\x04 \x01(\tb\x06proto3')
-
-
-_SEMVER = DESCRIPTOR.message_types_by_name['SemVer']
-SemVer = _reflection.GeneratedProtocolMessageType('SemVer', (_message.Message,), {
- 'DESCRIPTOR' : _SEMVER,
- '__module__' : 'build.bazel.semver.semver_pb2'
- # @@protoc_insertion_point(class_scope:build.bazel.semver.SemVer)
- })
-_sym_db.RegisterMessage(SemVer)
-
-if _descriptor._USE_C_DESCRIPTORS == False:
-
- DESCRIPTOR._options = None
- _SEMVER._serialized_start=55
- _SEMVER._serialized_end=128
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'build.bazel.semver.semver_pb2', _globals)
+if not _descriptor._USE_C_DESCRIPTORS:
+ DESCRIPTOR._loaded_options = None
+ _globals['_SEMVER']._serialized_start=55
+ _globals['_SEMVER']._serialized_end=128
# @@protoc_insertion_point(module_scope)
diff --git a/src/buildstream/_protos/build/bazel/semver/semver_pb2.pyi b/src/buildstream/_protos/build/bazel/semver/semver_pb2.pyi
new file mode 100644
index 000000000..005bb36d4
--- /dev/null
+++ b/src/buildstream/_protos/build/bazel/semver/semver_pb2.pyi
@@ -0,0 +1,17 @@
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from typing import ClassVar as _ClassVar, Optional as _Optional
+
+DESCRIPTOR: _descriptor.FileDescriptor
+
+class SemVer(_message.Message):
+ __slots__ = ("major", "minor", "patch", "prerelease")
+ MAJOR_FIELD_NUMBER: _ClassVar[int]
+ MINOR_FIELD_NUMBER: _ClassVar[int]
+ PATCH_FIELD_NUMBER: _ClassVar[int]
+ PRERELEASE_FIELD_NUMBER: _ClassVar[int]
+ major: int
+ minor: int
+ patch: int
+ prerelease: str
+ def __init__(self, major: _Optional[int] = ..., minor: _Optional[int] = ..., patch: _Optional[int] = ..., prerelease: _Optional[str] = ...) -> None: ...
diff --git a/src/buildstream/_protos/build/bazel/semver/semver_pb2_grpc.py b/src/buildstream/_protos/build/bazel/semver/semver_pb2_grpc.py
index 2daafffeb..544c9fc9f 100644
--- a/src/buildstream/_protos/build/bazel/semver/semver_pb2_grpc.py
+++ b/src/buildstream/_protos/build/bazel/semver/semver_pb2_grpc.py
@@ -1,4 +1,24 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
+import warnings
+
+GRPC_GENERATED_VERSION = '1.68.0'
+GRPC_VERSION = grpc.__version__
+_version_not_supported = False
+
+try:
+ from grpc._utilities import first_version_is_lower
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
+except ImportError:
+ _version_not_supported = True
+
+if _version_not_supported:
+ raise RuntimeError(
+ f'The grpc package installed is at version {GRPC_VERSION},'
+ + f' but the generated code in build/bazel/semver/semver_pb2_grpc.py depends on'
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
+ )
diff --git a/src/buildstream/_protos/build/buildgrid/local_cas.proto b/src/buildstream/_protos/build/buildgrid/local_cas.proto
index 852bbe2f0..a04c4aca4 100644
--- a/src/buildstream/_protos/build/buildgrid/local_cas.proto
+++ b/src/buildstream/_protos/build/buildgrid/local_cas.proto
@@ -107,6 +107,10 @@ service LocalContentAddressableStorage {
// avoiding copies when it is known that files will not be needed after they
// are imported. If a server chooses not to move them, the source files will
// still exist after this request.
+ //
+ // The `skip_upload` parameter is a hint to indicate that the files do not
+ // need to be uploaded to the remote CAS. This can be useful for local-only
+ // workflows where an upload step adds unnecessary latency.
rpc CaptureTree(CaptureTreeRequest) returns (CaptureTreeResponse) {}
// Capture files from the local filesystem.
@@ -122,6 +126,10 @@ service LocalContentAddressableStorage {
// avoiding copies when it is known that files will not be needed after they
// are imported. If a server chooses not to move them, the source files will
// still exist after this request.
+ //
+ // The `skip_upload` parameter is a hint to indicate that the files do not
+ // need to be uploaded to the remote CAS. This can be useful for local-only
+ // workflows where an upload step adds unnecessary latency.
rpc CaptureFiles(CaptureFilesRequest) returns (CaptureFilesResponse) {}
// Configure remote CAS endpoint.
@@ -342,6 +350,12 @@ message CaptureTreeRequest {
// of what was requested (e.g., interpreting DIRECTORY_ONLY as
// TREE_AND_DIRECTORY).
build.bazel.remote.execution.v2.Command.OutputDirectoryFormat output_directory_format = 7;
+
+ // Hints whether files should be uploaded to the remote CAS.
+ // This is mutually exclusive with `bypass_local_cache`. If both `skip_upload`
+ // and `bypass_local_cache` are set, the server MUST return an InvalidArgument
+ // error.
+ bool skip_upload = 8;
}
// A response message for
@@ -399,6 +413,12 @@ message CaptureFilesRequest {
// If enabled, they MUST NOT be modified after issuing this request in order
// to guarantee consistency.
bool move_files = 5;
+
+ // Hints whether files should be uploaded to the remote CAS.
+ // This is mutually exclusive with `bypass_local_cache`. If both `skip_upload`
+ // and `bypass_local_cache` are set, the server MUST return an InvalidArgument
+ // error.
+ bool skip_upload = 7;
}
// A response message for
@@ -494,6 +514,20 @@ message Remote {
// Remote keepalive time. Unset or empty is treated as disabling keepalive.
google.protobuf.Duration keepalive_time = 6;
+
+ // The maximum number of time a request is retried on this remote
+ // A `retry_limit` of 0 indicates that
+ // there is no limit and the server can pick a retry_limit
+ int64 retry_limit = 9;
+
+ // The initial recommended retry delay before the first retry, the
+ // server might implement a backoff startegy.
+ // A `retry_delay` of unset or empty indicates
+ // that there is no delay recommended and the server can pick a retry_delay
+ google.protobuf.Duration retry_delay = 10;
+
+ // How long to wait for a response from the remote.
+ google.protobuf.Duration request_timeout = 11;
}
// A request message for
diff --git a/src/buildstream/_protos/build/buildgrid/local_cas_pb2.py b/src/buildstream/_protos/build/buildgrid/local_cas_pb2.py
index 990cfe902..13da13f42 100644
--- a/src/buildstream/_protos/build/buildgrid/local_cas_pb2.py
+++ b/src/buildstream/_protos/build/buildgrid/local_cas_pb2.py
@@ -1,12 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
+# NO CHECKED-IN PROTOBUF GENCODE
# source: build/buildgrid/local_cas.proto
+# Protobuf Python Version: 5.28.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
+from google.protobuf import runtime_version as _runtime_version
from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+_runtime_version.ValidateProtobufRuntimeVersion(
+ _runtime_version.Domain.PUBLIC,
+ 5,
+ 28,
+ 1,
+ '',
+ 'build/buildgrid/local_cas.proto'
+)
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
@@ -17,299 +27,69 @@
from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x62uild/buildgrid/local_cas.proto\x12\x0f\x62uild.buildgrid\x1a\x36\x62uild/bazel/remote/execution/v2/remote_execution.proto\x1a\x17google/rpc/status.proto\x1a\x1egoogle/protobuf/duration.proto\"p\n\x18\x46\x65tchMissingBlobsRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12=\n\x0c\x62lob_digests\x18\x02 \x03(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\"\xcc\x01\n\x19\x46\x65tchMissingBlobsResponse\x12\x46\n\tresponses\x18\x01 \x03(\x0b\x32\x33.build.buildgrid.FetchMissingBlobsResponse.Response\x1ag\n\x08Response\x12\x37\n\x06\x64igest\x18\x01 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\"\n\x06status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\"q\n\x19UploadMissingBlobsRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12=\n\x0c\x62lob_digests\x18\x02 \x03(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\"\xce\x01\n\x1aUploadMissingBlobsResponse\x12G\n\tresponses\x18\x01 \x03(\x0b\x32\x34.build.buildgrid.UploadMissingBlobsResponse.Response\x1ag\n\x08Response\x12\x37\n\x06\x64igest\x18\x01 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\"\n\x06status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\"\x81\x01\n\x10\x46\x65tchTreeRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12<\n\x0broot_digest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x18\n\x10\x66\x65tch_file_blobs\x18\x03 \x01(\x08\"\x13\n\x11\x46\x65tchTreeResponse\"h\n\x11UploadTreeRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12<\n\x0broot_digest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\"\x14\n\x12UploadTreeResponse\"\xe9\x01\n\x10StageTreeRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12<\n\x0broot_digest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x0c\n\x04path\x18\x03 \x01(\t\x12I\n\x12\x61\x63\x63\x65ss_credentials\x18\x04 \x01(\x0b\x32-.build.buildgrid.StageTreeRequest.Credentials\x1a\'\n\x0b\x43redentials\x12\x0b\n\x03uid\x18\x01 \x01(\x03\x12\x0b\n\x03gid\x18\x02 \x01(\x03\"!\n\x11StageTreeResponse\x12\x0c\n\x04path\x18\x01 \x01(\t\"\xf1\x01\n\x12\x43\x61ptureTreeRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x0c\n\x04root\x18\x06 \x01(\t\x12\x0c\n\x04path\x18\x02 \x03(\t\x12\x1a\n\x12\x62ypass_local_cache\x18\x03 \x01(\x08\x12\x17\n\x0fnode_properties\x18\x04 \x03(\t\x12\x12\n\nmove_files\x18\x05 \x01(\x08\x12_\n\x17output_directory_format\x18\x07 \x01(\x0e\x32>.build.bazel.remote.execution.v2.Command.OutputDirectoryFormat\"\x9c\x02\n\x13\x43\x61ptureTreeResponse\x12@\n\tresponses\x18\x01 \x03(\x0b\x32-.build.buildgrid.CaptureTreeResponse.Response\x1a\xc2\x01\n\x08Response\x12\x0c\n\x04path\x18\x01 \x01(\t\x12<\n\x0btree_digest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\"\n\x06status\x18\x03 \x01(\x0b\x32\x12.google.rpc.Status\x12\x46\n\x15root_directory_digest\x18\x04 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\"\x91\x01\n\x13\x43\x61ptureFilesRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x0c\n\x04root\x18\x06 \x01(\t\x12\x0c\n\x04path\x18\x02 \x03(\t\x12\x1a\n\x12\x62ypass_local_cache\x18\x03 \x01(\x08\x12\x17\n\x0fnode_properties\x18\x04 \x03(\t\x12\x12\n\nmove_files\x18\x05 \x01(\x08\"\xb8\x02\n\x14\x43\x61ptureFilesResponse\x12\x41\n\tresponses\x18\x01 \x03(\x0b\x32..build.buildgrid.CaptureFilesResponse.Response\x1a\xdc\x01\n\x08Response\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x37\n\x06\x64igest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\"\n\x06status\x18\x03 \x01(\x0b\x32\x12.google.rpc.Status\x12\x15\n\ris_executable\x18\x04 \x01(\x08\x12H\n\x0fnode_properties\x18\x06 \x01(\x0b\x32/.build.bazel.remote.execution.v2.NodePropertiesJ\x04\x08\x05\x10\x06\"\x83\x01\n\x1fGetInstanceNameForRemoteRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x15\n\rinstance_name\x18\x02 \x01(\t\x12\x13\n\x0bserver_cert\x18\x03 \x01(\x0c\x12\x12\n\nclient_key\x18\x04 \x01(\x0c\x12\x13\n\x0b\x63lient_cert\x18\x05 \x01(\x0c\"9\n GetInstanceNameForRemoteResponse\x12\x15\n\rinstance_name\x18\x01 \x01(\t\"\xf9\x01\n\x06Remote\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x15\n\rinstance_name\x18\x02 \x01(\t\x12\x13\n\x0bserver_cert\x18\x03 \x01(\x0c\x12\x12\n\nclient_key\x18\x04 \x01(\x0c\x12\x13\n\x0b\x63lient_cert\x18\x05 \x01(\x0c\x12\x19\n\x11\x61\x63\x63\x65ss_token_path\x18\x07 \x01(\t\x12?\n\x1c\x61\x63\x63\x65ss_token_reload_interval\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0ekeepalive_time\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x81\x02\n GetInstanceNameForRemotesRequest\x12\x15\n\rinstance_name\x18\x03 \x01(\t\x12<\n\x1b\x63ontent_addressable_storage\x18\x01 \x01(\x0b\x32\x17.build.buildgrid.Remote\x12-\n\x0cremote_asset\x18\x02 \x01(\x0b\x32\x17.build.buildgrid.Remote\x12-\n\x0c\x61\x63tion_cache\x18\x04 \x01(\x0b\x32\x17.build.buildgrid.Remote\x12*\n\texecution\x18\x05 \x01(\x0b\x32\x17.build.buildgrid.Remote\":\n!GetInstanceNameForRemotesResponse\x12\x15\n\rinstance_name\x18\x01 \x01(\t\"I\n\"GetInstanceNameForNamespaceRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x0c\n\x04root\x18\x02 \x01(\t\"<\n#GetInstanceNameForNamespaceResponse\x12\x15\n\rinstance_name\x18\x01 \x01(\t\"\x1a\n\x18GetLocalDiskUsageRequest\"D\n\x19GetLocalDiskUsageResponse\x12\x12\n\nsize_bytes\x18\x01 \x01(\x03\x12\x13\n\x0bquota_bytes\x18\x02 \x01(\x03\x32\xc9\t\n\x1eLocalContentAddressableStorage\x12l\n\x11\x46\x65tchMissingBlobs\x12).build.buildgrid.FetchMissingBlobsRequest\x1a*.build.buildgrid.FetchMissingBlobsResponse\"\x00\x12o\n\x12UploadMissingBlobs\x12*.build.buildgrid.UploadMissingBlobsRequest\x1a+.build.buildgrid.UploadMissingBlobsResponse\"\x00\x12T\n\tFetchTree\x12!.build.buildgrid.FetchTreeRequest\x1a\".build.buildgrid.FetchTreeResponse\"\x00\x12W\n\nUploadTree\x12\".build.buildgrid.UploadTreeRequest\x1a#.build.buildgrid.UploadTreeResponse\"\x00\x12X\n\tStageTree\x12!.build.buildgrid.StageTreeRequest\x1a\".build.buildgrid.StageTreeResponse\"\x00(\x01\x30\x01\x12Z\n\x0b\x43\x61ptureTree\x12#.build.buildgrid.CaptureTreeRequest\x1a$.build.buildgrid.CaptureTreeResponse\"\x00\x12]\n\x0c\x43\x61ptureFiles\x12$.build.buildgrid.CaptureFilesRequest\x1a%.build.buildgrid.CaptureFilesResponse\"\x00\x12\x81\x01\n\x18GetInstanceNameForRemote\x12\x30.build.buildgrid.GetInstanceNameForRemoteRequest\x1a\x31.build.buildgrid.GetInstanceNameForRemoteResponse\"\x00\x12\x84\x01\n\x19GetInstanceNameForRemotes\x12\x31.build.buildgrid.GetInstanceNameForRemotesRequest\x1a\x32.build.buildgrid.GetInstanceNameForRemotesResponse\"\x00\x12\x8a\x01\n\x1bGetInstanceNameForNamespace\x12\x33.build.buildgrid.GetInstanceNameForNamespaceRequest\x1a\x34.build.buildgrid.GetInstanceNameForNamespaceResponse\"\x00\x12l\n\x11GetLocalDiskUsage\x12).build.buildgrid.GetLocalDiskUsageRequest\x1a*.build.buildgrid.GetLocalDiskUsageResponse\"\x00\x62\x06proto3')
-
-
-
-_FETCHMISSINGBLOBSREQUEST = DESCRIPTOR.message_types_by_name['FetchMissingBlobsRequest']
-_FETCHMISSINGBLOBSRESPONSE = DESCRIPTOR.message_types_by_name['FetchMissingBlobsResponse']
-_FETCHMISSINGBLOBSRESPONSE_RESPONSE = _FETCHMISSINGBLOBSRESPONSE.nested_types_by_name['Response']
-_UPLOADMISSINGBLOBSREQUEST = DESCRIPTOR.message_types_by_name['UploadMissingBlobsRequest']
-_UPLOADMISSINGBLOBSRESPONSE = DESCRIPTOR.message_types_by_name['UploadMissingBlobsResponse']
-_UPLOADMISSINGBLOBSRESPONSE_RESPONSE = _UPLOADMISSINGBLOBSRESPONSE.nested_types_by_name['Response']
-_FETCHTREEREQUEST = DESCRIPTOR.message_types_by_name['FetchTreeRequest']
-_FETCHTREERESPONSE = DESCRIPTOR.message_types_by_name['FetchTreeResponse']
-_UPLOADTREEREQUEST = DESCRIPTOR.message_types_by_name['UploadTreeRequest']
-_UPLOADTREERESPONSE = DESCRIPTOR.message_types_by_name['UploadTreeResponse']
-_STAGETREEREQUEST = DESCRIPTOR.message_types_by_name['StageTreeRequest']
-_STAGETREEREQUEST_CREDENTIALS = _STAGETREEREQUEST.nested_types_by_name['Credentials']
-_STAGETREERESPONSE = DESCRIPTOR.message_types_by_name['StageTreeResponse']
-_CAPTURETREEREQUEST = DESCRIPTOR.message_types_by_name['CaptureTreeRequest']
-_CAPTURETREERESPONSE = DESCRIPTOR.message_types_by_name['CaptureTreeResponse']
-_CAPTURETREERESPONSE_RESPONSE = _CAPTURETREERESPONSE.nested_types_by_name['Response']
-_CAPTUREFILESREQUEST = DESCRIPTOR.message_types_by_name['CaptureFilesRequest']
-_CAPTUREFILESRESPONSE = DESCRIPTOR.message_types_by_name['CaptureFilesResponse']
-_CAPTUREFILESRESPONSE_RESPONSE = _CAPTUREFILESRESPONSE.nested_types_by_name['Response']
-_GETINSTANCENAMEFORREMOTEREQUEST = DESCRIPTOR.message_types_by_name['GetInstanceNameForRemoteRequest']
-_GETINSTANCENAMEFORREMOTERESPONSE = DESCRIPTOR.message_types_by_name['GetInstanceNameForRemoteResponse']
-_REMOTE = DESCRIPTOR.message_types_by_name['Remote']
-_GETINSTANCENAMEFORREMOTESREQUEST = DESCRIPTOR.message_types_by_name['GetInstanceNameForRemotesRequest']
-_GETINSTANCENAMEFORREMOTESRESPONSE = DESCRIPTOR.message_types_by_name['GetInstanceNameForRemotesResponse']
-_GETINSTANCENAMEFORNAMESPACEREQUEST = DESCRIPTOR.message_types_by_name['GetInstanceNameForNamespaceRequest']
-_GETINSTANCENAMEFORNAMESPACERESPONSE = DESCRIPTOR.message_types_by_name['GetInstanceNameForNamespaceResponse']
-_GETLOCALDISKUSAGEREQUEST = DESCRIPTOR.message_types_by_name['GetLocalDiskUsageRequest']
-_GETLOCALDISKUSAGERESPONSE = DESCRIPTOR.message_types_by_name['GetLocalDiskUsageResponse']
-FetchMissingBlobsRequest = _reflection.GeneratedProtocolMessageType('FetchMissingBlobsRequest', (_message.Message,), {
- 'DESCRIPTOR' : _FETCHMISSINGBLOBSREQUEST,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.FetchMissingBlobsRequest)
- })
-_sym_db.RegisterMessage(FetchMissingBlobsRequest)
-
-FetchMissingBlobsResponse = _reflection.GeneratedProtocolMessageType('FetchMissingBlobsResponse', (_message.Message,), {
-
- 'Response' : _reflection.GeneratedProtocolMessageType('Response', (_message.Message,), {
- 'DESCRIPTOR' : _FETCHMISSINGBLOBSRESPONSE_RESPONSE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.FetchMissingBlobsResponse.Response)
- })
- ,
- 'DESCRIPTOR' : _FETCHMISSINGBLOBSRESPONSE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.FetchMissingBlobsResponse)
- })
-_sym_db.RegisterMessage(FetchMissingBlobsResponse)
-_sym_db.RegisterMessage(FetchMissingBlobsResponse.Response)
-
-UploadMissingBlobsRequest = _reflection.GeneratedProtocolMessageType('UploadMissingBlobsRequest', (_message.Message,), {
- 'DESCRIPTOR' : _UPLOADMISSINGBLOBSREQUEST,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.UploadMissingBlobsRequest)
- })
-_sym_db.RegisterMessage(UploadMissingBlobsRequest)
-
-UploadMissingBlobsResponse = _reflection.GeneratedProtocolMessageType('UploadMissingBlobsResponse', (_message.Message,), {
-
- 'Response' : _reflection.GeneratedProtocolMessageType('Response', (_message.Message,), {
- 'DESCRIPTOR' : _UPLOADMISSINGBLOBSRESPONSE_RESPONSE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.UploadMissingBlobsResponse.Response)
- })
- ,
- 'DESCRIPTOR' : _UPLOADMISSINGBLOBSRESPONSE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.UploadMissingBlobsResponse)
- })
-_sym_db.RegisterMessage(UploadMissingBlobsResponse)
-_sym_db.RegisterMessage(UploadMissingBlobsResponse.Response)
-
-FetchTreeRequest = _reflection.GeneratedProtocolMessageType('FetchTreeRequest', (_message.Message,), {
- 'DESCRIPTOR' : _FETCHTREEREQUEST,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.FetchTreeRequest)
- })
-_sym_db.RegisterMessage(FetchTreeRequest)
-
-FetchTreeResponse = _reflection.GeneratedProtocolMessageType('FetchTreeResponse', (_message.Message,), {
- 'DESCRIPTOR' : _FETCHTREERESPONSE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.FetchTreeResponse)
- })
-_sym_db.RegisterMessage(FetchTreeResponse)
-
-UploadTreeRequest = _reflection.GeneratedProtocolMessageType('UploadTreeRequest', (_message.Message,), {
- 'DESCRIPTOR' : _UPLOADTREEREQUEST,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.UploadTreeRequest)
- })
-_sym_db.RegisterMessage(UploadTreeRequest)
-
-UploadTreeResponse = _reflection.GeneratedProtocolMessageType('UploadTreeResponse', (_message.Message,), {
- 'DESCRIPTOR' : _UPLOADTREERESPONSE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.UploadTreeResponse)
- })
-_sym_db.RegisterMessage(UploadTreeResponse)
-
-StageTreeRequest = _reflection.GeneratedProtocolMessageType('StageTreeRequest', (_message.Message,), {
-
- 'Credentials' : _reflection.GeneratedProtocolMessageType('Credentials', (_message.Message,), {
- 'DESCRIPTOR' : _STAGETREEREQUEST_CREDENTIALS,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.StageTreeRequest.Credentials)
- })
- ,
- 'DESCRIPTOR' : _STAGETREEREQUEST,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.StageTreeRequest)
- })
-_sym_db.RegisterMessage(StageTreeRequest)
-_sym_db.RegisterMessage(StageTreeRequest.Credentials)
-
-StageTreeResponse = _reflection.GeneratedProtocolMessageType('StageTreeResponse', (_message.Message,), {
- 'DESCRIPTOR' : _STAGETREERESPONSE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.StageTreeResponse)
- })
-_sym_db.RegisterMessage(StageTreeResponse)
-
-CaptureTreeRequest = _reflection.GeneratedProtocolMessageType('CaptureTreeRequest', (_message.Message,), {
- 'DESCRIPTOR' : _CAPTURETREEREQUEST,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.CaptureTreeRequest)
- })
-_sym_db.RegisterMessage(CaptureTreeRequest)
-
-CaptureTreeResponse = _reflection.GeneratedProtocolMessageType('CaptureTreeResponse', (_message.Message,), {
-
- 'Response' : _reflection.GeneratedProtocolMessageType('Response', (_message.Message,), {
- 'DESCRIPTOR' : _CAPTURETREERESPONSE_RESPONSE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.CaptureTreeResponse.Response)
- })
- ,
- 'DESCRIPTOR' : _CAPTURETREERESPONSE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.CaptureTreeResponse)
- })
-_sym_db.RegisterMessage(CaptureTreeResponse)
-_sym_db.RegisterMessage(CaptureTreeResponse.Response)
-
-CaptureFilesRequest = _reflection.GeneratedProtocolMessageType('CaptureFilesRequest', (_message.Message,), {
- 'DESCRIPTOR' : _CAPTUREFILESREQUEST,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.CaptureFilesRequest)
- })
-_sym_db.RegisterMessage(CaptureFilesRequest)
-
-CaptureFilesResponse = _reflection.GeneratedProtocolMessageType('CaptureFilesResponse', (_message.Message,), {
-
- 'Response' : _reflection.GeneratedProtocolMessageType('Response', (_message.Message,), {
- 'DESCRIPTOR' : _CAPTUREFILESRESPONSE_RESPONSE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.CaptureFilesResponse.Response)
- })
- ,
- 'DESCRIPTOR' : _CAPTUREFILESRESPONSE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.CaptureFilesResponse)
- })
-_sym_db.RegisterMessage(CaptureFilesResponse)
-_sym_db.RegisterMessage(CaptureFilesResponse.Response)
-
-GetInstanceNameForRemoteRequest = _reflection.GeneratedProtocolMessageType('GetInstanceNameForRemoteRequest', (_message.Message,), {
- 'DESCRIPTOR' : _GETINSTANCENAMEFORREMOTEREQUEST,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.GetInstanceNameForRemoteRequest)
- })
-_sym_db.RegisterMessage(GetInstanceNameForRemoteRequest)
-
-GetInstanceNameForRemoteResponse = _reflection.GeneratedProtocolMessageType('GetInstanceNameForRemoteResponse', (_message.Message,), {
- 'DESCRIPTOR' : _GETINSTANCENAMEFORREMOTERESPONSE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.GetInstanceNameForRemoteResponse)
- })
-_sym_db.RegisterMessage(GetInstanceNameForRemoteResponse)
-
-Remote = _reflection.GeneratedProtocolMessageType('Remote', (_message.Message,), {
- 'DESCRIPTOR' : _REMOTE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.Remote)
- })
-_sym_db.RegisterMessage(Remote)
-
-GetInstanceNameForRemotesRequest = _reflection.GeneratedProtocolMessageType('GetInstanceNameForRemotesRequest', (_message.Message,), {
- 'DESCRIPTOR' : _GETINSTANCENAMEFORREMOTESREQUEST,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.GetInstanceNameForRemotesRequest)
- })
-_sym_db.RegisterMessage(GetInstanceNameForRemotesRequest)
-
-GetInstanceNameForRemotesResponse = _reflection.GeneratedProtocolMessageType('GetInstanceNameForRemotesResponse', (_message.Message,), {
- 'DESCRIPTOR' : _GETINSTANCENAMEFORREMOTESRESPONSE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.GetInstanceNameForRemotesResponse)
- })
-_sym_db.RegisterMessage(GetInstanceNameForRemotesResponse)
-
-GetInstanceNameForNamespaceRequest = _reflection.GeneratedProtocolMessageType('GetInstanceNameForNamespaceRequest', (_message.Message,), {
- 'DESCRIPTOR' : _GETINSTANCENAMEFORNAMESPACEREQUEST,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.GetInstanceNameForNamespaceRequest)
- })
-_sym_db.RegisterMessage(GetInstanceNameForNamespaceRequest)
-
-GetInstanceNameForNamespaceResponse = _reflection.GeneratedProtocolMessageType('GetInstanceNameForNamespaceResponse', (_message.Message,), {
- 'DESCRIPTOR' : _GETINSTANCENAMEFORNAMESPACERESPONSE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.GetInstanceNameForNamespaceResponse)
- })
-_sym_db.RegisterMessage(GetInstanceNameForNamespaceResponse)
-
-GetLocalDiskUsageRequest = _reflection.GeneratedProtocolMessageType('GetLocalDiskUsageRequest', (_message.Message,), {
- 'DESCRIPTOR' : _GETLOCALDISKUSAGEREQUEST,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.GetLocalDiskUsageRequest)
- })
-_sym_db.RegisterMessage(GetLocalDiskUsageRequest)
-
-GetLocalDiskUsageResponse = _reflection.GeneratedProtocolMessageType('GetLocalDiskUsageResponse', (_message.Message,), {
- 'DESCRIPTOR' : _GETLOCALDISKUSAGERESPONSE,
- '__module__' : 'build.buildgrid.local_cas_pb2'
- # @@protoc_insertion_point(class_scope:build.buildgrid.GetLocalDiskUsageResponse)
- })
-_sym_db.RegisterMessage(GetLocalDiskUsageResponse)
-
-_LOCALCONTENTADDRESSABLESTORAGE = DESCRIPTOR.services_by_name['LocalContentAddressableStorage']
-if _descriptor._USE_C_DESCRIPTORS == False:
-
- DESCRIPTOR._options = None
- _FETCHMISSINGBLOBSREQUEST._serialized_start=165
- _FETCHMISSINGBLOBSREQUEST._serialized_end=277
- _FETCHMISSINGBLOBSRESPONSE._serialized_start=280
- _FETCHMISSINGBLOBSRESPONSE._serialized_end=484
- _FETCHMISSINGBLOBSRESPONSE_RESPONSE._serialized_start=381
- _FETCHMISSINGBLOBSRESPONSE_RESPONSE._serialized_end=484
- _UPLOADMISSINGBLOBSREQUEST._serialized_start=486
- _UPLOADMISSINGBLOBSREQUEST._serialized_end=599
- _UPLOADMISSINGBLOBSRESPONSE._serialized_start=602
- _UPLOADMISSINGBLOBSRESPONSE._serialized_end=808
- _UPLOADMISSINGBLOBSRESPONSE_RESPONSE._serialized_start=381
- _UPLOADMISSINGBLOBSRESPONSE_RESPONSE._serialized_end=484
- _FETCHTREEREQUEST._serialized_start=811
- _FETCHTREEREQUEST._serialized_end=940
- _FETCHTREERESPONSE._serialized_start=942
- _FETCHTREERESPONSE._serialized_end=961
- _UPLOADTREEREQUEST._serialized_start=963
- _UPLOADTREEREQUEST._serialized_end=1067
- _UPLOADTREERESPONSE._serialized_start=1069
- _UPLOADTREERESPONSE._serialized_end=1089
- _STAGETREEREQUEST._serialized_start=1092
- _STAGETREEREQUEST._serialized_end=1325
- _STAGETREEREQUEST_CREDENTIALS._serialized_start=1286
- _STAGETREEREQUEST_CREDENTIALS._serialized_end=1325
- _STAGETREERESPONSE._serialized_start=1327
- _STAGETREERESPONSE._serialized_end=1360
- _CAPTURETREEREQUEST._serialized_start=1363
- _CAPTURETREEREQUEST._serialized_end=1604
- _CAPTURETREERESPONSE._serialized_start=1607
- _CAPTURETREERESPONSE._serialized_end=1891
- _CAPTURETREERESPONSE_RESPONSE._serialized_start=1697
- _CAPTURETREERESPONSE_RESPONSE._serialized_end=1891
- _CAPTUREFILESREQUEST._serialized_start=1894
- _CAPTUREFILESREQUEST._serialized_end=2039
- _CAPTUREFILESRESPONSE._serialized_start=2042
- _CAPTUREFILESRESPONSE._serialized_end=2354
- _CAPTUREFILESRESPONSE_RESPONSE._serialized_start=2134
- _CAPTUREFILESRESPONSE_RESPONSE._serialized_end=2354
- _GETINSTANCENAMEFORREMOTEREQUEST._serialized_start=2357
- _GETINSTANCENAMEFORREMOTEREQUEST._serialized_end=2488
- _GETINSTANCENAMEFORREMOTERESPONSE._serialized_start=2490
- _GETINSTANCENAMEFORREMOTERESPONSE._serialized_end=2547
- _REMOTE._serialized_start=2550
- _REMOTE._serialized_end=2799
- _GETINSTANCENAMEFORREMOTESREQUEST._serialized_start=2802
- _GETINSTANCENAMEFORREMOTESREQUEST._serialized_end=3059
- _GETINSTANCENAMEFORREMOTESRESPONSE._serialized_start=3061
- _GETINSTANCENAMEFORREMOTESRESPONSE._serialized_end=3119
- _GETINSTANCENAMEFORNAMESPACEREQUEST._serialized_start=3121
- _GETINSTANCENAMEFORNAMESPACEREQUEST._serialized_end=3194
- _GETINSTANCENAMEFORNAMESPACERESPONSE._serialized_start=3196
- _GETINSTANCENAMEFORNAMESPACERESPONSE._serialized_end=3256
- _GETLOCALDISKUSAGEREQUEST._serialized_start=3258
- _GETLOCALDISKUSAGEREQUEST._serialized_end=3284
- _GETLOCALDISKUSAGERESPONSE._serialized_start=3286
- _GETLOCALDISKUSAGERESPONSE._serialized_end=3354
- _LOCALCONTENTADDRESSABLESTORAGE._serialized_start=3357
- _LOCALCONTENTADDRESSABLESTORAGE._serialized_end=4582
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x62uild/buildgrid/local_cas.proto\x12\x0f\x62uild.buildgrid\x1a\x36\x62uild/bazel/remote/execution/v2/remote_execution.proto\x1a\x17google/rpc/status.proto\x1a\x1egoogle/protobuf/duration.proto\"p\n\x18\x46\x65tchMissingBlobsRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12=\n\x0c\x62lob_digests\x18\x02 \x03(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\"\xcc\x01\n\x19\x46\x65tchMissingBlobsResponse\x12\x46\n\tresponses\x18\x01 \x03(\x0b\x32\x33.build.buildgrid.FetchMissingBlobsResponse.Response\x1ag\n\x08Response\x12\x37\n\x06\x64igest\x18\x01 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\"\n\x06status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\"q\n\x19UploadMissingBlobsRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12=\n\x0c\x62lob_digests\x18\x02 \x03(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\"\xce\x01\n\x1aUploadMissingBlobsResponse\x12G\n\tresponses\x18\x01 \x03(\x0b\x32\x34.build.buildgrid.UploadMissingBlobsResponse.Response\x1ag\n\x08Response\x12\x37\n\x06\x64igest\x18\x01 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\"\n\x06status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\"\x81\x01\n\x10\x46\x65tchTreeRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12<\n\x0broot_digest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x18\n\x10\x66\x65tch_file_blobs\x18\x03 \x01(\x08\"\x13\n\x11\x46\x65tchTreeResponse\"h\n\x11UploadTreeRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12<\n\x0broot_digest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\"\x14\n\x12UploadTreeResponse\"\xe9\x01\n\x10StageTreeRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12<\n\x0broot_digest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x0c\n\x04path\x18\x03 \x01(\t\x12I\n\x12\x61\x63\x63\x65ss_credentials\x18\x04 \x01(\x0b\x32-.build.buildgrid.StageTreeRequest.Credentials\x1a\'\n\x0b\x43redentials\x12\x0b\n\x03uid\x18\x01 \x01(\x03\x12\x0b\n\x03gid\x18\x02 \x01(\x03\"!\n\x11StageTreeResponse\x12\x0c\n\x04path\x18\x01 \x01(\t\"\x86\x02\n\x12\x43\x61ptureTreeRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x0c\n\x04root\x18\x06 \x01(\t\x12\x0c\n\x04path\x18\x02 \x03(\t\x12\x1a\n\x12\x62ypass_local_cache\x18\x03 \x01(\x08\x12\x17\n\x0fnode_properties\x18\x04 \x03(\t\x12\x12\n\nmove_files\x18\x05 \x01(\x08\x12_\n\x17output_directory_format\x18\x07 \x01(\x0e\x32>.build.bazel.remote.execution.v2.Command.OutputDirectoryFormat\x12\x13\n\x0bskip_upload\x18\x08 \x01(\x08\"\x9c\x02\n\x13\x43\x61ptureTreeResponse\x12@\n\tresponses\x18\x01 \x03(\x0b\x32-.build.buildgrid.CaptureTreeResponse.Response\x1a\xc2\x01\n\x08Response\x12\x0c\n\x04path\x18\x01 \x01(\t\x12<\n\x0btree_digest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\"\n\x06status\x18\x03 \x01(\x0b\x32\x12.google.rpc.Status\x12\x46\n\x15root_directory_digest\x18\x04 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\"\xa6\x01\n\x13\x43\x61ptureFilesRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x0c\n\x04root\x18\x06 \x01(\t\x12\x0c\n\x04path\x18\x02 \x03(\t\x12\x1a\n\x12\x62ypass_local_cache\x18\x03 \x01(\x08\x12\x17\n\x0fnode_properties\x18\x04 \x03(\t\x12\x12\n\nmove_files\x18\x05 \x01(\x08\x12\x13\n\x0bskip_upload\x18\x07 \x01(\x08\"\xb8\x02\n\x14\x43\x61ptureFilesResponse\x12\x41\n\tresponses\x18\x01 \x03(\x0b\x32..build.buildgrid.CaptureFilesResponse.Response\x1a\xdc\x01\n\x08Response\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x37\n\x06\x64igest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\"\n\x06status\x18\x03 \x01(\x0b\x32\x12.google.rpc.Status\x12\x15\n\ris_executable\x18\x04 \x01(\x08\x12H\n\x0fnode_properties\x18\x06 \x01(\x0b\x32/.build.bazel.remote.execution.v2.NodePropertiesJ\x04\x08\x05\x10\x06\"\x83\x01\n\x1fGetInstanceNameForRemoteRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x15\n\rinstance_name\x18\x02 \x01(\t\x12\x13\n\x0bserver_cert\x18\x03 \x01(\x0c\x12\x12\n\nclient_key\x18\x04 \x01(\x0c\x12\x13\n\x0b\x63lient_cert\x18\x05 \x01(\x0c\"9\n GetInstanceNameForRemoteResponse\x12\x15\n\rinstance_name\x18\x01 \x01(\t\"\xf2\x02\n\x06Remote\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x15\n\rinstance_name\x18\x02 \x01(\t\x12\x13\n\x0bserver_cert\x18\x03 \x01(\x0c\x12\x12\n\nclient_key\x18\x04 \x01(\x0c\x12\x13\n\x0b\x63lient_cert\x18\x05 \x01(\x0c\x12\x19\n\x11\x61\x63\x63\x65ss_token_path\x18\x07 \x01(\t\x12?\n\x1c\x61\x63\x63\x65ss_token_reload_interval\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0ekeepalive_time\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x13\n\x0bretry_limit\x18\t \x01(\x03\x12.\n\x0bretry_delay\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x32\n\x0frequest_timeout\x18\x0b \x01(\x0b\x32\x19.google.protobuf.Duration\"\x81\x02\n GetInstanceNameForRemotesRequest\x12\x15\n\rinstance_name\x18\x03 \x01(\t\x12<\n\x1b\x63ontent_addressable_storage\x18\x01 \x01(\x0b\x32\x17.build.buildgrid.Remote\x12-\n\x0cremote_asset\x18\x02 \x01(\x0b\x32\x17.build.buildgrid.Remote\x12-\n\x0c\x61\x63tion_cache\x18\x04 \x01(\x0b\x32\x17.build.buildgrid.Remote\x12*\n\texecution\x18\x05 \x01(\x0b\x32\x17.build.buildgrid.Remote\":\n!GetInstanceNameForRemotesResponse\x12\x15\n\rinstance_name\x18\x01 \x01(\t\"I\n\"GetInstanceNameForNamespaceRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x0c\n\x04root\x18\x02 \x01(\t\"<\n#GetInstanceNameForNamespaceResponse\x12\x15\n\rinstance_name\x18\x01 \x01(\t\"\x1a\n\x18GetLocalDiskUsageRequest\"D\n\x19GetLocalDiskUsageResponse\x12\x12\n\nsize_bytes\x18\x01 \x01(\x03\x12\x13\n\x0bquota_bytes\x18\x02 \x01(\x03\x32\xc9\t\n\x1eLocalContentAddressableStorage\x12l\n\x11\x46\x65tchMissingBlobs\x12).build.buildgrid.FetchMissingBlobsRequest\x1a*.build.buildgrid.FetchMissingBlobsResponse\"\x00\x12o\n\x12UploadMissingBlobs\x12*.build.buildgrid.UploadMissingBlobsRequest\x1a+.build.buildgrid.UploadMissingBlobsResponse\"\x00\x12T\n\tFetchTree\x12!.build.buildgrid.FetchTreeRequest\x1a\".build.buildgrid.FetchTreeResponse\"\x00\x12W\n\nUploadTree\x12\".build.buildgrid.UploadTreeRequest\x1a#.build.buildgrid.UploadTreeResponse\"\x00\x12X\n\tStageTree\x12!.build.buildgrid.StageTreeRequest\x1a\".build.buildgrid.StageTreeResponse\"\x00(\x01\x30\x01\x12Z\n\x0b\x43\x61ptureTree\x12#.build.buildgrid.CaptureTreeRequest\x1a$.build.buildgrid.CaptureTreeResponse\"\x00\x12]\n\x0c\x43\x61ptureFiles\x12$.build.buildgrid.CaptureFilesRequest\x1a%.build.buildgrid.CaptureFilesResponse\"\x00\x12\x81\x01\n\x18GetInstanceNameForRemote\x12\x30.build.buildgrid.GetInstanceNameForRemoteRequest\x1a\x31.build.buildgrid.GetInstanceNameForRemoteResponse\"\x00\x12\x84\x01\n\x19GetInstanceNameForRemotes\x12\x31.build.buildgrid.GetInstanceNameForRemotesRequest\x1a\x32.build.buildgrid.GetInstanceNameForRemotesResponse\"\x00\x12\x8a\x01\n\x1bGetInstanceNameForNamespace\x12\x33.build.buildgrid.GetInstanceNameForNamespaceRequest\x1a\x34.build.buildgrid.GetInstanceNameForNamespaceResponse\"\x00\x12l\n\x11GetLocalDiskUsage\x12).build.buildgrid.GetLocalDiskUsageRequest\x1a*.build.buildgrid.GetLocalDiskUsageResponse\"\x00\x62\x06proto3')
+
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'build.buildgrid.local_cas_pb2', _globals)
+if not _descriptor._USE_C_DESCRIPTORS:
+ DESCRIPTOR._loaded_options = None
+ _globals['_FETCHMISSINGBLOBSREQUEST']._serialized_start=165
+ _globals['_FETCHMISSINGBLOBSREQUEST']._serialized_end=277
+ _globals['_FETCHMISSINGBLOBSRESPONSE']._serialized_start=280
+ _globals['_FETCHMISSINGBLOBSRESPONSE']._serialized_end=484
+ _globals['_FETCHMISSINGBLOBSRESPONSE_RESPONSE']._serialized_start=381
+ _globals['_FETCHMISSINGBLOBSRESPONSE_RESPONSE']._serialized_end=484
+ _globals['_UPLOADMISSINGBLOBSREQUEST']._serialized_start=486
+ _globals['_UPLOADMISSINGBLOBSREQUEST']._serialized_end=599
+ _globals['_UPLOADMISSINGBLOBSRESPONSE']._serialized_start=602
+ _globals['_UPLOADMISSINGBLOBSRESPONSE']._serialized_end=808
+ _globals['_UPLOADMISSINGBLOBSRESPONSE_RESPONSE']._serialized_start=381
+ _globals['_UPLOADMISSINGBLOBSRESPONSE_RESPONSE']._serialized_end=484
+ _globals['_FETCHTREEREQUEST']._serialized_start=811
+ _globals['_FETCHTREEREQUEST']._serialized_end=940
+ _globals['_FETCHTREERESPONSE']._serialized_start=942
+ _globals['_FETCHTREERESPONSE']._serialized_end=961
+ _globals['_UPLOADTREEREQUEST']._serialized_start=963
+ _globals['_UPLOADTREEREQUEST']._serialized_end=1067
+ _globals['_UPLOADTREERESPONSE']._serialized_start=1069
+ _globals['_UPLOADTREERESPONSE']._serialized_end=1089
+ _globals['_STAGETREEREQUEST']._serialized_start=1092
+ _globals['_STAGETREEREQUEST']._serialized_end=1325
+ _globals['_STAGETREEREQUEST_CREDENTIALS']._serialized_start=1286
+ _globals['_STAGETREEREQUEST_CREDENTIALS']._serialized_end=1325
+ _globals['_STAGETREERESPONSE']._serialized_start=1327
+ _globals['_STAGETREERESPONSE']._serialized_end=1360
+ _globals['_CAPTURETREEREQUEST']._serialized_start=1363
+ _globals['_CAPTURETREEREQUEST']._serialized_end=1625
+ _globals['_CAPTURETREERESPONSE']._serialized_start=1628
+ _globals['_CAPTURETREERESPONSE']._serialized_end=1912
+ _globals['_CAPTURETREERESPONSE_RESPONSE']._serialized_start=1718
+ _globals['_CAPTURETREERESPONSE_RESPONSE']._serialized_end=1912
+ _globals['_CAPTUREFILESREQUEST']._serialized_start=1915
+ _globals['_CAPTUREFILESREQUEST']._serialized_end=2081
+ _globals['_CAPTUREFILESRESPONSE']._serialized_start=2084
+ _globals['_CAPTUREFILESRESPONSE']._serialized_end=2396
+ _globals['_CAPTUREFILESRESPONSE_RESPONSE']._serialized_start=2176
+ _globals['_CAPTUREFILESRESPONSE_RESPONSE']._serialized_end=2396
+ _globals['_GETINSTANCENAMEFORREMOTEREQUEST']._serialized_start=2399
+ _globals['_GETINSTANCENAMEFORREMOTEREQUEST']._serialized_end=2530
+ _globals['_GETINSTANCENAMEFORREMOTERESPONSE']._serialized_start=2532
+ _globals['_GETINSTANCENAMEFORREMOTERESPONSE']._serialized_end=2589
+ _globals['_REMOTE']._serialized_start=2592
+ _globals['_REMOTE']._serialized_end=2962
+ _globals['_GETINSTANCENAMEFORREMOTESREQUEST']._serialized_start=2965
+ _globals['_GETINSTANCENAMEFORREMOTESREQUEST']._serialized_end=3222
+ _globals['_GETINSTANCENAMEFORREMOTESRESPONSE']._serialized_start=3224
+ _globals['_GETINSTANCENAMEFORREMOTESRESPONSE']._serialized_end=3282
+ _globals['_GETINSTANCENAMEFORNAMESPACEREQUEST']._serialized_start=3284
+ _globals['_GETINSTANCENAMEFORNAMESPACEREQUEST']._serialized_end=3357
+ _globals['_GETINSTANCENAMEFORNAMESPACERESPONSE']._serialized_start=3359
+ _globals['_GETINSTANCENAMEFORNAMESPACERESPONSE']._serialized_end=3419
+ _globals['_GETLOCALDISKUSAGEREQUEST']._serialized_start=3421
+ _globals['_GETLOCALDISKUSAGEREQUEST']._serialized_end=3447
+ _globals['_GETLOCALDISKUSAGERESPONSE']._serialized_start=3449
+ _globals['_GETLOCALDISKUSAGERESPONSE']._serialized_end=3517
+ _globals['_LOCALCONTENTADDRESSABLESTORAGE']._serialized_start=3520
+ _globals['_LOCALCONTENTADDRESSABLESTORAGE']._serialized_end=4745
# @@protoc_insertion_point(module_scope)
diff --git a/src/buildstream/_protos/build/buildgrid/local_cas_pb2.pyi b/src/buildstream/_protos/build/buildgrid/local_cas_pb2.pyi
new file mode 100644
index 000000000..0dcaf3fb3
--- /dev/null
+++ b/src/buildstream/_protos/build/buildgrid/local_cas_pb2.pyi
@@ -0,0 +1,268 @@
+from build.bazel.remote.execution.v2 import remote_execution_pb2 as _remote_execution_pb2
+from google.rpc import status_pb2 as _status_pb2
+from google.protobuf import duration_pb2 as _duration_pb2
+from google.protobuf.internal import containers as _containers
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
+
+DESCRIPTOR: _descriptor.FileDescriptor
+
+class FetchMissingBlobsRequest(_message.Message):
+ __slots__ = ("instance_name", "blob_digests")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ BLOB_DIGESTS_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ blob_digests: _containers.RepeatedCompositeFieldContainer[_remote_execution_pb2.Digest]
+ def __init__(self, instance_name: _Optional[str] = ..., blob_digests: _Optional[_Iterable[_Union[_remote_execution_pb2.Digest, _Mapping]]] = ...) -> None: ...
+
+class FetchMissingBlobsResponse(_message.Message):
+ __slots__ = ("responses",)
+ class Response(_message.Message):
+ __slots__ = ("digest", "status")
+ DIGEST_FIELD_NUMBER: _ClassVar[int]
+ STATUS_FIELD_NUMBER: _ClassVar[int]
+ digest: _remote_execution_pb2.Digest
+ status: _status_pb2.Status
+ def __init__(self, digest: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., status: _Optional[_Union[_status_pb2.Status, _Mapping]] = ...) -> None: ...
+ RESPONSES_FIELD_NUMBER: _ClassVar[int]
+ responses: _containers.RepeatedCompositeFieldContainer[FetchMissingBlobsResponse.Response]
+ def __init__(self, responses: _Optional[_Iterable[_Union[FetchMissingBlobsResponse.Response, _Mapping]]] = ...) -> None: ...
+
+class UploadMissingBlobsRequest(_message.Message):
+ __slots__ = ("instance_name", "blob_digests")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ BLOB_DIGESTS_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ blob_digests: _containers.RepeatedCompositeFieldContainer[_remote_execution_pb2.Digest]
+ def __init__(self, instance_name: _Optional[str] = ..., blob_digests: _Optional[_Iterable[_Union[_remote_execution_pb2.Digest, _Mapping]]] = ...) -> None: ...
+
+class UploadMissingBlobsResponse(_message.Message):
+ __slots__ = ("responses",)
+ class Response(_message.Message):
+ __slots__ = ("digest", "status")
+ DIGEST_FIELD_NUMBER: _ClassVar[int]
+ STATUS_FIELD_NUMBER: _ClassVar[int]
+ digest: _remote_execution_pb2.Digest
+ status: _status_pb2.Status
+ def __init__(self, digest: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., status: _Optional[_Union[_status_pb2.Status, _Mapping]] = ...) -> None: ...
+ RESPONSES_FIELD_NUMBER: _ClassVar[int]
+ responses: _containers.RepeatedCompositeFieldContainer[UploadMissingBlobsResponse.Response]
+ def __init__(self, responses: _Optional[_Iterable[_Union[UploadMissingBlobsResponse.Response, _Mapping]]] = ...) -> None: ...
+
+class FetchTreeRequest(_message.Message):
+ __slots__ = ("instance_name", "root_digest", "fetch_file_blobs")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ ROOT_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ FETCH_FILE_BLOBS_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ root_digest: _remote_execution_pb2.Digest
+ fetch_file_blobs: bool
+ def __init__(self, instance_name: _Optional[str] = ..., root_digest: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., fetch_file_blobs: bool = ...) -> None: ...
+
+class FetchTreeResponse(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+
+class UploadTreeRequest(_message.Message):
+ __slots__ = ("instance_name", "root_digest")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ ROOT_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ root_digest: _remote_execution_pb2.Digest
+ def __init__(self, instance_name: _Optional[str] = ..., root_digest: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ...) -> None: ...
+
+class UploadTreeResponse(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+
+class StageTreeRequest(_message.Message):
+ __slots__ = ("instance_name", "root_digest", "path", "access_credentials")
+ class Credentials(_message.Message):
+ __slots__ = ("uid", "gid")
+ UID_FIELD_NUMBER: _ClassVar[int]
+ GID_FIELD_NUMBER: _ClassVar[int]
+ uid: int
+ gid: int
+ def __init__(self, uid: _Optional[int] = ..., gid: _Optional[int] = ...) -> None: ...
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ ROOT_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ PATH_FIELD_NUMBER: _ClassVar[int]
+ ACCESS_CREDENTIALS_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ root_digest: _remote_execution_pb2.Digest
+ path: str
+ access_credentials: StageTreeRequest.Credentials
+ def __init__(self, instance_name: _Optional[str] = ..., root_digest: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., path: _Optional[str] = ..., access_credentials: _Optional[_Union[StageTreeRequest.Credentials, _Mapping]] = ...) -> None: ...
+
+class StageTreeResponse(_message.Message):
+ __slots__ = ("path",)
+ PATH_FIELD_NUMBER: _ClassVar[int]
+ path: str
+ def __init__(self, path: _Optional[str] = ...) -> None: ...
+
+class CaptureTreeRequest(_message.Message):
+ __slots__ = ("instance_name", "root", "path", "bypass_local_cache", "node_properties", "move_files", "output_directory_format", "skip_upload")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ ROOT_FIELD_NUMBER: _ClassVar[int]
+ PATH_FIELD_NUMBER: _ClassVar[int]
+ BYPASS_LOCAL_CACHE_FIELD_NUMBER: _ClassVar[int]
+ NODE_PROPERTIES_FIELD_NUMBER: _ClassVar[int]
+ MOVE_FILES_FIELD_NUMBER: _ClassVar[int]
+ OUTPUT_DIRECTORY_FORMAT_FIELD_NUMBER: _ClassVar[int]
+ SKIP_UPLOAD_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ root: str
+ path: _containers.RepeatedScalarFieldContainer[str]
+ bypass_local_cache: bool
+ node_properties: _containers.RepeatedScalarFieldContainer[str]
+ move_files: bool
+ output_directory_format: _remote_execution_pb2.Command.OutputDirectoryFormat
+ skip_upload: bool
+ def __init__(self, instance_name: _Optional[str] = ..., root: _Optional[str] = ..., path: _Optional[_Iterable[str]] = ..., bypass_local_cache: bool = ..., node_properties: _Optional[_Iterable[str]] = ..., move_files: bool = ..., output_directory_format: _Optional[_Union[_remote_execution_pb2.Command.OutputDirectoryFormat, str]] = ..., skip_upload: bool = ...) -> None: ...
+
+class CaptureTreeResponse(_message.Message):
+ __slots__ = ("responses",)
+ class Response(_message.Message):
+ __slots__ = ("path", "tree_digest", "status", "root_directory_digest")
+ PATH_FIELD_NUMBER: _ClassVar[int]
+ TREE_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ STATUS_FIELD_NUMBER: _ClassVar[int]
+ ROOT_DIRECTORY_DIGEST_FIELD_NUMBER: _ClassVar[int]
+ path: str
+ tree_digest: _remote_execution_pb2.Digest
+ status: _status_pb2.Status
+ root_directory_digest: _remote_execution_pb2.Digest
+ def __init__(self, path: _Optional[str] = ..., tree_digest: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., status: _Optional[_Union[_status_pb2.Status, _Mapping]] = ..., root_directory_digest: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ...) -> None: ...
+ RESPONSES_FIELD_NUMBER: _ClassVar[int]
+ responses: _containers.RepeatedCompositeFieldContainer[CaptureTreeResponse.Response]
+ def __init__(self, responses: _Optional[_Iterable[_Union[CaptureTreeResponse.Response, _Mapping]]] = ...) -> None: ...
+
+class CaptureFilesRequest(_message.Message):
+ __slots__ = ("instance_name", "root", "path", "bypass_local_cache", "node_properties", "move_files", "skip_upload")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ ROOT_FIELD_NUMBER: _ClassVar[int]
+ PATH_FIELD_NUMBER: _ClassVar[int]
+ BYPASS_LOCAL_CACHE_FIELD_NUMBER: _ClassVar[int]
+ NODE_PROPERTIES_FIELD_NUMBER: _ClassVar[int]
+ MOVE_FILES_FIELD_NUMBER: _ClassVar[int]
+ SKIP_UPLOAD_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ root: str
+ path: _containers.RepeatedScalarFieldContainer[str]
+ bypass_local_cache: bool
+ node_properties: _containers.RepeatedScalarFieldContainer[str]
+ move_files: bool
+ skip_upload: bool
+ def __init__(self, instance_name: _Optional[str] = ..., root: _Optional[str] = ..., path: _Optional[_Iterable[str]] = ..., bypass_local_cache: bool = ..., node_properties: _Optional[_Iterable[str]] = ..., move_files: bool = ..., skip_upload: bool = ...) -> None: ...
+
+class CaptureFilesResponse(_message.Message):
+ __slots__ = ("responses",)
+ class Response(_message.Message):
+ __slots__ = ("path", "digest", "status", "is_executable", "node_properties")
+ PATH_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FIELD_NUMBER: _ClassVar[int]
+ STATUS_FIELD_NUMBER: _ClassVar[int]
+ IS_EXECUTABLE_FIELD_NUMBER: _ClassVar[int]
+ NODE_PROPERTIES_FIELD_NUMBER: _ClassVar[int]
+ path: str
+ digest: _remote_execution_pb2.Digest
+ status: _status_pb2.Status
+ is_executable: bool
+ node_properties: _remote_execution_pb2.NodeProperties
+ def __init__(self, path: _Optional[str] = ..., digest: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., status: _Optional[_Union[_status_pb2.Status, _Mapping]] = ..., is_executable: bool = ..., node_properties: _Optional[_Union[_remote_execution_pb2.NodeProperties, _Mapping]] = ...) -> None: ...
+ RESPONSES_FIELD_NUMBER: _ClassVar[int]
+ responses: _containers.RepeatedCompositeFieldContainer[CaptureFilesResponse.Response]
+ def __init__(self, responses: _Optional[_Iterable[_Union[CaptureFilesResponse.Response, _Mapping]]] = ...) -> None: ...
+
+class GetInstanceNameForRemoteRequest(_message.Message):
+ __slots__ = ("url", "instance_name", "server_cert", "client_key", "client_cert")
+ URL_FIELD_NUMBER: _ClassVar[int]
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ SERVER_CERT_FIELD_NUMBER: _ClassVar[int]
+ CLIENT_KEY_FIELD_NUMBER: _ClassVar[int]
+ CLIENT_CERT_FIELD_NUMBER: _ClassVar[int]
+ url: str
+ instance_name: str
+ server_cert: bytes
+ client_key: bytes
+ client_cert: bytes
+ def __init__(self, url: _Optional[str] = ..., instance_name: _Optional[str] = ..., server_cert: _Optional[bytes] = ..., client_key: _Optional[bytes] = ..., client_cert: _Optional[bytes] = ...) -> None: ...
+
+class GetInstanceNameForRemoteResponse(_message.Message):
+ __slots__ = ("instance_name",)
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ def __init__(self, instance_name: _Optional[str] = ...) -> None: ...
+
+class Remote(_message.Message):
+ __slots__ = ("url", "instance_name", "server_cert", "client_key", "client_cert", "access_token_path", "access_token_reload_interval", "keepalive_time", "retry_limit", "retry_delay", "request_timeout")
+ URL_FIELD_NUMBER: _ClassVar[int]
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ SERVER_CERT_FIELD_NUMBER: _ClassVar[int]
+ CLIENT_KEY_FIELD_NUMBER: _ClassVar[int]
+ CLIENT_CERT_FIELD_NUMBER: _ClassVar[int]
+ ACCESS_TOKEN_PATH_FIELD_NUMBER: _ClassVar[int]
+ ACCESS_TOKEN_RELOAD_INTERVAL_FIELD_NUMBER: _ClassVar[int]
+ KEEPALIVE_TIME_FIELD_NUMBER: _ClassVar[int]
+ RETRY_LIMIT_FIELD_NUMBER: _ClassVar[int]
+ RETRY_DELAY_FIELD_NUMBER: _ClassVar[int]
+ REQUEST_TIMEOUT_FIELD_NUMBER: _ClassVar[int]
+ url: str
+ instance_name: str
+ server_cert: bytes
+ client_key: bytes
+ client_cert: bytes
+ access_token_path: str
+ access_token_reload_interval: _duration_pb2.Duration
+ keepalive_time: _duration_pb2.Duration
+ retry_limit: int
+ retry_delay: _duration_pb2.Duration
+ request_timeout: _duration_pb2.Duration
+ def __init__(self, url: _Optional[str] = ..., instance_name: _Optional[str] = ..., server_cert: _Optional[bytes] = ..., client_key: _Optional[bytes] = ..., client_cert: _Optional[bytes] = ..., access_token_path: _Optional[str] = ..., access_token_reload_interval: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., keepalive_time: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., retry_limit: _Optional[int] = ..., retry_delay: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., request_timeout: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...) -> None: ...
+
+class GetInstanceNameForRemotesRequest(_message.Message):
+ __slots__ = ("instance_name", "content_addressable_storage", "remote_asset", "action_cache", "execution")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ CONTENT_ADDRESSABLE_STORAGE_FIELD_NUMBER: _ClassVar[int]
+ REMOTE_ASSET_FIELD_NUMBER: _ClassVar[int]
+ ACTION_CACHE_FIELD_NUMBER: _ClassVar[int]
+ EXECUTION_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ content_addressable_storage: Remote
+ remote_asset: Remote
+ action_cache: Remote
+ execution: Remote
+ def __init__(self, instance_name: _Optional[str] = ..., content_addressable_storage: _Optional[_Union[Remote, _Mapping]] = ..., remote_asset: _Optional[_Union[Remote, _Mapping]] = ..., action_cache: _Optional[_Union[Remote, _Mapping]] = ..., execution: _Optional[_Union[Remote, _Mapping]] = ...) -> None: ...
+
+class GetInstanceNameForRemotesResponse(_message.Message):
+ __slots__ = ("instance_name",)
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ def __init__(self, instance_name: _Optional[str] = ...) -> None: ...
+
+class GetInstanceNameForNamespaceRequest(_message.Message):
+ __slots__ = ("instance_name", "root")
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ ROOT_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ root: str
+ def __init__(self, instance_name: _Optional[str] = ..., root: _Optional[str] = ...) -> None: ...
+
+class GetInstanceNameForNamespaceResponse(_message.Message):
+ __slots__ = ("instance_name",)
+ INSTANCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ instance_name: str
+ def __init__(self, instance_name: _Optional[str] = ...) -> None: ...
+
+class GetLocalDiskUsageRequest(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+
+class GetLocalDiskUsageResponse(_message.Message):
+ __slots__ = ("size_bytes", "quota_bytes")
+ SIZE_BYTES_FIELD_NUMBER: _ClassVar[int]
+ QUOTA_BYTES_FIELD_NUMBER: _ClassVar[int]
+ size_bytes: int
+ quota_bytes: int
+ def __init__(self, size_bytes: _Optional[int] = ..., quota_bytes: _Optional[int] = ...) -> None: ...
diff --git a/src/buildstream/_protos/build/buildgrid/local_cas_pb2_grpc.py b/src/buildstream/_protos/build/buildgrid/local_cas_pb2_grpc.py
index 0117d3a1c..f890b7c02 100644
--- a/src/buildstream/_protos/build/buildgrid/local_cas_pb2_grpc.py
+++ b/src/buildstream/_protos/build/buildgrid/local_cas_pb2_grpc.py
@@ -1,9 +1,29 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
+import warnings
from buildstream._protos.build.buildgrid import local_cas_pb2 as build_dot_buildgrid_dot_local__cas__pb2
+GRPC_GENERATED_VERSION = '1.68.0'
+GRPC_VERSION = grpc.__version__
+_version_not_supported = False
+
+try:
+ from grpc._utilities import first_version_is_lower
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
+except ImportError:
+ _version_not_supported = True
+
+if _version_not_supported:
+ raise RuntimeError(
+ f'The grpc package installed is at version {GRPC_VERSION},'
+ + f' but the generated code in build/buildgrid/local_cas_pb2_grpc.py depends on'
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
+ )
+
class LocalContentAddressableStorageStub(object):
"""Missing associated documentation comment in .proto file."""
@@ -18,57 +38,57 @@ def __init__(self, channel):
'/build.buildgrid.LocalContentAddressableStorage/FetchMissingBlobs',
request_serializer=build_dot_buildgrid_dot_local__cas__pb2.FetchMissingBlobsRequest.SerializeToString,
response_deserializer=build_dot_buildgrid_dot_local__cas__pb2.FetchMissingBlobsResponse.FromString,
- )
+ _registered_method=True)
self.UploadMissingBlobs = channel.unary_unary(
'/build.buildgrid.LocalContentAddressableStorage/UploadMissingBlobs',
request_serializer=build_dot_buildgrid_dot_local__cas__pb2.UploadMissingBlobsRequest.SerializeToString,
response_deserializer=build_dot_buildgrid_dot_local__cas__pb2.UploadMissingBlobsResponse.FromString,
- )
+ _registered_method=True)
self.FetchTree = channel.unary_unary(
'/build.buildgrid.LocalContentAddressableStorage/FetchTree',
request_serializer=build_dot_buildgrid_dot_local__cas__pb2.FetchTreeRequest.SerializeToString,
response_deserializer=build_dot_buildgrid_dot_local__cas__pb2.FetchTreeResponse.FromString,
- )
+ _registered_method=True)
self.UploadTree = channel.unary_unary(
'/build.buildgrid.LocalContentAddressableStorage/UploadTree',
request_serializer=build_dot_buildgrid_dot_local__cas__pb2.UploadTreeRequest.SerializeToString,
response_deserializer=build_dot_buildgrid_dot_local__cas__pb2.UploadTreeResponse.FromString,
- )
+ _registered_method=True)
self.StageTree = channel.stream_stream(
'/build.buildgrid.LocalContentAddressableStorage/StageTree',
request_serializer=build_dot_buildgrid_dot_local__cas__pb2.StageTreeRequest.SerializeToString,
response_deserializer=build_dot_buildgrid_dot_local__cas__pb2.StageTreeResponse.FromString,
- )
+ _registered_method=True)
self.CaptureTree = channel.unary_unary(
'/build.buildgrid.LocalContentAddressableStorage/CaptureTree',
request_serializer=build_dot_buildgrid_dot_local__cas__pb2.CaptureTreeRequest.SerializeToString,
response_deserializer=build_dot_buildgrid_dot_local__cas__pb2.CaptureTreeResponse.FromString,
- )
+ _registered_method=True)
self.CaptureFiles = channel.unary_unary(
'/build.buildgrid.LocalContentAddressableStorage/CaptureFiles',
request_serializer=build_dot_buildgrid_dot_local__cas__pb2.CaptureFilesRequest.SerializeToString,
response_deserializer=build_dot_buildgrid_dot_local__cas__pb2.CaptureFilesResponse.FromString,
- )
+ _registered_method=True)
self.GetInstanceNameForRemote = channel.unary_unary(
'/build.buildgrid.LocalContentAddressableStorage/GetInstanceNameForRemote',
request_serializer=build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForRemoteRequest.SerializeToString,
response_deserializer=build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForRemoteResponse.FromString,
- )
+ _registered_method=True)
self.GetInstanceNameForRemotes = channel.unary_unary(
'/build.buildgrid.LocalContentAddressableStorage/GetInstanceNameForRemotes',
request_serializer=build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForRemotesRequest.SerializeToString,
response_deserializer=build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForRemotesResponse.FromString,
- )
+ _registered_method=True)
self.GetInstanceNameForNamespace = channel.unary_unary(
'/build.buildgrid.LocalContentAddressableStorage/GetInstanceNameForNamespace',
request_serializer=build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForNamespaceRequest.SerializeToString,
response_deserializer=build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForNamespaceResponse.FromString,
- )
+ _registered_method=True)
self.GetLocalDiskUsage = channel.unary_unary(
'/build.buildgrid.LocalContentAddressableStorage/GetLocalDiskUsage',
request_serializer=build_dot_buildgrid_dot_local__cas__pb2.GetLocalDiskUsageRequest.SerializeToString,
response_deserializer=build_dot_buildgrid_dot_local__cas__pb2.GetLocalDiskUsageResponse.FromString,
- )
+ _registered_method=True)
class LocalContentAddressableStorageServicer(object):
@@ -181,6 +201,10 @@ def CaptureTree(self, request, context):
avoiding copies when it is known that files will not be needed after they
are imported. If a server chooses not to move them, the source files will
still exist after this request.
+
+ The `skip_upload` parameter is a hint to indicate that the files do not
+ need to be uploaded to the remote CAS. This can be useful for local-only
+ workflows where an upload step adds unnecessary latency.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
@@ -200,6 +224,10 @@ def CaptureFiles(self, request, context):
avoiding copies when it is known that files will not be needed after they
are imported. If a server chooses not to move them, the source files will
still exist after this request.
+
+ The `skip_upload` parameter is a hint to indicate that the files do not
+ need to be uploaded to the remote CAS. This can be useful for local-only
+ workflows where an upload step adds unnecessary latency.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
@@ -308,6 +336,7 @@ def add_LocalContentAddressableStorageServicer_to_server(servicer, server):
generic_handler = grpc.method_handlers_generic_handler(
'build.buildgrid.LocalContentAddressableStorage', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
+ server.add_registered_method_handlers('build.buildgrid.LocalContentAddressableStorage', rpc_method_handlers)
# This class is part of an EXPERIMENTAL API.
@@ -325,11 +354,21 @@ def FetchMissingBlobs(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.buildgrid.LocalContentAddressableStorage/FetchMissingBlobs',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.buildgrid.LocalContentAddressableStorage/FetchMissingBlobs',
build_dot_buildgrid_dot_local__cas__pb2.FetchMissingBlobsRequest.SerializeToString,
build_dot_buildgrid_dot_local__cas__pb2.FetchMissingBlobsResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def UploadMissingBlobs(request,
@@ -342,11 +381,21 @@ def UploadMissingBlobs(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.buildgrid.LocalContentAddressableStorage/UploadMissingBlobs',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.buildgrid.LocalContentAddressableStorage/UploadMissingBlobs',
build_dot_buildgrid_dot_local__cas__pb2.UploadMissingBlobsRequest.SerializeToString,
build_dot_buildgrid_dot_local__cas__pb2.UploadMissingBlobsResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def FetchTree(request,
@@ -359,11 +408,21 @@ def FetchTree(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.buildgrid.LocalContentAddressableStorage/FetchTree',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.buildgrid.LocalContentAddressableStorage/FetchTree',
build_dot_buildgrid_dot_local__cas__pb2.FetchTreeRequest.SerializeToString,
build_dot_buildgrid_dot_local__cas__pb2.FetchTreeResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def UploadTree(request,
@@ -376,11 +435,21 @@ def UploadTree(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.buildgrid.LocalContentAddressableStorage/UploadTree',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.buildgrid.LocalContentAddressableStorage/UploadTree',
build_dot_buildgrid_dot_local__cas__pb2.UploadTreeRequest.SerializeToString,
build_dot_buildgrid_dot_local__cas__pb2.UploadTreeResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def StageTree(request_iterator,
@@ -393,11 +462,21 @@ def StageTree(request_iterator,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.stream_stream(request_iterator, target, '/build.buildgrid.LocalContentAddressableStorage/StageTree',
+ return grpc.experimental.stream_stream(
+ request_iterator,
+ target,
+ '/build.buildgrid.LocalContentAddressableStorage/StageTree',
build_dot_buildgrid_dot_local__cas__pb2.StageTreeRequest.SerializeToString,
build_dot_buildgrid_dot_local__cas__pb2.StageTreeResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def CaptureTree(request,
@@ -410,11 +489,21 @@ def CaptureTree(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.buildgrid.LocalContentAddressableStorage/CaptureTree',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.buildgrid.LocalContentAddressableStorage/CaptureTree',
build_dot_buildgrid_dot_local__cas__pb2.CaptureTreeRequest.SerializeToString,
build_dot_buildgrid_dot_local__cas__pb2.CaptureTreeResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def CaptureFiles(request,
@@ -427,11 +516,21 @@ def CaptureFiles(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.buildgrid.LocalContentAddressableStorage/CaptureFiles',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.buildgrid.LocalContentAddressableStorage/CaptureFiles',
build_dot_buildgrid_dot_local__cas__pb2.CaptureFilesRequest.SerializeToString,
build_dot_buildgrid_dot_local__cas__pb2.CaptureFilesResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def GetInstanceNameForRemote(request,
@@ -444,11 +543,21 @@ def GetInstanceNameForRemote(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.buildgrid.LocalContentAddressableStorage/GetInstanceNameForRemote',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.buildgrid.LocalContentAddressableStorage/GetInstanceNameForRemote',
build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForRemoteRequest.SerializeToString,
build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForRemoteResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def GetInstanceNameForRemotes(request,
@@ -461,11 +570,21 @@ def GetInstanceNameForRemotes(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.buildgrid.LocalContentAddressableStorage/GetInstanceNameForRemotes',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.buildgrid.LocalContentAddressableStorage/GetInstanceNameForRemotes',
build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForRemotesRequest.SerializeToString,
build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForRemotesResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def GetInstanceNameForNamespace(request,
@@ -478,11 +597,21 @@ def GetInstanceNameForNamespace(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.buildgrid.LocalContentAddressableStorage/GetInstanceNameForNamespace',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.buildgrid.LocalContentAddressableStorage/GetInstanceNameForNamespace',
build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForNamespaceRequest.SerializeToString,
build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForNamespaceResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def GetLocalDiskUsage(request,
@@ -495,8 +624,18 @@ def GetLocalDiskUsage(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/build.buildgrid.LocalContentAddressableStorage/GetLocalDiskUsage',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/build.buildgrid.LocalContentAddressableStorage/GetLocalDiskUsage',
build_dot_buildgrid_dot_local__cas__pb2.GetLocalDiskUsageRequest.SerializeToString,
build_dot_buildgrid_dot_local__cas__pb2.GetLocalDiskUsageResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
diff --git a/src/buildstream/_protos/buildstream/v2/artifact_pb2.py b/src/buildstream/_protos/buildstream/v2/artifact_pb2.py
index f4883a1b2..cce08c186 100644
--- a/src/buildstream/_protos/buildstream/v2/artifact_pb2.py
+++ b/src/buildstream/_protos/buildstream/v2/artifact_pb2.py
@@ -1,12 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
+# NO CHECKED-IN PROTOBUF GENCODE
# source: buildstream/v2/artifact.proto
+# Protobuf Python Version: 5.28.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
+from google.protobuf import runtime_version as _runtime_version
from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+_runtime_version.ValidateProtobufRuntimeVersion(
+ _runtime_version.Domain.PUBLIC,
+ 5,
+ 28,
+ 1,
+ '',
+ 'buildstream/v2/artifact.proto'
+)
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
@@ -18,41 +28,15 @@
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x62uildstream/v2/artifact.proto\x12\x0e\x62uildstream.v2\x1a\x36\x62uild/bazel/remote/execution/v2/remote_execution.proto\x1a\x1cgoogle/api/annotations.proto\"\x89\x07\n\x08\x41rtifact\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x15\n\rbuild_success\x18\x02 \x01(\x08\x12\x13\n\x0b\x62uild_error\x18\x03 \x01(\t\x12\x1b\n\x13\x62uild_error_details\x18\x04 \x01(\t\x12\x12\n\nstrong_key\x18\x05 \x01(\t\x12\x10\n\x08weak_key\x18\x06 \x01(\t\x12\x16\n\x0ewas_workspaced\x18\x07 \x01(\x08\x12\x36\n\x05\x66iles\x18\x08 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x37\n\nbuild_deps\x18\t \x03(\x0b\x32#.buildstream.v2.Artifact.Dependency\x12<\n\x0bpublic_data\x18\n \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12.\n\x04logs\x18\x0b \x03(\x0b\x32 .buildstream.v2.Artifact.LogFile\x12:\n\tbuildtree\x18\x0c \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x38\n\x07sources\x18\r \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x43\n\x12low_diversity_meta\x18\x0e \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x44\n\x13high_diversity_meta\x18\x0f \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x12\x12\n\nstrict_key\x18\x10 \x01(\t\x12:\n\tbuildroot\x18\x11 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\x1a\x63\n\nDependency\x12\x14\n\x0cproject_name\x18\x01 \x01(\t\x12\x14\n\x0c\x65lement_name\x18\x02 \x01(\t\x12\x11\n\tcache_key\x18\x03 \x01(\t\x12\x16\n\x0ewas_workspaced\x18\x04 \x01(\x08\x1aP\n\x07LogFile\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x37\n\x06\x64igest\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digestb\x06proto3')
-
-
-_ARTIFACT = DESCRIPTOR.message_types_by_name['Artifact']
-_ARTIFACT_DEPENDENCY = _ARTIFACT.nested_types_by_name['Dependency']
-_ARTIFACT_LOGFILE = _ARTIFACT.nested_types_by_name['LogFile']
-Artifact = _reflection.GeneratedProtocolMessageType('Artifact', (_message.Message,), {
-
- 'Dependency' : _reflection.GeneratedProtocolMessageType('Dependency', (_message.Message,), {
- 'DESCRIPTOR' : _ARTIFACT_DEPENDENCY,
- '__module__' : 'buildstream.v2.artifact_pb2'
- # @@protoc_insertion_point(class_scope:buildstream.v2.Artifact.Dependency)
- })
- ,
-
- 'LogFile' : _reflection.GeneratedProtocolMessageType('LogFile', (_message.Message,), {
- 'DESCRIPTOR' : _ARTIFACT_LOGFILE,
- '__module__' : 'buildstream.v2.artifact_pb2'
- # @@protoc_insertion_point(class_scope:buildstream.v2.Artifact.LogFile)
- })
- ,
- 'DESCRIPTOR' : _ARTIFACT,
- '__module__' : 'buildstream.v2.artifact_pb2'
- # @@protoc_insertion_point(class_scope:buildstream.v2.Artifact)
- })
-_sym_db.RegisterMessage(Artifact)
-_sym_db.RegisterMessage(Artifact.Dependency)
-_sym_db.RegisterMessage(Artifact.LogFile)
-
-if _descriptor._USE_C_DESCRIPTORS == False:
-
- DESCRIPTOR._options = None
- _ARTIFACT._serialized_start=136
- _ARTIFACT._serialized_end=1041
- _ARTIFACT_DEPENDENCY._serialized_start=860
- _ARTIFACT_DEPENDENCY._serialized_end=959
- _ARTIFACT_LOGFILE._serialized_start=961
- _ARTIFACT_LOGFILE._serialized_end=1041
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'buildstream.v2.artifact_pb2', _globals)
+if not _descriptor._USE_C_DESCRIPTORS:
+ DESCRIPTOR._loaded_options = None
+ _globals['_ARTIFACT']._serialized_start=136
+ _globals['_ARTIFACT']._serialized_end=1041
+ _globals['_ARTIFACT_DEPENDENCY']._serialized_start=860
+ _globals['_ARTIFACT_DEPENDENCY']._serialized_end=959
+ _globals['_ARTIFACT_LOGFILE']._serialized_start=961
+ _globals['_ARTIFACT_LOGFILE']._serialized_end=1041
# @@protoc_insertion_point(module_scope)
diff --git a/src/buildstream/_protos/buildstream/v2/artifact_pb2.pyi b/src/buildstream/_protos/buildstream/v2/artifact_pb2.pyi
new file mode 100644
index 000000000..3f80ffa4b
--- /dev/null
+++ b/src/buildstream/_protos/buildstream/v2/artifact_pb2.pyi
@@ -0,0 +1,64 @@
+from build.bazel.remote.execution.v2 import remote_execution_pb2 as _remote_execution_pb2
+from google.api import annotations_pb2 as _annotations_pb2
+from google.protobuf.internal import containers as _containers
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
+
+DESCRIPTOR: _descriptor.FileDescriptor
+
+class Artifact(_message.Message):
+ __slots__ = ("version", "build_success", "build_error", "build_error_details", "strong_key", "weak_key", "was_workspaced", "files", "build_deps", "public_data", "logs", "buildtree", "sources", "low_diversity_meta", "high_diversity_meta", "strict_key", "buildroot")
+ class Dependency(_message.Message):
+ __slots__ = ("project_name", "element_name", "cache_key", "was_workspaced")
+ PROJECT_NAME_FIELD_NUMBER: _ClassVar[int]
+ ELEMENT_NAME_FIELD_NUMBER: _ClassVar[int]
+ CACHE_KEY_FIELD_NUMBER: _ClassVar[int]
+ WAS_WORKSPACED_FIELD_NUMBER: _ClassVar[int]
+ project_name: str
+ element_name: str
+ cache_key: str
+ was_workspaced: bool
+ def __init__(self, project_name: _Optional[str] = ..., element_name: _Optional[str] = ..., cache_key: _Optional[str] = ..., was_workspaced: bool = ...) -> None: ...
+ class LogFile(_message.Message):
+ __slots__ = ("name", "digest")
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ DIGEST_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ digest: _remote_execution_pb2.Digest
+ def __init__(self, name: _Optional[str] = ..., digest: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ...) -> None: ...
+ VERSION_FIELD_NUMBER: _ClassVar[int]
+ BUILD_SUCCESS_FIELD_NUMBER: _ClassVar[int]
+ BUILD_ERROR_FIELD_NUMBER: _ClassVar[int]
+ BUILD_ERROR_DETAILS_FIELD_NUMBER: _ClassVar[int]
+ STRONG_KEY_FIELD_NUMBER: _ClassVar[int]
+ WEAK_KEY_FIELD_NUMBER: _ClassVar[int]
+ WAS_WORKSPACED_FIELD_NUMBER: _ClassVar[int]
+ FILES_FIELD_NUMBER: _ClassVar[int]
+ BUILD_DEPS_FIELD_NUMBER: _ClassVar[int]
+ PUBLIC_DATA_FIELD_NUMBER: _ClassVar[int]
+ LOGS_FIELD_NUMBER: _ClassVar[int]
+ BUILDTREE_FIELD_NUMBER: _ClassVar[int]
+ SOURCES_FIELD_NUMBER: _ClassVar[int]
+ LOW_DIVERSITY_META_FIELD_NUMBER: _ClassVar[int]
+ HIGH_DIVERSITY_META_FIELD_NUMBER: _ClassVar[int]
+ STRICT_KEY_FIELD_NUMBER: _ClassVar[int]
+ BUILDROOT_FIELD_NUMBER: _ClassVar[int]
+ version: int
+ build_success: bool
+ build_error: str
+ build_error_details: str
+ strong_key: str
+ weak_key: str
+ was_workspaced: bool
+ files: _remote_execution_pb2.Digest
+ build_deps: _containers.RepeatedCompositeFieldContainer[Artifact.Dependency]
+ public_data: _remote_execution_pb2.Digest
+ logs: _containers.RepeatedCompositeFieldContainer[Artifact.LogFile]
+ buildtree: _remote_execution_pb2.Digest
+ sources: _remote_execution_pb2.Digest
+ low_diversity_meta: _remote_execution_pb2.Digest
+ high_diversity_meta: _remote_execution_pb2.Digest
+ strict_key: str
+ buildroot: _remote_execution_pb2.Digest
+ def __init__(self, version: _Optional[int] = ..., build_success: bool = ..., build_error: _Optional[str] = ..., build_error_details: _Optional[str] = ..., strong_key: _Optional[str] = ..., weak_key: _Optional[str] = ..., was_workspaced: bool = ..., files: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., build_deps: _Optional[_Iterable[_Union[Artifact.Dependency, _Mapping]]] = ..., public_data: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., logs: _Optional[_Iterable[_Union[Artifact.LogFile, _Mapping]]] = ..., buildtree: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., sources: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., low_diversity_meta: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., high_diversity_meta: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ..., strict_key: _Optional[str] = ..., buildroot: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ...) -> None: ...
diff --git a/src/buildstream/_protos/buildstream/v2/artifact_pb2_grpc.py b/src/buildstream/_protos/buildstream/v2/artifact_pb2_grpc.py
index 2daafffeb..546aaff8e 100644
--- a/src/buildstream/_protos/buildstream/v2/artifact_pb2_grpc.py
+++ b/src/buildstream/_protos/buildstream/v2/artifact_pb2_grpc.py
@@ -1,4 +1,24 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
+import warnings
+
+GRPC_GENERATED_VERSION = '1.68.0'
+GRPC_VERSION = grpc.__version__
+_version_not_supported = False
+
+try:
+ from grpc._utilities import first_version_is_lower
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
+except ImportError:
+ _version_not_supported = True
+
+if _version_not_supported:
+ raise RuntimeError(
+ f'The grpc package installed is at version {GRPC_VERSION},'
+ + f' but the generated code in buildstream/v2/artifact_pb2_grpc.py depends on'
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
+ )
diff --git a/src/buildstream/_protos/buildstream/v2/source_pb2.py b/src/buildstream/_protos/buildstream/v2/source_pb2.py
index 55542706a..25a1dcc34 100644
--- a/src/buildstream/_protos/buildstream/v2/source_pb2.py
+++ b/src/buildstream/_protos/buildstream/v2/source_pb2.py
@@ -1,12 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
+# NO CHECKED-IN PROTOBUF GENCODE
# source: buildstream/v2/source.proto
+# Protobuf Python Version: 5.28.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
+from google.protobuf import runtime_version as _runtime_version
from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+_runtime_version.ValidateProtobufRuntimeVersion(
+ _runtime_version.Domain.PUBLIC,
+ 5,
+ 28,
+ 1,
+ '',
+ 'buildstream/v2/source.proto'
+)
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
@@ -18,19 +28,11 @@
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x62uildstream/v2/source.proto\x12\x0e\x62uildstream.v2\x1a\x36\x62uild/bazel/remote/execution/v2/remote_execution.proto\x1a\x1cgoogle/api/annotations.proto\"Q\n\x06Source\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x36\n\x05\x66iles\x18\x02 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digestb\x06proto3')
-
-
-_SOURCE = DESCRIPTOR.message_types_by_name['Source']
-Source = _reflection.GeneratedProtocolMessageType('Source', (_message.Message,), {
- 'DESCRIPTOR' : _SOURCE,
- '__module__' : 'buildstream.v2.source_pb2'
- # @@protoc_insertion_point(class_scope:buildstream.v2.Source)
- })
-_sym_db.RegisterMessage(Source)
-
-if _descriptor._USE_C_DESCRIPTORS == False:
-
- DESCRIPTOR._options = None
- _SOURCE._serialized_start=133
- _SOURCE._serialized_end=214
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'buildstream.v2.source_pb2', _globals)
+if not _descriptor._USE_C_DESCRIPTORS:
+ DESCRIPTOR._loaded_options = None
+ _globals['_SOURCE']._serialized_start=133
+ _globals['_SOURCE']._serialized_end=214
# @@protoc_insertion_point(module_scope)
diff --git a/src/buildstream/_protos/buildstream/v2/source_pb2.pyi b/src/buildstream/_protos/buildstream/v2/source_pb2.pyi
new file mode 100644
index 000000000..05bb448d1
--- /dev/null
+++ b/src/buildstream/_protos/buildstream/v2/source_pb2.pyi
@@ -0,0 +1,15 @@
+from build.bazel.remote.execution.v2 import remote_execution_pb2 as _remote_execution_pb2
+from google.api import annotations_pb2 as _annotations_pb2
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union
+
+DESCRIPTOR: _descriptor.FileDescriptor
+
+class Source(_message.Message):
+ __slots__ = ("version", "files")
+ VERSION_FIELD_NUMBER: _ClassVar[int]
+ FILES_FIELD_NUMBER: _ClassVar[int]
+ version: int
+ files: _remote_execution_pb2.Digest
+ def __init__(self, version: _Optional[int] = ..., files: _Optional[_Union[_remote_execution_pb2.Digest, _Mapping]] = ...) -> None: ...
diff --git a/src/buildstream/_protos/buildstream/v2/source_pb2_grpc.py b/src/buildstream/_protos/buildstream/v2/source_pb2_grpc.py
index 2daafffeb..1a5d0b008 100644
--- a/src/buildstream/_protos/buildstream/v2/source_pb2_grpc.py
+++ b/src/buildstream/_protos/buildstream/v2/source_pb2_grpc.py
@@ -1,4 +1,24 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
+import warnings
+
+GRPC_GENERATED_VERSION = '1.68.0'
+GRPC_VERSION = grpc.__version__
+_version_not_supported = False
+
+try:
+ from grpc._utilities import first_version_is_lower
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
+except ImportError:
+ _version_not_supported = True
+
+if _version_not_supported:
+ raise RuntimeError(
+ f'The grpc package installed is at version {GRPC_VERSION},'
+ + f' but the generated code in buildstream/v2/source_pb2_grpc.py depends on'
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
+ )
diff --git a/src/buildstream/_protos/google/api/annotations_pb2.py b/src/buildstream/_protos/google/api/annotations_pb2.py
index ed5de6626..84e221d89 100644
--- a/src/buildstream/_protos/google/api/annotations_pb2.py
+++ b/src/buildstream/_protos/google/api/annotations_pb2.py
@@ -1,12 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
+# NO CHECKED-IN PROTOBUF GENCODE
# source: google/api/annotations.proto
+# Protobuf Python Version: 5.28.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
+from google.protobuf import runtime_version as _runtime_version
from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+_runtime_version.ValidateProtobufRuntimeVersion(
+ _runtime_version.Domain.PUBLIC,
+ 5,
+ 28,
+ 1,
+ '',
+ 'google/api/annotations.proto'
+)
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
@@ -18,13 +28,10 @@
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cgoogle/api/annotations.proto\x12\ngoogle.api\x1a\x15google/api/http.proto\x1a google/protobuf/descriptor.proto:E\n\x04http\x12\x1e.google.protobuf.MethodOptions\x18\xb0\xca\xbc\" \x01(\x0b\x32\x14.google.api.HttpRuleBn\n\x0e\x63om.google.apiB\x10\x41nnotationsProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3')
-
-HTTP_FIELD_NUMBER = 72295728
-http = DESCRIPTOR.extensions_by_name['http']
-
-if _descriptor._USE_C_DESCRIPTORS == False:
- google_dot_protobuf_dot_descriptor__pb2.MethodOptions.RegisterExtension(http)
-
- DESCRIPTOR._options = None
- DESCRIPTOR._serialized_options = b'\n\016com.google.apiB\020AnnotationsProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\242\002\004GAPI'
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.annotations_pb2', _globals)
+if not _descriptor._USE_C_DESCRIPTORS:
+ _globals['DESCRIPTOR']._loaded_options = None
+ _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.apiB\020AnnotationsProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\242\002\004GAPI'
# @@protoc_insertion_point(module_scope)
diff --git a/src/buildstream/_protos/google/api/annotations_pb2.pyi b/src/buildstream/_protos/google/api/annotations_pb2.pyi
new file mode 100644
index 000000000..b818f1809
--- /dev/null
+++ b/src/buildstream/_protos/google/api/annotations_pb2.pyi
@@ -0,0 +1,8 @@
+from google.api import http_pb2 as _http_pb2
+from google.protobuf import descriptor_pb2 as _descriptor_pb2
+from google.protobuf import descriptor as _descriptor
+from typing import ClassVar as _ClassVar
+
+DESCRIPTOR: _descriptor.FileDescriptor
+HTTP_FIELD_NUMBER: _ClassVar[int]
+http: _descriptor.FieldDescriptor
diff --git a/src/buildstream/_protos/google/api/annotations_pb2_grpc.py b/src/buildstream/_protos/google/api/annotations_pb2_grpc.py
index 2daafffeb..20414b108 100644
--- a/src/buildstream/_protos/google/api/annotations_pb2_grpc.py
+++ b/src/buildstream/_protos/google/api/annotations_pb2_grpc.py
@@ -1,4 +1,24 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
+import warnings
+
+GRPC_GENERATED_VERSION = '1.68.0'
+GRPC_VERSION = grpc.__version__
+_version_not_supported = False
+
+try:
+ from grpc._utilities import first_version_is_lower
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
+except ImportError:
+ _version_not_supported = True
+
+if _version_not_supported:
+ raise RuntimeError(
+ f'The grpc package installed is at version {GRPC_VERSION},'
+ + f' but the generated code in google/api/annotations_pb2_grpc.py depends on'
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
+ )
diff --git a/src/buildstream/_protos/google/api/http_pb2.py b/src/buildstream/_protos/google/api/http_pb2.py
index 22190edc9..4c8494956 100644
--- a/src/buildstream/_protos/google/api/http_pb2.py
+++ b/src/buildstream/_protos/google/api/http_pb2.py
@@ -1,12 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
+# NO CHECKED-IN PROTOBUF GENCODE
# source: google/api/http.proto
+# Protobuf Python Version: 5.28.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
+from google.protobuf import runtime_version as _runtime_version
from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+_runtime_version.ValidateProtobufRuntimeVersion(
+ _runtime_version.Domain.PUBLIC,
+ 5,
+ 28,
+ 1,
+ '',
+ 'google/api/http.proto'
+)
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
@@ -16,40 +26,16 @@
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15google/api/http.proto\x12\ngoogle.api\"T\n\x04Http\x12#\n\x05rules\x18\x01 \x03(\x0b\x32\x14.google.api.HttpRule\x12\'\n\x1f\x66ully_decode_reserved_expansion\x18\x02 \x01(\x08\"\xea\x01\n\x08HttpRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12\r\n\x03get\x18\x02 \x01(\tH\x00\x12\r\n\x03put\x18\x03 \x01(\tH\x00\x12\x0e\n\x04post\x18\x04 \x01(\tH\x00\x12\x10\n\x06\x64\x65lete\x18\x05 \x01(\tH\x00\x12\x0f\n\x05patch\x18\x06 \x01(\tH\x00\x12/\n\x06\x63ustom\x18\x08 \x01(\x0b\x32\x1d.google.api.CustomHttpPatternH\x00\x12\x0c\n\x04\x62ody\x18\x07 \x01(\t\x12\x31\n\x13\x61\x64\x64itional_bindings\x18\x0b \x03(\x0b\x32\x14.google.api.HttpRuleB\t\n\x07pattern\"/\n\x11\x43ustomHttpPattern\x12\x0c\n\x04kind\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\tBj\n\x0e\x63om.google.apiB\tHttpProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xf8\x01\x01\xa2\x02\x04GAPIb\x06proto3')
-
-
-_HTTP = DESCRIPTOR.message_types_by_name['Http']
-_HTTPRULE = DESCRIPTOR.message_types_by_name['HttpRule']
-_CUSTOMHTTPPATTERN = DESCRIPTOR.message_types_by_name['CustomHttpPattern']
-Http = _reflection.GeneratedProtocolMessageType('Http', (_message.Message,), {
- 'DESCRIPTOR' : _HTTP,
- '__module__' : 'google.api.http_pb2'
- # @@protoc_insertion_point(class_scope:google.api.Http)
- })
-_sym_db.RegisterMessage(Http)
-
-HttpRule = _reflection.GeneratedProtocolMessageType('HttpRule', (_message.Message,), {
- 'DESCRIPTOR' : _HTTPRULE,
- '__module__' : 'google.api.http_pb2'
- # @@protoc_insertion_point(class_scope:google.api.HttpRule)
- })
-_sym_db.RegisterMessage(HttpRule)
-
-CustomHttpPattern = _reflection.GeneratedProtocolMessageType('CustomHttpPattern', (_message.Message,), {
- 'DESCRIPTOR' : _CUSTOMHTTPPATTERN,
- '__module__' : 'google.api.http_pb2'
- # @@protoc_insertion_point(class_scope:google.api.CustomHttpPattern)
- })
-_sym_db.RegisterMessage(CustomHttpPattern)
-
-if _descriptor._USE_C_DESCRIPTORS == False:
-
- DESCRIPTOR._options = None
- DESCRIPTOR._serialized_options = b'\n\016com.google.apiB\tHttpProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\370\001\001\242\002\004GAPI'
- _HTTP._serialized_start=37
- _HTTP._serialized_end=121
- _HTTPRULE._serialized_start=124
- _HTTPRULE._serialized_end=358
- _CUSTOMHTTPPATTERN._serialized_start=360
- _CUSTOMHTTPPATTERN._serialized_end=407
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.http_pb2', _globals)
+if not _descriptor._USE_C_DESCRIPTORS:
+ _globals['DESCRIPTOR']._loaded_options = None
+ _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.apiB\tHttpProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\370\001\001\242\002\004GAPI'
+ _globals['_HTTP']._serialized_start=37
+ _globals['_HTTP']._serialized_end=121
+ _globals['_HTTPRULE']._serialized_start=124
+ _globals['_HTTPRULE']._serialized_end=358
+ _globals['_CUSTOMHTTPPATTERN']._serialized_start=360
+ _globals['_CUSTOMHTTPPATTERN']._serialized_end=407
# @@protoc_insertion_point(module_scope)
diff --git a/src/buildstream/_protos/google/api/http_pb2.pyi b/src/buildstream/_protos/google/api/http_pb2.pyi
new file mode 100644
index 000000000..9a28694a4
--- /dev/null
+++ b/src/buildstream/_protos/google/api/http_pb2.pyi
@@ -0,0 +1,44 @@
+from google.protobuf.internal import containers as _containers
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
+
+DESCRIPTOR: _descriptor.FileDescriptor
+
+class Http(_message.Message):
+ __slots__ = ("rules", "fully_decode_reserved_expansion")
+ RULES_FIELD_NUMBER: _ClassVar[int]
+ FULLY_DECODE_RESERVED_EXPANSION_FIELD_NUMBER: _ClassVar[int]
+ rules: _containers.RepeatedCompositeFieldContainer[HttpRule]
+ fully_decode_reserved_expansion: bool
+ def __init__(self, rules: _Optional[_Iterable[_Union[HttpRule, _Mapping]]] = ..., fully_decode_reserved_expansion: bool = ...) -> None: ...
+
+class HttpRule(_message.Message):
+ __slots__ = ("selector", "get", "put", "post", "delete", "patch", "custom", "body", "additional_bindings")
+ SELECTOR_FIELD_NUMBER: _ClassVar[int]
+ GET_FIELD_NUMBER: _ClassVar[int]
+ PUT_FIELD_NUMBER: _ClassVar[int]
+ POST_FIELD_NUMBER: _ClassVar[int]
+ DELETE_FIELD_NUMBER: _ClassVar[int]
+ PATCH_FIELD_NUMBER: _ClassVar[int]
+ CUSTOM_FIELD_NUMBER: _ClassVar[int]
+ BODY_FIELD_NUMBER: _ClassVar[int]
+ ADDITIONAL_BINDINGS_FIELD_NUMBER: _ClassVar[int]
+ selector: str
+ get: str
+ put: str
+ post: str
+ delete: str
+ patch: str
+ custom: CustomHttpPattern
+ body: str
+ additional_bindings: _containers.RepeatedCompositeFieldContainer[HttpRule]
+ def __init__(self, selector: _Optional[str] = ..., get: _Optional[str] = ..., put: _Optional[str] = ..., post: _Optional[str] = ..., delete: _Optional[str] = ..., patch: _Optional[str] = ..., custom: _Optional[_Union[CustomHttpPattern, _Mapping]] = ..., body: _Optional[str] = ..., additional_bindings: _Optional[_Iterable[_Union[HttpRule, _Mapping]]] = ...) -> None: ...
+
+class CustomHttpPattern(_message.Message):
+ __slots__ = ("kind", "path")
+ KIND_FIELD_NUMBER: _ClassVar[int]
+ PATH_FIELD_NUMBER: _ClassVar[int]
+ kind: str
+ path: str
+ def __init__(self, kind: _Optional[str] = ..., path: _Optional[str] = ...) -> None: ...
diff --git a/src/buildstream/_protos/google/api/http_pb2_grpc.py b/src/buildstream/_protos/google/api/http_pb2_grpc.py
index 2daafffeb..9c8eb1768 100644
--- a/src/buildstream/_protos/google/api/http_pb2_grpc.py
+++ b/src/buildstream/_protos/google/api/http_pb2_grpc.py
@@ -1,4 +1,24 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
+import warnings
+
+GRPC_GENERATED_VERSION = '1.68.0'
+GRPC_VERSION = grpc.__version__
+_version_not_supported = False
+
+try:
+ from grpc._utilities import first_version_is_lower
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
+except ImportError:
+ _version_not_supported = True
+
+if _version_not_supported:
+ raise RuntimeError(
+ f'The grpc package installed is at version {GRPC_VERSION},'
+ + f' but the generated code in google/api/http_pb2_grpc.py depends on'
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
+ )
diff --git a/src/buildstream/_protos/google/bytestream/bytestream_pb2.py b/src/buildstream/_protos/google/bytestream/bytestream_pb2.py
index 5ee114b25..ab047f310 100644
--- a/src/buildstream/_protos/google/bytestream/bytestream_pb2.py
+++ b/src/buildstream/_protos/google/bytestream/bytestream_pb2.py
@@ -1,12 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
+# NO CHECKED-IN PROTOBUF GENCODE
# source: google/bytestream/bytestream.proto
+# Protobuf Python Version: 5.28.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
+from google.protobuf import runtime_version as _runtime_version
from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+_runtime_version.ValidateProtobufRuntimeVersion(
+ _runtime_version.Domain.PUBLIC,
+ 5,
+ 28,
+ 1,
+ '',
+ 'google/bytestream/bytestream.proto'
+)
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
@@ -18,73 +28,24 @@
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"google/bytestream/bytestream.proto\x12\x11google.bytestream\x1a\x1cgoogle/api/annotations.proto\x1a\x1egoogle/protobuf/wrappers.proto\"M\n\x0bReadRequest\x12\x15\n\rresource_name\x18\x01 \x01(\t\x12\x13\n\x0bread_offset\x18\x02 \x01(\x03\x12\x12\n\nread_limit\x18\x03 \x01(\x03\"\x1c\n\x0cReadResponse\x12\x0c\n\x04\x64\x61ta\x18\n \x01(\x0c\"_\n\x0cWriteRequest\x12\x15\n\rresource_name\x18\x01 \x01(\t\x12\x14\n\x0cwrite_offset\x18\x02 \x01(\x03\x12\x14\n\x0c\x66inish_write\x18\x03 \x01(\x08\x12\x0c\n\x04\x64\x61ta\x18\n \x01(\x0c\"\'\n\rWriteResponse\x12\x16\n\x0e\x63ommitted_size\x18\x01 \x01(\x03\"0\n\x17QueryWriteStatusRequest\x12\x15\n\rresource_name\x18\x01 \x01(\t\"D\n\x18QueryWriteStatusResponse\x12\x16\n\x0e\x63ommitted_size\x18\x01 \x01(\x03\x12\x10\n\x08\x63omplete\x18\x02 \x01(\x08\x32\x92\x02\n\nByteStream\x12I\n\x04Read\x12\x1e.google.bytestream.ReadRequest\x1a\x1f.google.bytestream.ReadResponse0\x01\x12L\n\x05Write\x12\x1f.google.bytestream.WriteRequest\x1a .google.bytestream.WriteResponse(\x01\x12k\n\x10QueryWriteStatus\x12*.google.bytestream.QueryWriteStatusRequest\x1a+.google.bytestream.QueryWriteStatusResponseBe\n\x15\x63om.google.bytestreamB\x0f\x42yteStreamProtoZ;google.golang.org/genproto/googleapis/bytestream;bytestreamb\x06proto3')
-
-
-_READREQUEST = DESCRIPTOR.message_types_by_name['ReadRequest']
-_READRESPONSE = DESCRIPTOR.message_types_by_name['ReadResponse']
-_WRITEREQUEST = DESCRIPTOR.message_types_by_name['WriteRequest']
-_WRITERESPONSE = DESCRIPTOR.message_types_by_name['WriteResponse']
-_QUERYWRITESTATUSREQUEST = DESCRIPTOR.message_types_by_name['QueryWriteStatusRequest']
-_QUERYWRITESTATUSRESPONSE = DESCRIPTOR.message_types_by_name['QueryWriteStatusResponse']
-ReadRequest = _reflection.GeneratedProtocolMessageType('ReadRequest', (_message.Message,), {
- 'DESCRIPTOR' : _READREQUEST,
- '__module__' : 'google.bytestream.bytestream_pb2'
- # @@protoc_insertion_point(class_scope:google.bytestream.ReadRequest)
- })
-_sym_db.RegisterMessage(ReadRequest)
-
-ReadResponse = _reflection.GeneratedProtocolMessageType('ReadResponse', (_message.Message,), {
- 'DESCRIPTOR' : _READRESPONSE,
- '__module__' : 'google.bytestream.bytestream_pb2'
- # @@protoc_insertion_point(class_scope:google.bytestream.ReadResponse)
- })
-_sym_db.RegisterMessage(ReadResponse)
-
-WriteRequest = _reflection.GeneratedProtocolMessageType('WriteRequest', (_message.Message,), {
- 'DESCRIPTOR' : _WRITEREQUEST,
- '__module__' : 'google.bytestream.bytestream_pb2'
- # @@protoc_insertion_point(class_scope:google.bytestream.WriteRequest)
- })
-_sym_db.RegisterMessage(WriteRequest)
-
-WriteResponse = _reflection.GeneratedProtocolMessageType('WriteResponse', (_message.Message,), {
- 'DESCRIPTOR' : _WRITERESPONSE,
- '__module__' : 'google.bytestream.bytestream_pb2'
- # @@protoc_insertion_point(class_scope:google.bytestream.WriteResponse)
- })
-_sym_db.RegisterMessage(WriteResponse)
-
-QueryWriteStatusRequest = _reflection.GeneratedProtocolMessageType('QueryWriteStatusRequest', (_message.Message,), {
- 'DESCRIPTOR' : _QUERYWRITESTATUSREQUEST,
- '__module__' : 'google.bytestream.bytestream_pb2'
- # @@protoc_insertion_point(class_scope:google.bytestream.QueryWriteStatusRequest)
- })
-_sym_db.RegisterMessage(QueryWriteStatusRequest)
-
-QueryWriteStatusResponse = _reflection.GeneratedProtocolMessageType('QueryWriteStatusResponse', (_message.Message,), {
- 'DESCRIPTOR' : _QUERYWRITESTATUSRESPONSE,
- '__module__' : 'google.bytestream.bytestream_pb2'
- # @@protoc_insertion_point(class_scope:google.bytestream.QueryWriteStatusResponse)
- })
-_sym_db.RegisterMessage(QueryWriteStatusResponse)
-
-_BYTESTREAM = DESCRIPTOR.services_by_name['ByteStream']
-if _descriptor._USE_C_DESCRIPTORS == False:
-
- DESCRIPTOR._options = None
- DESCRIPTOR._serialized_options = b'\n\025com.google.bytestreamB\017ByteStreamProtoZ;google.golang.org/genproto/googleapis/bytestream;bytestream'
- _READREQUEST._serialized_start=119
- _READREQUEST._serialized_end=196
- _READRESPONSE._serialized_start=198
- _READRESPONSE._serialized_end=226
- _WRITEREQUEST._serialized_start=228
- _WRITEREQUEST._serialized_end=323
- _WRITERESPONSE._serialized_start=325
- _WRITERESPONSE._serialized_end=364
- _QUERYWRITESTATUSREQUEST._serialized_start=366
- _QUERYWRITESTATUSREQUEST._serialized_end=414
- _QUERYWRITESTATUSRESPONSE._serialized_start=416
- _QUERYWRITESTATUSRESPONSE._serialized_end=484
- _BYTESTREAM._serialized_start=487
- _BYTESTREAM._serialized_end=761
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.bytestream.bytestream_pb2', _globals)
+if not _descriptor._USE_C_DESCRIPTORS:
+ _globals['DESCRIPTOR']._loaded_options = None
+ _globals['DESCRIPTOR']._serialized_options = b'\n\025com.google.bytestreamB\017ByteStreamProtoZ;google.golang.org/genproto/googleapis/bytestream;bytestream'
+ _globals['_READREQUEST']._serialized_start=119
+ _globals['_READREQUEST']._serialized_end=196
+ _globals['_READRESPONSE']._serialized_start=198
+ _globals['_READRESPONSE']._serialized_end=226
+ _globals['_WRITEREQUEST']._serialized_start=228
+ _globals['_WRITEREQUEST']._serialized_end=323
+ _globals['_WRITERESPONSE']._serialized_start=325
+ _globals['_WRITERESPONSE']._serialized_end=364
+ _globals['_QUERYWRITESTATUSREQUEST']._serialized_start=366
+ _globals['_QUERYWRITESTATUSREQUEST']._serialized_end=414
+ _globals['_QUERYWRITESTATUSRESPONSE']._serialized_start=416
+ _globals['_QUERYWRITESTATUSRESPONSE']._serialized_end=484
+ _globals['_BYTESTREAM']._serialized_start=487
+ _globals['_BYTESTREAM']._serialized_end=761
# @@protoc_insertion_point(module_scope)
diff --git a/src/buildstream/_protos/google/bytestream/bytestream_pb2.pyi b/src/buildstream/_protos/google/bytestream/bytestream_pb2.pyi
new file mode 100644
index 000000000..d330cd695
--- /dev/null
+++ b/src/buildstream/_protos/google/bytestream/bytestream_pb2.pyi
@@ -0,0 +1,55 @@
+from google.api import annotations_pb2 as _annotations_pb2
+from google.protobuf import wrappers_pb2 as _wrappers_pb2
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from typing import ClassVar as _ClassVar, Optional as _Optional
+
+DESCRIPTOR: _descriptor.FileDescriptor
+
+class ReadRequest(_message.Message):
+ __slots__ = ("resource_name", "read_offset", "read_limit")
+ RESOURCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ READ_OFFSET_FIELD_NUMBER: _ClassVar[int]
+ READ_LIMIT_FIELD_NUMBER: _ClassVar[int]
+ resource_name: str
+ read_offset: int
+ read_limit: int
+ def __init__(self, resource_name: _Optional[str] = ..., read_offset: _Optional[int] = ..., read_limit: _Optional[int] = ...) -> None: ...
+
+class ReadResponse(_message.Message):
+ __slots__ = ("data",)
+ DATA_FIELD_NUMBER: _ClassVar[int]
+ data: bytes
+ def __init__(self, data: _Optional[bytes] = ...) -> None: ...
+
+class WriteRequest(_message.Message):
+ __slots__ = ("resource_name", "write_offset", "finish_write", "data")
+ RESOURCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ WRITE_OFFSET_FIELD_NUMBER: _ClassVar[int]
+ FINISH_WRITE_FIELD_NUMBER: _ClassVar[int]
+ DATA_FIELD_NUMBER: _ClassVar[int]
+ resource_name: str
+ write_offset: int
+ finish_write: bool
+ data: bytes
+ def __init__(self, resource_name: _Optional[str] = ..., write_offset: _Optional[int] = ..., finish_write: bool = ..., data: _Optional[bytes] = ...) -> None: ...
+
+class WriteResponse(_message.Message):
+ __slots__ = ("committed_size",)
+ COMMITTED_SIZE_FIELD_NUMBER: _ClassVar[int]
+ committed_size: int
+ def __init__(self, committed_size: _Optional[int] = ...) -> None: ...
+
+class QueryWriteStatusRequest(_message.Message):
+ __slots__ = ("resource_name",)
+ RESOURCE_NAME_FIELD_NUMBER: _ClassVar[int]
+ resource_name: str
+ def __init__(self, resource_name: _Optional[str] = ...) -> None: ...
+
+class QueryWriteStatusResponse(_message.Message):
+ __slots__ = ("committed_size", "complete")
+ COMMITTED_SIZE_FIELD_NUMBER: _ClassVar[int]
+ COMPLETE_FIELD_NUMBER: _ClassVar[int]
+ committed_size: int
+ complete: bool
+ def __init__(self, committed_size: _Optional[int] = ..., complete: bool = ...) -> None: ...
diff --git a/src/buildstream/_protos/google/bytestream/bytestream_pb2_grpc.py b/src/buildstream/_protos/google/bytestream/bytestream_pb2_grpc.py
index 36dd1eb92..164d68fef 100644
--- a/src/buildstream/_protos/google/bytestream/bytestream_pb2_grpc.py
+++ b/src/buildstream/_protos/google/bytestream/bytestream_pb2_grpc.py
@@ -1,9 +1,29 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
+import warnings
from buildstream._protos.google.bytestream import bytestream_pb2 as google_dot_bytestream_dot_bytestream__pb2
+GRPC_GENERATED_VERSION = '1.68.0'
+GRPC_VERSION = grpc.__version__
+_version_not_supported = False
+
+try:
+ from grpc._utilities import first_version_is_lower
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
+except ImportError:
+ _version_not_supported = True
+
+if _version_not_supported:
+ raise RuntimeError(
+ f'The grpc package installed is at version {GRPC_VERSION},'
+ + f' but the generated code in google/bytestream/bytestream_pb2_grpc.py depends on'
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
+ )
+
class ByteStreamStub(object):
"""#### Introduction
@@ -41,17 +61,17 @@ def __init__(self, channel):
'/google.bytestream.ByteStream/Read',
request_serializer=google_dot_bytestream_dot_bytestream__pb2.ReadRequest.SerializeToString,
response_deserializer=google_dot_bytestream_dot_bytestream__pb2.ReadResponse.FromString,
- )
+ _registered_method=True)
self.Write = channel.stream_unary(
'/google.bytestream.ByteStream/Write',
request_serializer=google_dot_bytestream_dot_bytestream__pb2.WriteRequest.SerializeToString,
response_deserializer=google_dot_bytestream_dot_bytestream__pb2.WriteResponse.FromString,
- )
+ _registered_method=True)
self.QueryWriteStatus = channel.unary_unary(
'/google.bytestream.ByteStream/QueryWriteStatus',
request_serializer=google_dot_bytestream_dot_bytestream__pb2.QueryWriteStatusRequest.SerializeToString,
response_deserializer=google_dot_bytestream_dot_bytestream__pb2.QueryWriteStatusResponse.FromString,
- )
+ _registered_method=True)
class ByteStreamServicer(object):
@@ -159,6 +179,7 @@ def add_ByteStreamServicer_to_server(servicer, server):
generic_handler = grpc.method_handlers_generic_handler(
'google.bytestream.ByteStream', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
+ server.add_registered_method_handlers('google.bytestream.ByteStream', rpc_method_handlers)
# This class is part of an EXPERIMENTAL API.
@@ -199,11 +220,21 @@ def Read(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_stream(request, target, '/google.bytestream.ByteStream/Read',
+ return grpc.experimental.unary_stream(
+ request,
+ target,
+ '/google.bytestream.ByteStream/Read',
google_dot_bytestream_dot_bytestream__pb2.ReadRequest.SerializeToString,
google_dot_bytestream_dot_bytestream__pb2.ReadResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def Write(request_iterator,
@@ -216,11 +247,21 @@ def Write(request_iterator,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.stream_unary(request_iterator, target, '/google.bytestream.ByteStream/Write',
+ return grpc.experimental.stream_unary(
+ request_iterator,
+ target,
+ '/google.bytestream.ByteStream/Write',
google_dot_bytestream_dot_bytestream__pb2.WriteRequest.SerializeToString,
google_dot_bytestream_dot_bytestream__pb2.WriteResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def QueryWriteStatus(request,
@@ -233,8 +274,18 @@ def QueryWriteStatus(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/google.bytestream.ByteStream/QueryWriteStatus',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/google.bytestream.ByteStream/QueryWriteStatus',
google_dot_bytestream_dot_bytestream__pb2.QueryWriteStatusRequest.SerializeToString,
google_dot_bytestream_dot_bytestream__pb2.QueryWriteStatusResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
diff --git a/src/buildstream/_protos/google/longrunning/operations_pb2.py b/src/buildstream/_protos/google/longrunning/operations_pb2.py
index 4bbd08aa6..e1e27af54 100644
--- a/src/buildstream/_protos/google/longrunning/operations_pb2.py
+++ b/src/buildstream/_protos/google/longrunning/operations_pb2.py
@@ -1,12 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
+# NO CHECKED-IN PROTOBUF GENCODE
# source: google/longrunning/operations.proto
+# Protobuf Python Version: 5.28.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
+from google.protobuf import runtime_version as _runtime_version
from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+_runtime_version.ValidateProtobufRuntimeVersion(
+ _runtime_version.Domain.PUBLIC,
+ 5,
+ 28,
+ 1,
+ '',
+ 'google/longrunning/operations.proto'
+)
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
@@ -20,81 +30,32 @@
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#google/longrunning/operations.proto\x12\x12google.longrunning\x1a\x1cgoogle/api/annotations.proto\x1a\x19google/protobuf/any.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x17google/rpc/status.proto\"\xa8\x01\n\tOperation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12&\n\x08metadata\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any\x12\x0c\n\x04\x64one\x18\x03 \x01(\x08\x12#\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x12.google.rpc.StatusH\x00\x12(\n\x08response\x18\x05 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x42\x08\n\x06result\"#\n\x13GetOperationRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\\\n\x15ListOperationsRequest\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x01 \x01(\t\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"d\n\x16ListOperationsResponse\x12\x31\n\noperations\x18\x01 \x03(\x0b\x32\x1d.google.longrunning.Operation\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"&\n\x16\x43\x61ncelOperationRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"&\n\x16\x44\x65leteOperationRequest\x12\x0c\n\x04name\x18\x01 \x01(\t2\x8c\x04\n\nOperations\x12\x86\x01\n\x0eListOperations\x12).google.longrunning.ListOperationsRequest\x1a*.google.longrunning.ListOperationsResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\x12\x15/v1/{name=operations}\x12x\n\x0cGetOperation\x12\'.google.longrunning.GetOperationRequest\x1a\x1d.google.longrunning.Operation\" \x82\xd3\xe4\x93\x02\x1a\x12\x18/v1/{name=operations/**}\x12w\n\x0f\x44\x65leteOperation\x12*.google.longrunning.DeleteOperationRequest\x1a\x16.google.protobuf.Empty\" \x82\xd3\xe4\x93\x02\x1a*\x18/v1/{name=operations/**}\x12\x81\x01\n\x0f\x43\x61ncelOperation\x12*.google.longrunning.CancelOperationRequest\x1a\x16.google.protobuf.Empty\"*\x82\xd3\xe4\x93\x02$\"\x1f/v1/{name=operations/**}:cancel:\x01*B\x94\x01\n\x16\x63om.google.longrunningB\x0fOperationsProtoP\x01Z=google.golang.org/genproto/googleapis/longrunning;longrunning\xaa\x02\x12Google.LongRunning\xca\x02\x12Google\\LongRunningb\x06proto3')
-
-
-_OPERATION = DESCRIPTOR.message_types_by_name['Operation']
-_GETOPERATIONREQUEST = DESCRIPTOR.message_types_by_name['GetOperationRequest']
-_LISTOPERATIONSREQUEST = DESCRIPTOR.message_types_by_name['ListOperationsRequest']
-_LISTOPERATIONSRESPONSE = DESCRIPTOR.message_types_by_name['ListOperationsResponse']
-_CANCELOPERATIONREQUEST = DESCRIPTOR.message_types_by_name['CancelOperationRequest']
-_DELETEOPERATIONREQUEST = DESCRIPTOR.message_types_by_name['DeleteOperationRequest']
-Operation = _reflection.GeneratedProtocolMessageType('Operation', (_message.Message,), {
- 'DESCRIPTOR' : _OPERATION,
- '__module__' : 'google.longrunning.operations_pb2'
- # @@protoc_insertion_point(class_scope:google.longrunning.Operation)
- })
-_sym_db.RegisterMessage(Operation)
-
-GetOperationRequest = _reflection.GeneratedProtocolMessageType('GetOperationRequest', (_message.Message,), {
- 'DESCRIPTOR' : _GETOPERATIONREQUEST,
- '__module__' : 'google.longrunning.operations_pb2'
- # @@protoc_insertion_point(class_scope:google.longrunning.GetOperationRequest)
- })
-_sym_db.RegisterMessage(GetOperationRequest)
-
-ListOperationsRequest = _reflection.GeneratedProtocolMessageType('ListOperationsRequest', (_message.Message,), {
- 'DESCRIPTOR' : _LISTOPERATIONSREQUEST,
- '__module__' : 'google.longrunning.operations_pb2'
- # @@protoc_insertion_point(class_scope:google.longrunning.ListOperationsRequest)
- })
-_sym_db.RegisterMessage(ListOperationsRequest)
-
-ListOperationsResponse = _reflection.GeneratedProtocolMessageType('ListOperationsResponse', (_message.Message,), {
- 'DESCRIPTOR' : _LISTOPERATIONSRESPONSE,
- '__module__' : 'google.longrunning.operations_pb2'
- # @@protoc_insertion_point(class_scope:google.longrunning.ListOperationsResponse)
- })
-_sym_db.RegisterMessage(ListOperationsResponse)
-
-CancelOperationRequest = _reflection.GeneratedProtocolMessageType('CancelOperationRequest', (_message.Message,), {
- 'DESCRIPTOR' : _CANCELOPERATIONREQUEST,
- '__module__' : 'google.longrunning.operations_pb2'
- # @@protoc_insertion_point(class_scope:google.longrunning.CancelOperationRequest)
- })
-_sym_db.RegisterMessage(CancelOperationRequest)
-
-DeleteOperationRequest = _reflection.GeneratedProtocolMessageType('DeleteOperationRequest', (_message.Message,), {
- 'DESCRIPTOR' : _DELETEOPERATIONREQUEST,
- '__module__' : 'google.longrunning.operations_pb2'
- # @@protoc_insertion_point(class_scope:google.longrunning.DeleteOperationRequest)
- })
-_sym_db.RegisterMessage(DeleteOperationRequest)
-
-_OPERATIONS = DESCRIPTOR.services_by_name['Operations']
-if _descriptor._USE_C_DESCRIPTORS == False:
-
- DESCRIPTOR._options = None
- DESCRIPTOR._serialized_options = b'\n\026com.google.longrunningB\017OperationsProtoP\001Z=google.golang.org/genproto/googleapis/longrunning;longrunning\252\002\022Google.LongRunning\312\002\022Google\\LongRunning'
- _OPERATIONS.methods_by_name['ListOperations']._options = None
- _OPERATIONS.methods_by_name['ListOperations']._serialized_options = b'\202\323\344\223\002\027\022\025/v1/{name=operations}'
- _OPERATIONS.methods_by_name['GetOperation']._options = None
- _OPERATIONS.methods_by_name['GetOperation']._serialized_options = b'\202\323\344\223\002\032\022\030/v1/{name=operations/**}'
- _OPERATIONS.methods_by_name['DeleteOperation']._options = None
- _OPERATIONS.methods_by_name['DeleteOperation']._serialized_options = b'\202\323\344\223\002\032*\030/v1/{name=operations/**}'
- _OPERATIONS.methods_by_name['CancelOperation']._options = None
- _OPERATIONS.methods_by_name['CancelOperation']._serialized_options = b'\202\323\344\223\002$\"\037/v1/{name=operations/**}:cancel:\001*'
- _OPERATION._serialized_start=171
- _OPERATION._serialized_end=339
- _GETOPERATIONREQUEST._serialized_start=341
- _GETOPERATIONREQUEST._serialized_end=376
- _LISTOPERATIONSREQUEST._serialized_start=378
- _LISTOPERATIONSREQUEST._serialized_end=470
- _LISTOPERATIONSRESPONSE._serialized_start=472
- _LISTOPERATIONSRESPONSE._serialized_end=572
- _CANCELOPERATIONREQUEST._serialized_start=574
- _CANCELOPERATIONREQUEST._serialized_end=612
- _DELETEOPERATIONREQUEST._serialized_start=614
- _DELETEOPERATIONREQUEST._serialized_end=652
- _OPERATIONS._serialized_start=655
- _OPERATIONS._serialized_end=1179
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.longrunning.operations_pb2', _globals)
+if not _descriptor._USE_C_DESCRIPTORS:
+ _globals['DESCRIPTOR']._loaded_options = None
+ _globals['DESCRIPTOR']._serialized_options = b'\n\026com.google.longrunningB\017OperationsProtoP\001Z=google.golang.org/genproto/googleapis/longrunning;longrunning\252\002\022Google.LongRunning\312\002\022Google\\LongRunning'
+ _globals['_OPERATIONS'].methods_by_name['ListOperations']._loaded_options = None
+ _globals['_OPERATIONS'].methods_by_name['ListOperations']._serialized_options = b'\202\323\344\223\002\027\022\025/v1/{name=operations}'
+ _globals['_OPERATIONS'].methods_by_name['GetOperation']._loaded_options = None
+ _globals['_OPERATIONS'].methods_by_name['GetOperation']._serialized_options = b'\202\323\344\223\002\032\022\030/v1/{name=operations/**}'
+ _globals['_OPERATIONS'].methods_by_name['DeleteOperation']._loaded_options = None
+ _globals['_OPERATIONS'].methods_by_name['DeleteOperation']._serialized_options = b'\202\323\344\223\002\032*\030/v1/{name=operations/**}'
+ _globals['_OPERATIONS'].methods_by_name['CancelOperation']._loaded_options = None
+ _globals['_OPERATIONS'].methods_by_name['CancelOperation']._serialized_options = b'\202\323\344\223\002$\"\037/v1/{name=operations/**}:cancel:\001*'
+ _globals['_OPERATION']._serialized_start=171
+ _globals['_OPERATION']._serialized_end=339
+ _globals['_GETOPERATIONREQUEST']._serialized_start=341
+ _globals['_GETOPERATIONREQUEST']._serialized_end=376
+ _globals['_LISTOPERATIONSREQUEST']._serialized_start=378
+ _globals['_LISTOPERATIONSREQUEST']._serialized_end=470
+ _globals['_LISTOPERATIONSRESPONSE']._serialized_start=472
+ _globals['_LISTOPERATIONSRESPONSE']._serialized_end=572
+ _globals['_CANCELOPERATIONREQUEST']._serialized_start=574
+ _globals['_CANCELOPERATIONREQUEST']._serialized_end=612
+ _globals['_DELETEOPERATIONREQUEST']._serialized_start=614
+ _globals['_DELETEOPERATIONREQUEST']._serialized_end=652
+ _globals['_OPERATIONS']._serialized_start=655
+ _globals['_OPERATIONS']._serialized_end=1179
# @@protoc_insertion_point(module_scope)
diff --git a/src/buildstream/_protos/google/longrunning/operations_pb2.pyi b/src/buildstream/_protos/google/longrunning/operations_pb2.pyi
new file mode 100644
index 000000000..8e94303cb
--- /dev/null
+++ b/src/buildstream/_protos/google/longrunning/operations_pb2.pyi
@@ -0,0 +1,62 @@
+from google.api import annotations_pb2 as _annotations_pb2
+from google.protobuf import any_pb2 as _any_pb2
+from google.protobuf import empty_pb2 as _empty_pb2
+from google.rpc import status_pb2 as _status_pb2
+from google.protobuf.internal import containers as _containers
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
+
+DESCRIPTOR: _descriptor.FileDescriptor
+
+class Operation(_message.Message):
+ __slots__ = ("name", "metadata", "done", "error", "response")
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ METADATA_FIELD_NUMBER: _ClassVar[int]
+ DONE_FIELD_NUMBER: _ClassVar[int]
+ ERROR_FIELD_NUMBER: _ClassVar[int]
+ RESPONSE_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ metadata: _any_pb2.Any
+ done: bool
+ error: _status_pb2.Status
+ response: _any_pb2.Any
+ def __init__(self, name: _Optional[str] = ..., metadata: _Optional[_Union[_any_pb2.Any, _Mapping]] = ..., done: bool = ..., error: _Optional[_Union[_status_pb2.Status, _Mapping]] = ..., response: _Optional[_Union[_any_pb2.Any, _Mapping]] = ...) -> None: ...
+
+class GetOperationRequest(_message.Message):
+ __slots__ = ("name",)
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ def __init__(self, name: _Optional[str] = ...) -> None: ...
+
+class ListOperationsRequest(_message.Message):
+ __slots__ = ("name", "filter", "page_size", "page_token")
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ FILTER_FIELD_NUMBER: _ClassVar[int]
+ PAGE_SIZE_FIELD_NUMBER: _ClassVar[int]
+ PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ filter: str
+ page_size: int
+ page_token: str
+ def __init__(self, name: _Optional[str] = ..., filter: _Optional[str] = ..., page_size: _Optional[int] = ..., page_token: _Optional[str] = ...) -> None: ...
+
+class ListOperationsResponse(_message.Message):
+ __slots__ = ("operations", "next_page_token")
+ OPERATIONS_FIELD_NUMBER: _ClassVar[int]
+ NEXT_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
+ operations: _containers.RepeatedCompositeFieldContainer[Operation]
+ next_page_token: str
+ def __init__(self, operations: _Optional[_Iterable[_Union[Operation, _Mapping]]] = ..., next_page_token: _Optional[str] = ...) -> None: ...
+
+class CancelOperationRequest(_message.Message):
+ __slots__ = ("name",)
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ def __init__(self, name: _Optional[str] = ...) -> None: ...
+
+class DeleteOperationRequest(_message.Message):
+ __slots__ = ("name",)
+ NAME_FIELD_NUMBER: _ClassVar[int]
+ name: str
+ def __init__(self, name: _Optional[str] = ...) -> None: ...
diff --git a/src/buildstream/_protos/google/longrunning/operations_pb2_grpc.py b/src/buildstream/_protos/google/longrunning/operations_pb2_grpc.py
index 2ab919ca3..fa1bfe4c9 100644
--- a/src/buildstream/_protos/google/longrunning/operations_pb2_grpc.py
+++ b/src/buildstream/_protos/google/longrunning/operations_pb2_grpc.py
@@ -1,10 +1,30 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
+import warnings
from buildstream._protos.google.longrunning import operations_pb2 as google_dot_longrunning_dot_operations__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
+GRPC_GENERATED_VERSION = '1.68.0'
+GRPC_VERSION = grpc.__version__
+_version_not_supported = False
+
+try:
+ from grpc._utilities import first_version_is_lower
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
+except ImportError:
+ _version_not_supported = True
+
+if _version_not_supported:
+ raise RuntimeError(
+ f'The grpc package installed is at version {GRPC_VERSION},'
+ + f' but the generated code in google/longrunning/operations_pb2_grpc.py depends on'
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
+ )
+
class OperationsStub(object):
"""Manages long-running operations with an API service.
@@ -28,22 +48,22 @@ def __init__(self, channel):
'/google.longrunning.Operations/ListOperations',
request_serializer=google_dot_longrunning_dot_operations__pb2.ListOperationsRequest.SerializeToString,
response_deserializer=google_dot_longrunning_dot_operations__pb2.ListOperationsResponse.FromString,
- )
+ _registered_method=True)
self.GetOperation = channel.unary_unary(
'/google.longrunning.Operations/GetOperation',
request_serializer=google_dot_longrunning_dot_operations__pb2.GetOperationRequest.SerializeToString,
response_deserializer=google_dot_longrunning_dot_operations__pb2.Operation.FromString,
- )
+ _registered_method=True)
self.DeleteOperation = channel.unary_unary(
'/google.longrunning.Operations/DeleteOperation',
request_serializer=google_dot_longrunning_dot_operations__pb2.DeleteOperationRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
- )
+ _registered_method=True)
self.CancelOperation = channel.unary_unary(
'/google.longrunning.Operations/CancelOperation',
request_serializer=google_dot_longrunning_dot_operations__pb2.CancelOperationRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
- )
+ _registered_method=True)
class OperationsServicer(object):
@@ -131,6 +151,7 @@ def add_OperationsServicer_to_server(servicer, server):
generic_handler = grpc.method_handlers_generic_handler(
'google.longrunning.Operations', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
+ server.add_registered_method_handlers('google.longrunning.Operations', rpc_method_handlers)
# This class is part of an EXPERIMENTAL API.
@@ -157,11 +178,21 @@ def ListOperations(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/google.longrunning.Operations/ListOperations',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/google.longrunning.Operations/ListOperations',
google_dot_longrunning_dot_operations__pb2.ListOperationsRequest.SerializeToString,
google_dot_longrunning_dot_operations__pb2.ListOperationsResponse.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def GetOperation(request,
@@ -174,11 +205,21 @@ def GetOperation(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/google.longrunning.Operations/GetOperation',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/google.longrunning.Operations/GetOperation',
google_dot_longrunning_dot_operations__pb2.GetOperationRequest.SerializeToString,
google_dot_longrunning_dot_operations__pb2.Operation.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def DeleteOperation(request,
@@ -191,11 +232,21 @@ def DeleteOperation(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/google.longrunning.Operations/DeleteOperation',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/google.longrunning.Operations/DeleteOperation',
google_dot_longrunning_dot_operations__pb2.DeleteOperationRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
@staticmethod
def CancelOperation(request,
@@ -208,8 +259,18 @@ def CancelOperation(request,
wait_for_ready=None,
timeout=None,
metadata=None):
- return grpc.experimental.unary_unary(request, target, '/google.longrunning.Operations/CancelOperation',
+ return grpc.experimental.unary_unary(
+ request,
+ target,
+ '/google.longrunning.Operations/CancelOperation',
google_dot_longrunning_dot_operations__pb2.CancelOperationRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
- options, channel_credentials,
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ options,
+ channel_credentials,
+ insecure,
+ call_credentials,
+ compression,
+ wait_for_ready,
+ timeout,
+ metadata,
+ _registered_method=True)
diff --git a/src/buildstream/_protos/google/rpc/code_pb2.py b/src/buildstream/_protos/google/rpc/code_pb2.py
index 12c91e48c..bb6a169b3 100644
--- a/src/buildstream/_protos/google/rpc/code_pb2.py
+++ b/src/buildstream/_protos/google/rpc/code_pb2.py
@@ -1,13 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
+# NO CHECKED-IN PROTOBUF GENCODE
# source: google/rpc/code.proto
+# Protobuf Python Version: 5.28.1
"""Generated protocol buffer code."""
-from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
+from google.protobuf import runtime_version as _runtime_version
from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+_runtime_version.ValidateProtobufRuntimeVersion(
+ _runtime_version.Domain.PUBLIC,
+ 5,
+ 28,
+ 1,
+ '',
+ 'google/rpc/code.proto'
+)
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
@@ -17,31 +26,12 @@
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15google/rpc/code.proto\x12\ngoogle.rpc*\xb7\x02\n\x04\x43ode\x12\x06\n\x02OK\x10\x00\x12\r\n\tCANCELLED\x10\x01\x12\x0b\n\x07UNKNOWN\x10\x02\x12\x14\n\x10INVALID_ARGUMENT\x10\x03\x12\x15\n\x11\x44\x45\x41\x44LINE_EXCEEDED\x10\x04\x12\r\n\tNOT_FOUND\x10\x05\x12\x12\n\x0e\x41LREADY_EXISTS\x10\x06\x12\x15\n\x11PERMISSION_DENIED\x10\x07\x12\x13\n\x0fUNAUTHENTICATED\x10\x10\x12\x16\n\x12RESOURCE_EXHAUSTED\x10\x08\x12\x17\n\x13\x46\x41ILED_PRECONDITION\x10\t\x12\x0b\n\x07\x41\x42ORTED\x10\n\x12\x10\n\x0cOUT_OF_RANGE\x10\x0b\x12\x11\n\rUNIMPLEMENTED\x10\x0c\x12\x0c\n\x08INTERNAL\x10\r\x12\x0f\n\x0bUNAVAILABLE\x10\x0e\x12\r\n\tDATA_LOSS\x10\x0f\x42X\n\x0e\x63om.google.rpcB\tCodeProtoP\x01Z3google.golang.org/genproto/googleapis/rpc/code;code\xa2\x02\x03RPCb\x06proto3')
-_CODE = DESCRIPTOR.enum_types_by_name['Code']
-Code = enum_type_wrapper.EnumTypeWrapper(_CODE)
-OK = 0
-CANCELLED = 1
-UNKNOWN = 2
-INVALID_ARGUMENT = 3
-DEADLINE_EXCEEDED = 4
-NOT_FOUND = 5
-ALREADY_EXISTS = 6
-PERMISSION_DENIED = 7
-UNAUTHENTICATED = 16
-RESOURCE_EXHAUSTED = 8
-FAILED_PRECONDITION = 9
-ABORTED = 10
-OUT_OF_RANGE = 11
-UNIMPLEMENTED = 12
-INTERNAL = 13
-UNAVAILABLE = 14
-DATA_LOSS = 15
-
-
-if _descriptor._USE_C_DESCRIPTORS == False:
-
- DESCRIPTOR._options = None
- DESCRIPTOR._serialized_options = b'\n\016com.google.rpcB\tCodeProtoP\001Z3google.golang.org/genproto/googleapis/rpc/code;code\242\002\003RPC'
- _CODE._serialized_start=38
- _CODE._serialized_end=349
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.rpc.code_pb2', _globals)
+if not _descriptor._USE_C_DESCRIPTORS:
+ _globals['DESCRIPTOR']._loaded_options = None
+ _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.rpcB\tCodeProtoP\001Z3google.golang.org/genproto/googleapis/rpc/code;code\242\002\003RPC'
+ _globals['_CODE']._serialized_start=38
+ _globals['_CODE']._serialized_end=349
# @@protoc_insertion_point(module_scope)
diff --git a/src/buildstream/_protos/google/rpc/code_pb2.pyi b/src/buildstream/_protos/google/rpc/code_pb2.pyi
new file mode 100644
index 000000000..7b3b98b6c
--- /dev/null
+++ b/src/buildstream/_protos/google/rpc/code_pb2.pyi
@@ -0,0 +1,42 @@
+from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
+from google.protobuf import descriptor as _descriptor
+from typing import ClassVar as _ClassVar
+
+DESCRIPTOR: _descriptor.FileDescriptor
+
+class Code(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
+ __slots__ = ()
+ OK: _ClassVar[Code]
+ CANCELLED: _ClassVar[Code]
+ UNKNOWN: _ClassVar[Code]
+ INVALID_ARGUMENT: _ClassVar[Code]
+ DEADLINE_EXCEEDED: _ClassVar[Code]
+ NOT_FOUND: _ClassVar[Code]
+ ALREADY_EXISTS: _ClassVar[Code]
+ PERMISSION_DENIED: _ClassVar[Code]
+ UNAUTHENTICATED: _ClassVar[Code]
+ RESOURCE_EXHAUSTED: _ClassVar[Code]
+ FAILED_PRECONDITION: _ClassVar[Code]
+ ABORTED: _ClassVar[Code]
+ OUT_OF_RANGE: _ClassVar[Code]
+ UNIMPLEMENTED: _ClassVar[Code]
+ INTERNAL: _ClassVar[Code]
+ UNAVAILABLE: _ClassVar[Code]
+ DATA_LOSS: _ClassVar[Code]
+OK: Code
+CANCELLED: Code
+UNKNOWN: Code
+INVALID_ARGUMENT: Code
+DEADLINE_EXCEEDED: Code
+NOT_FOUND: Code
+ALREADY_EXISTS: Code
+PERMISSION_DENIED: Code
+UNAUTHENTICATED: Code
+RESOURCE_EXHAUSTED: Code
+FAILED_PRECONDITION: Code
+ABORTED: Code
+OUT_OF_RANGE: Code
+UNIMPLEMENTED: Code
+INTERNAL: Code
+UNAVAILABLE: Code
+DATA_LOSS: Code
diff --git a/src/buildstream/_protos/google/rpc/code_pb2_grpc.py b/src/buildstream/_protos/google/rpc/code_pb2_grpc.py
index 2daafffeb..1a1ef383c 100644
--- a/src/buildstream/_protos/google/rpc/code_pb2_grpc.py
+++ b/src/buildstream/_protos/google/rpc/code_pb2_grpc.py
@@ -1,4 +1,24 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
+import warnings
+
+GRPC_GENERATED_VERSION = '1.68.0'
+GRPC_VERSION = grpc.__version__
+_version_not_supported = False
+
+try:
+ from grpc._utilities import first_version_is_lower
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
+except ImportError:
+ _version_not_supported = True
+
+if _version_not_supported:
+ raise RuntimeError(
+ f'The grpc package installed is at version {GRPC_VERSION},'
+ + f' but the generated code in google/rpc/code_pb2_grpc.py depends on'
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
+ )
diff --git a/src/buildstream/_protos/google/rpc/status_pb2.py b/src/buildstream/_protos/google/rpc/status_pb2.py
index d3388b00f..d89b20312 100644
--- a/src/buildstream/_protos/google/rpc/status_pb2.py
+++ b/src/buildstream/_protos/google/rpc/status_pb2.py
@@ -1,12 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
+# NO CHECKED-IN PROTOBUF GENCODE
# source: google/rpc/status.proto
+# Protobuf Python Version: 5.28.1
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
+from google.protobuf import runtime_version as _runtime_version
from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+_runtime_version.ValidateProtobufRuntimeVersion(
+ _runtime_version.Domain.PUBLIC,
+ 5,
+ 28,
+ 1,
+ '',
+ 'google/rpc/status.proto'
+)
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
@@ -17,20 +27,12 @@
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17google/rpc/status.proto\x12\ngoogle.rpc\x1a\x19google/protobuf/any.proto\"N\n\x06Status\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\t\x12%\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32\x14.google.protobuf.AnyB^\n\x0e\x63om.google.rpcB\x0bStatusProtoP\x01Z7google.golang.org/genproto/googleapis/rpc/status;status\xa2\x02\x03RPCb\x06proto3')
-
-
-_STATUS = DESCRIPTOR.message_types_by_name['Status']
-Status = _reflection.GeneratedProtocolMessageType('Status', (_message.Message,), {
- 'DESCRIPTOR' : _STATUS,
- '__module__' : 'google.rpc.status_pb2'
- # @@protoc_insertion_point(class_scope:google.rpc.Status)
- })
-_sym_db.RegisterMessage(Status)
-
-if _descriptor._USE_C_DESCRIPTORS == False:
-
- DESCRIPTOR._options = None
- DESCRIPTOR._serialized_options = b'\n\016com.google.rpcB\013StatusProtoP\001Z7google.golang.org/genproto/googleapis/rpc/status;status\242\002\003RPC'
- _STATUS._serialized_start=66
- _STATUS._serialized_end=144
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.rpc.status_pb2', _globals)
+if not _descriptor._USE_C_DESCRIPTORS:
+ _globals['DESCRIPTOR']._loaded_options = None
+ _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.rpcB\013StatusProtoP\001Z7google.golang.org/genproto/googleapis/rpc/status;status\242\002\003RPC'
+ _globals['_STATUS']._serialized_start=66
+ _globals['_STATUS']._serialized_end=144
# @@protoc_insertion_point(module_scope)
diff --git a/src/buildstream/_protos/google/rpc/status_pb2.pyi b/src/buildstream/_protos/google/rpc/status_pb2.pyi
new file mode 100644
index 000000000..065622382
--- /dev/null
+++ b/src/buildstream/_protos/google/rpc/status_pb2.pyi
@@ -0,0 +1,17 @@
+from google.protobuf import any_pb2 as _any_pb2
+from google.protobuf.internal import containers as _containers
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
+
+DESCRIPTOR: _descriptor.FileDescriptor
+
+class Status(_message.Message):
+ __slots__ = ("code", "message", "details")
+ CODE_FIELD_NUMBER: _ClassVar[int]
+ MESSAGE_FIELD_NUMBER: _ClassVar[int]
+ DETAILS_FIELD_NUMBER: _ClassVar[int]
+ code: int
+ message: str
+ details: _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]
+ def __init__(self, code: _Optional[int] = ..., message: _Optional[str] = ..., details: _Optional[_Iterable[_Union[_any_pb2.Any, _Mapping]]] = ...) -> None: ...
diff --git a/src/buildstream/_protos/google/rpc/status_pb2_grpc.py b/src/buildstream/_protos/google/rpc/status_pb2_grpc.py
index 2daafffeb..da039705c 100644
--- a/src/buildstream/_protos/google/rpc/status_pb2_grpc.py
+++ b/src/buildstream/_protos/google/rpc/status_pb2_grpc.py
@@ -1,4 +1,24 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
+import warnings
+
+GRPC_GENERATED_VERSION = '1.68.0'
+GRPC_VERSION = grpc.__version__
+_version_not_supported = False
+
+try:
+ from grpc._utilities import first_version_is_lower
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
+except ImportError:
+ _version_not_supported = True
+
+if _version_not_supported:
+ raise RuntimeError(
+ f'The grpc package installed is at version {GRPC_VERSION},'
+ + f' but the generated code in google/rpc/status_pb2_grpc.py depends on'
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
+ )
diff --git a/src/buildstream/_remotespec.py b/src/buildstream/_remotespec.py
index e9870cbae..3c9aa2fa3 100644
--- a/src/buildstream/_remotespec.py
+++ b/src/buildstream/_remotespec.py
@@ -140,6 +140,9 @@ def __hash__(self) -> int:
self.access_token_file,
self.access_token_reload_interval,
self.keepalive_time,
+ self.retry_limit,
+ self.retry_delay,
+ self.request_timeout,
)
)
@@ -195,6 +198,30 @@ def keepalive_time(self) -> Optional[int]:
return self._connection_config.get_int("keepalive-time", None)
return None
+ # grpc retry limit
+ #
+ @property
+ def retry_limit(self) -> Optional[int]:
+ if self._connection_config:
+ return self._connection_config.get_int("retry-limit", None)
+ return None
+
+ # grpc retry delay in milliseconds
+ #
+ @property
+ def retry_delay(self) -> Optional[int]:
+ if self._connection_config:
+ return self._connection_config.get_int("retry-delay", None)
+ return None
+
+ # grpc request timeout in seconds
+ #
+ @property
+ def request_timeout(self) -> Optional[int]:
+ if self._connection_config:
+ return self._connection_config.get_int("request-timeout", None)
+ return None
+
# open_channel()
#
# Opens a gRPC channel based on this spec.
@@ -234,6 +261,12 @@ def to_localcas_remote(self, remote):
remote.access_token_reload_interval.FromSeconds(self.access_token_reload_interval * 60)
if self.keepalive_time is not None:
remote.keepalive_time.FromSeconds(self.keepalive_time)
+ if self.retry_limit is not None:
+ remote.retry_limit = self.retry_limit
+ if self.retry_delay is not None:
+ remote.retry_delay.FromMilliseconds(self.retry_delay)
+ if self.request_timeout is not None:
+ remote.request_timeout.FromSeconds(self.request_timeout)
# new_from_node():
#