create and start work again
Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
parent
5ea2e5999b
commit
70cc9944ad
35
http.go
35
http.go
|
@ -2,10 +2,12 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"go.wit.com/lib/protobuf/virtbuf"
|
||||||
"go.wit.com/lib/virtigolib"
|
"go.wit.com/lib/virtigolib"
|
||||||
"go.wit.com/log"
|
"go.wit.com/log"
|
||||||
)
|
)
|
||||||
|
@ -22,6 +24,11 @@ func okHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
log.HttpMode(w)
|
log.HttpMode(w)
|
||||||
defer log.HttpMode(nil)
|
defer log.HttpMode(nil)
|
||||||
|
|
||||||
|
msg, err := ioutil.ReadAll(r.Body) // Read the body as []byte
|
||||||
|
if err != nil {
|
||||||
|
log.Info("ReadAll() error =", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
if route == "/uptime" {
|
if route == "/uptime" {
|
||||||
ok, s := uptimeCheck()
|
ok, s := uptimeCheck()
|
||||||
log.Info(s)
|
log.Info(s)
|
||||||
|
@ -33,6 +40,34 @@ func okHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if route == "/create" {
|
||||||
|
var d *virtbuf.Droplet
|
||||||
|
d = new(virtbuf.Droplet)
|
||||||
|
if err := d.Unmarshal(msg); err != nil {
|
||||||
|
log.Info("proto.Unmarshal() failed on wire message len", len(msg))
|
||||||
|
log.Info("error =", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Info("proto.Unmarshal() worked on msg len", len(msg), "hostname =", d.Hostname)
|
||||||
|
found := me.cluster.FindDropletByName(d.Hostname)
|
||||||
|
if found != nil {
|
||||||
|
log.Info("already have hostname ", d.Hostname)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Info("new hostname ", d.Hostname)
|
||||||
|
if !me.cluster.AddDroplet(d) {
|
||||||
|
log.Info("new hostname added ok ", d.Hostname)
|
||||||
|
} else {
|
||||||
|
log.Info("hostname add failed for ", d.Hostname)
|
||||||
|
}
|
||||||
|
if err := me.cluster.ConfigSave(); err != nil {
|
||||||
|
log.Info("configsave error", err)
|
||||||
|
os.Exit(-1)
|
||||||
|
}
|
||||||
|
log.Info("config file saved")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if route == "/start" {
|
if route == "/start" {
|
||||||
hostname := r.URL.Query().Get("hostname")
|
hostname := r.URL.Query().Get("hostname")
|
||||||
if hostname == "" {
|
if hostname == "" {
|
||||||
|
|
2
start.go
2
start.go
|
@ -11,6 +11,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
pb "go.wit.com/lib/protobuf/virtbuf"
|
pb "go.wit.com/lib/protobuf/virtbuf"
|
||||||
|
"go.wit.com/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func isClusterStable() (string, error) {
|
func isClusterStable() (string, error) {
|
||||||
|
@ -45,6 +46,7 @@ func Start(name string) (string, error) {
|
||||||
|
|
||||||
// validate the droplet
|
// validate the droplet
|
||||||
if err := ValidateDroplet(d); err != nil {
|
if err := ValidateDroplet(d); err != nil {
|
||||||
|
log.Info("ValidateDroplet() failed", err)
|
||||||
result = "ValidateDroplet() failed droplet " + d.Hostname
|
result = "ValidateDroplet() failed droplet " + d.Hostname
|
||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
|
|
12
validate.go
12
validate.go
|
@ -198,8 +198,10 @@ func getNewMac() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// consistancy check. run on a regular basis
|
||||||
|
//
|
||||||
// runs on startup. dies if there are duplicates
|
// runs on startup. dies if there are duplicates
|
||||||
// the config file must then be edited by hand
|
// the config file must then be edited by hand for now
|
||||||
func ValidateDroplets() (map[string]string, map[string]string, error) {
|
func ValidateDroplets() (map[string]string, map[string]string, error) {
|
||||||
// uuid map to check for duplicates
|
// uuid map to check for duplicates
|
||||||
var umap map[string]string
|
var umap map[string]string
|
||||||
|
@ -301,6 +303,14 @@ func ValidateDroplet(check *pb.Droplet) error {
|
||||||
|
|
||||||
// check for duplicate mac addresses
|
// check for duplicate mac addresses
|
||||||
for _, checkn := range check.Networks {
|
for _, checkn := range check.Networks {
|
||||||
|
log.Info("found mac = ", checkn.Mac, check.Hostname)
|
||||||
|
if checkn.Mac == "" {
|
||||||
|
checkn.Mac = getNewMac()
|
||||||
|
if err := me.cluster.ConfigSave(); err != nil {
|
||||||
|
log.Info("configsave error", err)
|
||||||
|
os.Exit(-1)
|
||||||
|
}
|
||||||
|
}
|
||||||
loop := me.cluster.DropletsAll() // get the list of droplets
|
loop := me.cluster.DropletsAll() // get the list of droplets
|
||||||
for loop.Scan() {
|
for loop.Scan() {
|
||||||
d := loop.Droplet()
|
d := loop.Droplet()
|
||||||
|
|
Loading…
Reference in New Issue