summaryrefslogtreecommitdiff
path: root/doAdminGui.go
diff options
context:
space:
mode:
Diffstat (limited to 'doAdminGui.go')
-rw-r--r--doAdminGui.go113
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)
}
}