summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbst-marge-bot <marge-bot@buildstream.build>2019-06-26 16:31:58 +0000
committerbst-marge-bot <marge-bot@buildstream.build>2019-06-26 16:31:58 +0000
commitaf033797ccaaf27d6e30748416dbdd2284249006 (patch)
treecaafb6ffae365972abafe97f0d5731a94e9023b6
parent7224582503f85af5e5bcf072c2d1ae8d9ce2c19e (diff)
parent54900504b368953af43a1e5ea2d71bd55a58d6a4 (diff)
downloadbuildstream-af033797ccaaf27d6e30748416dbdd2284249006.tar.gz
Merge branch 'raoul/915-capabilities-service' into 'master'
Capabilities service Closes #915 See merge request BuildStream/buildstream!1410
-rw-r--r--src/buildstream/_artifactcache.py17
-rw-r--r--src/buildstream/_cas/casserver.py17
-rw-r--r--src/buildstream/_protos/build/bazel/remote/execution/v2/remote_execution_pb2.py1
-rw-r--r--src/buildstream/_protos/build/bazel/semver/semver_pb2.py1
-rw-r--r--src/buildstream/_protos/buildstream/v2/artifact.proto12
-rw-r--r--src/buildstream/_protos/buildstream/v2/artifact_pb2.py87
-rw-r--r--src/buildstream/_protos/buildstream/v2/artifact_pb2_grpc.py17
-rw-r--r--src/buildstream/_protos/buildstream/v2/buildstream.proto23
-rw-r--r--src/buildstream/_protos/buildstream/v2/buildstream_pb2.py149
-rw-r--r--src/buildstream/_protos/buildstream/v2/buildstream_pb2_grpc.py42
-rw-r--r--src/buildstream/_protos/google/api/annotations_pb2.py1
-rw-r--r--src/buildstream/_protos/google/api/http_pb2.py1
-rw-r--r--src/buildstream/_protos/google/bytestream/bytestream_pb2.py1
-rw-r--r--src/buildstream/_protos/google/longrunning/operations_pb2.py1
-rw-r--r--src/buildstream/_protos/google/rpc/code_pb2.py1
-rw-r--r--src/buildstream/_protos/google/rpc/status_pb2.py1
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