print out change events
Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
parent
9b94785cd2
commit
a5eee861ea
|
@ -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
10
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()
|
||||
|
|
Loading…
Reference in New Issue