From 583fa15779c731814be634beca76fe51689b97a5 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Wed, 23 Oct 2024 05:32:49 -0500 Subject: [PATCH] save drive filename Signed-off-by: Jeff Carr --- addDroplet.go | 66 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 3 deletions(-) diff --git a/addDroplet.go b/addDroplet.go index ee01a60..1af9cee 100644 --- a/addDroplet.go +++ b/addDroplet.go @@ -6,9 +6,9 @@ import ( "errors" "fmt" + pb "go.wit.com/lib/protobuf/virtbuf" "go.wit.com/log" "libvirt.org/go/libvirtxml" - pb "go.wit.com/lib/protobuf/virtbuf" ) func addDomainDroplet(domcfg *libvirtxml.Domain) (*DropletT, error) { @@ -67,7 +67,7 @@ func updateDroplet(d *DropletT, domcfg *libvirtxml.Domain) bool { return false } - if ! updateMemory(d, domcfg) { + if !updateMemory(d, domcfg) { log.Info("updateMemory() failed") ok = false } @@ -85,10 +85,15 @@ func updateDroplet(d *DropletT, domcfg *libvirtxml.Domain) bool { ok = false } - if ! updateNetwork(d, domcfg) { + if !updateNetwork(d, domcfg) { log.Info("updateNetwork() failed") ok = false } + + if !updateDisk(d, domcfg) { + log.Info("updateDisk() failed") + ok = false + } return ok } @@ -109,6 +114,28 @@ func updateMemory(d *DropletT, domcfg *libvirtxml.Domain) bool { } return true } + + if domcfg.Memory.Unit == "MiB" { + var m int64 + m = int64(domcfg.Memory.Value * 1024 * 1024) + if d.pb.Memory != m { + d.pb.Memory = m + me.changed = true + fmt.Printf("Memory changed %d, %d %s\n", d.pb.Memory, domcfg.Memory.Value, domcfg.Memory.Unit) + } + return true + } + + if domcfg.Memory.Unit == "GiB" { + var m int64 + m = int64(domcfg.Memory.Value * 1024 * 1024 * 1024) + if d.pb.Memory != m { + d.pb.Memory = m + me.changed = true + fmt.Printf("Memory changed %d, %d %s\n", d.pb.Memory, domcfg.Memory.Value, domcfg.Memory.Unit) + } + return true + } fmt.Println("Unknown Memory Unit", domcfg.Memory.Unit) return false } @@ -154,3 +181,36 @@ func updateNetwork(d *DropletT, domcfg *libvirtxml.Domain) bool { log.Info("mac addrs:", macs) return true } + +// returns false if something went wrong +func updateDisk(d *DropletT, domcfg *libvirtxml.Domain) bool { + if (d == nil) || (domcfg == nil) { + return false + } + for _, disk := range domcfg.Devices.Disks { + var t *libvirtxml.DomainDiskSourceFile + t = disk.Source.File + filename := t.File + if filename == "" { + fmt.Println("No disk source file found.") + continue + } + + var found bool = false + for _, disk := range d.pb.Disks { + if disk.Filename == filename { + log.Info("OKAY. FOUND filename", filename) + found = true + } + } + if !found { + var disk *pb.Disk + disk = new(pb.Disk) + disk.Filename = filename + d.pb.Disks = append(d.pb.Disks, disk) + log.Info("New filename", filename) + me.changed = true + } + } + return true +}