From 9518e70d7ad1589add6f766a92b4ed20e4010c3c Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Fri, 25 Oct 2024 03:34:39 -0500 Subject: [PATCH] make a change memory size event Signed-off-by: Jeff Carr --- addDroplet.go | 28 ++++++++-------------------- change.go | 37 +++++++++++++++++++++++++++++++------ 2 files changed, 39 insertions(+), 26 deletions(-) diff --git a/addDroplet.go b/addDroplet.go index 1bff71e..517279c 100644 --- a/addDroplet.go +++ b/addDroplet.go @@ -178,34 +178,22 @@ func updateMemory(d *DropletT, domcfg *libvirtxml.Domain) bool { // check memory if domcfg.Memory.Unit == "KiB" { m = int64(domcfg.Memory.Value * 1024) - if d.pb.Memory != m { - d.pb.Memory = m - me.changed = true - fmt.Printf("Memory changed %s to %d %s\n", pb.HumanFormatBytes(d.pb.Memory), domcfg.Memory.Value, domcfg.Memory.Unit) - } - d.SetMemory(m) - return true } if domcfg.Memory.Unit == "MiB" { m = int64(domcfg.Memory.Value * 1024 * 1024) - if d.pb.Memory != m { - d.pb.Memory = m - me.changed = true - fmt.Printf("Memory changed %s to %d %s\n", pb.HumanFormatBytes(d.pb.Memory), domcfg.Memory.Value, domcfg.Memory.Unit) - } - d.SetMemory(m) - return true } if domcfg.Memory.Unit == "GiB" { m = int64(domcfg.Memory.Value * 1024 * 1024 * 1024) - if d.pb.Memory != m { - d.pb.Memory = m - me.changed = true - fmt.Printf("Memory changed %s, %d %s\n", pb.HumanFormatBytes(d.pb.Memory), domcfg.Memory.Value, domcfg.Memory.Unit) - } - d.SetMemory(m) + } + if e := d.SetMemory(m); e != nil { + fmt.Printf("Memory changed %s to %d %s\n", pb.HumanFormatBytes(d.pb.Memory), domcfg.Memory.Value, domcfg.Memory.Unit) + d.pb.Memory = m + me.changed = true + return true + } else { + // nothing changed return true } fmt.Println("Unknown Memory Unit", domcfg.Memory.Unit) diff --git a/change.go b/change.go index 95f38d7..b6bfb8d 100644 --- a/change.go +++ b/change.go @@ -4,6 +4,7 @@ import ( // "reflect" "errors" + "fmt" "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/wrapperspb" @@ -12,7 +13,7 @@ import ( "go.wit.com/log" ) -func convert(x any) *anypb.Any { +func convertToAnypb(x any) *anypb.Any { switch v := x.(type) { case int64: var a *anypb.Any @@ -37,13 +38,37 @@ func convert(x any) *anypb.Any { return nil } +func convertToString(x any) string { + switch v := x.(type) { + case int64: + return fmt.Sprintf("%d", x.(int64)) + case string: + return x.(string) + case int: + return fmt.Sprintf("%d", x.(int64)) + case bool: + if x.(bool) { + return "true" + } + return "false" + default: + log.Error(errors.New("Set() unknown type"), "v =", v, "x =", x) + return "" + } + return "" +} + // Wrapping the int into a protobuf message -func NewEvent(origval any, newval any) *pb.Event { +func NewChangeEvent(d *pb.Droplet, origval any, newval any) *pb.Event { var e *pb.Event e = new(pb.Event) - e.OrigVal = convert(origval) - e.NewVal = convert(newval) + e.Droplet = d.Hostname + e.OrigVal = convertToString(origval) + e.NewVal = convertToString(newval) + + // this also works, but it's a bit overkill + // e.NewAny = convertToAnypb(newval) me.events.Events = append(me.events.Events, e) return e @@ -55,12 +80,12 @@ func (d *DropletT) SetMemory(b int64) *pb.Event { newm := pb.HumanFormatBytes(b) if d.pb.Memory == b { log.Info("droplet", d.pb.Hostname, "memory unchanged", oldm, "to", newm) - // return nil + return nil } log.Info("droplet", d.pb.Hostname, "memory change from", oldm, "to", newm) var e *pb.Event - e = NewEvent(d.pb.Memory, b) + e = NewChangeEvent(d.pb, d.pb.Memory, b) e.FieldName = "Droplet.Memory" stuff := me.events.FormatJSON()