print out change events

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2024-10-25 17:35:29 -05:00
parent 9b94785cd2
commit a5eee861ea
2 changed files with 30 additions and 16 deletions

View File

@ -14,14 +14,15 @@ import (
) )
// import a libvirt xml file // 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 { if domcfg == nil {
return nil, errors.New("domcfg == nil") return nil, alle, errors.New("domcfg == nil")
} }
d, err := findDomain(domcfg) d, err := findDomain(domcfg)
if err != nil { if err != nil {
return nil, err return nil, alle, err
} }
if d == nil { if d == nil {
// this is a new unknown droplet (not in the config file) // 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 me.changed = true
} }
err = updateDroplet(d, domcfg) alle, err = updateDroplet(d, domcfg)
if err != nil { if err != nil {
log.Info("updateDroplet() failed for", d.pb.Hostname) 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) log.Info("added new droplet", domcfg.Name, domcfg.UUID)
dumpNonStandardXML(domcfg) dumpNonStandardXML(domcfg)
return d, nil return d, alle, nil
} }
func findDomain(domcfg *libvirtxml.Domain) (*DropletT, error) { func findDomain(domcfg *libvirtxml.Domain) (*DropletT, error) {
@ -91,20 +92,20 @@ func findDomain(domcfg *libvirtxml.Domain) (*DropletT, error) {
return found, nil 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 var alle []*pb.Event
if d == nil { if d == nil {
return errors.New("d == nil") return alle, errors.New("d == nil")
} }
if domcfg == nil { if domcfg == nil {
return errors.New("domcfg == nil") return alle, errors.New("domcfg == nil")
} }
e, err := updateMemory(d, domcfg) e, err := updateMemory(d, domcfg)
if err != nil { if err != nil {
log.Info("updateMemory() failed") log.Info("updateMemory() failed")
return err return alle, err
} }
if e != nil { if e != nil {
alle = append(alle, e) alle = append(alle, e)
@ -159,25 +160,30 @@ func updateDroplet(d *DropletT, domcfg *libvirtxml.Domain) error {
// check type // check type
if domcfg.Type != "kvm" { if domcfg.Type != "kvm" {
fmt.Printf("not kvm. Virt type == %s\n", domcfg.Type) 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) nete, err := updateNetwork(d, domcfg)
if err != nil { if err != nil {
log.Info("updateNetwork() failed", err) log.Info("updateNetwork() failed", err)
return errors.New("updateNetwork() failed") return alle, errors.New("updateNetwork() failed")
} }
for _, e := range nete { for _, e := range nete {
alle = append(alle, e) 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) { if !updateDisk(d, domcfg) {
return errors.New("updateDisk() failed") return alle, errors.New("updateDisk() failed")
} }
if alle == nil { if alle == nil {
log.Info("libvirt xml import worked. nothing changed", domcfg.Name) 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("libvirt xml import worked. droplet changed", domcfg.Name)
// log.Info("all change events", alle) // log.Info("all change events", alle)
@ -187,7 +193,7 @@ func updateDroplet(d *DropletT, domcfg *libvirtxml.Domain) error {
for _, e := range alle { for _, e := range alle {
me.events.Events = append(me.events.Events, e) me.events.Events = append(me.events.Events, e)
} }
return nil return alle, nil
} }
// returns false if something went wrong // returns false if something went wrong

10
main.go
View File

@ -56,6 +56,7 @@ func main() {
// sanity check the droplets // sanity check the droplets
checkDroplets(false) checkDroplets(false)
var newEvents []*pb.Event
for _, filename := range argv.Xml { for _, filename := range argv.Xml {
domcfg, err := readXml(filename) domcfg, err := readXml(filename)
if err != nil { if err != nil {
@ -68,15 +69,22 @@ func main() {
} }
// this is a new droplet. add it to the cluster // this is a new droplet. add it to the cluster
log.Info("Add XML Droplet here", domcfg.Name) log.Info("Add XML Droplet here", domcfg.Name)
_, err = addDomainDroplet(domcfg) d, newe, err := addDomainDroplet(domcfg)
if err != nil { if err != nil {
log.Info("addDomainDroplet() error d =", d)
log.Info("addDomainDroplet() error", filename) log.Info("addDomainDroplet() error", filename)
log.Info("addDomainDroplet() error", err) log.Info("addDomainDroplet() error", err)
log.Info("libvirt XML will have to be fixed by hand") log.Info("libvirt XML will have to be fixed by hand")
os.Exit(-1) os.Exit(-1)
} }
for _, e := range newe {
newEvents = append(newEvents, e)
}
} }
if len(argv.Xml) != 0 { 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 me.changed {
if argv.Save { if argv.Save {
writeConfigFile() writeConfigFile()