Stop mutating nodes in the rendering pipeline

This commit is contained in:
Tom Wilkie
2016-03-01 17:16:48 +00:00
parent 1e3625e05c
commit d874266cf6
2 changed files with 28 additions and 22 deletions

View File

@@ -527,13 +527,14 @@ func MapCountProcessName(n RenderableNode, _ report.Networks) RenderableNodes {
return RenderableNodes{n.ID: n}
}
output := n.Copy()
processes, _ := n.Node.Counters.Lookup(processesKey)
if processes == 1 {
n.LabelMinor = "1 process"
output.LabelMinor = "1 process"
} else {
n.LabelMinor = fmt.Sprintf("%d processes", processes)
output.LabelMinor = fmt.Sprintf("%d processes", processes)
}
return RenderableNodes{n.ID: n}
return RenderableNodes{output.ID: output}
}
// MapContainer2ContainerImage maps container RenderableNodes to container
@@ -757,13 +758,14 @@ func MapCountContainers(n RenderableNode, _ report.Networks) RenderableNodes {
return RenderableNodes{n.ID: n}
}
output := n.Copy()
containers, _ := n.Node.Counters.Lookup(ContainersKey)
if containers == 1 {
n.LabelMinor = "1 container"
output.LabelMinor = "1 container"
} else {
n.LabelMinor = fmt.Sprintf("%d containers", containers)
output.LabelMinor = fmt.Sprintf("%d containers", containers)
}
return RenderableNodes{n.ID: n}
return RenderableNodes{output.ID: output}
}
// MapCountPods maps 1:1 service nodes, counting the number of pods grouped
@@ -773,13 +775,14 @@ func MapCountPods(n RenderableNode, _ report.Networks) RenderableNodes {
return RenderableNodes{n.ID: n}
}
output := n.Copy()
pods, _ := n.Node.Counters.Lookup(podsKey)
if pods == 1 {
n.LabelMinor = "1 pod"
output.LabelMinor = "1 pod"
} else {
n.LabelMinor = fmt.Sprintf("%d pods", pods)
output.LabelMinor = fmt.Sprintf("%d pods", pods)
}
return RenderableNodes{n.ID: n}
return RenderableNodes{output.ID: output}
}
// trySplitAddr is basically ParseArbitraryNodeID, since its callsites

View File

@@ -42,6 +42,7 @@ func (r processWithContainerNameRenderer) Render(rpt report.Report) RenderableNo
SelectContainer,
).Render(rpt)
outputs := RenderableNodes{}
for id, p := range processes {
pid, ok := p.Node.Latest.Lookup(process.PID)
if !ok {
@@ -55,11 +56,11 @@ func (r processWithContainerNameRenderer) Render(rpt report.Report) RenderableNo
if !ok {
continue
}
p.LabelMinor = fmt.Sprintf("%s (%s:%s)", report.ExtractHostID(p.Node), container.LabelMajor, pid)
processes[id] = p
output := p.Copy()
output.LabelMinor = fmt.Sprintf("%s (%s:%s)", report.ExtractHostID(p.Node), container.LabelMajor, pid)
outputs[id] = output
}
return processes
return outputs
}
// ProcessWithContainerNameRenderer is a Renderer which produces a process
@@ -131,6 +132,7 @@ func (r containerWithHostIPsRenderer) Render(rpt report.Report) RenderableNodes
SelectHost,
).Render(rpt)
outputs := RenderableNodes{}
for id, c := range containers {
networkMode, ok := c.Node.Latest.Lookup(docker.ContainerNetworkMode)
if !ok || networkMode != docker.NetworkModeHost {
@@ -150,11 +152,11 @@ func (r containerWithHostIPsRenderer) Render(rpt report.Report) RenderableNodes
}
}
c.Sets = c.Sets.Add(docker.ContainerIPs, newIPs)
containers[id] = c
output := c.Copy()
output.Sets = c.Sets.Add(docker.ContainerIPs, newIPs)
outputs[id] = output
}
return containers
return outputs
}
// ContainerWithHostIPsRenderer is a Renderer which produces a container graph
@@ -175,6 +177,7 @@ func (r containerWithImageNameRenderer) Render(rpt report.Report) RenderableNode
SelectContainerImage,
).Render(rpt)
outputs := RenderableNodes{}
for id, c := range containers {
imageID, ok := c.Node.Latest.Lookup(docker.ImageID)
if !ok {
@@ -184,12 +187,12 @@ func (r containerWithImageNameRenderer) Render(rpt report.Report) RenderableNode
if !ok {
continue
}
c.Rank = ImageNameWithoutVersion(image.LabelMajor)
c.Latest = image.Latest.Merge(c.Latest)
containers[id] = c
output := c.Copy()
output.Rank = ImageNameWithoutVersion(image.LabelMajor)
output.Latest = image.Latest.Merge(c.Latest)
outputs[id] = output
}
return containers
return outputs
}
// ContainerWithImageNameRenderer is a Renderer which produces a container