From 4332b3d31a6973a42432d556ae6df3ef721a36fe Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Tue, 22 Apr 2025 18:49:00 -0500 Subject: [PATCH] working on a droplet edit window --- doAdminGui.go | 17 ++++++---- windowCreate.go | 22 ------------- windowDropletEdit.go | 75 ++++++++++++++++++++++++++++++++++++++++++++ windowDroplets.go | 26 ++++++--------- 4 files changed, 96 insertions(+), 44 deletions(-) create mode 100644 windowDropletEdit.go diff --git a/doAdminGui.go b/doAdminGui.go index 544ee06..1909fe1 100644 --- a/doAdminGui.go +++ b/doAdminGui.go @@ -22,14 +22,14 @@ import ( ) // refresh the windows & tables the user has open -func (admin *adminT) refresh() { +func (admin *adminT) refresh() error { if argv.Verbose { log.Info("virtigo scan here") } if admin.url == nil { log.Info("admin url == nil") - return + return fmt.Errorf("admin url == nil") } msg := []byte(`{"message": "Hello"}`) @@ -50,7 +50,7 @@ func (admin *adminT) refresh() { admin.cluster.Droplets = new(virtpb.Droplets) if err := admin.cluster.Droplets.Unmarshal(data); err != nil { fmt.Println("droplets marshal failed", err) - return + return err } fmt.Println("Droplet len=", admin.cluster.Droplets.Len()) } @@ -63,7 +63,7 @@ func (admin *adminT) refresh() { admin.cluster.Hypervisors = new(virtpb.Hypervisors) if err := admin.cluster.Hypervisors.Unmarshal(data); err != nil { fmt.Println("hypervisors marshal failed", err) - return + return err } fmt.Println("Hypervisors len=", admin.cluster.Hypervisors.Len()) } @@ -76,10 +76,11 @@ func (admin *adminT) refresh() { admin.cluster.Events = new(virtpb.Events) if err := admin.cluster.Events.Unmarshal(data); err != nil { fmt.Println("events marshal failed", err) - return + return err } fmt.Println("Events len=", admin.cluster.Events.Len()) } + return nil } var client *http.Client @@ -356,6 +357,10 @@ func (admin *adminT) makeClusterGroup(c *virtpb.Cluster) { admin.refresh() }) + if err := admin.refresh(); err != nil { + return + } + grid.NewButton("save cluster.pb", func() { admin.cluster.ConfigSave() }) @@ -407,7 +412,7 @@ func (admin *adminT) postEvent(e *virtpb.Event) error { } } if result.Error != "" { - return fmt.Errorf(result.Error) + return fmt.Errorf("%s", result.Error) } log.Printf("Event worked: %s\n", result.DropletUuid) return nil diff --git a/windowCreate.go b/windowCreate.go index 900f7cd..448736f 100644 --- a/windowCreate.go +++ b/windowCreate.go @@ -31,25 +31,3 @@ func createWindow() *gadgets.GenericWindow { return createWindow } - -func editDropletWindow() *gadgets.GenericWindow { - editDropletWindow := gadgets.NewGenericWindow("Create Droplet", "settings") - editDropletWindow.Custom = func() { - log.Warn("create window close") - } - - grid := editDropletWindow.Group.RawGrid() - - gadgets.NewBasicEntry(grid, "memory") - grid.NextRow() - - grid.NewLabel("name") - grid.NewTextbox("something") - grid.NextRow() - - grid.NewButton("Start", func() { - log.Info("make a box") - }) - - return editDropletWindow -} diff --git a/windowDropletEdit.go b/windowDropletEdit.go new file mode 100644 index 0000000..1bb54c5 --- /dev/null +++ b/windowDropletEdit.go @@ -0,0 +1,75 @@ +// 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" + + "go.wit.com/gui" + "go.wit.com/lib/gadgets" + "go.wit.com/lib/protobuf/virtpb" + "go.wit.com/log" +) + +func editDropletWindow(d *virtpb.Droplet) *gadgets.GenericWindow { + win := gadgets.NewGenericWindow("Edit 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("something") + name.SetText(d.Hostname) + name.Custom = func() { + log.Info("changed droplet name") + } + grid.NextRow() + + mem := gadgets.NewBasicEntry(grid, "memory (GB)") + mem.SetText(fmt.Sprintf("%d", d.Memory/(1024*1024*1024))) + grid.NextRow() + mem.Custom = func() { + save.Enable() + log.Info("changed mem value. new val =", mem.String()) + } + + cpus := gadgets.NewBasicEntry(grid, "cpus") + cpus.SetText(fmt.Sprintf("%d", d.Cpus)) + grid.NextRow() + cpus.Custom = func() { + log.Info("changed cpus value") + } + + grid.NewLabel("hypervisor") + hyper := grid.NewDropdown() + hyper.AddText("farm03") + hyper.AddText("farm04") + hyper.AddText("farm05") + if d.Current != nil { + hyper.SetText(d.Current.Hypervisor) + } + grid.NextRow() + + grid.NewButton("Start", func() { + log.Info("make a box") + }) + + save = grid.NewButton("save", func() { + log.Info("save droplet changes here") + }) + save.Disable() + + grid.NewButton("dump", func() { + t := d.FormatTEXT() + log.Info(t) + }) + + return win +} diff --git a/windowDroplets.go b/windowDroplets.go index 807ff41..109f3cc 100644 --- a/windowDroplets.go +++ b/windowDroplets.go @@ -91,9 +91,7 @@ func makeWindownDropletsPB(pb *virtpb.Droplets) *stdDropletTableWin { return dwin } -*/ -/* func (dwin *stdDropletTableWin) doDropletsTable(currentDroplets *virtpb.Droplets) { dwin.Lock() defer dwin.Unlock() @@ -147,32 +145,28 @@ func (dw *stdDropletTableWin) doInactiveDroplets(pb *virtpb.Droplets) { t.NewUuid() t.SetParent(dw.box) - // pick the columns - // t.AddHostname() + dropedit := t.AddButtonFunc("Edit", func(d *virtpb.Droplet) string { + return "edit" + }) + dropedit.Custom = func(d *virtpb.Droplet) { + log.Info("edit droplet here", d.Hostname) + editDropletWindow(d) + } + dropon := t.AddButtonFunc("Start", func(d *virtpb.Droplet) string { return "poweron" }) dropon.Custom = func(d *virtpb.Droplet) { log.Info("start droplet here", d.Hostname) } - /* - t.AddHostname() - t.AddStringFunc("location", func(d *virtpb.Droplet) string { - return d.Current.Hypervisor - }) - */ + vp := t.AddButtonFunc("Verify Config", func(p *virtpb.Droplet) string { return p.Hostname }) vp.Custom = func(d *virtpb.Droplet) { log.Info("open config window", d.Hostname) } - /* - t.AddHostname() - t.AddStringFunc("location", func(d *virtpb.Droplet) string { - return d.Current.Hypervisor - }) - */ + t.AddMemory() t.AddCpus()