diff options
Diffstat (limited to 'windowZood.go')
| -rw-r--r-- | windowZood.go | 94 |
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() +} |
