diff --git a/argos/server/queries.py b/argos/server/queries.py index b6d0edc..271b2c9 100644 --- a/argos/server/queries.py +++ b/argos/server/queries.py @@ -124,6 +124,14 @@ async def get_severity_counts(db: Session) -> dict: return counts_dict +async def reschedule_all(db: Session): + """Reschedule checks of all non OK tasks ASAP""" + db.query(Task) \ + .filter(Task.severity.in_(['warning', 'critical', 'unknown'])) \ + .update({Task.next_run: datetime.now() - timedelta(days=1)}) + db.commit() + + async def remove_old_results(db: Session, max_results: int): tasks = db.query(Task).all() deleted = 0 diff --git a/argos/server/routes/api.py b/argos/server/routes/api.py index 3ea1f59..19daafe 100644 --- a/argos/server/routes/api.py +++ b/argos/server/routes/api.py @@ -67,6 +67,13 @@ async def create_results( return {"result_ids": [r.id for r in db_results]} +@route.post("/reschedule/all") +async def reschedule_all(request: Request, db: Session = Depends(get_db)): + """Reschedule checks of all non OK tasks ASAP""" + await queries.reschedule_all(db) + return {"msg": "Non OK tasks reschuled"} + + @route.get("/stats") async def get_stats(db: Session = Depends(get_db)): """Get tasks statistics""" diff --git a/argos/server/templates/base.html b/argos/server/templates/base.html index 81bac94..a4971d5 100644 --- a/argos/server/templates/base.html +++ b/argos/server/templates/base.html @@ -22,6 +22,8 @@