f-32: disk: add boot multidisk handle

Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
GnomeZworc 2026-05-24 15:44:48 +02:00
commit 85c8c4e590
Signed by: nicolas.boufideline
GPG key ID: 4406BBBF8845D632
4 changed files with 48 additions and 24 deletions

View file

@ -56,7 +56,7 @@ func StartVM(db *badger.DB, name string, cfg *configuration.Config) error {
Name: name,
TapID: d.tapID,
Mac: d.mac,
VolumePath: d.volumePath,
VolumePath: d.disks[0].path,
Memory: d.memory,
CPUs: d.cpus,
SerialDir: cfg.QEMU.SerialDir,

View file

@ -11,6 +11,11 @@ import (
"github.com/dgraph-io/badger/v4"
)
type diskEntry struct {
path string
dev string
}
type vmData struct {
subnetName string
vpcName string
@ -20,7 +25,7 @@ type vmData struct {
ip string
metadataPort string
mac string
volumePath string
disks []diskEntry
memory int
cpus int
uefi bool
@ -82,11 +87,18 @@ func loadVM(db *badger.DB, name string) (vmData, error) {
}
d.mac = mac
volumePath, err := kv.GetFromDB(db, "vm/"+name+"/volume_path")
diskEntries, err := kv.ListByPrefix(db, "vm/"+name+"/disk/")
if err != nil {
return d, fmt.Errorf("get volume_path: %w", err)
return d, fmt.Errorf("list disks: %w", err)
}
if len(diskEntries) == 0 {
return d, fmt.Errorf("no disks found for vm %q", name)
}
diskPrefix := "vm/" + name + "/disk/"
for key, path := range diskEntries {
dev := strings.TrimPrefix(key, diskPrefix)
d.disks = append(d.disks, diskEntry{path: path, dev: dev})
}
d.volumePath = volumePath
memoryStr, err := kv.GetFromDB(db, "vm/"+name+"/memory")
if err != nil {