Newer
Older
import grpc, logging
from prometheus_client import Counter, Histogram

Lluis Gifre Renom
committed
from context.proto.context_pb2 import Topology
from context.proto.context_pb2_grpc import ContextServiceServicer
LOGGER = logging.getLogger(__name__)
GETTOPOLOGY_COUNTER_STARTED = Counter ('context_gettopology_counter_started',
'Context:GetTopology counter of requests started' )
GETTOPOLOGY_COUNTER_COMPLETED = Counter ('context_gettopology_counter_completed',
'Context:GetTopology counter of requests completed')
GETTOPOLOGY_COUNTER_FAILED = Counter ('context_gettopology_counter_failed',
'Context:GetTopology counter of requests failed' )
GETTOPOLOGY_HISTOGRAM_DURATION = Histogram('context_gettopology_histogram_duration',
'Context:GetTopology histogram of request duration')
class ContextServiceServicerImpl(ContextServiceServicer):
def __init__(self, database):
LOGGER.debug('Creating Servicer...')
self.database = database
LOGGER.debug('Servicer Created')
@GETTOPOLOGY_HISTOGRAM_DURATION.time()
def GetTopology(self, request, context):
# request=Empty(), returns=Topology()
GETTOPOLOGY_COUNTER_STARTED.inc()
try:
LOGGER.debug('GetTopology request: {}'.format(str(request)))
reply = Topology(**self.database.get_topology())
LOGGER.debug('GetTopology reply: {}'.format(str(reply)))
GETTOPOLOGY_COUNTER_COMPLETED.inc()
return reply
except:
LOGGER.exception('GetTopology exception')
GETTOPOLOGY_COUNTER_FAILED.inc()
context.set_code(grpc.StatusCode.INTERNAL)
return Topology()