Beispiel #1
0
def init() -> None:
    """Init on application startup"""

    # TODO: refactor (same as project)
    DeployDbSchema()

    deploy_manager = DeployManager()
    deploy_manager.check_and_update_deployments_statuses()
Beispiel #2
0
def list_deployments() -> JSONResponse:
    """Get list of deployments
    Returns:
        starlette.responses.JSONResponse
    """

    deploy_manager = DeployManager()
    deployments = deploy_manager.list()
    return JSONResponse(deployments)
Beispiel #3
0
def stop_deployment(deployment_id: int) -> JSONResponse:
    """Stop deployment.
    Args:
        deployment_id {int}: deployment id
    Returns:
        starlette.responses.JSONResponse
    """

    deploy_manager = DeployManager()
    deploy_manager.stop(deployment_id=deployment_id)
    return JSONResponse({'deployment_id': str(deployment_id)}, HTTPStatus.OK)
Beispiel #4
0
def delete_deployment(deployment_id: int) -> JSONResponse:
    """Delete deployment (mark as deleted).
    Args:
        deployment_id {int}: deployment id
    Returns:
        starlette.responses.JSONResponse
    """

    deploy_manager = DeployManager()
    deploy_manager.delete(deployment_id=deployment_id)
    return JSONResponse({'deployment_id': str(deployment_id)}, HTTPStatus.OK)
Beispiel #5
0
def get_deployment_data_schema(deployment_id: int) -> JSONResponse:
    """Get deployment data schema.
    Args:
        deployment_id {int}: deployment id
    Returns:
        starlette.responses.JSONResponse
    """

    deploy_manager = DeployManager()
    deployment_schema = deploy_manager.deployment_schema(deployment_id)

    return JSONResponse(deployment_schema)
Beispiel #6
0
def ping(deployment_id: int) -> Response:
    """Ping deployment.
    Args:
        deployment_id {int}: deployment id
    Returns:
        starlette.responses.Response
    """

    deploy_manager = DeployManager()
    available = deploy_manager.ping(deployment_id=deployment_id)

    if available:
        return Response(status_code=HTTPStatus.OK)
    else:
        return Response(status_code=HTTPStatus.BAD_REQUEST)
Beispiel #7
0
def get_deployment(deployment_id: int) -> JSONResponse:
    """Get deployment
    Args:
        deployment_id {int}: deployment id
    Returns:
        starlette.responses.JSONResponse
    """

    deploy_manager = DeployManager()
    deployments = deploy_manager.list()

    for deployment in deployments:
        if deployment.get('id') == str(deployment_id):
            return JSONResponse(deployment)

    raise DeploymentNotFoundError(f'Deployment with ID {deployment_id} not found')
Beispiel #8
0
def predict(deployment_id: int, data: Text = Form(...)) -> JSONResponse:
    """Predict data on deployment.
    Args:
        deployment_id {int}: deployment id
        data {Text}: data to predict
    Returns:
        starlette.responses.JSONResponse
    """

    deploy_manager = DeployManager()
    response = deploy_manager.predict(deployment_id=deployment_id, data=data)

    if response.status_code != HTTPStatus.OK:
        return error_response(
            http_response_code=response.status_code,
            message=response.json().get('message')
        )

    return JSONResponse({'prediction': response.text})
Beispiel #9
0
def create_and_run_deployment(
        project_id: int = Form(...),
        model_id: Text = Form(...),
        version: Text = Form(...),
        model_uri: Text = Form(...),
        type: Text = Form(...)  # pylint: disable=redefined-builtin
) -> JSONResponse:
    """Create and run deployment.
    Args:
        project_id {int}: project id
        model_id {Text}: model id (name)
        version {Text}: model version
        model_uri {Text}: path to model package
        type {Text}: deployment type
    Returns:
        starlette.responses.JSONResponse
    """

    deploy_manager = DeployManager()
    deployment_id = deploy_manager.create_deployment(
        project_id, model_id, version, model_uri, type
    )
    return JSONResponse({'deployment_id': str(deployment_id)}, HTTPStatus.ACCEPTED)