Remove unnecessary GetImageIDAndOS use GetImage

Signed-off-by: Daniel Nephin <dnephin@docker.com>
This commit is contained in:
Daniel Nephin 2018-02-14 15:19:37 -05:00
parent 2b1a2b10af
commit c10e6a4d15
4 changed files with 20 additions and 30 deletions

View file

@ -24,32 +24,30 @@ func (e ErrImageDoesNotExist) Error() string {
// NotFound implements the NotFound interface
func (e ErrImageDoesNotExist) NotFound() {}
// GetImageIDAndOS returns an image ID and operating system corresponding to the image referred to by
// refOrID.
// called from list.go foldFilter()
func (i ImageService) GetImageIDAndOS(refOrID string) (image.ID, string, error) {
// GetImage returns an image corresponding to the image referred to by refOrID.
func (i *ImageService) GetImage(refOrID string) (*image.Image, error) {
ref, err := reference.ParseAnyReference(refOrID)
if err != nil {
return "", "", errdefs.InvalidParameter(err)
return nil, errdefs.InvalidParameter(err)
}
namedRef, ok := ref.(reference.Named)
if !ok {
digested, ok := ref.(reference.Digested)
if !ok {
return "", "", ErrImageDoesNotExist{ref}
return nil, ErrImageDoesNotExist{ref}
}
id := image.IDFromDigest(digested.Digest())
if img, err := i.imageStore.Get(id); err == nil {
return id, img.OperatingSystem(), nil
return img, nil
}
return "", "", ErrImageDoesNotExist{ref}
return nil, ErrImageDoesNotExist{ref}
}
if digest, err := i.referenceStore.Get(namedRef); err == nil {
// Search the image stores to get the operating system, defaulting to host OS.
id := image.IDFromDigest(digest)
if img, err := i.imageStore.Get(id); err == nil {
return id, img.OperatingSystem(), nil
return img, nil
}
}
@ -57,19 +55,10 @@ func (i ImageService) GetImageIDAndOS(refOrID string) (image.ID, string, error)
if id, err := i.imageStore.Search(refOrID); err == nil {
img, err := i.imageStore.Get(id)
if err != nil {
return "", "", ErrImageDoesNotExist{ref}
return nil, ErrImageDoesNotExist{ref}
}
return id, img.OperatingSystem(), nil
return img, nil
}
return "", "", ErrImageDoesNotExist{ref}
}
// GetImage returns an image corresponding to the image referred to by refOrID.
func (i *ImageService) GetImage(refOrID string) (*image.Image, error) {
imgID, _, err := i.GetImageIDAndOS(refOrID)
if err != nil {
return nil, err
}
return i.imageStore.Get(imgID)
return nil, ErrImageDoesNotExist{ref}
}

View file

@ -64,14 +64,15 @@ func (i *ImageService) ImageDelete(imageRef string, force, prune bool) ([]types.
start := time.Now()
records := []types.ImageDeleteResponseItem{}
imgID, operatingSystem, err := i.GetImageIDAndOS(imageRef)
img, err := i.GetImage(imageRef)
if err != nil {
return nil, err
}
if !system.IsOSSupported(operatingSystem) {
if !system.IsOSSupported(img.OperatingSystem()) {
return nil, errors.Errorf("unable to delete image: %q", system.ErrNotSupportedOperatingSystem)
}
imgID := img.ID()
repoRefs := i.referenceStore.References(imgID.Digest())
using := func(c *container.Container) bool {

View file

@ -8,7 +8,7 @@ import (
// TagImage creates the tag specified by newTag, pointing to the image named
// imageName (alternatively, imageName can also be an image ID).
func (i *ImageService) TagImage(imageName, repository, tag string) (string, error) {
imageID, _, err := i.GetImageIDAndOS(imageName)
img, err := i.GetImage(imageName)
if err != nil {
return "", err
}
@ -23,7 +23,7 @@ func (i *ImageService) TagImage(imageName, repository, tag string) (string, erro
}
}
err = i.TagImageWithReference(imageID, newTag)
err = i.TagImageWithReference(img.ID(), newTag)
return reference.FamiliarString(newTag), err
}

View file

@ -324,17 +324,17 @@ func (daemon *Daemon) foldFilter(view container.View, config *types.ContainerLis
if psFilters.Contains("ancestor") {
ancestorFilter = true
psFilters.WalkValues("ancestor", func(ancestor string) error {
id, _, err := daemon.imageService.GetImageIDAndOS(ancestor)
img, err := daemon.imageService.GetImage(ancestor)
if err != nil {
logrus.Warnf("Error while looking up for image %v", ancestor)
return nil
}
if imagesFilter[id] {
if imagesFilter[img.ID()] {
// Already seen this ancestor, skip it
return nil
}
// Then walk down the graph and put the imageIds in imagesFilter
populateImageFilterByParents(imagesFilter, id, daemon.imageService.Children)
populateImageFilterByParents(imagesFilter, img.ID(), daemon.imageService.Children)
return nil
})
}
@ -592,11 +592,11 @@ func (daemon *Daemon) refreshImage(s *container.Snapshot, ctx *listContext) (*ty
c := s.Container
image := s.Image // keep the original ref if still valid (hasn't changed)
if image != s.ImageID {
id, _, err := daemon.imageService.GetImageIDAndOS(image)
img, err := daemon.imageService.GetImage(image)
if _, isDNE := err.(images.ErrImageDoesNotExist); err != nil && !isDNE {
return nil, err
}
if err != nil || id.String() != s.ImageID {
if err != nil || img.ImageID() != s.ImageID {
// ref changed, we need to use original ID
image = s.ImageID
}