diff options
16 files changed, 252 insertions, 120 deletions
diff --git a/src/buildstream/_artifactcache.py b/src/buildstream/_artifactcache.py index 4a502064f..d62e7f500 100644 --- a/src/buildstream/_artifactcache.py +++ b/src/buildstream/_artifactcache.py @@ -23,7 +23,8 @@ import grpc from ._basecache import BaseCache from .types import _KeyStrength from ._exceptions import ArtifactError, CASError, CASCacheError -from ._protos.buildstream.v2 import artifact_pb2, artifact_pb2_grpc +from ._protos.buildstream.v2 import buildstream_pb2, buildstream_pb2_grpc, \ + artifact_pb2, artifact_pb2_grpc from ._cas import CASRemoteSpec, CASRemote from .storage._casbaseddirectory import CasBasedDirectory @@ -48,7 +49,7 @@ class ArtifactCacheSpec(CASRemoteSpec): class ArtifactRemote(CASRemote): def __init__(self, *args): super().__init__(*args) - self.artifact_service = None + self.capabilities_service = None def init(self): if not self._initialized: @@ -56,24 +57,28 @@ class ArtifactRemote(CASRemote): super().init() # Add artifact stub - self.artifact_service = artifact_pb2_grpc.ArtifactServiceStub(self.channel) + self.capabilities_service = buildstream_pb2_grpc.CapabilitiesStub(self.channel) # Check whether the server supports newer proto based artifact. try: - request = artifact_pb2.ArtifactStatusRequest() + request = buildstream_pb2.GetCapabilitiesRequest() if self.instance_name: request.instance_name = self.instance_name - self.artifact_service.ArtifactStatus(request) + response = self.capabilities_service.GetCapabilities(request) except grpc.RpcError as e: # Check if this remote has the artifact service if e.code() == grpc.StatusCode.UNIMPLEMENTED: raise ArtifactError( "Configured remote does not have the BuildStream " - "ArtifactService. Please check remote configuration.") + "capabilities service. Please check remote configuration.") # Else raise exception with details raise ArtifactError( "Remote initialisation failed: {}".format(e.details())) + if not response.artifact_capabilities: + raise ArtifactError( + "Configured remote does not support artifact service") + # An ArtifactCache manages artifacts. # diff --git a/src/buildstream/_cas/casserver.py b/src/buildstream/_cas/casserver.py index 203b2f021..774548216 100644 --- a/src/buildstream/_cas/casserver.py +++ b/src/buildstream/_cas/casserver.py @@ -88,6 +88,13 @@ def create_server(repo, *, enable_push, artifact_pb2_grpc.add_ArtifactServiceServicer_to_server( _ArtifactServicer(cas, artifactdir), server) + # Create up reference storage and artifact capabilities + artifact_capabilities = buildstream_pb2.ArtifactCapabilities( + allow_updates=enable_push) + buildstream_pb2_grpc.add_CapabilitiesServicer_to_server( + _BuildStreamCapabilitiesServicer(artifact_capabilities), + server) + return server @@ -501,6 +508,16 @@ class _ArtifactServicer(artifact_pb2_grpc.ArtifactServiceServicer): "Artifact {} specified but not found".format(name)) +class _BuildStreamCapabilitiesServicer(buildstream_pb2_grpc.CapabilitiesServicer): + def __init__(self, artifact_capabilities): + self.artifact_capabilities = artifact_capabilities + + def GetCapabilities(self, request, context): + response = buildstream_pb2.ServerCapabilities() + response.artifact_capabilities.CopyFrom(self.artifact_capabilities) + return response + + def _digest_from_download_resource_name(resource_name): parts = resource_name.split('/') 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 bff4419f7..86a269682 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,3 +1,4 @@ +# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: build/bazel/remote/execution/v2/remote_execution.proto diff --git a/src/buildstream/_protos/build/bazel/semver/semver_pb2.py b/src/buildstream/_protos/build/bazel/semver/semver_pb2.py index 62b06acdc..ab87a0470 100644 --- a/src/buildstream/_protos/build/bazel/semver/semver_pb2.py +++ b/src/buildstream/_protos/build/bazel/semver/semver_pb2.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: build/bazel/semver/semver.proto diff --git a/src/buildstream/_protos/buildstream/v2/artifact.proto b/src/buildstream/_protos/buildstream/v2/artifact.proto index d0705625a..d28c8e88e 100644 --- a/src/buildstream/_protos/buildstream/v2/artifact.proto +++ b/src/buildstream/_protos/buildstream/v2/artifact.proto @@ -34,9 +34,6 @@ service ArtifactService { // Errors: // * `FAILED_PRECONDITION`: Files specified in upload aren't present in CAS rpc UpdateArtifact(UpdateArtifactRequest) returns (Artifact) {} - - // Returns status of service, can be used for checking presence of service - rpc ArtifactStatus(ArtifactStatusRequest) returns (ArtifactStatusResponse) {} } message Artifact { @@ -88,11 +85,4 @@ message UpdateArtifactRequest { string instance_name = 1; string cache_key = 2; Artifact artifact = 3; -} - -message ArtifactStatusRequest { - string instance_name = 1; -} - -message ArtifactStatusResponse { -} +}
\ No newline at end of file diff --git a/src/buildstream/_protos/buildstream/v2/artifact_pb2.py b/src/buildstream/_protos/buildstream/v2/artifact_pb2.py index 66ea12286..da642ca1c 100644 --- a/src/buildstream/_protos/buildstream/v2/artifact_pb2.py +++ b/src/buildstream/_protos/buildstream/v2/artifact_pb2.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: buildstream/v2/artifact.proto @@ -21,7 +22,7 @@ DESCRIPTOR = _descriptor.FileDescriptor( package='buildstream.v2', syntax='proto3', serialized_options=None, - serialized_pb=_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\"\xde\x04\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\x1aM\n\nDependency\x12\x14\n\x0c\x65lement_name\x18\x01 \x01(\t\x12\x11\n\tcache_key\x18\x02 \x01(\t\x12\x16\n\x0ewas_workspaced\x18\x03 \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.Digest\">\n\x12GetArtifactRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x11\n\tcache_key\x18\x02 \x01(\t\"m\n\x15UpdateArtifactRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x11\n\tcache_key\x18\x02 \x01(\t\x12*\n\x08\x61rtifact\x18\x03 \x01(\x0b\x32\x18.buildstream.v2.Artifact\".\n\x15\x41rtifactStatusRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\"\x18\n\x16\x41rtifactStatusResponse2\x98\x02\n\x0f\x41rtifactService\x12M\n\x0bGetArtifact\x12\".buildstream.v2.GetArtifactRequest\x1a\x18.buildstream.v2.Artifact\"\x00\x12S\n\x0eUpdateArtifact\x12%.buildstream.v2.UpdateArtifactRequest\x1a\x18.buildstream.v2.Artifact\"\x00\x12\x61\n\x0e\x41rtifactStatus\x12%.buildstream.v2.ArtifactStatusRequest\x1a&.buildstream.v2.ArtifactStatusResponse\"\x00\x62\x06proto3') + serialized_pb=_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\"\xde\x04\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\x1aM\n\nDependency\x12\x14\n\x0c\x65lement_name\x18\x01 \x01(\t\x12\x11\n\tcache_key\x18\x02 \x01(\t\x12\x16\n\x0ewas_workspaced\x18\x03 \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.Digest\">\n\x12GetArtifactRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x11\n\tcache_key\x18\x02 \x01(\t\"m\n\x15UpdateArtifactRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x11\n\tcache_key\x18\x02 \x01(\t\x12*\n\x08\x61rtifact\x18\x03 \x01(\x0b\x32\x18.buildstream.v2.Artifact2\xb5\x01\n\x0f\x41rtifactService\x12M\n\x0bGetArtifact\x12\".buildstream.v2.GetArtifactRequest\x1a\x18.buildstream.v2.Artifact\"\x00\x12S\n\x0eUpdateArtifact\x12%.buildstream.v2.UpdateArtifactRequest\x1a\x18.buildstream.v2.Artifact\"\x00\x62\x06proto3') , dependencies=[build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.DESCRIPTOR,google_dot_api_dot_annotations__pb2.DESCRIPTOR,]) @@ -299,61 +300,6 @@ _UPDATEARTIFACTREQUEST = _descriptor.Descriptor( serialized_end=917, ) - -_ARTIFACTSTATUSREQUEST = _descriptor.Descriptor( - name='ArtifactStatusRequest', - full_name='buildstream.v2.ArtifactStatusRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='instance_name', full_name='buildstream.v2.ArtifactStatusRequest.instance_name', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=919, - serialized_end=965, -) - - -_ARTIFACTSTATUSRESPONSE = _descriptor.Descriptor( - name='ArtifactStatusResponse', - full_name='buildstream.v2.ArtifactStatusResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=967, - serialized_end=991, -) - _ARTIFACT_DEPENDENCY.containing_type = _ARTIFACT _ARTIFACT_LOGFILE.fields_by_name['digest'].message_type = build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2._DIGEST _ARTIFACT_LOGFILE.containing_type = _ARTIFACT @@ -366,8 +312,6 @@ _UPDATEARTIFACTREQUEST.fields_by_name['artifact'].message_type = _ARTIFACT DESCRIPTOR.message_types_by_name['Artifact'] = _ARTIFACT DESCRIPTOR.message_types_by_name['GetArtifactRequest'] = _GETARTIFACTREQUEST DESCRIPTOR.message_types_by_name['UpdateArtifactRequest'] = _UPDATEARTIFACTREQUEST -DESCRIPTOR.message_types_by_name['ArtifactStatusRequest'] = _ARTIFACTSTATUSREQUEST -DESCRIPTOR.message_types_by_name['ArtifactStatusResponse'] = _ARTIFACTSTATUSRESPONSE _sym_db.RegisterFileDescriptor(DESCRIPTOR) Artifact = _reflection.GeneratedProtocolMessageType('Artifact', (_message.Message,), dict( @@ -407,20 +351,6 @@ UpdateArtifactRequest = _reflection.GeneratedProtocolMessageType('UpdateArtifact )) _sym_db.RegisterMessage(UpdateArtifactRequest) -ArtifactStatusRequest = _reflection.GeneratedProtocolMessageType('ArtifactStatusRequest', (_message.Message,), dict( - DESCRIPTOR = _ARTIFACTSTATUSREQUEST, - __module__ = 'buildstream.v2.artifact_pb2' - # @@protoc_insertion_point(class_scope:buildstream.v2.ArtifactStatusRequest) - )) -_sym_db.RegisterMessage(ArtifactStatusRequest) - -ArtifactStatusResponse = _reflection.GeneratedProtocolMessageType('ArtifactStatusResponse', (_message.Message,), dict( - DESCRIPTOR = _ARTIFACTSTATUSRESPONSE, - __module__ = 'buildstream.v2.artifact_pb2' - # @@protoc_insertion_point(class_scope:buildstream.v2.ArtifactStatusResponse) - )) -_sym_db.RegisterMessage(ArtifactStatusResponse) - _ARTIFACTSERVICE = _descriptor.ServiceDescriptor( @@ -429,8 +359,8 @@ _ARTIFACTSERVICE = _descriptor.ServiceDescriptor( file=DESCRIPTOR, index=0, serialized_options=None, - serialized_start=994, - serialized_end=1274, + serialized_start=920, + serialized_end=1101, methods=[ _descriptor.MethodDescriptor( name='GetArtifact', @@ -450,15 +380,6 @@ _ARTIFACTSERVICE = _descriptor.ServiceDescriptor( output_type=_ARTIFACT, serialized_options=None, ), - _descriptor.MethodDescriptor( - name='ArtifactStatus', - full_name='buildstream.v2.ArtifactService.ArtifactStatus', - index=2, - containing_service=None, - input_type=_ARTIFACTSTATUSREQUEST, - output_type=_ARTIFACTSTATUSRESPONSE, - serialized_options=None, - ), ]) _sym_db.RegisterServiceDescriptor(_ARTIFACTSERVICE) diff --git a/src/buildstream/_protos/buildstream/v2/artifact_pb2_grpc.py b/src/buildstream/_protos/buildstream/v2/artifact_pb2_grpc.py index 5f5b544fb..db0cd6435 100644 --- a/src/buildstream/_protos/buildstream/v2/artifact_pb2_grpc.py +++ b/src/buildstream/_protos/buildstream/v2/artifact_pb2_grpc.py @@ -24,11 +24,6 @@ class ArtifactServiceStub(object): request_serializer=buildstream_dot_v2_dot_artifact__pb2.UpdateArtifactRequest.SerializeToString, response_deserializer=buildstream_dot_v2_dot_artifact__pb2.Artifact.FromString, ) - self.ArtifactStatus = channel.unary_unary( - '/buildstream.v2.ArtifactService/ArtifactStatus', - request_serializer=buildstream_dot_v2_dot_artifact__pb2.ArtifactStatusRequest.SerializeToString, - response_deserializer=buildstream_dot_v2_dot_artifact__pb2.ArtifactStatusResponse.FromString, - ) class ArtifactServiceServicer(object): @@ -55,13 +50,6 @@ class ArtifactServiceServicer(object): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def ArtifactStatus(self, request, context): - """Returns status of service, can be used for checking presence of service - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - def add_ArtifactServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -75,11 +63,6 @@ def add_ArtifactServiceServicer_to_server(servicer, server): request_deserializer=buildstream_dot_v2_dot_artifact__pb2.UpdateArtifactRequest.FromString, response_serializer=buildstream_dot_v2_dot_artifact__pb2.Artifact.SerializeToString, ), - 'ArtifactStatus': grpc.unary_unary_rpc_method_handler( - servicer.ArtifactStatus, - request_deserializer=buildstream_dot_v2_dot_artifact__pb2.ArtifactStatusRequest.FromString, - response_serializer=buildstream_dot_v2_dot_artifact__pb2.ArtifactStatusResponse.SerializeToString, - ), } generic_handler = grpc.method_handlers_generic_handler( 'buildstream.v2.ArtifactService', rpc_method_handlers) diff --git a/src/buildstream/_protos/buildstream/v2/buildstream.proto b/src/buildstream/_protos/buildstream/v2/buildstream.proto index f283d6f3f..e9cd1223b 100644 --- a/src/buildstream/_protos/buildstream/v2/buildstream.proto +++ b/src/buildstream/_protos/buildstream/v2/buildstream.proto @@ -44,6 +44,15 @@ service ReferenceStorage { } } +service Capabilities { + // GetCapabilities mirrors + rpc GetCapabilities(GetCapabilitiesRequest) returns (ServerCapabilities) { + option (google.api.http) = { + get: "/v2/{instance_name=**}/capabilities" + }; + } +} + message GetReferenceRequest { // The instance of the execution system to operate against. A server may // support multiple instances of the execution system (with their own workers, @@ -93,3 +102,17 @@ message StatusResponse { // Whether reference updates are allowed for the connected client. bool allow_updates = 1; } + +message GetCapabilitiesRequest { + string instance_name = 1; +} + +// Capabilities of the artifact service +message ArtifactCapabilities { + bool allow_updates = 1; +} + +// All capabalities will be unset if the service isn't present +message ServerCapabilities { + ArtifactCapabilities artifact_capabilities = 1; +}
\ No newline at end of file diff --git a/src/buildstream/_protos/buildstream/v2/buildstream_pb2.py b/src/buildstream/_protos/buildstream/v2/buildstream_pb2.py index 11ab9c64b..d723f4149 100644 --- a/src/buildstream/_protos/buildstream/v2/buildstream_pb2.py +++ b/src/buildstream/_protos/buildstream/v2/buildstream_pb2.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: buildstream/v2/buildstream.proto @@ -21,7 +22,7 @@ DESCRIPTOR = _descriptor.FileDescriptor( package='buildstream.v2', syntax='proto3', serialized_options=None, - serialized_pb=_b('\n buildstream/v2/buildstream.proto\x12\x0e\x62uildstream.v2\x1a\x36\x62uild/bazel/remote/execution/v2/remote_execution.proto\x1a\x1cgoogle/api/annotations.proto\"9\n\x13GetReferenceRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\"O\n\x14GetReferenceResponse\x12\x37\n\x06\x64igest\x18\x01 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\"v\n\x16UpdateReferenceRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x0c\n\x04keys\x18\x02 \x03(\t\x12\x37\n\x06\x64igest\x18\x03 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\"\x19\n\x17UpdateReferenceResponse\"&\n\rStatusRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\"\'\n\x0eStatusResponse\x12\x15\n\rallow_updates\x18\x01 \x01(\x08\x32\xca\x03\n\x10ReferenceStorage\x12\x90\x01\n\x0cGetReference\x12#.buildstream.v2.GetReferenceRequest\x1a$.buildstream.v2.GetReferenceResponse\"5\x82\xd3\xe4\x93\x02/\x12-/v2/{instance_name=**}/buildstream/refs/{key}\x12\xa1\x01\n\x0fUpdateReference\x12&.buildstream.v2.UpdateReferenceRequest\x1a\'.buildstream.v2.UpdateReferenceResponse\"=\x82\xd3\xe4\x93\x02\x37\x1a-/v2/{instance_name=**}/buildstream/refs/{key}:\x06\x64igest\x12\x7f\n\x06Status\x12\x1d.buildstream.v2.StatusRequest\x1a\x1e.buildstream.v2.StatusResponse\"6\x82\xd3\xe4\x93\x02\x30\x1a./v2/{instance_name=**}/buildstream/refs:statusb\x06proto3') + serialized_pb=_b('\n buildstream/v2/buildstream.proto\x12\x0e\x62uildstream.v2\x1a\x36\x62uild/bazel/remote/execution/v2/remote_execution.proto\x1a\x1cgoogle/api/annotations.proto\"9\n\x13GetReferenceRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\"O\n\x14GetReferenceResponse\x12\x37\n\x06\x64igest\x18\x01 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\"v\n\x16UpdateReferenceRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\x12\x0c\n\x04keys\x18\x02 \x03(\t\x12\x37\n\x06\x64igest\x18\x03 \x01(\x0b\x32\'.build.bazel.remote.execution.v2.Digest\"\x19\n\x17UpdateReferenceResponse\"&\n\rStatusRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\"\'\n\x0eStatusResponse\x12\x15\n\rallow_updates\x18\x01 \x01(\x08\"/\n\x16GetCapabilitiesRequest\x12\x15\n\rinstance_name\x18\x01 \x01(\t\"-\n\x14\x41rtifactCapabilities\x12\x15\n\rallow_updates\x18\x01 \x01(\x08\"Y\n\x12ServerCapabilities\x12\x43\n\x15\x61rtifact_capabilities\x18\x01 \x01(\x0b\x32$.buildstream.v2.ArtifactCapabilities2\xca\x03\n\x10ReferenceStorage\x12\x90\x01\n\x0cGetReference\x12#.buildstream.v2.GetReferenceRequest\x1a$.buildstream.v2.GetReferenceResponse\"5\x82\xd3\xe4\x93\x02/\x12-/v2/{instance_name=**}/buildstream/refs/{key}\x12\xa1\x01\n\x0fUpdateReference\x12&.buildstream.v2.UpdateReferenceRequest\x1a\'.buildstream.v2.UpdateReferenceResponse\"=\x82\xd3\xe4\x93\x02\x37\x1a-/v2/{instance_name=**}/buildstream/refs/{key}:\x06\x64igest\x12\x7f\n\x06Status\x12\x1d.buildstream.v2.StatusRequest\x1a\x1e.buildstream.v2.StatusResponse\"6\x82\xd3\xe4\x93\x02\x30\x1a./v2/{instance_name=**}/buildstream/refs:status2\x9b\x01\n\x0c\x43\x61pabilities\x12\x8a\x01\n\x0fGetCapabilities\x12&.buildstream.v2.GetCapabilitiesRequest\x1a\".buildstream.v2.ServerCapabilities\"+\x82\xd3\xe4\x93\x02%\x12#/v2/{instance_name=**}/capabilitiesb\x06proto3') , dependencies=[build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2.DESCRIPTOR,google_dot_api_dot_annotations__pb2.DESCRIPTOR,]) @@ -227,14 +228,111 @@ _STATUSRESPONSE = _descriptor.Descriptor( serialized_end=504, ) + +_GETCAPABILITIESREQUEST = _descriptor.Descriptor( + name='GetCapabilitiesRequest', + full_name='buildstream.v2.GetCapabilitiesRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='instance_name', full_name='buildstream.v2.GetCapabilitiesRequest.instance_name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=506, + serialized_end=553, +) + + +_ARTIFACTCAPABILITIES = _descriptor.Descriptor( + name='ArtifactCapabilities', + full_name='buildstream.v2.ArtifactCapabilities', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='allow_updates', full_name='buildstream.v2.ArtifactCapabilities.allow_updates', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=555, + serialized_end=600, +) + + +_SERVERCAPABILITIES = _descriptor.Descriptor( + name='ServerCapabilities', + full_name='buildstream.v2.ServerCapabilities', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='artifact_capabilities', full_name='buildstream.v2.ServerCapabilities.artifact_capabilities', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=602, + serialized_end=691, +) + _GETREFERENCERESPONSE.fields_by_name['digest'].message_type = build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2._DIGEST _UPDATEREFERENCEREQUEST.fields_by_name['digest'].message_type = build_dot_bazel_dot_remote_dot_execution_dot_v2_dot_remote__execution__pb2._DIGEST +_SERVERCAPABILITIES.fields_by_name['artifact_capabilities'].message_type = _ARTIFACTCAPABILITIES DESCRIPTOR.message_types_by_name['GetReferenceRequest'] = _GETREFERENCEREQUEST DESCRIPTOR.message_types_by_name['GetReferenceResponse'] = _GETREFERENCERESPONSE DESCRIPTOR.message_types_by_name['UpdateReferenceRequest'] = _UPDATEREFERENCEREQUEST DESCRIPTOR.message_types_by_name['UpdateReferenceResponse'] = _UPDATEREFERENCERESPONSE DESCRIPTOR.message_types_by_name['StatusRequest'] = _STATUSREQUEST DESCRIPTOR.message_types_by_name['StatusResponse'] = _STATUSRESPONSE +DESCRIPTOR.message_types_by_name['GetCapabilitiesRequest'] = _GETCAPABILITIESREQUEST +DESCRIPTOR.message_types_by_name['ArtifactCapabilities'] = _ARTIFACTCAPABILITIES +DESCRIPTOR.message_types_by_name['ServerCapabilities'] = _SERVERCAPABILITIES _sym_db.RegisterFileDescriptor(DESCRIPTOR) GetReferenceRequest = _reflection.GeneratedProtocolMessageType('GetReferenceRequest', (_message.Message,), dict( @@ -279,6 +377,27 @@ StatusResponse = _reflection.GeneratedProtocolMessageType('StatusResponse', (_me )) _sym_db.RegisterMessage(StatusResponse) +GetCapabilitiesRequest = _reflection.GeneratedProtocolMessageType('GetCapabilitiesRequest', (_message.Message,), dict( + DESCRIPTOR = _GETCAPABILITIESREQUEST, + __module__ = 'buildstream.v2.buildstream_pb2' + # @@protoc_insertion_point(class_scope:buildstream.v2.GetCapabilitiesRequest) + )) +_sym_db.RegisterMessage(GetCapabilitiesRequest) + +ArtifactCapabilities = _reflection.GeneratedProtocolMessageType('ArtifactCapabilities', (_message.Message,), dict( + DESCRIPTOR = _ARTIFACTCAPABILITIES, + __module__ = 'buildstream.v2.buildstream_pb2' + # @@protoc_insertion_point(class_scope:buildstream.v2.ArtifactCapabilities) + )) +_sym_db.RegisterMessage(ArtifactCapabilities) + +ServerCapabilities = _reflection.GeneratedProtocolMessageType('ServerCapabilities', (_message.Message,), dict( + DESCRIPTOR = _SERVERCAPABILITIES, + __module__ = 'buildstream.v2.buildstream_pb2' + # @@protoc_insertion_point(class_scope:buildstream.v2.ServerCapabilities) + )) +_sym_db.RegisterMessage(ServerCapabilities) + _REFERENCESTORAGE = _descriptor.ServiceDescriptor( @@ -287,8 +406,8 @@ _REFERENCESTORAGE = _descriptor.ServiceDescriptor( file=DESCRIPTOR, index=0, serialized_options=None, - serialized_start=507, - serialized_end=965, + serialized_start=694, + serialized_end=1152, methods=[ _descriptor.MethodDescriptor( name='GetReference', @@ -322,4 +441,28 @@ _sym_db.RegisterServiceDescriptor(_REFERENCESTORAGE) DESCRIPTOR.services_by_name['ReferenceStorage'] = _REFERENCESTORAGE + +_CAPABILITIES = _descriptor.ServiceDescriptor( + name='Capabilities', + full_name='buildstream.v2.Capabilities', + file=DESCRIPTOR, + index=1, + serialized_options=None, + serialized_start=1155, + serialized_end=1310, + methods=[ + _descriptor.MethodDescriptor( + name='GetCapabilities', + full_name='buildstream.v2.Capabilities.GetCapabilities', + index=0, + containing_service=None, + input_type=_GETCAPABILITIESREQUEST, + output_type=_SERVERCAPABILITIES, + serialized_options=_b('\202\323\344\223\002%\022#/v2/{instance_name=**}/capabilities'), + ), +]) +_sym_db.RegisterServiceDescriptor(_CAPABILITIES) + +DESCRIPTOR.services_by_name['Capabilities'] = _CAPABILITIES + # @@protoc_insertion_point(module_scope) diff --git a/src/buildstream/_protos/buildstream/v2/buildstream_pb2_grpc.py b/src/buildstream/_protos/buildstream/v2/buildstream_pb2_grpc.py index b3e653493..52d22c593 100644 --- a/src/buildstream/_protos/buildstream/v2/buildstream_pb2_grpc.py +++ b/src/buildstream/_protos/buildstream/v2/buildstream_pb2_grpc.py @@ -87,3 +87,45 @@ def add_ReferenceStorageServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'buildstream.v2.ReferenceStorage', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + + +class CapabilitiesStub(object): + # missing associated documentation comment in .proto file + pass + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.GetCapabilities = channel.unary_unary( + '/buildstream.v2.Capabilities/GetCapabilities', + request_serializer=buildstream_dot_v2_dot_buildstream__pb2.GetCapabilitiesRequest.SerializeToString, + response_deserializer=buildstream_dot_v2_dot_buildstream__pb2.ServerCapabilities.FromString, + ) + + +class CapabilitiesServicer(object): + # missing associated documentation comment in .proto file + pass + + def GetCapabilities(self, request, context): + """GetCapabilities mirrors + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_CapabilitiesServicer_to_server(servicer, server): + rpc_method_handlers = { + 'GetCapabilities': grpc.unary_unary_rpc_method_handler( + servicer.GetCapabilities, + request_deserializer=buildstream_dot_v2_dot_buildstream__pb2.GetCapabilitiesRequest.FromString, + response_serializer=buildstream_dot_v2_dot_buildstream__pb2.ServerCapabilities.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'buildstream.v2.Capabilities', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) diff --git a/src/buildstream/_protos/google/api/annotations_pb2.py b/src/buildstream/_protos/google/api/annotations_pb2.py index 8916f9823..707fae87f 100644 --- a/src/buildstream/_protos/google/api/annotations_pb2.py +++ b/src/buildstream/_protos/google/api/annotations_pb2.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: google/api/annotations.proto diff --git a/src/buildstream/_protos/google/api/http_pb2.py b/src/buildstream/_protos/google/api/http_pb2.py index 5ef3912a1..fa896d46e 100644 --- a/src/buildstream/_protos/google/api/http_pb2.py +++ b/src/buildstream/_protos/google/api/http_pb2.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: google/api/http.proto diff --git a/src/buildstream/_protos/google/bytestream/bytestream_pb2.py b/src/buildstream/_protos/google/bytestream/bytestream_pb2.py index ded91379d..474ab3fde 100644 --- a/src/buildstream/_protos/google/bytestream/bytestream_pb2.py +++ b/src/buildstream/_protos/google/bytestream/bytestream_pb2.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: google/bytestream/bytestream.proto diff --git a/src/buildstream/_protos/google/longrunning/operations_pb2.py b/src/buildstream/_protos/google/longrunning/operations_pb2.py index c5abeb13c..de961b038 100644 --- a/src/buildstream/_protos/google/longrunning/operations_pb2.py +++ b/src/buildstream/_protos/google/longrunning/operations_pb2.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: google/longrunning/operations.proto diff --git a/src/buildstream/_protos/google/rpc/code_pb2.py b/src/buildstream/_protos/google/rpc/code_pb2.py index e06dea194..5131fa97e 100644 --- a/src/buildstream/_protos/google/rpc/code_pb2.py +++ b/src/buildstream/_protos/google/rpc/code_pb2.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: google/rpc/code.proto diff --git a/src/buildstream/_protos/google/rpc/status_pb2.py b/src/buildstream/_protos/google/rpc/status_pb2.py index 80c572d77..a7d8f9acc 100644 --- a/src/buildstream/_protos/google/rpc/status_pb2.py +++ b/src/buildstream/_protos/google/rpc/status_pb2.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: google/rpc/status.proto |