diff options
Diffstat (limited to 'validate.go')
| -rw-r--r-- | validate.go | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/validate.go b/validate.go index a95ce29..a4caa52 100644 --- a/validate.go +++ b/validate.go @@ -133,6 +133,35 @@ func ValidateDiskFilenames(cluster *pb.Cluster) []*pb.Event { return alle } +func getNewMac() (string, error) { + // mac address map to check for duplicates + var macs map[string]string + macs = make(map[string]string) + + for _, d := range me.cluster.Droplets { + for _, n := range d.Networks { + // log.Println("network:", n.Mac, d.Uuid, d.Hostname) + if _, ok := macs[n.Mac]; ok { + // UUID already exists + log.Info("duplicate MAC", n.Mac, macs[n.Mac]) + log.Info("duplicate MAC", n.Mac, d.Hostname) + return "", errors.New("duplicate MAC: " + d.Hostname + " and " + macs[n.Mac]) + } + macs[n.Mac] = d.Hostname + } + } + + var mac string = "22:22:22:22:22:09" + for { + if _, ok := macs[mac]; ok { + log.Info("MAC already defined", mac, macs[mac]) + continue + } + return mac, nil + } + return mac, nil +} + // runs on startup. dies if there are duplicates // the config file must then be edited by hand func ValidateDroplets(cluster *pb.Cluster) (map[string]string, map[string]string, error) { |
