diff --git a/apt.go b/apt.go index 9f88164..aede052 100644 --- a/apt.go +++ b/apt.go @@ -38,7 +38,7 @@ func addNew(name string, version string) bool { return me.packages.Append(new1) } -func updatePackages() { +func updatePackagesOld() { // Get the list of installed packages for the detected distro newP, err := getPackageList(me.distro) if err != nil { diff --git a/http.go b/http.go index 6f40f0a..7c19a3a 100644 --- a/http.go +++ b/http.go @@ -36,16 +36,16 @@ func okHandler(w http.ResponseWriter, r *http.Request) { var m *zoopb.Machine m = new(zoopb.Machine) if err := m.Unmarshal(msg); err != nil { - log.Info("proto.Unmarshal() failed on wire message len", len(msg), "from", hostname) + log.Info("proto.Unmarshal() failed on wire message len", len(msg)) + log.Info("error =", err) return } - if m.Packages == nil { - log.Info("Unmarshal worked with msg len", len(msg), "from", m.Hostname) - log.Info(m.Hostname, "sent machine") - } else { - - log.Info("Unmarshal worked with msg len", len(msg), "from", m.Hostname) - log.Info(m.Hostname, "has", m.Packages.Len(), "packages installed") + log.Info("proto.Unmarshal() worked on wire message len", len(msg), "from", m.Hostname) + switch updateMachine(m) { + case "upgrade": + fmt.Fprintln(w, "upgrade") + default: + fmt.Fprintln(w, "notsure") } return } @@ -66,13 +66,6 @@ func okHandler(w http.ResponseWriter, r *http.Request) { log.Info("Unmarshal worked with msg len", len(msg), "from", hostname) log.Info(hostname, "has", packs.Len(), "packages installed") fmt.Fprintln(w, "upgrade") - - m := me.machines.FindByName(hostname) - if m == nil { - log.Info("did not find", hostname) - } else { - log.Info("found", hostname) - } return } diff --git a/machine.go b/machine.go new file mode 100644 index 0000000..907b51d --- /dev/null +++ b/machine.go @@ -0,0 +1,54 @@ +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("did not find", 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) + } + + updatePackages(m.Packages, u.Packages) + return "upgrade" +} + +// looks to see if any packages: +// changed versions +// were newly installed +// were uninstalled +func updatePackages(p *zoopb.Packages, u *zoopb.Packages) bool { + var changed bool = false + + return changed +}