Optim: logging structure + query_helpers.py + fix exceptions silencieuses routers
This commit is contained in:
parent
9097872e57
commit
a0f90cd719
@ -1,3 +1,9 @@
|
|||||||
|
import logging
|
||||||
|
logging.basicConfig(
|
||||||
|
level=logging.INFO,
|
||||||
|
format="%(asctime)s %(levelname)s [%(name)s] %(message)s",
|
||||||
|
datefmt="%Y-%m-%d %H:%M:%S"
|
||||||
|
)
|
||||||
"""PatchCenter v2 — Entry point FastAPI"""
|
"""PatchCenter v2 — Entry point FastAPI"""
|
||||||
from fastapi import FastAPI, Request
|
from fastapi import FastAPI, Request
|
||||||
from fastapi.responses import RedirectResponse
|
from fastapi.responses import RedirectResponse
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
import logging
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
"""Router campagnes — creation, prereqs, assignation, workflow"""
|
"""Router campagnes — creation, prereqs, assignation, workflow"""
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from fastapi import APIRouter, Request, Depends, Query, Form
|
from fastapi import APIRouter, Request, Depends, Query, Form
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
import logging
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
"""Router contacts — gestion des responsables applicatifs et scopes"""
|
"""Router contacts — gestion des responsables applicatifs et scopes"""
|
||||||
from fastapi import APIRouter, Request, Depends, Query, Form
|
from fastapi import APIRouter, Request, Depends, Query, Form
|
||||||
from fastapi.responses import HTMLResponse, RedirectResponse
|
from fastapi.responses import HTMLResponse, RedirectResponse
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
import logging
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
from fastapi import APIRouter, Request, Depends
|
from fastapi import APIRouter, Request, Depends
|
||||||
from fastapi.responses import HTMLResponse, RedirectResponse
|
from fastapi.responses import HTMLResponse, RedirectResponse
|
||||||
from fastapi.templating import Jinja2Templates
|
from fastapi.templating import Jinja2Templates
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
import logging
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
"""Router serveurs — CRUD + detail + edit via HTMX"""
|
"""Router serveurs — CRUD + detail + edit via HTMX"""
|
||||||
from fastapi import APIRouter, Request, Depends, Query, Form
|
from fastapi import APIRouter, Request, Depends, Query, Form
|
||||||
from fastapi.responses import HTMLResponse, RedirectResponse, StreamingResponse
|
from fastapi.responses import HTMLResponse, RedirectResponse, StreamingResponse
|
||||||
@ -205,8 +207,8 @@ async def server_update(request: Request, server_id: int, db=Depends(get_db),
|
|||||||
vm_id = list(r["objects"].values())[0]["key"]
|
vm_id = list(r["objects"].values())[0]["key"]
|
||||||
new_list = [{"applicationsolution_id": int(app_itop_id)}] if app_itop_id else []
|
new_list = [{"applicationsolution_id": int(app_itop_id)}] if app_itop_id else []
|
||||||
client.update("VirtualMachine", vm_id, {"applicationsolution_list": new_list})
|
client.update("VirtualMachine", vm_id, {"applicationsolution_list": new_list})
|
||||||
except Exception:
|
except Exception as e:
|
||||||
pass
|
logger.warning(f"Erreur non bloquante: {e}")
|
||||||
|
|
||||||
s = get_server_full(db, server_id)
|
s = get_server_full(db, server_id)
|
||||||
tags = get_server_tags(db, s.qid)
|
tags = get_server_tags(db, s.qid)
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
import logging
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
"""Router settings — configuration modules externes + connexions"""
|
"""Router settings — configuration modules externes + connexions"""
|
||||||
from fastapi import APIRouter, Request, Depends, Form
|
from fastapi import APIRouter, Request, Depends, Form
|
||||||
from fastapi.responses import HTMLResponse, RedirectResponse
|
from fastapi.responses import HTMLResponse, RedirectResponse
|
||||||
|
|||||||
32
app/services/query_helpers.py
Normal file
32
app/services/query_helpers.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
"""Helpers SQL reutilisables pour eviter la duplication de JOINs."""
|
||||||
|
from sqlalchemy import text
|
||||||
|
|
||||||
|
SERVER_BASE_JOINS = """
|
||||||
|
LEFT JOIN domain_environments de ON s.domain_env_id = de.id
|
||||||
|
LEFT JOIN domains d ON de.domain_id = d.id
|
||||||
|
LEFT JOIN environments e ON de.environment_id = e.id
|
||||||
|
LEFT JOIN zones z ON s.zone_id = z.id
|
||||||
|
"""
|
||||||
|
|
||||||
|
SERVER_BASE_COLS = """
|
||||||
|
s.id, s.hostname, s.fqdn, s.os_family, s.os_version,
|
||||||
|
s.etat, s.tier, s.environnement, s.machine_type,
|
||||||
|
d.name as domaine, d.code as domain_code,
|
||||||
|
e.name as env_name, e.code as env_code,
|
||||||
|
z.name as zone
|
||||||
|
"""
|
||||||
|
|
||||||
|
def server_list_query(where="1=1", order="s.hostname", limit=None, offset=None):
|
||||||
|
"""Construit une requete SELECT serveurs avec JOINs standard."""
|
||||||
|
q = f"""
|
||||||
|
SELECT {SERVER_BASE_COLS}
|
||||||
|
FROM servers s
|
||||||
|
{SERVER_BASE_JOINS}
|
||||||
|
WHERE {where}
|
||||||
|
ORDER BY {order}
|
||||||
|
"""
|
||||||
|
if limit is not None:
|
||||||
|
q += f" LIMIT {int(limit)}"
|
||||||
|
if offset is not None:
|
||||||
|
q += f" OFFSET {int(offset)}"
|
||||||
|
return text(q)
|
||||||
Loading…
Reference in New Issue
Block a user