summaryrefslogtreecommitdiff
path: root/http.go
diff options
context:
space:
mode:
Diffstat (limited to 'http.go')
-rw-r--r--http.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/http.go b/http.go
index 9a7a18d..6241d7e 100644
--- a/http.go
+++ b/http.go
@@ -2,10 +2,12 @@ package main
import (
"fmt"
+ "io/ioutil"
"net/http"
"os"
"strings"
+ "go.wit.com/lib/protobuf/virtbuf"
"go.wit.com/lib/virtigolib"
"go.wit.com/log"
)
@@ -22,6 +24,11 @@ func okHandler(w http.ResponseWriter, r *http.Request) {
log.HttpMode(w)
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" {
ok, s := uptimeCheck()
log.Info(s)
@@ -33,6 +40,34 @@ func okHandler(w http.ResponseWriter, r *http.Request) {
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" {
hostname := r.URL.Query().Get("hostname")
if hostname == "" {