From 81e0ba3a4a5393263e060039af22955e8dbb8636 Mon Sep 17 00:00:00 2001 From: smolkik-code Date: Tue, 9 Jun 2026 17:43:53 +0700 Subject: [PATCH] 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 --- veeam_client.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/veeam_client.py b/veeam_client.py index 15cee57..df077f0 100644 --- a/veeam_client.py +++ b/veeam_client.py @@ -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]: