Add metadata endpoint.

This commit is contained in:
Cody Soyland 2013-12-26 15:05:00 -06:00
parent 09f2d8eda1
commit 49b8c33059
2 changed files with 28 additions and 0 deletions

View file

@ -200,6 +200,20 @@ func (self *ProcessMap) GetPortHttp(id *uuid.UUID) (int, error) {
return process.PortHttp(), nil
}
func (self *ProcessMap) GetMetadata() map[string]map[string]interface{} {
self.mutex.Lock()
defer self.mutex.Unlock()
out := make(map[string]map[string]interface{})
for id, process := range self.nodes {
pdata := make(map[string]interface{})
pdata["host"] = process.Host()
pdata["port_tcp"] = process.PortTcp()
pdata["port_http"] = process.PortHttp()
out[id.String()] = pdata
}
return out
}
type ProcessMapper struct {
service *Service
receiver chan etcd.Response

View file

@ -29,6 +29,7 @@ func (self *WebService) Run() {
mux.HandleFunc("/query", self.HandleQuery)
mux.HandleFunc("/stats", self.HandleStats)
mux.HandleFunc("/info", self.HandleInfo)
mux.HandleFunc("/processes", self.HandleProcesses)
mux.HandleFunc("/listen", self.HandleListen)
s := &http.Server{
Addr: ":" + port_string,
@ -88,6 +89,19 @@ func (self *WebService) HandleInfo(w http.ResponseWriter, r *http.Request) {
spew.Fdump(w, self.service.Cluster)
}
func (self *WebService) HandleProcesses(w http.ResponseWriter, r *http.Request) {
if r.Method != "GET" {
http.Error(w, "Only GET allowed", http.StatusMethodNotAllowed)
return
}
encoder := json.NewEncoder(w)
processes := self.service.ProcessMap.GetMetadata()
err := encoder.Encode(processes)
if err != nil {
log.Fatal("Error encoding stats")
}
}
func (self *WebService) HandleListen(w http.ResponseWriter, r *http.Request) {
//listener := service.NewListener()
//encoder := json.NewEncoder(w)