summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addDroplet.go5
-rw-r--r--main.go10
-rw-r--r--validate.go13
3 files changed, 28 insertions, 0 deletions
diff --git a/addDroplet.go b/addDroplet.go
index c395406..bcde8a5 100644
--- a/addDroplet.go
+++ b/addDroplet.go
@@ -308,6 +308,11 @@ func updateNetwork(d *DropletT, domcfg *libvirtxml.Domain) ([]*pb.Event, error)
}
}
if !found {
+ if checkUniqueMac(mac) {
+ } else {
+ log.Info("droplet", d.pb.Hostname, "duplicate mac address", mac)
+ return nil, errors.New("duplicate mac address")
+ }
var eth *pb.Network
eth = new(pb.Network)
eth.Mac = mac
diff --git a/main.go b/main.go
index b90ce59..f38dded 100644
--- a/main.go
+++ b/main.go
@@ -60,6 +60,10 @@ func main() {
// parsing the libvirt xml file failed
log.Info("error:", filename, err)
ok = false
+ log.Info("readXml() error", filename)
+ log.Info("readXml() error", err)
+ log.Info("libvirt XML will have to be fixed by hand")
+ os.Exit(-1)
continue
}
// see if the libvirt xml droplet is already here
@@ -68,6 +72,10 @@ func main() {
// some error. probably UUID mismatch or hostname duplication
// this has to be fixed by hand
ok = false
+ log.Info("findDomain() error", filename)
+ log.Info("findDomain() error", err)
+ log.Info("libvirt XML will have to be fixed by hand")
+ os.Exit(-1)
continue
}
if d == nil {
@@ -78,6 +86,8 @@ func main() {
ok = false
log.Info("addDomainDroplet() error", filename)
log.Info("addDomainDroplet() error", err)
+ log.Info("libvirt XML will have to be fixed by hand")
+ os.Exit(-1)
}
} else {
// this droplet is already here
diff --git a/validate.go b/validate.go
index 12370b8..2faaf38 100644
--- a/validate.go
+++ b/validate.go
@@ -21,6 +21,19 @@ import (
"go.wit.com/log"
)
+// will make sure the mac address is unique
+func checkUniqueMac(mac string) bool {
+ for _, d := range me.cluster.Droplets {
+ for _, n := range d.Networks {
+ if n.Mac == mac {
+ log.Info("duplicate MAC", n.Mac, "in droplet", d.Hostname)
+ return false
+ }
+ }
+ }
+ return true
+}
+
func checkDroplets(dump bool) bool {
// uuid map to check for duplicates
var umap map[string]string