Skip to content
Snippets Groups Projects
Commit f1956513 authored by Martin Blanchard's avatar Martin Blanchard
Browse files

capabilities/service.py: Per-method authorization

parent 9f149dc9
No related branches found
No related tags found
No related merge requests found
...@@ -19,15 +19,20 @@ import grpc ...@@ -19,15 +19,20 @@ import grpc
from buildgrid._exceptions import InvalidArgumentError from buildgrid._exceptions import InvalidArgumentError
from buildgrid._protos.build.bazel.remote.execution.v2 import remote_execution_pb2, remote_execution_pb2_grpc from buildgrid._protos.build.bazel.remote.execution.v2 import remote_execution_pb2, remote_execution_pb2_grpc
from buildgrid.server._authentication import AuthContext, authorize
class CapabilitiesService(remote_execution_pb2_grpc.CapabilitiesServicer): class CapabilitiesService(remote_execution_pb2_grpc.CapabilitiesServicer):
def __init__(self, server): def __init__(self, server):
self.__logger = logging.getLogger(__name__) self.__logger = logging.getLogger(__name__)
self.__instances = {} self.__instances = {}
remote_execution_pb2_grpc.add_CapabilitiesServicer_to_server(self, server) remote_execution_pb2_grpc.add_CapabilitiesServicer_to_server(self, server)
# --- Public API ---
def add_instance(self, name, instance): def add_instance(self, name, instance):
self.__instances[name] = instance self.__instances[name] = instance
...@@ -40,6 +45,9 @@ class CapabilitiesService(remote_execution_pb2_grpc.CapabilitiesServicer): ...@@ -40,6 +45,9 @@ class CapabilitiesService(remote_execution_pb2_grpc.CapabilitiesServicer):
def add_execution_instance(self, name, instance): def add_execution_instance(self, name, instance):
self.__instances[name].add_execution_instance(instance) self.__instances[name].add_execution_instance(instance)
# --- Public API: Servicer ---
@authorize(AuthContext)
def GetCapabilities(self, request, context): def GetCapabilities(self, request, context):
try: try:
instance = self._get_instance(request.instance_name) instance = self._get_instance(request.instance_name)
...@@ -52,6 +60,8 @@ class CapabilitiesService(remote_execution_pb2_grpc.CapabilitiesServicer): ...@@ -52,6 +60,8 @@ class CapabilitiesService(remote_execution_pb2_grpc.CapabilitiesServicer):
return remote_execution_pb2.ServerCapabilities() return remote_execution_pb2.ServerCapabilities()
# --- Private API ---
def _get_instance(self, name): def _get_instance(self, name):
try: try:
return self.__instances[name] return self.__instances[name]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment