Source code for luna_licenses.app.handlers.license_executions_consumption_handler
# -*- coding: utf-8 -*-
"""License Handler
Module realize license handler.
"""
from sanic.response import HTTPResponse
from app.handlers.base_handler import BaseLicensesRequestHandler
from app.handlers.schemas import CONSUME_EXECUTIONS_SCHEMA
from hasplibpybind.hasplib import HaspFeatureEnum
[docs]class ExecutionsHandler(BaseLicensesRequestHandler):
    """
    Handler for consume executions
    Resource: "/{api_version}/license/executions"
    """
[docs]    async def post(self) -> HTTPResponse:
        """
        Consume executions for the given features, see `spec_post_license_executions`_.
        .. _spec_post_license_executions:
            _static/api.html#operation/consumeExecutions
        """
        self.validateJson(self.request.json, CONSUME_EXECUTIONS_SCHEMA, False)
        result = {}
        for key, value in self.request.json.items():
            feature = dict(liveness=HaspFeatureEnum.PlatformLiveness)[key]
            executionCount = value["execution_count"]
            resultError, consumedNumber = self.app.ctx.licensing.consumeBatchOfExecutions(feature, executionCount)
            result[key] = dict(result=resultError, consumed_executions=consumedNumber)
        return self.successWithSignature(statusCode=200, outputJson=result)