77 lines
1.8 KiB
Go
77 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"go.wit.com/lib/protobuf/zoopb"
|
|
"go.wit.com/log"
|
|
)
|
|
|
|
// someone sent machine 'u' is it new?
|
|
// if not, update the record of it
|
|
func updateMachine(u *zoopb.Machine) string {
|
|
if u == nil {
|
|
return "nil"
|
|
}
|
|
m := me.machines.FindByHostname(u.Hostname)
|
|
if m == nil {
|
|
log.Info("adding new machine", u.Hostname)
|
|
me.machines.Append(u)
|
|
return "new"
|
|
}
|
|
// log.Info("updating machine", m.Hostname)
|
|
|
|
// did the # of cpus change?
|
|
if m.Cpus != u.Cpus {
|
|
m.Cpus = u.Cpus
|
|
log.Info("cpus changed to", m.Cpus)
|
|
}
|
|
|
|
// did the memory change?
|
|
if m.Memory != u.Memory {
|
|
m.Memory = u.Memory
|
|
log.Info("memory changed to", m.Memory)
|
|
}
|
|
|
|
// init these if nil
|
|
if m.Packages == nil {
|
|
m.Packages = new(zoopb.Packages)
|
|
}
|
|
if u.Packages == nil {
|
|
u.Packages = new(zoopb.Packages)
|
|
}
|
|
if zood := m.Packages.FindByName("zood"); zood != nil {
|
|
log.Log(INFO, m.Hostname, "has zood version", zood.Version)
|
|
}
|
|
|
|
updatePackages(m, u.Packages)
|
|
return "upgrade"
|
|
}
|
|
|
|
// looks to see if any packages:
|
|
// changed versions
|
|
// were newly installed
|
|
// were uninstalled
|
|
func updatePackages(m *zoopb.Machine, newp *zoopb.Packages) bool {
|
|
var changed bool = false
|
|
|
|
loop := newp.SortByName()
|
|
for loop.Scan() {
|
|
p := loop.Next()
|
|
if p.Name == "zood" {
|
|
if pold := m.Packages.FindByName("zood"); pold == nil {
|
|
changed = true
|
|
log.Log(ZOOD, "updatePackages() new package", p.Name , "version", p.Version, "machine", m.Hostname)
|
|
m.Packages.Append(p)
|
|
} else {
|
|
if p.Version == pold.Version {
|
|
log.Log(ZOOD, "updatePackages() unchanged", p.Version, "machine", m.Hostname)
|
|
} else {
|
|
changed = true
|
|
log.Log(NOW, "updatePackages() package", p.Name , "version changed", pold.Version, "to", p.Version, "machine", m.Hostname)
|
|
pold.Version = p.Version
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return changed
|
|
}
|