summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doAdminGui.go9
-rw-r--r--windowDropletCreate.go124
-rw-r--r--windowDroplets.go15
3 files changed, 145 insertions, 3 deletions
diff --git a/doAdminGui.go b/doAdminGui.go
index 1909fe1..3e4fddb 100644
--- a/doAdminGui.go
+++ b/doAdminGui.go
@@ -400,8 +400,10 @@ func (admin *adminT) postEvent(e *virtpb.Event) error {
return err
}
+ url := admin.url.String() + "/event"
+
// update the droplet list
- if data, err := postData(admin.url.String()+"/event", msg); err != nil {
+ if data, err := postData(url, msg); err != nil {
log.Info("postEvent() /event Error:", err)
return err
} else {
@@ -409,11 +411,14 @@ func (admin *adminT) postEvent(e *virtpb.Event) error {
log.Println("postEvent() result marshal failed", err, "len(dat) =", len(data))
log.Println("postEvent() data =", string(data))
return err
+ } else {
+ log.Println("postEvent() result marshal worked on len(dat) =", len(data))
+ log.Println("postEvent() result =", result.FormatTEXT())
}
}
if result.Error != "" {
return fmt.Errorf("%s", result.Error)
}
- log.Printf("Event worked: %s\n", result.DropletUuid)
+ log.Printf("Event worked to %s uuid=%s\n", url, result.DropletUuid)
return nil
}
diff --git a/windowDropletCreate.go b/windowDropletCreate.go
new file mode 100644
index 0000000..e61eac7
--- /dev/null
+++ b/windowDropletCreate.go
@@ -0,0 +1,124 @@
+// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
+// Use of this source code is governed by the GPL 3.0
+
+package main
+
+// An app to submit patches for the 30 GO GUI repos
+
+import (
+ "fmt"
+ "strconv"
+
+ "go.wit.com/gui"
+ "go.wit.com/lib/gadgets"
+ "go.wit.com/lib/protobuf/virtpb"
+ "go.wit.com/log"
+)
+
+func (admin *adminT) createDropletWindow() *gadgets.GenericWindow {
+ d := new(virtpb.Droplet)
+
+ win := gadgets.NewGenericWindow("Create Droplet "+d.Hostname, "settings")
+ win.Custom = func() {
+ log.Warn("edit window close")
+ }
+
+ grid := win.Group.RawGrid()
+
+ var save *gui.Node
+
+ grid.NewLabel("name")
+ name := grid.NewTextbox("new2.wit.com")
+ d.Hostname = "new2.wit.com"
+ name.SetText(d.Hostname)
+ name.Custom = func() {
+ if d.Hostname == name.String() {
+ return
+ }
+ d.Hostname = name.String()
+ log.Info("changed droplet name to", d.Hostname)
+ save.Enable()
+ }
+ grid.NextRow()
+
+ mem := gadgets.NewBasicEntry(grid, "memory (GB)")
+ mem.SetText("16")
+ d.Memory = int64(16 * 1024 * 2024 * 1024)
+ grid.NextRow()
+ mem.Custom = func() {
+ newmem, err := strconv.Atoi(mem.String())
+ if err != nil {
+ log.Info("mem value error", mem.String(), err)
+ mem.SetText(fmt.Sprintf("%d", d.Memory/(1024*1024*1024)))
+ return
+ }
+ if newmem < 1 {
+ log.Info("mem can not be < 1")
+ mem.SetText(fmt.Sprintf("%d", d.Memory/(1024*1024*1024)))
+ return
+ }
+ d.Memory = int64(newmem * (1024 * 2024 * 1024))
+ log.Info("changed mem value. new val =", d.Memory)
+
+ save.Enable()
+ }
+ grid.NextRow() // each entry is on it's own row
+
+ cpus := gadgets.NewBasicEntry(grid, "cpus")
+ cpus.SetText("4")
+ d.Cpus = int64(4)
+ cpus.Custom = func() {
+ newcpu, err := strconv.Atoi(cpus.String())
+ if err != nil {
+ log.Info("cpus value error", cpus.String(), err)
+ cpus.SetText(fmt.Sprintf("%d", d.Cpus))
+ return
+ }
+ if newcpu < 1 {
+ log.Info("cpus can not be < 1")
+ cpus.SetText(fmt.Sprintf("%d", d.Cpus))
+ return
+ }
+ d.Cpus = int64(newcpu)
+ log.Info("changed cpus value. new val =", d.Cpus)
+
+ save.Enable()
+ }
+ grid.NextRow() // each entry is on it's own row
+
+ grid.NewButton("dump pb.FormatTEXT()", func() {
+ t := d.FormatTEXT()
+ log.Info(t)
+ })
+
+ save = grid.NewButton("postEvent() EDIT", func() {
+ log.Info("save droplet changes here")
+
+ e := new(virtpb.Event)
+ e.Etype = virtpb.EventType_EDIT
+ e.Droplet = d
+
+ if err := admin.postEvent(e); err != nil {
+ log.Info("event edit err", err)
+ } else {
+ log.Info("admin.postEvent() worked (?)")
+ }
+ })
+
+ save = grid.NewButton("postEvent() ADD", func() {
+ log.Info("save droplet changes here")
+
+ e := new(virtpb.Event)
+ e.Etype = virtpb.EventType_ADD
+ e.Droplet = d
+
+ if err := admin.postEvent(e); err != nil {
+ log.Info("event edit err", err)
+ } else {
+ log.Info("admin.postEvent() worked (?)")
+ }
+ })
+
+ // save.Disable()
+ return win
+}
diff --git a/windowDroplets.go b/windowDroplets.go
index 6b84373..14052fc 100644
--- a/windowDroplets.go
+++ b/windowDroplets.go
@@ -73,6 +73,11 @@ func newDropletsWindow(admin *adminT) *stdDropletTableWin {
dwin.doInactiveDroplets(found)
})
+ grid.NewButton("Create", func() {
+ log.Info("create droplet here")
+ admin.createDropletWindow()
+ })
+
// make a box at the bottom of the window for the protobuf table
dwin.box = dwin.win.Bottom.Box().SetProgName("TBOX")
return dwin
@@ -173,7 +178,15 @@ func (dw *stdDropletTableWin) doActiveDroplets(pb *virtpb.Droplets) {
log.Info("data", string(data), "err =", err)
}
- t.AddHostname()
+ // t.AddHostname()
+ vp := t.AddButtonFunc("Hostname", func(p *virtpb.Droplet) string {
+ return p.Hostname
+ })
+ vp.Custom = func(d *virtpb.Droplet) {
+ log.Info("edit droplet here", d.Hostname)
+ dw.admin.editDropletWindow(d)
+ }
+
t.AddStringFunc("location", func(d *virtpb.Droplet) string {
return d.Current.Hypervisor
})