diff options
author | Valentin Rothberg <vrothberg@suse.com> | 2018-03-12 19:07:07 +0100 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-03-14 14:01:53 +0000 |
commit | 9b2f81b07bd5d2a1e0fef391022ad39090d547d0 (patch) | |
tree | 16d0b7d61bae3023f5c9eacba023b83a1e15a9c8 | |
parent | 3fe87b011dd2b65b9d502a5195221666b7b140dd (diff) | |
download | podman-9b2f81b07bd5d2a1e0fef391022ad39090d547d0.tar.gz podman-9b2f81b07bd5d2a1e0fef391022ad39090d547d0.tar.bz2 podman-9b2f81b07bd5d2a1e0fef391022ad39090d547d0.zip |
podman-images: return correct image list
Return and print the correct list of images by adding all specified
RepoTags to one image object, and priting them separately in
repository:repotag pairs.
Signed-off-by: Valentin Rothberg <vrothberg@suse.com>
Closes: #477
Approved by: rhatdan
-rw-r--r-- | cmd/podman/images.go | 21 | ||||
-rw-r--r-- | libpod/runtime_img.go | 16 |
2 files changed, 23 insertions, 14 deletions
diff --git a/cmd/podman/images.go b/cmd/podman/images.go index 2dcd743cf..846f00c98 100644 --- a/cmd/podman/images.go +++ b/cmd/podman/images.go @@ -182,15 +182,20 @@ func getImagesTemplateOutput(runtime *libpod.Runtime, images []inspect.ImageResu if !opts.noTrunc { imageID = shortID(img.ID) } - params := imagesTemplateParams{ - Repository: img.Repository, - Tag: img.Tag, - ID: imageID, - Digest: img.Digest, - Created: units.HumanDuration(time.Since((createdTime))) + " ago", - Size: units.HumanSizeWithPrecision(float64(*img.Size), 3), + // get all specified repo:tag pairs and print them separately + for repo, tags := range libpod.ReposToMap(img.RepoTags) { + for _, tag := range tags { + params := imagesTemplateParams{ + Repository: repo, + Tag: tag, + ID: imageID, + Digest: img.Digest, + Created: units.HumanDuration(time.Since((createdTime))) + " ago", + Size: units.HumanSizeWithPrecision(float64(*img.Size), 3), + } + imagesOutput = append(imagesOutput, params) + } } - imagesOutput = append(imagesOutput, params) } return } diff --git a/libpod/runtime_img.go b/libpod/runtime_img.go index 06bd474d6..53d39ffca 100644 --- a/libpod/runtime_img.go +++ b/libpod/runtime_img.go @@ -1298,9 +1298,11 @@ func imageSize(img types.ImageSource) *uint64 { return nil } -func reposToMap(repotags []string) map[string]string { +// ReposToMap parses the specified repotags and returns a map with repositories +// as keys and the corresponding arrays of tags as values. +func ReposToMap(repotags []string) map[string][]string { // map format is repo -> tag - repos := make(map[string]string) + repos := make(map[string][]string) for _, repo := range repotags { var repository, tag string if len(repo) > 0 { @@ -1308,10 +1310,10 @@ func reposToMap(repotags []string) map[string]string { repository = repo[0:li] tag = repo[li+1:] } - repos[repository] = tag + repos[repository] = append(repos[repository], tag) } if len(repos) == 0 { - repos["<none>"] = "<none" + repos["<none>"] = []string{"<none>"} } return repos } @@ -1348,18 +1350,20 @@ func (r *Runtime) GetImageResults() ([]inspect.ImageResult, error) { dangling = true } - for repo, tag := range reposToMap(image.Names) { + for repo, tags := range ReposToMap(image.Names) { + // use the first pair as the image's default repo and tag results = append(results, inspect.ImageResult{ ID: image.ID, Repository: repo, RepoTags: image.Names, - Tag: tag, + Tag: tags[0], Size: imageSize(img), Digest: image.Digest, Created: image.Created, Labels: imgInspect.Labels, Dangling: dangling, }) + break } } |