Source code for luna_api.app.handlers.version_handler
# -*- coding: utf-8 -*-
"""Version Handler
Module realize version handler.
"""
import asyncio
from typing import Dict
from luna3.common.base_api import BaseHTTPAPI
from app.handlers.base_handler import BaseRequestHandler
from app.platform_version import VERSION as platformVersion
from app.version import VERSION as apiVersion
[docs]class VersionHandler(BaseRequestHandler):
"""
Handler for getting version
"""
[docs] @staticmethod
async def getVersion(client: BaseHTTPAPI) -> Dict[str, int]:
"""
Get version from a service HTTP client.
Args:
client: HTTP client
Returns:
service version
"""
reply = await client.getVersion(raiseError=True)
return reply.json["Version"]
[docs] async def get(self): # pylint: disable-msg=W0221
"""
Get version of services, see `spec`_
.. _spec:
_static/api.html#operation/getVersion
Resource is reached by address '/version'
"""
(
facesVersion,
faceSamplesVersion,
bodySamplesVersion,
imagesVersion,
handlersVersion,
matcherVersion,
) = await asyncio.gather(
*map(
self.getVersion,
(
self.luna3Client.lunaFaces,
self.luna3Client.lunaFaceSamplesStore,
self.luna3Client.lunaBodySamplesStore,
self.luna3Client.lunaImageOriginStore,
self.luna3Client.lunaHandlers,
self.luna3Client.lunaPythonMatcher,
),
)
)
matcherName = (
"luna-matcher-proxy" if self.config.additionalServicesUsage.lunaMatcherProxy else "luna-python-matcher"
)
result = {
"LUNA PLATFORM": platformVersion["Version"], # must be first
"luna-api": apiVersion["Version"],
"luna-faces": facesVersion,
"luna-handlers": handlersVersion,
"luna-image-store-bodies-samples": bodySamplesVersion,
"luna-image-store-faces-samples": faceSamplesVersion,
"luna-image-store-images": imagesVersion,
matcherName: matcherVersion,
}
if self.config.additionalServicesUsage.lunaEvents:
eventsVersion = await self.getVersion(self.luna3Client.lunaEvents)
result.update({"luna-events": eventsVersion})
if self.config.additionalServicesUsage.lunaTasks:
tasksVersion = await self.getVersion(self.luna3Client.lunaTasks)
result.update({"luna-tasks": tasksVersion})
return self.success(outputJson=result)