104 lines
2.0 KiB
Go
104 lines
2.0 KiB
Go
// 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"
|
|
"os"
|
|
"time"
|
|
|
|
"go.wit.com/gui"
|
|
"go.wit.com/lib/gadgets"
|
|
"go.wit.com/lib/protobuf/zoopb"
|
|
"go.wit.com/log"
|
|
)
|
|
|
|
func debug() {
|
|
for {
|
|
time.Sleep(90 * time.Second)
|
|
log.Info("TODO: zookeeper scan here. repo count =")
|
|
}
|
|
}
|
|
|
|
func doGui() {
|
|
me.myGui = gui.New()
|
|
me.myGui.InitEmbed(resources)
|
|
me.myGui.Default()
|
|
|
|
mainWindow := gadgets.RawBasicWindow("Zookeeper: (inventory your cluster)")
|
|
mainWindow.Make()
|
|
mainWindow.Show()
|
|
mainWindow.Custom = func() {
|
|
log.Warn("Main window close")
|
|
os.Exit(0)
|
|
}
|
|
|
|
drawWindow(mainWindow)
|
|
|
|
// sits here forever
|
|
debug()
|
|
|
|
}
|
|
|
|
func drawWindow(win *gadgets.BasicWindow) {
|
|
box := win.Box()
|
|
|
|
vbox := box.NewVerticalBox("BOX2")
|
|
|
|
group1 := vbox.NewGroup("Zookeeper Settings")
|
|
grid := group1.NewGrid("buildOptions", 0, 0)
|
|
|
|
var tbwin *tableWindow
|
|
grid.NewButton("show zoo", func() {
|
|
win.Disable()
|
|
defer win.Enable()
|
|
|
|
if tbwin == nil {
|
|
log.Info("show zoo here")
|
|
tbwin = makeTableWindow()
|
|
tbwin.showTable(me.machines)
|
|
}
|
|
|
|
if tbwin.Hidden() {
|
|
tbwin.Show()
|
|
} else {
|
|
tbwin.Hide()
|
|
}
|
|
return
|
|
|
|
})
|
|
|
|
grid.NewButton("update table", func() {
|
|
newwin := makeTableWindow()
|
|
newwin.showTable(me.machines)
|
|
newwin.Show()
|
|
})
|
|
}
|
|
|
|
func (tw *tableWindow) showTable(allm *zoopb.Machines) {
|
|
all := allm.All()
|
|
for all.Scan() {
|
|
m := all.Next()
|
|
tw.grid.NewLabel(m.Hostname)
|
|
tw.grid.NewLabel(fmt.Sprintf("%d", m.Cpus))
|
|
tw.grid.NewLabel(fmt.Sprintf("%d", m.Memory))
|
|
tw.grid.NewLabel(m.Distro)
|
|
tw.grid.NewLabel(findVersion(m, "zood"))
|
|
tw.grid.NewLabel(findVersion(m, "bash"))
|
|
dur := m.Laststamp.AsTime()
|
|
tw.grid.NewLabel(fmt.Sprintf("%v", time.Since(dur)))
|
|
tw.grid.NextRow()
|
|
}
|
|
}
|
|
|
|
func findVersion(m *zoopb.Machine, pkgname string) string {
|
|
zood := m.Packages.FindByName(pkgname)
|
|
if zood == nil {
|
|
return "n/a"
|
|
}
|
|
return zood.Version
|
|
}
|