summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addDroplet.go36
-rw-r--r--main.go10
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()