Factor out pseudo node creation to a per-topology function - no semantic change right now.

This commit is contained in:
Tom Wilkie
2015-05-27 09:17:43 +00:00
parent ea6d1282dc
commit 0fd5c2eeae
6 changed files with 73 additions and 47 deletions

View File

@@ -42,7 +42,7 @@ func makeTopologyList(rep Reporter) func(w http.ResponseWriter, r *http.Request)
Name: def.human,
URL: url,
GroupedURL: groupedURL,
Stats: stats(def.topologySelecter(rpt).RenderBy(def.MapFunc, false)),
Stats: stats(def.topologySelecter(rpt).RenderBy(def.MapFunc, def.PseudoFunc, false)),
})
}
respondWith(w, http.StatusOK, a)

View File

@@ -46,6 +46,7 @@ func makeTopologyHandlers(
rep Reporter,
topo topologySelecter,
mapping report.MapFunc,
pseudo report.PseudoFunc,
grouped bool,
get *mux.Router,
base string,
@@ -53,7 +54,7 @@ func makeTopologyHandlers(
// Full topology.
get.HandleFunc(base, func(w http.ResponseWriter, r *http.Request) {
respondWith(w, http.StatusOK, APITopology{
Nodes: topo(rep.Report()).RenderBy(mapping, grouped),
Nodes: topo(rep.Report()).RenderBy(mapping, pseudo, grouped),
})
})
@@ -71,7 +72,7 @@ func makeTopologyHandlers(
return
}
}
handleWebsocket(w, r, rep, topo, mapping, grouped, loop)
handleWebsocket(w, r, rep, topo, mapping, pseudo, grouped, loop)
})
// Individual nodes.
@@ -80,7 +81,7 @@ func makeTopologyHandlers(
vars = mux.Vars(r)
nodeID = vars["id"]
rpt = rep.Report()
node, ok = topo(rpt).RenderBy(mapping, grouped)[nodeID]
node, ok = topo(rpt).RenderBy(mapping, pseudo, grouped)[nodeID]
)
if !ok {
http.NotFound(w, r)
@@ -114,6 +115,7 @@ func handleWebsocket(
rep Reporter,
topo topologySelecter,
mapping report.MapFunc,
psuedo report.PseudoFunc,
grouped bool,
loop time.Duration,
) {
@@ -139,7 +141,7 @@ func handleWebsocket(
tick = time.Tick(loop)
)
for {
newTopo := topo(rep.Report()).RenderBy(mapping, grouped)
newTopo := topo(rep.Report()).RenderBy(mapping, psuedo, grouped)
diff := report.TopoDiff(previousTopo, newTopo)
previousTopo = newTopo

View File

@@ -19,6 +19,7 @@ func Router(c Reporter) *mux.Router {
c,
def.topologySelecter,
def.MapFunc,
def.PseudoFunc,
false, // not grouped
get,
"/api/topology/"+name,
@@ -28,6 +29,7 @@ func Router(c Reporter) *mux.Router {
c,
def.topologySelecter,
def.MapFunc,
def.PseudoFunc,
true, // grouped
get,
"/api/topology/"+name+"grouped",
@@ -44,9 +46,10 @@ var topologyRegistry = map[string]struct {
human string
topologySelecter
report.MapFunc
report.PseudoFunc
hasGrouped bool
}{
"applications": {"Applications", selectProcess, report.ProcessPID, true},
"containers": {"Containers", selectProcess, report.ProcessContainer, true},
"hosts": {"Hosts", selectNetwork, report.NetworkHostname, false},
"applications": {"Applications", selectProcess, report.ProcessPID, report.GenericPseudoNode, true},
"containers": {"Containers", selectProcess, report.ProcessContainer, report.GenericPseudoNode, true},
"hosts": {"Hosts", selectNetwork, report.NetworkHostname, report.GenericPseudoNode, false},
}