diff --git a/app/routers/servers.py b/app/routers/servers.py index 650d7f1..adcd907 100644 --- a/app/routers/servers.py +++ b/app/routers/servers.py @@ -20,6 +20,7 @@ async def servers_list(request: Request, db=Depends(get_db), domain: str = Query(None), env: str = Query(None), tier: str = Query(None), etat: str = Query(None), os: str = Query(None), owner: str = Query(None), + zone: str = Query(None), application: str = Query(None), application_id: int = Query(None), search: str = Query(None), page: int = Query(1), sort: str = Query("hostname"), sort_dir: str = Query("asc")): @@ -28,10 +29,12 @@ async def servers_list(request: Request, db=Depends(get_db), return RedirectResponse(url="/login") filters = {"domain": domain, "env": env, "tier": tier, "etat": etat, "os": os, - "owner": owner, "application": application, "application_id": application_id, + "owner": owner, "zone": zone, + "application": application, "application_id": application_id, "search": search} servers, total = list_servers(db, filters, page, sort=sort, sort_dir=sort_dir) domains_list, envs_list = get_reference_data(db) + zones_list = db.execute(text("SELECT name, is_dmz FROM zones ORDER BY is_dmz DESC, name")).fetchall() applications_list = db.execute(text("""SELECT application_name, COUNT(*) as c FROM servers WHERE application_name IS NOT NULL AND application_name != '' @@ -48,7 +51,7 @@ async def servers_list(request: Request, db=Depends(get_db), return templates.TemplateResponse("servers.html", { "request": request, "user": user, "app_name": APP_NAME, "servers": servers, "total": total, "page": page, "per_page": 50, - "domains_list": domains_list, "envs_list": envs_list, + "domains_list": domains_list, "envs_list": envs_list, "zones_list": zones_list, "applications_list": applications_list, "filters": filters, "sort": sort, "sort_dir": sort_dir, "perms": perms, "can_edit_servers": can_edit_servers, diff --git a/app/services/server_service.py b/app/services/server_service.py index f16f2fb..c049148 100644 --- a/app/services/server_service.py +++ b/app/services/server_service.py @@ -124,6 +124,11 @@ def list_servers(db, filters, page=1, per_page=50, sort="hostname", sort_dir="as where.append("s.etat = :etat"); params["etat"] = filters["etat"] if filters.get("os"): where.append("s.os_family = :os"); params["os"] = filters["os"] + if filters.get("zone"): + if filters["zone"] == "__null__": + where.append("s.zone_id IS NULL") + else: + where.append("z.name = :zone"); params["zone"] = filters["zone"] if filters.get("owner"): where.append("s.patch_os_owner = :owner"); params["owner"] = filters["owner"] if filters.get("application_id"): diff --git a/app/templates/servers.html b/app/templates/servers.html index 1b2749c..61a7888 100644 --- a/app/templates/servers.html +++ b/app/templates/servers.html @@ -44,6 +44,10 @@ +