summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile7
-rw-r--r--doGui.go14
-rw-r--r--http.go92
-rw-r--r--main.go2
-rw-r--r--watchdog.go2
-rw-r--r--windowZood.go44
6 files changed, 102 insertions, 59 deletions
diff --git a/Makefile b/Makefile
index 79e4927..0e62757 100644
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,7 @@ BUILDTIME = $(shell date +%Y.%m.%d_%H%M)
# REDOMOD = $(shell if [ -e go.mod ]; then echo go.mod; else echo no go mod; fi)
REDOMOD = $(shell if [ -e go.sum ]; then echo go.sum exists; else GO111MODULE= go mod init; GO111MODULE= go mod tidy; fi)
-all: goimports gocui
+all: goimports gocui-debugging
# ./zookeeper
vet:
@@ -21,7 +21,7 @@ gocui: build
./zookeeper --gui gocui
gocui-debugging: build
- ./zookeeper --gui gocui >/tmp/forge.log 2>&1
+ ./zookeeper --gui gocui --gui-file ~/go/src/go.wit.com/toolkits/gocui/gocui.so >/tmp/forge.log 2>&1
build: goimports vet
GO111MODULE=off go build -v -x \
@@ -63,3 +63,6 @@ http-toogle-ZOOD:
http-list-machines:
curl --silent http://localhost:8080/list
+
+http-uptime:
+ curl --silent http://localhost:8080/uptime
diff --git a/doGui.go b/doGui.go
index 70d9657..13e1a99 100644
--- a/doGui.go
+++ b/doGui.go
@@ -17,12 +17,21 @@ import (
// refresh the windows & tables the user has open
func refresh() {
- time.Sleep(90 * time.Second)
if argv.Verbose {
log.Info("zookeeper scan here")
}
if me.zood != nil {
me.zood.doMachinesUpgradeTable(me.machines)
+ all := me.machines.All()
+ for all.Scan() {
+ m := all.Next()
+ if me.hostname == m.Hostname {
+ // this is me! This is the version of zood that should be installed everywhere
+ v := findVersion(m, "zood")
+ me.zood.version = v
+ me.zood.versionL.SetText(v)
+ }
+ }
}
}
@@ -52,7 +61,7 @@ func doGui() {
me.zood.Toggle()
return
}
- makeZoodWin()
+ me.zood = makeZoodWin()
})
grid.NewButton("Cluster Events", func() {
@@ -62,6 +71,7 @@ func doGui() {
// sit here forever refreshing the GUI
for {
refresh()
+ time.Sleep(90 * time.Second)
}
}
diff --git a/http.go b/http.go
index a385b6f..7534b87 100644
--- a/http.go
+++ b/http.go
@@ -9,7 +9,6 @@ import (
"net/http"
"strings"
- "go.wit.com/lib/protobuf/zoopb"
"go.wit.com/log"
)
@@ -24,9 +23,7 @@ func okHandler(w http.ResponseWriter, r *http.Request) {
route := cleanURL(r.URL.Path)
hostname := r.URL.Query().Get("hostname")
- flag := r.URL.Query().Get("flag")
- // packname := r.URL.Query().Get("package")
- // version := r.URL.Query().Get("version")
+ // flag := r.URL.Query().Get("flag")
msg, err := ioutil.ReadAll(r.Body) // Read the body as []byte
if err != nil {
@@ -43,54 +40,61 @@ func okHandler(w http.ResponseWriter, r *http.Request) {
return
}
- if route == "/status" {
- var packs *zoopb.Packages
- packs = new(zoopb.Packages)
- if err := packs.Unmarshal(msg); err != nil {
- log.Info("/status proto.Unmarshal() failed on wire message len", len(msg), "from", hostname)
+ /*
+ if route == "/status" {
+ var packs *zoopb.Packages
+ packs = new(zoopb.Packages)
+ if err := packs.Unmarshal(msg); err != nil {
+ log.Info("/status proto.Unmarshal() failed on wire message len", len(msg), "from", hostname)
+ return
+ }
+
+ log.Info("/status Unmarshal worked with msg len", len(msg), "from", hostname)
+ log.Info("/status hostname", hostname, "has", packs.Len(), "packages installed")
+ fmt.Fprintln(w, "upgrade")
return
}
-
- log.Info("/status Unmarshal worked with msg len", len(msg), "from", hostname)
- log.Info("/status hostname", hostname, "has", packs.Len(), "packages installed")
- fmt.Fprintln(w, "upgrade")
- return
- }
+ */
// list out the machines and thier version of zood
- if route == "/list" {
- log.HttpMode(w)
- defer log.HttpMode(nil)
- loop := me.machines.SortByHostname()
- for loop.Scan() {
- m := loop.Next()
- zood := m.Packages.FindByName("zood")
- v := me.targets["zood"] // this is the target version
- if zood == nil {
- log.Info("machine", m.Hostname, "does not have zood installed")
- } else {
- log.Info(fmt.Sprintf("zood version %s vs target version %s on machine %s", zood.Version, v, m.Hostname))
+ /*
+ if route == "/list" {
+ log.HttpMode(w)
+ defer log.HttpMode(nil)
+ loop := me.machines.SortByHostname()
+ for loop.Scan() {
+ m := loop.Next()
+ zood := m.Packages.FindByName("zood")
+ v := me.targets["zood"] // this is the target version
+ if zood == nil {
+ log.Info("machine", m.Hostname, "does not have zood installed")
+ } else {
+ log.Info(fmt.Sprintf("zood version %s vs target version %s on machine %s", zood.Version, v, m.Hostname))
+ }
}
+ return
}
- return
- }
+ */
- // toggle logging flags
- if route == "/flag" {
- log.HttpMode(w)
- defer log.HttpMode(nil)
- log.Info("going to toggle flag:", flag)
- switch flag {
- case "ZOOD":
- if ZOOD.Enabled() {
- log.Log(NOW, "toogle ZOOD false")
- ZOOD.SetBool(false)
- } else {
- log.Log(NOW, "toogle ZOOD true")
- ZOOD.SetBool(true)
+ if route == "/uptime" {
+ if me.zood == nil {
+ fmt.Fprintf(w, "BAD zood == nil\n")
+ return
+ }
+ var count int
+ var bad int
+ all := me.machines.All()
+ for all.Scan() {
+ m := all.Next()
+ count += 1
+ if findVersion(m, "zood") != me.zood.version {
+ bad += 1
}
- default:
- log.Info("unknown looging flag:", flag)
+ }
+ if bad == 0 {
+ fmt.Fprintf(w, "GOOD machine count=(%d) all machines are version %s\n", count, me.zood.version)
+ } else {
+ fmt.Fprintf(w, "BAD machine count=(%d) upgrade=(%d) to %s\n", count, bad, me.zood.version)
}
return
}
diff --git a/main.go b/main.go
index 5cffdda..4b9ade8 100644
--- a/main.go
+++ b/main.go
@@ -37,7 +37,7 @@ func main() {
me = new(zookeep)
me.hostname, _ = os.Hostname()
- me.pollDelay = 10 * time.Second
+ me.pollDelay = time.Hour
me.machines = zoopb.NewMachines()
// me.machines2 = zoopb.NewMachines()
if err := me.machines.ConfigLoad(); err != nil {
diff --git a/watchdog.go b/watchdog.go
index 6cea461..1235abc 100644
--- a/watchdog.go
+++ b/watchdog.go
@@ -55,7 +55,7 @@ func NewWatchdog() {
// log.Info("know about machine", m.Hostname, "zood version", zood.Version)
}
}
- log.Info("zookeeper has", counter, "machines. Current time:", t)
+ log.Info("hour watchdog:", counter, "machines. Current time:", t)
// h.pollHypervisor()
// h.Scan()
diff --git a/windowZood.go b/windowZood.go
index bd18044..d90a662 100644
--- a/windowZood.go
+++ b/windowZood.go
@@ -16,10 +16,12 @@ import (
type stdTableWin struct {
sync.Mutex
- win *gadgets.GenericWindow // the machines gui window
- box *gui.Node // the machines gui parent box widget
- TB *zoopb.MachinesTable // the machines gui table buffer
- update bool // if the window should be updated
+ win *gadgets.GenericWindow // the machines gui window
+ box *gui.Node // the machines gui parent box widget
+ TB *zoopb.MachinesTable // the machines gui table buffer
+ version string // the current zood version
+ versionL *gui.Node // label widget to display the current zood version
+ update bool // if the window should be updated
}
func (w *stdTableWin) Toggle() {
@@ -42,10 +44,24 @@ func makeZoodWin() *stdTableWin {
grid.NewButton("save machines.pb", func() {
saveMachineState()
})
- grid.NewCheckbox("hide active")
- grid.NewButton("update", func() {
+ grid.NewButton("show active", func() {
zood.doMachinesUpgradeTable(me.machines)
})
+ grid.NewButton("refresh", func() {
+ refresh()
+ })
+ zood.versionL = grid.NewLabel("scan")
+ grid.NewButton("show out of date", func() {
+ found := zoopb.NewMachines()
+ all := me.machines.All()
+ for all.Scan() {
+ m := all.Next()
+ if findVersion(m, "zood") != me.zood.version {
+ found.Append(m)
+ }
+ }
+ zood.doMachinesUpgradeTable(found)
+ })
// make a box at the bottom of the window for the protobuf table
zood.box = zood.win.Bottom.Box().SetProgName("TBOX")
@@ -86,11 +102,22 @@ func AddMachinesPB(tbox *gui.Node, pb *zoopb.Machines) *zoopb.MachinesTable {
t.NewUuid()
t.SetParent(tbox)
- f := func(m *zoopb.Machine) string {
+ upbut := t.AddButtonFunc("upgrade", func(m *zoopb.Machine) string {
+ if me.zood != nil {
+ mver := findVersion(m, "zood")
+ if mver == me.zood.version {
+ return ""
+ } else {
+ // log.Info("machine mismatch", m.Hostname, mver, me.zood.version)
+ }
+ }
// log.Info("machine =", m.Hostname)
return "now"
+ })
+ upbut.Custom = func(m *zoopb.Machine) {
+ log.Info("Triggering machine", m.Hostname, "to upgrade zood")
+ m.Upgrade = true
}
- t.AddButtonFunc("upgrade", f)
t.AddHostname()
t.AddMemory()
@@ -103,7 +130,6 @@ func AddMachinesPB(tbox *gui.Node, pb *zoopb.Machines) *zoopb.MachinesTable {
return findVersion(m, "zood")
})
delf := func(m *zoopb.Machine) string {
- pb.DeleteByHostname(m.Hostname)
return "delete"
}
t.AddButtonFunc("delete", delf)