Skip to content
Snippets Groups Projects
Commit 51e5b6c6 authored by Pierre Chanial's avatar Pierre Chanial
Browse files

Raise error inside helper _find_best_project_server.

parent 555711fe
No related branches found
No related tags found
1 merge request!9Resolve "API to get a project"
"""Definitions of the endpoints related the projects."""
import logging
from typing import Any, Optional
from typing import Any
from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy import create_engine, text, update
......@@ -38,11 +38,6 @@ def create_project(
)
server = _find_best_project_server(session, project)
if server is None:
raise HTTPException(
status_code=status.HTTP_507_INSUFFICIENT_STORAGE,
detail='No database has enough storage for this project.',
)
# preempt the required storage
_update_server_available_size(session, server, -project.max_size)
......@@ -80,13 +75,17 @@ def create_project(
return db_project
def _find_best_project_server(
session: Session, project: Project
) -> Optional[DBProjectServer]:
def _find_best_project_server(session: Session, project: Project) -> DBProjectServer:
stmt = select(DBProjectServer).where(
DBProjectServer.available_size >= project.max_size
)
return session.execute(stmt).scalars().first()
server = session.execute(stmt).scalars().first()
if server is None:
raise HTTPException(
status_code=status.HTTP_507_INSUFFICIENT_STORAGE,
detail='No database has enough storage for this project.',
)
return server
def _update_server_available_size(
......
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