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.""" """Definitions of the endpoints related the projects."""
import logging import logging
from typing import Any, Optional from typing import Any
from fastapi import APIRouter, Depends, HTTPException, status from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy import create_engine, text, update from sqlalchemy import create_engine, text, update
...@@ -38,11 +38,6 @@ def create_project( ...@@ -38,11 +38,6 @@ def create_project(
) )
server = _find_best_project_server(session, 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 # preempt the required storage
_update_server_available_size(session, server, -project.max_size) _update_server_available_size(session, server, -project.max_size)
...@@ -80,13 +75,17 @@ def create_project( ...@@ -80,13 +75,17 @@ def create_project(
return db_project return db_project
def _find_best_project_server( def _find_best_project_server(session: Session, project: Project) -> DBProjectServer:
session: Session, project: Project
) -> Optional[DBProjectServer]:
stmt = select(DBProjectServer).where( stmt = select(DBProjectServer).where(
DBProjectServer.available_size >= project.max_size 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( def _update_server_available_size(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment