diff options
| author | Jeff Carr <[email protected]> | 2024-11-16 05:21:44 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-11-16 05:21:44 -0600 |
| commit | 70cc9944adfea53e1c5a841d573cac79a5b94ce9 (patch) | |
| tree | 8b980ddd002628c5c7290a94bfdaa0b5a80974e8 /http.go | |
| parent | 5ea2e5999bf19c5b0dcd594ce5c646ae2227fcec (diff) | |
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'http.go')
| -rw-r--r-- | http.go | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -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 == "" { |
