You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by ju...@apache.org on 2022/07/23 10:22:43 UTC
[buildstream] 01/02: _protos: Update local_cas.proto from buildbox-common
This is an automated email from the ASF dual-hosted git repository.
juergbi pushed a commit to branch juerg/stage-access
in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit 6485d176f0c251cbd8405511a33f68eb3d7af41e
Author: Jürg Billeter <j...@bitron.ch>
AuthorDate: Sun Jul 17 14:21:00 2022 +0200
_protos: Update local_cas.proto from buildbox-common
---
.../_protos/build/buildgrid/local_cas.proto | 78 +++++++++++++++++
.../_protos/build/buildgrid/local_cas_pb2.py | 97 ++++++++++++++--------
.../_protos/build/buildgrid/local_cas_pb2_grpc.py | 50 +++++++++++
3 files changed, 192 insertions(+), 33 deletions(-)
diff --git a/src/buildstream/_protos/build/buildgrid/local_cas.proto b/src/buildstream/_protos/build/buildgrid/local_cas.proto
index 378033e0a..b0e1e4ba7 100644
--- a/src/buildstream/_protos/build/buildgrid/local_cas.proto
+++ b/src/buildstream/_protos/build/buildgrid/local_cas.proto
@@ -100,6 +100,12 @@ service LocalContentAddressableStorage {
// If a CAS remote is configured, the blobs are uploaded.
// The `bypass_local_cache` parameter is a hint to indicate whether the blobs
// shall be uploaded without first storing them in the local cache.
+ //
+ // The `move_files` parameter is a hint to indicate that files could be
+ // moved into the storage. This can make capturing more efficient by
+ // 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.
rpc CaptureTree(CaptureTreeRequest) returns (CaptureTreeResponse) {}
// Capture files from the local filesystem.
@@ -109,6 +115,12 @@ service LocalContentAddressableStorage {
// If a CAS remote is configured, the blobs are uploaded.
// The `bypass_local_cache` parameter is a hint to indicate whether the blobs
// shall be uploaded without first storing them in the local cache.
+ //
+ // The `move_files` parameter is a hint to indicate that the files could be
+ // moved into the storage. This can make capturing more efficient by
+ // 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.
rpc CaptureFiles(CaptureFilesRequest) returns (CaptureFilesResponse) {}
// Configure remote CAS endpoint.
@@ -126,6 +138,13 @@ service LocalContentAddressableStorage {
// specified endpoints in further requests.
rpc GetInstanceNameForRemotes(GetInstanceNameForRemotesRequest) returns (GetInstanceNameForRemotesResponse) {}
+ // Configure sandboxed clients.
+ //
+ // This returns a string that can be used as instance_name to access
+ // this service from clients running in the specified filesystem/mount
+ // namespace or chroot environment
+ rpc GetInstanceNameForNamespace(GetInstanceNameForNamespaceRequest) returns (GetInstanceNameForNamespaceResponse) {}
+
// Query total space used by the local cache.
rpc GetLocalDiskUsage(GetLocalDiskUsageRequest) returns (GetLocalDiskUsageResponse) {}
}
@@ -264,6 +283,15 @@ message StageTreeRequest {
// this staged tree will in that case be limited to the lifetime of the
// parent.
string path = 3;
+
+ message Credentials {
+ int64 uid = 1;
+ }
+
+ // The UNIX credentials of the processes that will access the staged tree.
+ // This will be used to ensure that the files have the right permissions
+ // for access without risking corruption of files in the local cache.
+ Credentials access_credentials = 4;
}
// A response message for
@@ -283,6 +311,11 @@ message CaptureTreeRequest {
// omitted.
string instance_name = 1;
+ // The optional root path to restrict capture to a subtree.
+ // If specified, `path` will be resolved inside this root.
+ // No files outside the root will be captured.
+ string root = 6;
+
// The path(s) in the local filesystem to capture.
repeated string path = 2;
@@ -292,6 +325,11 @@ message CaptureTreeRequest {
// The properties of path(s) in the local filesystem to capture.
repeated string node_properties = 4;
+
+ // Hints whether files can be moved into the storage.
+ // If enabled, they MUST NOT be modified after issuing this request in order
+ // to guarantee consistency.
+ bool move_files = 5;
}
// A response message for
@@ -325,6 +363,11 @@ message CaptureFilesRequest {
// omitted.
string instance_name = 1;
+ // The optional root path to restrict capture to a subtree.
+ // If specified, `path` will be resolved inside this root.
+ // No files outside the root will be captured.
+ string root = 6;
+
// The path(s) in the local filesystem to capture.
repeated string path = 2;
@@ -334,6 +377,11 @@ message CaptureFilesRequest {
// The properties of path(s) in the local filesystem to capture.
repeated string node_properties = 4;
+
+ // Hints whether the files can be moved into the storage.
+ // If enabled, they MUST NOT be modified after issuing this request in order
+ // to guarantee consistency.
+ bool move_files = 5;
}
// A response message for
@@ -425,8 +473,16 @@ message Remote {
// A request message for
// [LocalContentAddressableStorage.GetInstanceNameForRemotes][build.buildgrid.v2.LocalContentAddressableStorage.GetInstanceNameForRemotes].
message GetInstanceNameForRemotesRequest {
+ // The instance of the execution system to operate against. A server may
+ // support multiple instances of the execution system (with their own workers,
+ // storage, caches, etc.). The server MAY require use of this field to select
+ // between them in an implementation-defined fashion, otherwise it can be
+ // omitted.
+ string instance_name = 3;
+
Remote content_addressable_storage = 1;
Remote remote_asset = 2;
+ Remote action_cache = 4;
}
// A response message for
@@ -435,6 +491,28 @@ message GetInstanceNameForRemotesResponse {
string instance_name = 1;
}
+
+// A request message for
+// [LocalContentAddressableStorage.GetInstanceNameForRemote][build.buildgrid.v2.LocalContentAddressableStorage.GetInstanceNameForNamespace].
+message GetInstanceNameForNamespaceRequest {
+ // The instance of the execution system to operate against. A server may
+ // support multiple instances of the execution system (with their own workers,
+ // storage, caches, etc.). The server MAY require use of this field to select
+ // between them in an implementation-defined fashion, otherwise it can be
+ // omitted.
+ string instance_name = 1;
+
+ // The root path of the mount namespace to restrict capture and staging.
+ // All paths in requests to the new instance will be resolved inside this root.
+ string root = 2;
+}
+
+// A response message for
+// [LocalContentAddressableStorage.GetInstanceNameForRemote][build.buildgrid.v2.LocalContentAddressableStorage.GetInstanceNameForNamespace].
+message GetInstanceNameForNamespaceResponse {
+ string instance_name = 1;
+}
+
// A request message for
// [LocalContentAddressableStorage.GetLocalDiskUsage][build.buildgrid.v2.LocalContentAddressableStorage.GetLocalDiskUsage].
message GetLocalDiskUsageRequest {
diff --git a/src/buildstream/_protos/build/buildgrid/local_cas_pb2.py b/src/buildstream/_protos/build/buildgrid/local_cas_pb2.py
index f446a0c60..1bd65d5dc 100644
--- a/src/buildstream/_protos/build/buildgrid/local_cas_pb2.py
+++ b/src/buildstream/_protos/build/buildgrid/local_cas_pb2.py
@@ -16,7 +16,7 @@ from buildstream._protos.build.bazel.remote.execution.v2 import remote_execution
from buildstream._protos.google.rpc import status_pb2 as google_dot_rpc_dot_status__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\"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. [...]
+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\"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. [...]
@@ -31,6 +31,7 @@ _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']
@@ -43,6 +44,8 @@ _GETINSTANCENAMEFORREMOTERESPONSE = DESCRIPTOR.message_types_by_name['GetInstanc
_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,), {
@@ -118,11 +121,19 @@ UploadTreeResponse = _reflection.GeneratedProtocolMessageType('UploadTreeRespons
_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,
@@ -210,6 +221,20 @@ GetInstanceNameForRemotesResponse = _reflection.GeneratedProtocolMessageType('Ge
})
_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'
@@ -248,36 +273,42 @@ if _descriptor._USE_C_DESCRIPTORS == False:
_UPLOADTREEREQUEST._serialized_end=1035
_UPLOADTREERESPONSE._serialized_start=1037
_UPLOADTREERESPONSE._serialized_end=1057
- _STAGETREEREQUEST._serialized_start=1059
- _STAGETREEREQUEST._serialized_end=1176
- _STAGETREERESPONSE._serialized_start=1178
- _STAGETREERESPONSE._serialized_end=1211
- _CAPTURETREEREQUEST._serialized_start=1213
- _CAPTURETREEREQUEST._serialized_end=1323
- _CAPTURETREERESPONSE._serialized_start=1326
- _CAPTURETREERESPONSE._serialized_end=1537
- _CAPTURETREERESPONSE_RESPONSE._serialized_start=1415
- _CAPTURETREERESPONSE_RESPONSE._serialized_end=1537
- _CAPTUREFILESREQUEST._serialized_start=1539
- _CAPTUREFILESREQUEST._serialized_end=1650
- _CAPTUREFILESRESPONSE._serialized_start=1653
- _CAPTUREFILESRESPONSE._serialized_end=1965
- _CAPTUREFILESRESPONSE_RESPONSE._serialized_start=1745
- _CAPTUREFILESRESPONSE_RESPONSE._serialized_end=1965
- _GETINSTANCENAMEFORREMOTEREQUEST._serialized_start=1968
- _GETINSTANCENAMEFORREMOTEREQUEST._serialized_end=2099
- _GETINSTANCENAMEFORREMOTERESPONSE._serialized_start=2101
- _GETINSTANCENAMEFORREMOTERESPONSE._serialized_end=2158
- _REMOTE._serialized_start=2160
- _REMOTE._serialized_end=2266
- _GETINSTANCENAMEFORREMOTESREQUEST._serialized_start=2269
- _GETINSTANCENAMEFORREMOTESREQUEST._serialized_end=2412
- _GETINSTANCENAMEFORREMOTESRESPONSE._serialized_start=2414
- _GETINSTANCENAMEFORREMOTESRESPONSE._serialized_end=2472
- _GETLOCALDISKUSAGEREQUEST._serialized_start=2474
- _GETLOCALDISKUSAGEREQUEST._serialized_end=2500
- _GETLOCALDISKUSAGERESPONSE._serialized_start=2502
- _GETLOCALDISKUSAGERESPONSE._serialized_end=2570
- _LOCALCONTENTADDRESSABLESTORAGE._serialized_start=2573
- _LOCALCONTENTADDRESSABLESTORAGE._serialized_end=3657
+ _STAGETREEREQUEST._serialized_start=1060
+ _STAGETREEREQUEST._serialized_end=1280
+ _STAGETREEREQUEST_CREDENTIALS._serialized_start=1254
+ _STAGETREEREQUEST_CREDENTIALS._serialized_end=1280
+ _STAGETREERESPONSE._serialized_start=1282
+ _STAGETREERESPONSE._serialized_end=1315
+ _CAPTURETREEREQUEST._serialized_start=1318
+ _CAPTURETREEREQUEST._serialized_end=1462
+ _CAPTURETREERESPONSE._serialized_start=1465
+ _CAPTURETREERESPONSE._serialized_end=1676
+ _CAPTURETREERESPONSE_RESPONSE._serialized_start=1554
+ _CAPTURETREERESPONSE_RESPONSE._serialized_end=1676
+ _CAPTUREFILESREQUEST._serialized_start=1679
+ _CAPTUREFILESREQUEST._serialized_end=1824
+ _CAPTUREFILESRESPONSE._serialized_start=1827
+ _CAPTUREFILESRESPONSE._serialized_end=2139
+ _CAPTUREFILESRESPONSE_RESPONSE._serialized_start=1919
+ _CAPTUREFILESRESPONSE_RESPONSE._serialized_end=2139
+ _GETINSTANCENAMEFORREMOTEREQUEST._serialized_start=2142
+ _GETINSTANCENAMEFORREMOTEREQUEST._serialized_end=2273
+ _GETINSTANCENAMEFORREMOTERESPONSE._serialized_start=2275
+ _GETINSTANCENAMEFORREMOTERESPONSE._serialized_end=2332
+ _REMOTE._serialized_start=2334
+ _REMOTE._serialized_end=2440
+ _GETINSTANCENAMEFORREMOTESREQUEST._serialized_start=2443
+ _GETINSTANCENAMEFORREMOTESREQUEST._serialized_end=2656
+ _GETINSTANCENAMEFORREMOTESRESPONSE._serialized_start=2658
+ _GETINSTANCENAMEFORREMOTESRESPONSE._serialized_end=2716
+ _GETINSTANCENAMEFORNAMESPACEREQUEST._serialized_start=2718
+ _GETINSTANCENAMEFORNAMESPACEREQUEST._serialized_end=2791
+ _GETINSTANCENAMEFORNAMESPACERESPONSE._serialized_start=2793
+ _GETINSTANCENAMEFORNAMESPACERESPONSE._serialized_end=2853
+ _GETLOCALDISKUSAGEREQUEST._serialized_start=2855
+ _GETLOCALDISKUSAGEREQUEST._serialized_end=2881
+ _GETLOCALDISKUSAGERESPONSE._serialized_start=2883
+ _GETLOCALDISKUSAGERESPONSE._serialized_end=2951
+ _LOCALCONTENTADDRESSABLESTORAGE._serialized_start=2954
+ _LOCALCONTENTADDRESSABLESTORAGE._serialized_end=4179
# @@protoc_insertion_point(module_scope)
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 2c39fc900..0117d3a1c 100644
--- a/src/buildstream/_protos/build/buildgrid/local_cas_pb2_grpc.py
+++ b/src/buildstream/_protos/build/buildgrid/local_cas_pb2_grpc.py
@@ -59,6 +59,11 @@ class LocalContentAddressableStorageStub(object):
request_serializer=build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForRemotesRequest.SerializeToString,
response_deserializer=build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForRemotesResponse.FromString,
)
+ 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,
+ )
self.GetLocalDiskUsage = channel.unary_unary(
'/build.buildgrid.LocalContentAddressableStorage/GetLocalDiskUsage',
request_serializer=build_dot_buildgrid_dot_local__cas__pb2.GetLocalDiskUsageRequest.SerializeToString,
@@ -170,6 +175,12 @@ class LocalContentAddressableStorageServicer(object):
If a CAS remote is configured, the blobs are uploaded.
The `bypass_local_cache` parameter is a hint to indicate whether the blobs
shall be uploaded without first storing them in the local cache.
+
+ The `move_files` parameter is a hint to indicate that files could be
+ moved into the storage. This can make capturing more efficient by
+ 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.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
@@ -183,6 +194,12 @@ class LocalContentAddressableStorageServicer(object):
If a CAS remote is configured, the blobs are uploaded.
The `bypass_local_cache` parameter is a hint to indicate whether the blobs
shall be uploaded without first storing them in the local cache.
+
+ The `move_files` parameter is a hint to indicate that the files could be
+ moved into the storage. This can make capturing more efficient by
+ 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.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
@@ -211,6 +228,17 @@ class LocalContentAddressableStorageServicer(object):
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
+ def GetInstanceNameForNamespace(self, request, context):
+ """Configure sandboxed clients.
+
+ This returns a string that can be used as instance_name to access
+ this service from clients running in the specified filesystem/mount
+ namespace or chroot environment
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
def GetLocalDiskUsage(self, request, context):
"""Query total space used by the local cache.
"""
@@ -266,6 +294,11 @@ def add_LocalContentAddressableStorageServicer_to_server(servicer, server):
request_deserializer=build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForRemotesRequest.FromString,
response_serializer=build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForRemotesResponse.SerializeToString,
),
+ 'GetInstanceNameForNamespace': grpc.unary_unary_rpc_method_handler(
+ servicer.GetInstanceNameForNamespace,
+ request_deserializer=build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForNamespaceRequest.FromString,
+ response_serializer=build_dot_buildgrid_dot_local__cas__pb2.GetInstanceNameForNamespaceResponse.SerializeToString,
+ ),
'GetLocalDiskUsage': grpc.unary_unary_rpc_method_handler(
servicer.GetLocalDiskUsage,
request_deserializer=build_dot_buildgrid_dot_local__cas__pb2.GetLocalDiskUsageRequest.FromString,
@@ -434,6 +467,23 @@ class LocalContentAddressableStorage(object):
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+ @staticmethod
+ def GetInstanceNameForNamespace(request,
+ target,
+ options=(),
+ channel_credentials=None,
+ call_credentials=None,
+ insecure=False,
+ compression=None,
+ wait_for_ready=None,
+ timeout=None,
+ metadata=None):
+ 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)
+
@staticmethod
def GetLocalDiskUsage(request,
target,