mirror of
https://github.com/weaveworks/scope.git
synced 2026-07-28 01:31:17 +00:00
Merge pull request #437 from weaveworks/436-container-image-name-in-rank
Make container rank the image _name_
This commit is contained in:
@@ -137,7 +137,7 @@ var topologyRegistry = map[string]topologyView{
|
||||
"containers": {
|
||||
human: "Containers",
|
||||
parent: "",
|
||||
renderer: render.ContainerRenderer,
|
||||
renderer: render.ContainerWithImageNameRenderer{},
|
||||
},
|
||||
"containers-by-image": {
|
||||
human: "by image",
|
||||
|
||||
@@ -212,7 +212,7 @@ var (
|
||||
ID: test.ClientContainerID,
|
||||
LabelMajor: "client",
|
||||
LabelMinor: test.ClientHostName,
|
||||
Rank: test.ClientContainerImageID,
|
||||
Rank: test.ClientContainerImageName,
|
||||
Pseudo: false,
|
||||
Origins: report.MakeIDList(
|
||||
test.ClientContainerImageNodeID,
|
||||
@@ -233,7 +233,7 @@ var (
|
||||
ID: test.ServerContainerID,
|
||||
LabelMajor: "server",
|
||||
LabelMinor: test.ServerHostName,
|
||||
Rank: test.ServerContainerImageID,
|
||||
Rank: test.ServerContainerImageName,
|
||||
Pseudo: false,
|
||||
Origins: report.MakeIDList(
|
||||
test.ServerContainerImageNodeID,
|
||||
|
||||
@@ -398,6 +398,14 @@ func MapContainer2ContainerImage(n RenderableNode, _ report.Networks) Renderable
|
||||
return RenderableNodes{id: result}
|
||||
}
|
||||
|
||||
func imageNameWithoutVersion(name string) string {
|
||||
parts := strings.SplitN(name, ":", 2)
|
||||
if len(parts) == 2 {
|
||||
return parts[0]
|
||||
}
|
||||
return name
|
||||
}
|
||||
|
||||
// MapContainerImage2Name maps container images RenderableNodes to
|
||||
// RenderableNodes for each container image name.
|
||||
//
|
||||
@@ -414,10 +422,7 @@ func MapContainerImage2Name(n RenderableNode, _ report.Networks) RenderableNodes
|
||||
return RenderableNodes{}
|
||||
}
|
||||
|
||||
parts := strings.SplitN(name, ":", 2)
|
||||
if len(parts) == 2 {
|
||||
name = parts[0]
|
||||
}
|
||||
name = imageNameWithoutVersion(name)
|
||||
|
||||
node := NewDerivedNode(name, n)
|
||||
node.LabelMajor = name
|
||||
|
||||
@@ -123,6 +123,40 @@ var ContainerRenderer = MakeReduce(
|
||||
},
|
||||
)
|
||||
|
||||
// ContainerWithImageNameRenderer is a Renderer which produces a container
|
||||
// graph where the ranks are the image names, not their IDs
|
||||
type ContainerWithImageNameRenderer struct{}
|
||||
|
||||
// Render produces a process graph where the minor labels contain the
|
||||
// container name, if found.
|
||||
func (r ContainerWithImageNameRenderer) Render(rpt report.Report) RenderableNodes {
|
||||
containers := ContainerRenderer.Render(rpt)
|
||||
images := Map{
|
||||
MapFunc: MapContainerImageIdentity,
|
||||
Renderer: SelectContainerImage,
|
||||
}.Render(rpt)
|
||||
|
||||
for id, c := range containers {
|
||||
imageID, ok := c.Node.Metadata[docker.ImageID]
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
image, ok := images[imageID]
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
c.Rank = imageNameWithoutVersion(image.LabelMajor)
|
||||
containers[id] = c
|
||||
}
|
||||
|
||||
return containers
|
||||
}
|
||||
|
||||
// EdgeMetadata produces an EdgeMetadata for a given edge.
|
||||
func (r ContainerWithImageNameRenderer) EdgeMetadata(rpt report.Report, localID, remoteID string) report.EdgeMetadata {
|
||||
return ContainerRenderer.EdgeMetadata(rpt, localID, remoteID)
|
||||
}
|
||||
|
||||
// ContainerImageRenderer is a Renderer which produces a renderable container
|
||||
// image graph by merging the container graph and the container image topology.
|
||||
var ContainerImageRenderer = Map{
|
||||
|
||||
@@ -26,7 +26,7 @@ func TestProcessNameRenderer(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestContainerRenderer(t *testing.T) {
|
||||
have := expected.Sterilize(render.ContainerRenderer.Render(test.Report))
|
||||
have := expected.Sterilize(render.ContainerWithImageNameRenderer{}.Render(test.Report))
|
||||
want := expected.RenderedContainers
|
||||
if !reflect.DeepEqual(want, have) {
|
||||
t.Error(test.Diff(want, have))
|
||||
|
||||
Reference in New Issue
Block a user