fix: merge sessions from all types (BackupJob, FileBackupJob, AgentBackupJob, unfiltered)

- fetch_sessions now queries 5 URL variants and merges results
  by unique session id (no duplicates)
- First query: unfiltered with 3x limit (gets recent sessions of all types)
- Then: sessionType=BackupJob, FileBackupJob, AgentBackupJob
- Ensures all backup job types appear in dashboard
This commit is contained in:
2026-06-09 17:43:53 +07:00
parent 9030db8368
commit 81e0ba3a4a

View File

@@ -241,16 +241,25 @@ class VeeamClient:
async def fetch_sessions(self, limit: int = 50) -> list[dict]:
if self._is_v12():
seen: set[str] = set()
all_sessions: list[dict] = []
for path in (
f"/api/v1/sessions?limit={limit}",
f"/api/v1/sessions?limit={limit}&sessionType=BackupJobs",
f"/api/v1/sessions?limit={limit}&sessionType=BackupJobs&typeFilter=Backup",
f"/api/v1/sessions?limit={limit * 3}",
f"/api/v1/sessions?limit={limit}&sessionType=BackupJob",
f"/api/v1/sessions?limit={limit}&sessionType=BackupJob&typeFilter=Backup",
f"/api/v1/sessions?limit={limit}&sessionType=FileBackupJob",
f"/api/v1/sessions?limit={limit}&sessionType=AgentBackupJob",
):
try:
return await self._fetch_json_list(path)
items = await self._fetch_json_list(path)
for s in items:
sid = s.get("id") or s.get("Id") or ""
if sid and sid not in seen:
seen.add(sid)
all_sessions.append(s)
except Exception:
continue
return []
return all_sessions
return await self._fetch_legacy_sessions(limit)
async def fetch_repositories(self) -> list[dict]: