From a5eee861ea52fb0a33827fed3770f383aaeca03a Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Fri, 25 Oct 2024 17:35:29 -0500 Subject: [PATCH] print out change events Signed-off-by: Jeff Carr --- addDroplet.go | 36 +++++++++++++++++++++--------------- main.go | 10 +++++++++- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/addDroplet.go b/addDroplet.go index 51942d0..d572ea8 100644 --- a/addDroplet.go +++ b/addDroplet.go @@ -14,14 +14,15 @@ import ( ) // import a libvirt xml file -func addDomainDroplet(domcfg *libvirtxml.Domain) (*DropletT, error) { +func addDomainDroplet(domcfg *libvirtxml.Domain) (*DropletT, []*pb.Event, error) { + var alle []*pb.Event if domcfg == nil { - return nil, errors.New("domcfg == nil") + return nil, alle, errors.New("domcfg == nil") } d, err := findDomain(domcfg) if err != nil { - return nil, err + return nil, alle, err } if d == nil { // this is a new unknown droplet (not in the config file) @@ -41,14 +42,14 @@ func addDomainDroplet(domcfg *libvirtxml.Domain) (*DropletT, error) { me.changed = true } - err = updateDroplet(d, domcfg) + alle, err = updateDroplet(d, domcfg) if err != nil { log.Info("updateDroplet() failed for", d.pb.Hostname) - return d, errors.New("update failed for " + domcfg.Name) + return d, alle, errors.New("update failed for " + domcfg.Name) } log.Info("added new droplet", domcfg.Name, domcfg.UUID) dumpNonStandardXML(domcfg) - return d, nil + return d, alle, nil } func findDomain(domcfg *libvirtxml.Domain) (*DropletT, error) { @@ -91,20 +92,20 @@ func findDomain(domcfg *libvirtxml.Domain) (*DropletT, error) { return found, nil } -func updateDroplet(d *DropletT, domcfg *libvirtxml.Domain) error { +func updateDroplet(d *DropletT, domcfg *libvirtxml.Domain) ([]*pb.Event, error) { var alle []*pb.Event if d == nil { - return errors.New("d == nil") + return alle, errors.New("d == nil") } if domcfg == nil { - return errors.New("domcfg == nil") + return alle, errors.New("domcfg == nil") } e, err := updateMemory(d, domcfg) if err != nil { log.Info("updateMemory() failed") - return err + return alle, err } if e != nil { alle = append(alle, e) @@ -159,25 +160,30 @@ func updateDroplet(d *DropletT, domcfg *libvirtxml.Domain) error { // check type if domcfg.Type != "kvm" { fmt.Printf("not kvm. Virt type == %s\n", domcfg.Type) - return errors.New("not kvm") + return alle, errors.New("not kvm") } nete, err := updateNetwork(d, domcfg) if err != nil { log.Info("updateNetwork() failed", err) - return errors.New("updateNetwork() failed") + return alle, errors.New("updateNetwork() failed") } + for _, e := range nete { alle = append(alle, e) } + log.Info("TODO: fix updateDisk() change events") + log.Info("TODO: fix updateDisk() change events") + log.Info("TODO: fix updateDisk() change events") if !updateDisk(d, domcfg) { - return errors.New("updateDisk() failed") + return alle, errors.New("updateDisk() failed") } + if alle == nil { log.Info("libvirt xml import worked. nothing changed", domcfg.Name) - return nil + return alle, nil } log.Info("libvirt xml import worked. droplet changed", domcfg.Name) // log.Info("all change events", alle) @@ -187,7 +193,7 @@ func updateDroplet(d *DropletT, domcfg *libvirtxml.Domain) error { for _, e := range alle { me.events.Events = append(me.events.Events, e) } - return nil + return alle, nil } // returns false if something went wrong diff --git a/main.go b/main.go index 6f7bbf7..a93af29 100644 --- a/main.go +++ b/main.go @@ -56,6 +56,7 @@ func main() { // sanity check the droplets checkDroplets(false) + var newEvents []*pb.Event for _, filename := range argv.Xml { domcfg, err := readXml(filename) if err != nil { @@ -68,15 +69,22 @@ func main() { } // this is a new droplet. add it to the cluster log.Info("Add XML Droplet here", domcfg.Name) - _, err = addDomainDroplet(domcfg) + d, newe, err := addDomainDroplet(domcfg) if err != nil { + log.Info("addDomainDroplet() error d =", d) log.Info("addDomainDroplet() error", filename) log.Info("addDomainDroplet() error", err) log.Info("libvirt XML will have to be fixed by hand") os.Exit(-1) } + for _, e := range newe { + newEvents = append(newEvents, e) + } } if len(argv.Xml) != 0 { + for i, e := range newEvents { + log.Info(i, "Event:", e.Droplet, e.FieldName, "orig:", e.OrigVal, "new:", e.NewVal) + } if me.changed { if argv.Save { writeConfigFile()