Pulse/internal/monitoring/guest_host_agent_fallback.go
2026-04-22 09:22:46 +01:00

48 lines
1.4 KiB
Go

package monitoring
import "github.com/rcourtman/pulse-go-rewrite/internal/models"
func resolveGuestDiskFromLinkedHostAgent(guestID string, vmIDToHostAgent map[string]models.Host) (models.Disk, []models.Disk, bool) {
if guestID == "" || len(vmIDToHostAgent) == 0 {
return models.Disk{}, nil, false
}
host, ok := vmIDToHostAgent[guestID]
if !ok {
return models.Disk{}, nil, false
}
summary, ok := models.AggregateDisk(host.Disks)
if !ok {
return models.Disk{}, nil, false
}
disks := append([]models.Disk(nil), host.Disks...)
return models.Disk{
Total: summary.Total,
Used: summary.Used,
Free: summary.Free,
Usage: summary.Usage,
Mountpoint: summary.Mountpoint,
Type: summary.Type,
Device: summary.Device,
}, disks, true
}
func preferLinkedHostAgentDiskInventory(
guestID string,
vmIDToHostAgent map[string]models.Host,
diskTotal uint64,
diskUsed uint64,
diskFree uint64,
diskUsage float64,
individualDisks []models.Disk,
diskStatusReason string,
) (uint64, uint64, uint64, float64, []models.Disk, string, bool) {
summary, hostDisks, ok := resolveGuestDiskFromLinkedHostAgent(guestID, vmIDToHostAgent)
if !ok || summary.Total <= 0 {
return diskTotal, diskUsed, diskFree, diskUsage, individualDisks, diskStatusReason, false
}
return uint64(summary.Total), uint64(summary.Used), uint64(summary.Free), summary.Usage, hostDisks, "", true
}