mirror of
https://github.com/weaveworks/scope.git
synced 2026-07-28 17:51:21 +00:00
Factor out pseudo node creation to a per-topology function - no semantic change right now.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user