diff options
| author | Jeff Carr <[email protected]> | 2025-06-03 23:48:40 -0500 | 
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-06-03 23:48:40 -0500 | 
| commit | d261a220dff941701ed4e55faec8fe096d0d8f5d (patch) | |
| tree | a3f5f9d45260b18226fabf4692afe127a796c90f | |
| parent | 7fd5089917de2b095b7fed973ffc6f44085711fe (diff) | |
send a create droplet event & unmarshal response
| -rw-r--r-- | doAdminGui.go | 9 | ||||
| -rw-r--r-- | windowDropletCreate.go | 124 | ||||
| -rw-r--r-- | windowDroplets.go | 15 | 
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  	})  | 
