summaryrefslogtreecommitdiff
path: root/windowZood.go
diff options
context:
space:
mode:
Diffstat (limited to 'windowZood.go')
-rw-r--r--windowZood.go94
1 files changed, 94 insertions, 0 deletions
diff --git a/windowZood.go b/windowZood.go
new file mode 100644
index 0000000..65304f7
--- /dev/null
+++ b/windowZood.go
@@ -0,0 +1,94 @@
+// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
+// Use of this source code is governed by the GPL 3.0
+
+package main
+
+import (
+ "fmt"
+ "time"
+
+ "go.wit.com/gui"
+ "go.wit.com/lib/gadgets"
+ "go.wit.com/lib/protobuf/zoopb"
+ "go.wit.com/log"
+)
+
+func makeZoodWin() {
+ me.zood = new(stdTableWin)
+ me.zood.win = gadgets.NewGenericWindow("zood daemon versions", "todo: add global controls here")
+ me.zood.win.Custom = func() {
+ log.Info("test delete window here")
+ }
+ group := me.zood.win.Group
+ group.NewButton("save machines.pb", func() {
+ saveMachineState()
+ })
+ me.zood.box = me.zood.win.Bottom.Box().SetProgName("TBOX")
+ doMachinesUpgradeTable()
+}
+
+func doMachinesUpgradeTable() {
+ if me.zood.TB != nil {
+ me.zood.TB.Delete()
+ me.zood.TB = nil
+ }
+
+ // display the protobuf
+ me.zood.TB = AddMachinesPB(me.zood.box, me.machines)
+ f := func(m *zoopb.Machine) {
+ log.Info("upgrade machine", m.Hostname, "memory", m.Memory/(1024*1024*1024))
+ log.Info("ADD THE CODE TO TRIGGER AN UPGRADE HERE")
+ log.Info("ADD THE CODE TO TRIGGER AN UPGRADE HERE")
+ }
+ me.zood.TB.Custom(f)
+ log.Info("table has uuid", me.zood.TB.GetUuid())
+}
+
+func AddMachinesPB(tbox *gui.Node, pb *zoopb.Machines) *zoopb.MachinesTable {
+ t := pb.NewTable("MachinesPB")
+ t.NewUuid()
+ t.SetParent(tbox)
+
+ t.AddHostname()
+ t.AddMemory()
+ t.AddCpus()
+ t.AddStringFunc("sMB", func(m *zoopb.Machine) string {
+ return fmt.Sprintf("%d mb", m.Memory/(1024*1024))
+ })
+
+ t.AddStringFunc("zood", func(m *zoopb.Machine) string {
+ return findVersion(m, "zood")
+ })
+
+ t.AddTimeFunc("age", func(m *zoopb.Machine) time.Time {
+ return m.Laststamp.AsTime()
+ })
+
+ f := func(m *zoopb.Machine) string {
+ log.Info("machine =", m.Hostname)
+ return m.Hostname
+ }
+ t.AddButtonFunc("upgrade", f)
+ t.ShowTable()
+ return t
+}
+
+func findVersion(m *zoopb.Machine, pkgname string) string {
+ zood := m.Packages.FindByName(pkgname)
+ if zood == nil {
+ return "n/a"
+ }
+ return zood.Version
+}
+
+func saveMachineState() {
+ now := zoopb.NewMachines()
+
+ all := me.machines.SortByHostname()
+ for all.Scan() {
+ m := all.Next()
+ log.Info("have machine:", m.Hostname)
+ now.Append(m)
+ }
+ // me.machines.ConfigSave()
+}