From 3380e905de0a804bbb92baf5b841857d3173461b Mon Sep 17 00:00:00 2001 From: James Sulinski Date: Thu, 9 Feb 2017 00:20:10 -0800 Subject: [PATCH] Add image information for docker containers --- config/config.go | 1 + models/models.go | 1 + scan/base.go | 10 ++++++---- scan/serverapi.go | 1 + 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/config/config.go b/config/config.go index 1bb7bc773f..628502cbd9 100644 --- a/config/config.go +++ b/config/config.go @@ -398,4 +398,5 @@ type Container struct { ContainerID string Name string Type string + Image string } diff --git a/models/models.go b/models/models.go index 1ac3e127a5..1d329bb4c3 100644 --- a/models/models.go +++ b/models/models.go @@ -452,6 +452,7 @@ type DistroAdvisory struct { type Container struct { ContainerID string Name string + Image string } // Platform has platform information diff --git a/scan/base.go b/scan/base.go index 313475c1b3..5def53e11a 100644 --- a/scan/base.go +++ b/scan/base.go @@ -84,7 +84,7 @@ func (l base) getLackDependencies() []string { func (l base) allContainers() (containers []config.Container, err error) { switch l.ServerInfo.Container.Type { case "", "docker": - stdout, err := l.dockerPs("-a --format '{{.ID}} {{.Names}}'") + stdout, err := l.dockerPs("-a --format '{{.ID}} {{.Names}} {{.Image}}'") if err != nil { return containers, err } @@ -104,7 +104,7 @@ func (l base) allContainers() (containers []config.Container, err error) { func (l *base) runningContainers() (containers []config.Container, err error) { switch l.ServerInfo.Container.Type { case "", "docker": - stdout, err := l.dockerPs("--format '{{.ID}} {{.Names}}'") + stdout, err := l.dockerPs("--format '{{.ID}} {{.Names}} {{.Image}}'") if err != nil { return containers, err } @@ -124,7 +124,7 @@ func (l *base) runningContainers() (containers []config.Container, err error) { func (l *base) exitedContainers() (containers []config.Container, err error) { switch l.ServerInfo.Container.Type { case "", "docker": - stdout, err := l.dockerPs("--filter 'status=exited' --format '{{.ID}} {{.Names}}'") + stdout, err := l.dockerPs("--filter 'status=exited' --format '{{.ID}} {{.Names}} {{.Image}}'") if err != nil { return containers, err } @@ -166,12 +166,13 @@ func (l *base) parseDockerPs(stdout string) (containers []config.Container, err if len(fields) == 0 { break } - if len(fields) != 2 { + if len(fields) != 3 { return containers, fmt.Errorf("Unknown format: %s", line) } containers = append(containers, config.Container{ ContainerID: fields[0], Name: fields[1], + Image: fields[2], }) } return @@ -279,6 +280,7 @@ func (l *base) convertToModel() (models.ScanResult, error) { container := models.Container{ ContainerID: l.ServerInfo.Container.ContainerID, Name: l.ServerInfo.Container.Name, + Image: l.ServerInfo.Container.Image, } return models.ScanResult{ diff --git a/scan/serverapi.go b/scan/serverapi.go index efc28dfce1..c7b08b90c6 100644 --- a/scan/serverapi.go +++ b/scan/serverapi.go @@ -284,6 +284,7 @@ func detectContainerOSesOnServer(containerHost osTypeInterface) (oses []osTypeIn copied.SetContainer(config.Container{ ContainerID: containerInfo.ContainerID, Name: containerInfo.Name, + Image: containerInfo.Image, Type: containerHostInfo.Container.Type, }) os := detectOS(copied)