diff options
author | W. Trevor King <wking@tremily.us> | 2019-01-08 21:46:20 -0800 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2019-01-09 22:29:18 +0000 |
commit | 0f6535cf6b4bfac265983c2fdd3482310ab4f39b (patch) | |
tree | 16bc07796a80a1ab567a86d089ebc08f5ea8366c /pkg | |
parent | a60090cfba3674c5c1223b270c5f46600e6ee07e (diff) | |
download | podman-0f6535cf6b4bfac265983c2fdd3482310ab4f39b.tar.gz podman-0f6535cf6b4bfac265983c2fdd3482310ab4f39b.tar.bz2 podman-0f6535cf6b4bfac265983c2fdd3482310ab4f39b.zip |
libpod/image: Use ParseNormalizedNamed in RepoDigests
Avoid generating
quay.io/openshift-release-dev/ocp-release@sha256@sha256:239... and
similar when the image name is already digest-based [1]. It's not
clear exactly how we get into this state, but as shown by the unit
tests, the new code handles this case correctly (while the previous
code does not).
[1]: https://github.com/containers/libpod/issues/2086
Signed-off-by: W. Trevor King <wking@tremily.us>
Closes: #2106
Approved by: rhatdan
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/varlinkapi/images.go | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/pkg/varlinkapi/images.go b/pkg/varlinkapi/images.go index 5e4cb4ccb..8f8934025 100644 --- a/pkg/varlinkapi/images.go +++ b/pkg/varlinkapi/images.go @@ -41,13 +41,18 @@ func (i *LibpodAPI) ListImages(call iopodman.VarlinkCall) error { for _, image := range images { labels, _ := image.Labels(getContext()) containers, _ := image.Containers() + repoDigests, err := image.RepoDigests() + if err != nil { + return err + } + size, _ := image.Size(getContext()) i := iopodman.ImageInList{ Id: image.ID(), ParentId: image.Parent, RepoTags: image.Names(), - RepoDigests: image.RepoDigests(), + RepoDigests: repoDigests, Created: image.Created().String(), Size: int64(*size), VirtualSize: image.VirtualSize, @@ -73,6 +78,10 @@ func (i *LibpodAPI) GetImage(call iopodman.VarlinkCall, name string) error { if err != nil { return err } + repoDigests, err := newImage.RepoDigests() + if err != nil { + return err + } size, err := newImage.Size(getContext()) if err != nil { return err @@ -82,7 +91,7 @@ func (i *LibpodAPI) GetImage(call iopodman.VarlinkCall, name string) error { Id: newImage.ID(), ParentId: newImage.Parent, RepoTags: newImage.Names(), - RepoDigests: newImage.RepoDigests(), + RepoDigests: repoDigests, Created: newImage.Created().String(), Size: int64(*size), VirtualSize: newImage.VirtualSize, |