diff options
Diffstat (limited to 'doAdminGui.go')
| -rw-r--r-- | doAdminGui.go | 113 |
1 files changed, 77 insertions, 36 deletions
diff --git a/doAdminGui.go b/doAdminGui.go index ef20521..56cec06 100644 --- a/doAdminGui.go +++ b/doAdminGui.go @@ -21,16 +21,52 @@ import ( ) // refresh the windows & tables the user has open -func refresh() { - time.Sleep(90 * time.Second) +func (admin *adminT) refresh() { if argv.Verbose { log.Info("virtigo scan here") } + + url := argv.Server + msg := []byte(`{"message": "Hello"}`) + + // display the uptime + if data, err := postData(url+"/uptime", msg); err != nil { + log.Info("Error:", err) + } else { + log.Info("Response:", string(data)) + admin.uptime.SetText(string(data)) + } + + // update the droplet list + if data, err := postData(url+"/DropletsPB", msg); err != nil { + log.Info("Error:", err) + } else { + fmt.Println("Response len:", len(data)) + admin.droplets = new(virtpb.Droplets) + if err := admin.droplets.Unmarshal(data); err != nil { + fmt.Println("marshal failed", err) + return + } + fmt.Println("Droplet len=", admin.droplets.Len()) + } + + // update the hypervisor list + if data, err := postData(url+"/HypervisorPB", msg); err != nil { + log.Info("Error:", err) + } else { + fmt.Println("Response len:", len(data)) + admin.hypervisors = new(virtpb.Hypervisors) + if err := admin.hypervisors.Unmarshal(data); err != nil { + fmt.Println("marshal failed", err) + return + } + fmt.Println("Hypervisors len=", admin.hypervisors.Len()) + } } var client *http.Client -func doAdminGui() { +func (admin *adminT) doAdminGui() { me.myGui = gui.New() me.myGui.InitEmbed(resources) me.myGui.Default() @@ -49,39 +85,26 @@ func doAdminGui() { os.Exit(0) } - grid := win.Group.RawGrid() + admin.uptime = win.Group.NewLabel("uptime") - // url := "http://example.com/endpoint" - url := argv.Server - data := []byte(`{"message": "Hello"}`) + grid := win.Group.RawGrid() grid.NewButton("show hypervisors", func() { - response, err := postData(url, data) - if err != nil { - fmt.Println("Error:", err) - } else { - fmt.Println("Response:", string(response)) + if admin.hypervisors == nil { + log.Info("hypervisors not initialized") + return } + log.Info("Hypervisors len=", admin.hypervisors.Len()) }) - grid.NewButton("show droplets", func() { - durl := url + "/DropletsPB" - data, err := postData(durl, data) - if err != nil { - fmt.Println("Error:", err) - return - } - fmt.Println("Response len:", len(data)) - me.droplets = new(virtpb.Droplets) - if err := me.droplets.Unmarshal(data); err != nil { - fmt.Println("marshal failed", err) + grid.NewButton("show active droplets", func() { + if admin.droplets == nil { + log.Info("droplets not initialized") return } - fmt.Println("Droplet len=", me.droplets.Len()) - var found *virtpb.Droplets found = virtpb.NewDroplets() - all := me.droplets.All() + all := admin.droplets.All() for all.Scan() { vm := all.Next() if vm.Current.State != virtpb.DropletState_ON { @@ -89,29 +112,47 @@ func doAdminGui() { } found.Append(vm) } - dropWin, _ := makeDropletsWindow(found) - dropWin.Win.Custom = func() { + dropWin := newDropletsWindow() + dropWin.doActiveDroplets(found) + dropWin.win.Custom = func() { log.Info("hiding droplet table window") } }) - grid.NewButton("uptime", func() { - durl := url + "/uptime" - response, err := postData(durl, data) - if err != nil { - fmt.Println("Error:", err) - } else { - fmt.Println("Response:", string(response)) + grid.NewButton("inactive droplets", func() { + if admin.droplets == nil { + log.Info("droplets not initialized") + return + } + var found *virtpb.Droplets + found = virtpb.NewDroplets() + all := admin.droplets.All() + for all.Scan() { + vm := all.Next() + if vm.Current.State == virtpb.DropletState_ON { + continue + } + found.Append(vm) + } + dropWin := newDropletsWindow() + dropWin.doInactiveDroplets(found) + dropWin.win.Custom = func() { + log.Info("hiding droplet table window") } }) + grid.NextRow() + grid.NewButton("refresh", func() { + admin.refresh() + }) grid.NewButton("clean exit", func() { okExit("admin close") }) // sit here forever refreshing the GUI for { - refresh() + admin.refresh() + time.Sleep(90 * time.Second) } } |
