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:
@@ -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]:
|
||||
|
||||
Reference in New Issue
Block a user