diff --git a/frontend-modern/src/components/Backups/UnifiedBackups.tsx b/frontend-modern/src/components/Backups/UnifiedBackups.tsx index a363f6a04..1e6ed5d71 100644 --- a/frontend-modern/src/components/Backups/UnifiedBackups.tsx +++ b/frontend-modern/src/components/Backups/UnifiedBackups.tsx @@ -8,7 +8,7 @@ import { MetricBar } from '@/components/Dashboard/MetricBar'; import { BackupsFilter } from './BackupsFilter'; type BackupType = 'snapshot' | 'local' | 'remote'; -type GuestType = 'VM' | 'LXC' | 'Template' | 'ISO'; +type GuestType = 'VM' | 'LXC' | 'Host' | 'Template' | 'ISO'; interface UnifiedBackup { backupType: BackupType; @@ -246,6 +246,8 @@ const UnifiedBackups: Component = () => { displayType = 'VM'; } else if (backup.type === 'lxc') { displayType = 'LXC'; + } else if (backup.type === 'host') { + displayType = 'Host'; // PMG host config backups } else { displayType = 'LXC'; // Default fallback (most people have more containers than VMs) } @@ -1676,6 +1678,8 @@ const UnifiedBackups: Component = () => { {item.type} diff --git a/internal/monitoring/monitor.go b/internal/monitoring/monitor.go index bf97315c6..868898b8b 100644 --- a/internal/monitoring/monitor.go +++ b/internal/monitoring/monitor.go @@ -2254,7 +2254,10 @@ func (m *Monitor) pollStorageBackupsWithNodes(ctx context.Context, instanceName // Determine type from content type and volid backupType := "unknown" - if strings.Contains(content.Volid, "/vm/") || strings.Contains(content.Volid, "qemu") { + // Check for PMG host backups (VMID=0 and contains pmgbackup) + if content.VMID == 0 && strings.Contains(content.Volid, "pmgbackup") { + backupType = "host" + } else if strings.Contains(content.Volid, "/vm/") || strings.Contains(content.Volid, "qemu") { backupType = "qemu" } else if strings.Contains(content.Volid, "/ct/") || strings.Contains(content.Volid, "lxc") { backupType = "lxc" @@ -2264,6 +2267,9 @@ func (m *Monitor) pollStorageBackupsWithNodes(ctx context.Context, instanceName } else if strings.Contains(content.Format, "pbs-vm") { // PBS format check as fallback backupType = "qemu" + } else if content.VMID == 0 { + // Any other VMID=0 backup is likely a host backup + backupType = "host" } // For shared storage (like PBS), use the storage name as node