diff --git a/README.md b/README.md index 2df9b98..23b8dca 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Internally, a HTTP API is exposed, and a job queue is used to distribute the che ## Todo: - [ ] Do not return empty list on / when no results from agents. -- [ ] donner un aperçu rapide de l’état de la supervision. +- [X] donner un aperçu rapide de l’état de la supervision. - [ ] Allow passing a dict to check - [ ] Rename error in unexpected error - [ ] Use background tasks for alerting @@ -29,4 +29,4 @@ Internally, a HTTP API is exposed, and a job queue is used to distribute the che - [ ] Un flag de configuration permet d’ajouter automatiquement un job de vérification de redirection 301 de la version HTTP vers HTTPS - [ ] add an "unknown" severity for check errors - [ ] Add a way to specify the severity of the alerts in the config -- [ ] Add a command to generate new authentication token \ No newline at end of file +- [ ] Add a command to generate new authentication token diff --git a/argos/server/queries.py b/argos/server/queries.py index b6cc453..eb42b4f 100644 --- a/argos/server/queries.py +++ b/argos/server/queries.py @@ -105,7 +105,7 @@ async def update_from_config(db: Session, config: schemas.Config): db.commit() -async def get_severity_counts(db: Session): +async def get_severity_counts(db: Session) -> dict: # Get the last result of each task subquery = ( db.query(Result.task_id, func.max(Result.id).label("max_result_id")) @@ -122,6 +122,10 @@ async def get_severity_counts(db: Session): # Execute the query and fetch the results task_counts_by_severity = query.all() + + counts_dict = dict(task_counts_by_severity) + for key in ("ok", "warning", "critical"): + counts_dict.setdefault(key, 0) return task_counts_by_severity diff --git a/argos/server/routes/api.py b/argos/server/routes/api.py index 1410c00..18e7b9b 100644 --- a/argos/server/routes/api.py +++ b/argos/server/routes/api.py @@ -73,8 +73,4 @@ async def get_stats(db: Session = Depends(get_db)): @route.get("/severities") async def get_severity_counts(db: Session = Depends(get_db)): """Returns the number of results per severity""" - counts = await queries.get_severity_counts(db) - counts_dict = dict(counts) - for key in ("ok", "warning", "critical"): - counts_dict.setdefault(key, 0) - return counts_dict + return await queries.get_severity_counts(db) diff --git a/argos/server/routes/views.py b/argos/server/routes/views.py index cc1cc5e..174f0c6 100644 --- a/argos/server/routes/views.py +++ b/argos/server/routes/views.py @@ -7,6 +7,7 @@ from sqlalchemy import desc from sqlalchemy.orm import Session, aliased from argos.schemas import Config +from argos.server import queries from argos.server.models import Result, Task from argos.server.routes.dependencies import get_config, get_db @@ -16,6 +17,23 @@ templates = Jinja2Templates(directory="argos/server/templates") @route.get("/") +async def get_severity_counts(request: Request, db: Session = Depends(get_db)): + """Returns the number of results per severity""" + counts_dict = await queries.get_severity_counts(db) + + agents = db.query(Result.agent_id).distinct().all() + + return templates.TemplateResponse( + "index.html", + { + "request": request, + "counts_dict": counts_dict, + "agents": agents, + }, + ) + + +@route.get("/details") async def read_tasks(request: Request, db: Session = Depends(get_db)): tasks = db.query(Task).order_by(Task.domain).all() @@ -46,7 +64,7 @@ async def read_tasks(request: Request, db: Session = Depends(get_db)): agents = db.query(Result.agent_id).distinct().all() return templates.TemplateResponse( - "index.html", + "details.html", { "request": request, "domains": domains, diff --git a/argos/server/static/styles.css b/argos/server/static/styles.css index 5ca62cb..f1d80a8 100644 --- a/argos/server/static/styles.css +++ b/argos/server/static/styles.css @@ -2,4 +2,16 @@ code { white-space: pre-wrap; -} \ No newline at end of file +} + +.grid-index { + font-size: 2rem; +} +.text-center, +.grid-index { + text-align: center; +} +.grid-index article { + margin-top: 0; + margin-bottom: 1rem; +} diff --git a/argos/server/templates/agents.html b/argos/server/templates/agents.html index 9cd6b1a..aa5d58f 100644 --- a/argos/server/templates/agents.html +++ b/argos/server/templates/agents.html @@ -9,13 +9,12 @@
- - {% for result in last_seen %} -