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.FindByName(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.FindPackageByName("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.Package() if p.Name == "zood" { if pold := m.FindPackageByName("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 }