Pulse/internal/monitoring/monitor_pve_node_vm_builder.go
rcourtman bd6f77e093 Prepare v6.0.0 release candidate
Tighten v5-to-v6 upgrade safety, release installability, provider MSP mode handling, AI cost accounting, metrics flushing, and frontend guardrails for the v6.0.0 GA candidate.
2026-06-04 14:07:14 +01:00

60 lines
1.5 KiB
Go

package monitoring
import (
"context"
"github.com/rcourtman/pulse-go-rewrite/internal/models"
"github.com/rcourtman/pulse-go-rewrite/pkg/proxmox"
)
func (m *Monitor) pollNodeVMsWithClusterResourceBuilder(
ctx context.Context,
instanceName string,
node string,
vms []proxmox.VM,
client PVEClientInterface,
prevVMByID map[string]models.VM,
vmIDToHostAgent map[string]models.Host,
) ([]models.VM, map[string]struct{}) {
templateSubjects := make(map[string]struct{})
resources := make([]indexedClusterResource, 0, len(vms))
for _, vm := range vms {
if vm.Template == 1 {
if key := pveBackupTemplateSubjectKey(instanceName, "qemu", node, vm.VMID); key != "" {
templateSubjects[key] = struct{}{}
}
continue
}
guestID := makeGuestID(instanceName, node, vm.VMID)
resources = append(resources, indexedClusterResource{
order: len(resources),
resource: proxmox.ClusterResource{
ID: guestID,
Type: "qemu",
Node: node,
Pool: vm.Pool,
Status: vm.Status,
Name: vm.Name,
VMID: vm.VMID,
CPU: vm.CPU,
MaxCPU: vm.CPUs,
Mem: vm.Mem,
MaxMem: vm.MaxMem,
Disk: vm.Disk,
MaxDisk: vm.MaxDisk,
NetIn: vm.NetIn,
NetOut: vm.NetOut,
DiskRead: vm.DiskRead,
DiskWrite: vm.DiskWrite,
Uptime: vm.Uptime,
Template: vm.Template,
Tags: vm.Tags,
},
guestID: guestID,
})
}
return m.collectClusterVMResources(ctx, instanceName, resources, client, prevVMByID, vmIDToHostAgent), templateSubjects
}