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
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

10
main.go
View File

@ -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()