DodoApp: Status page

Implements basic status page, listing all apps and their commit
statuses. Separates web and api endpoints. Unifies API addresses a bit.

Change-Id: I98f9f949a49b60e80e188f7b51ec0e967666e65b
diff --git a/apps/app-runner/server.go b/apps/app-runner/server.go
index 7985ac6..f3ee563 100644
--- a/apps/app-runner/server.go
+++ b/apps/app-runner/server.go
@@ -24,7 +24,7 @@
 	appDir      string
 	runCommands []Command
 	self        string
-	manager     string
+	managerAddr string
 }
 
 func NewServer(port int, appId string, repoAddr string, signer ssh.Signer, appDir string, runCommands []Command, self string, manager string) *Server {
@@ -38,7 +38,7 @@
 		appDir:      appDir,
 		runCommands: runCommands,
 		self:        self,
-		manager:     manager,
+		managerAddr: manager,
 	}
 }
 
@@ -120,7 +120,6 @@
 }
 
 type pingReq struct {
-	AppId   string `json:"appId"`
 	Address string `json:"address"`
 }
 
@@ -131,9 +130,12 @@
 			s.pingManager()
 		}()
 	}()
-	buf, err := json.Marshal(pingReq{s.appId, s.self})
+	buf, err := json.Marshal(pingReq{
+		Address: fmt.Sprintf("%s:%d", s.self, s.port),
+	})
 	if err != nil {
 		return
 	}
-	http.Post(s.manager, "application/json", bytes.NewReader(buf))
+	registerWorkerAddr := fmt.Sprintf("%s/api/apps/%s/workers", s.managerAddr, s.appId)
+	http.Post(registerWorkerAddr, "application/json", bytes.NewReader(buf))
 }