70 lines
1.7 KiB
Go
Raw Normal View History

2024-10-18 04:28:31 +00:00
package app
2025-01-20 21:42:13 +00:00
import (
"sync"
2025-01-20 21:42:13 +00:00
"github.com/luthermonson/go-proxmox"
)
type Cluster struct {
lock sync.Mutex
pve ProxmoxClient
Nodes map[string]*Node
2024-12-27 19:59:44 +00:00
}
2024-10-18 04:28:31 +00:00
type Node struct {
2025-01-20 21:42:13 +00:00
lock sync.Mutex
Name string `json:"name"`
Cores uint64 `json:"cores"`
Memory uint64 `json:"memory"`
Swap uint64 `json:"swap"`
Devices map[string]*Device `json:"devices"`
Instances map[uint]*Instance `json:"instances"`
2025-01-20 21:42:13 +00:00
pvenode *proxmox.Node
2024-12-27 19:59:44 +00:00
}
2024-10-18 04:28:31 +00:00
type InstanceType string
const (
VM InstanceType = "VM"
CT InstanceType = "CT"
)
type Instance struct {
2025-01-20 21:42:13 +00:00
lock sync.Mutex
Type InstanceType `json:"type"`
Name string `json:"name"`
Proctype string `json:"cpu"`
Cores uint64 `json:"cores"`
Memory uint64 `json:"memory"`
Swap uint64 `json:"swap"`
Volumes map[string]*Volume `json:"volumes"`
Nets map[uint]*Net `json:"nets"`
Devices map[uint][]*Device `json:"devices"`
2025-01-20 21:42:13 +00:00
pveconfig interface{}
2025-01-10 01:08:44 +00:00
configDisks map[string]string
configNets map[string]string
configHostPCIs map[string]string
2025-01-20 21:42:13 +00:00
}
2024-12-27 19:59:44 +00:00
type Volume struct {
Storage string `json:"storage"`
Format string `json:"format"`
Size uint64 `json:"size"`
Volid string `json:"volid"`
2024-12-27 19:59:44 +00:00
}
type Net struct {
Rate uint64 `json:"rate"`
VLAN uint64 `json:"vlan"`
}
type Device struct {
BusID string `json:"id"`
DeviceName string `json:"device_name"`
VendorName string `json:"vendor_name"`
SubsystemDeviceName string `json:"subsystem_device_name"`
SubsystemVendorName string `json:"subsystem_vendor_name"`
Reserved bool `json:"reserved"`
2024-10-18 04:28:31 +00:00
}