Show container image details for containers.

This commit is contained in:
Tom Wilkie
2015-09-02 15:34:34 +00:00
parent 8610151518
commit d09a853fb2
4 changed files with 28 additions and 1 deletions

View File

@@ -141,6 +141,16 @@ func TestMakeDetailedContainerNode(t *testing.T) {
LabelMinor: test.ServerHostName,
Pseudo: false,
Tables: []render.Table{
{
Title: `Container Image "image/server"`,
Numeric: false,
Rank: 4,
Rows: []render.Row{
{"Image ID", test.ServerContainerImageID, "", false},
{`Label "foo1"`, `bar1`, "", false},
{`Label "foo2"`, `bar2`, "", false},
},
},
{
Title: `Container "server"`,
Numeric: false,

View File

@@ -215,6 +215,7 @@ var (
Rank: test.ClientContainerImageID,
Pseudo: false,
Origins: report.MakeIDList(
test.ClientContainerImageNodeID,
test.ClientContainerNodeID,
test.Client54001NodeID,
test.Client54002NodeID,
@@ -235,6 +236,7 @@ var (
Rank: test.ServerContainerImageID,
Pseudo: false,
Origins: report.MakeIDList(
test.ServerContainerImageNodeID,
test.ServerContainerNodeID,
test.Server80NodeID,
test.ServerProcessNodeID,

View File

@@ -121,7 +121,12 @@ func MapContainerIdentity(m RenderableNode, _ report.Networks) RenderableNodes {
rank = m.Metadata[docker.ImageID]
)
return RenderableNodes{id: NewRenderableNodeWith(id, major, minor, rank, m)}
node := NewRenderableNodeWith(id, major, minor, rank, m)
if imageID, ok := m.Metadata[docker.ImageID]; ok {
scope, _, _ := report.ParseContainerNodeID(m.ID)
node.Origins = node.Origins.Add(report.MakeContainerNodeID(scope, imageID))
}
return RenderableNodes{id: node}
}
// MapContainerImageIdentity maps a container image topology node to container

View File

@@ -87,6 +87,16 @@ func ParseEndpointNodeID(endpointNodeID string) (hostID, address, port string, o
return fields[0], fields[1], fields[2], true
}
// ParseContainerNodeID produces the host ID, and container id from an container
// node ID.
func ParseContainerNodeID(containerNodeID string) (hostID, containerID string, ok bool) {
fields := strings.SplitN(containerNodeID, ScopeDelim, 3)
if len(fields) != 2 {
return "", "", false
}
return fields[0], fields[1], true
}
// ParseAddressNodeID produces the host ID, address from an address node ID.
func ParseAddressNodeID(addressNodeID string) (hostID, address string, ok bool) {
fields := strings.SplitN(addressNodeID, ScopeDelim, 2)