mirror of
https://github.com/weaveworks/scope.git
synced 2026-07-28 17:51:21 +00:00
Merge pull request #3748 from weaveworks/move-counters-to-latest
Move Counters into Latest
This commit is contained in:
@@ -169,10 +169,7 @@ var ContainerImageRenderer = Memoise(FilterEmpty(report.Container,
|
||||
//
|
||||
// not memoised
|
||||
var ContainerHostnameRenderer = FilterEmpty(report.Container,
|
||||
MakeMap(
|
||||
MapContainer2Hostname,
|
||||
ContainerWithImageNameRenderer,
|
||||
),
|
||||
containerHostnameRenderer{},
|
||||
)
|
||||
|
||||
var portMappingMatch = regexp.MustCompile(`([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}):([0-9]+)->([0-9]+)/tcp`)
|
||||
@@ -312,21 +309,24 @@ func MapContainerImage2Name(n report.Node) report.Node {
|
||||
|
||||
var containerHostnameTopology = MakeGroupNodeTopology(report.Container, report.DockerContainerHostname)
|
||||
|
||||
// MapContainer2Hostname maps container Nodes to 'hostname' renderabled nodes..
|
||||
func MapContainer2Hostname(n report.Node) report.Node {
|
||||
// Propagate all pseudo nodes
|
||||
if n.Topology == Pseudo {
|
||||
return n
|
||||
}
|
||||
// containerHostnameRenderer collects containers by docker hostname
|
||||
type containerHostnameRenderer struct{}
|
||||
|
||||
// Otherwise, if some some reason the container doesn't have a hostname
|
||||
// (maybe slightly out of sync reports), just drop it
|
||||
id, ok := n.Latest.Lookup(report.DockerContainerHostname)
|
||||
if !ok {
|
||||
return report.Node{}
|
||||
}
|
||||
func (m containerHostnameRenderer) Render(ctx context.Context, rpt report.Report) Nodes {
|
||||
containers := ContainerWithImageNameRenderer.Render(ctx, rpt)
|
||||
ret := newJoinResults(nil)
|
||||
|
||||
node := NewDerivedNode(id, n).WithTopology(containerHostnameTopology)
|
||||
node.Counters = node.Counters.Add(n.Topology, 1)
|
||||
return node
|
||||
for _, n := range containers.Nodes {
|
||||
if n.Topology == Pseudo {
|
||||
ret.passThrough(n)
|
||||
continue
|
||||
}
|
||||
// If some some reason the container doesn't have a hostname, just drop it
|
||||
id, ok := n.Latest.Lookup(report.DockerContainerHostname)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
ret.addChildAndChildren(n, id, containerHostnameTopology)
|
||||
}
|
||||
return ret.result(containers)
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ func MakeNodeSummary(rc RenderContext, n report.Node) (NodeSummary, bool) {
|
||||
Adjacency: n.Adjacency,
|
||||
}
|
||||
// Only include metadata, metrics, tables when it's not a group node
|
||||
if _, ok := n.Counters.Lookup(n.Topology); !ok {
|
||||
if _, ok := n.LookupCounter(n.Topology); !ok {
|
||||
if topology, ok := rc.Topology(n.Topology); ok {
|
||||
summary.Metadata = topology.MetadataTemplates.MetadataRows(n)
|
||||
summary.Metrics = topology.MetricTemplates.MetricRows(n)
|
||||
@@ -292,7 +292,7 @@ func containerImageNodeSummary(base BasicNodeSummary, n report.Node) BasicNodeSu
|
||||
// heuristic regexp match we cannot tell the difference.
|
||||
base.Label, _ = report.ParseContainerImageNodeID(n.ID)
|
||||
}
|
||||
base.LabelMinor = pluralize(n.Counters, report.Container, "container", "containers")
|
||||
base.LabelMinor = pluralize(n, report.Container, "container", "containers")
|
||||
base.Rank = base.Label
|
||||
base.Stack = true
|
||||
return base
|
||||
@@ -314,7 +314,7 @@ func addKubernetesLabelAndRank(base BasicNodeSummary, n report.Node) BasicNodeSu
|
||||
|
||||
func podNodeSummary(base BasicNodeSummary, n report.Node) BasicNodeSummary {
|
||||
base = addKubernetesLabelAndRank(base, n)
|
||||
base.LabelMinor = pluralize(n.Counters, report.Container, "container", "containers")
|
||||
base.LabelMinor = pluralize(n, report.Container, "container", "containers")
|
||||
return base
|
||||
}
|
||||
|
||||
@@ -331,7 +331,7 @@ func podGroupNodeSummary(base BasicNodeSummary, n report.Node) BasicNodeSummary
|
||||
base.Stack = true
|
||||
// NB: pods are the highest aggregation level for which we display
|
||||
// counts.
|
||||
count := pluralize(n.Counters, report.Pod, "pod", "pods")
|
||||
count := pluralize(n, report.Pod, "pod", "pods")
|
||||
if typeName, ok := podGroupNodeTypeName[n.Topology]; ok {
|
||||
base.LabelMinor = fmt.Sprintf("%s of %s", typeName, count)
|
||||
} else {
|
||||
@@ -423,7 +423,7 @@ func groupNodeSummary(base BasicNodeSummary, r report.Report, n report.Node) Bas
|
||||
base.Shape = t.GetShape()
|
||||
base.Tag = t.Tag
|
||||
if t.Label != "" {
|
||||
base.LabelMinor = pluralize(n.Counters, topology, t.Label, t.LabelPlural)
|
||||
base.LabelMinor = pluralize(n, topology, t.Label, t.LabelPlural)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -431,8 +431,8 @@ func groupNodeSummary(base BasicNodeSummary, r report.Report, n report.Node) Bas
|
||||
return base
|
||||
}
|
||||
|
||||
func pluralize(counters report.Counters, key, singular, plural string) string {
|
||||
c, ok := counters.Lookup(key)
|
||||
func pluralize(n report.Node, key, singular, plural string) string {
|
||||
c, ok := n.LookupCounter(key)
|
||||
if !ok {
|
||||
c = 0
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ var (
|
||||
RenderedProcessNames = report.Nodes{
|
||||
fixture.Client1Name: processNameNode(fixture.Client1Name, fixture.ServerName).
|
||||
WithLatests(map[string]string{process.Name: fixture.Client1Name}).
|
||||
WithCounters(map[string]int{report.Process: 2}).
|
||||
AddCounter(report.Process, 2).
|
||||
WithChildren(report.MakeNodeSet(
|
||||
RenderedEndpoints[fixture.Client54001NodeID],
|
||||
RenderedEndpoints[fixture.Client54002NodeID],
|
||||
@@ -133,13 +133,14 @@ var (
|
||||
|
||||
fixture.ServerName: processNameNode(fixture.ServerName).
|
||||
WithLatests(map[string]string{process.Name: fixture.ServerName}).
|
||||
WithCounters(map[string]int{report.Process: 1}).
|
||||
AddCounter(report.Process, 1).
|
||||
WithChildren(report.MakeNodeSet(
|
||||
RenderedEndpoints[fixture.Server80NodeID],
|
||||
RenderedProcesses[fixture.ServerProcessNodeID],
|
||||
)),
|
||||
|
||||
fixture.NonContainerName: processNameNode(fixture.NonContainerName, render.OutgoingInternetID).
|
||||
AddCounter(report.Process, 1).
|
||||
WithChildren(report.MakeNodeSet(
|
||||
RenderedEndpoints[fixture.NonContainerNodeID],
|
||||
RenderedProcesses[fixture.NonContainerProcessNodeID],
|
||||
@@ -180,6 +181,8 @@ var (
|
||||
RenderedProcesses[fixture.ServerProcessNodeID],
|
||||
)),
|
||||
|
||||
fixture.ServerContainer2NodeID: container(fixture.ServerContainer2NodeID),
|
||||
|
||||
uncontainedServerID: uncontainedServerNode,
|
||||
render.IncomingInternetID: theIncomingInternetNode(fixture.ServerContainerNodeID),
|
||||
render.OutgoingInternetID: theOutgoingInternetNode,
|
||||
@@ -190,9 +193,7 @@ var (
|
||||
WithLatests(map[string]string{
|
||||
docker.ContainerHostname: fixture.ClientContainerHostname,
|
||||
}).
|
||||
WithCounters(map[string]int{
|
||||
report.Container: 1,
|
||||
}).
|
||||
AddCounter(report.Container, 1).
|
||||
WithChildren(report.MakeNodeSet(
|
||||
RenderedEndpoints[fixture.Client54001NodeID],
|
||||
RenderedEndpoints[fixture.Client54002NodeID],
|
||||
@@ -205,10 +206,12 @@ var (
|
||||
WithLatests(map[string]string{
|
||||
docker.ContainerHostname: fixture.ServerContainerHostname,
|
||||
}).
|
||||
AddCounter(report.Container, 2).
|
||||
WithChildren(report.MakeNodeSet(
|
||||
RenderedEndpoints[fixture.Server80NodeID],
|
||||
RenderedProcesses[fixture.ServerProcessNodeID],
|
||||
RenderedContainers[fixture.ServerContainerNodeID],
|
||||
RenderedContainers[fixture.ServerContainer2NodeID],
|
||||
)),
|
||||
|
||||
uncontainedServerID: uncontainedServerNode,
|
||||
@@ -226,9 +229,7 @@ var (
|
||||
docker.ImageID: fixture.ClientContainerImageID,
|
||||
docker.ImageName: fixture.ClientContainerImageName,
|
||||
}).
|
||||
WithCounters(map[string]int{
|
||||
report.Container: 1,
|
||||
}).
|
||||
AddCounter(report.Container, 1).
|
||||
WithChildren(report.MakeNodeSet(
|
||||
RenderedEndpoints[fixture.Client54001NodeID],
|
||||
RenderedEndpoints[fixture.Client54002NodeID],
|
||||
@@ -238,10 +239,12 @@ var (
|
||||
)),
|
||||
|
||||
ServerContainerImageNodeID: containerImage(ServerContainerImageNodeID).
|
||||
AddCounter(report.Container, 2).
|
||||
WithChildren(report.MakeNodeSet(
|
||||
RenderedEndpoints[fixture.Server80NodeID],
|
||||
RenderedProcesses[fixture.ServerProcessNodeID],
|
||||
RenderedContainers[fixture.ServerContainerNodeID],
|
||||
RenderedContainers[fixture.ServerContainer2NodeID],
|
||||
)),
|
||||
|
||||
uncontainedServerID: uncontainedServerNode,
|
||||
@@ -254,10 +257,14 @@ var (
|
||||
uncontainedServerNode,
|
||||
RenderedEndpoints[fixture.NonContainerNodeID],
|
||||
RenderedProcesses[fixture.NonContainerProcessNodeID],
|
||||
))
|
||||
RenderedContainers[fixture.ServerContainer2NodeID],
|
||||
)).
|
||||
AddCounter(report.Container, 1).
|
||||
AddCounter(render.Pseudo, 1)
|
||||
|
||||
RenderedPods = report.Nodes{
|
||||
fixture.ClientPodNodeID: pod(fixture.ClientPodNodeID, fixture.ServerPodNodeID).
|
||||
AddCounter(report.Container, 1).
|
||||
WithChildren(report.MakeNodeSet(
|
||||
RenderedEndpoints[fixture.Client54001NodeID],
|
||||
RenderedEndpoints[fixture.Client54002NodeID],
|
||||
@@ -267,6 +274,7 @@ var (
|
||||
)),
|
||||
|
||||
fixture.ServerPodNodeID: pod(fixture.ServerPodNodeID).
|
||||
AddCounter(report.Container, 1).
|
||||
WithChildren(report.MakeNodeSet(
|
||||
RenderedEndpoints[fixture.Server80NodeID],
|
||||
RenderedProcesses[fixture.ServerProcessNodeID],
|
||||
@@ -323,6 +331,7 @@ var (
|
||||
|
||||
RenderedPodServices = report.Nodes{
|
||||
fixture.ServiceNodeID: service(fixture.ServiceNodeID, fixture.ServiceNodeID).
|
||||
AddCounter(report.Pod, 2).
|
||||
WithChildren(report.MakeNodeSet(
|
||||
RenderedEndpoints[fixture.Client54001NodeID],
|
||||
RenderedEndpoints[fixture.Client54002NodeID],
|
||||
@@ -346,6 +355,10 @@ var (
|
||||
WithLatests(map[string]string{
|
||||
report.HostName: fixture.ClientHostName,
|
||||
}).
|
||||
AddCounter(report.Container, 1).
|
||||
AddCounter(report.ContainerImage, 1).
|
||||
AddCounter(report.Pod, 1).
|
||||
AddCounter(report.Process, 2).
|
||||
WithChildren(report.MakeNodeSet(
|
||||
RenderedEndpoints[fixture.Client54001NodeID],
|
||||
RenderedEndpoints[fixture.Client54002NodeID],
|
||||
@@ -357,12 +370,17 @@ var (
|
||||
)),
|
||||
|
||||
fixture.ServerHostNodeID: hostNode(fixture.ServerHostNodeID, render.OutgoingInternetID).
|
||||
AddCounter(report.Container, 2).
|
||||
AddCounter(report.ContainerImage, 1).
|
||||
AddCounter(report.Pod, 1).
|
||||
AddCounter(report.Process, 2).
|
||||
WithChildren(report.MakeNodeSet(
|
||||
RenderedEndpoints[fixture.Server80NodeID],
|
||||
RenderedEndpoints[fixture.NonContainerNodeID],
|
||||
RenderedProcesses[fixture.ServerProcessNodeID],
|
||||
RenderedProcesses[fixture.NonContainerProcessNodeID],
|
||||
RenderedContainers[fixture.ServerContainerNodeID],
|
||||
RenderedContainers[fixture.ServerContainer2NodeID],
|
||||
RenderedContainerImages[ServerContainerImageNodeID],
|
||||
RenderedPods[fixture.ServerPodNodeID],
|
||||
)),
|
||||
|
||||
@@ -195,7 +195,7 @@ func (ret *joinResults) addUnmappedChild(m report.Node, id string, topology stri
|
||||
}
|
||||
result.Children.UnsafeAdd(m)
|
||||
if m.Topology != report.Endpoint { // optimisation: we never look at endpoint counts
|
||||
result.Counters = result.Counters.Add(m.Topology, 1)
|
||||
result = result.AddCounter(m.Topology, 1)
|
||||
}
|
||||
ret.nodes[id] = result
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user