summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt.go2
-rw-r--r--http.go23
-rw-r--r--machine.go54
3 files changed, 63 insertions, 16 deletions
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
+}