Signed-off-by: Daniel Nephin <dnephin@docker.com>
| ... | ... |
@@ -24,32 +24,30 @@ func (e ErrImageDoesNotExist) Error() string {
|
| 24 | 24 |
// NotFound implements the NotFound interface |
| 25 | 25 |
func (e ErrImageDoesNotExist) NotFound() {}
|
| 26 | 26 |
|
| 27 |
-// GetImageIDAndOS returns an image ID and operating system corresponding to the image referred to by |
|
| 28 |
-// refOrID. |
|
| 29 |
-// called from list.go foldFilter() |
|
| 30 |
-func (i ImageService) GetImageIDAndOS(refOrID string) (image.ID, string, error) {
|
|
| 27 |
+// GetImage returns an image corresponding to the image referred to by refOrID. |
|
| 28 |
+func (i *ImageService) GetImage(refOrID string) (*image.Image, error) {
|
|
| 31 | 29 |
ref, err := reference.ParseAnyReference(refOrID) |
| 32 | 30 |
if err != nil {
|
| 33 |
- return "", "", errdefs.InvalidParameter(err) |
|
| 31 |
+ return nil, errdefs.InvalidParameter(err) |
|
| 34 | 32 |
} |
| 35 | 33 |
namedRef, ok := ref.(reference.Named) |
| 36 | 34 |
if !ok {
|
| 37 | 35 |
digested, ok := ref.(reference.Digested) |
| 38 | 36 |
if !ok {
|
| 39 |
- return "", "", ErrImageDoesNotExist{ref}
|
|
| 37 |
+ return nil, ErrImageDoesNotExist{ref}
|
|
| 40 | 38 |
} |
| 41 | 39 |
id := image.IDFromDigest(digested.Digest()) |
| 42 | 40 |
if img, err := i.imageStore.Get(id); err == nil {
|
| 43 |
- return id, img.OperatingSystem(), nil |
|
| 41 |
+ return img, nil |
|
| 44 | 42 |
} |
| 45 |
- return "", "", ErrImageDoesNotExist{ref}
|
|
| 43 |
+ return nil, ErrImageDoesNotExist{ref}
|
|
| 46 | 44 |
} |
| 47 | 45 |
|
| 48 | 46 |
if digest, err := i.referenceStore.Get(namedRef); err == nil {
|
| 49 | 47 |
// Search the image stores to get the operating system, defaulting to host OS. |
| 50 | 48 |
id := image.IDFromDigest(digest) |
| 51 | 49 |
if img, err := i.imageStore.Get(id); err == nil {
|
| 52 |
- return id, img.OperatingSystem(), nil |
|
| 50 |
+ return img, nil |
|
| 53 | 51 |
} |
| 54 | 52 |
} |
| 55 | 53 |
|
| ... | ... |
@@ -57,19 +55,10 @@ func (i ImageService) GetImageIDAndOS(refOrID string) (image.ID, string, error) |
| 57 | 57 |
if id, err := i.imageStore.Search(refOrID); err == nil {
|
| 58 | 58 |
img, err := i.imageStore.Get(id) |
| 59 | 59 |
if err != nil {
|
| 60 |
- return "", "", ErrImageDoesNotExist{ref}
|
|
| 60 |
+ return nil, ErrImageDoesNotExist{ref}
|
|
| 61 | 61 |
} |
| 62 |
- return id, img.OperatingSystem(), nil |
|
| 62 |
+ return img, nil |
|
| 63 | 63 |
} |
| 64 | 64 |
|
| 65 |
- return "", "", ErrImageDoesNotExist{ref}
|
|
| 66 |
-} |
|
| 67 |
- |
|
| 68 |
-// GetImage returns an image corresponding to the image referred to by refOrID. |
|
| 69 |
-func (i *ImageService) GetImage(refOrID string) (*image.Image, error) {
|
|
| 70 |
- imgID, _, err := i.GetImageIDAndOS(refOrID) |
|
| 71 |
- if err != nil {
|
|
| 72 |
- return nil, err |
|
| 73 |
- } |
|
| 74 |
- return i.imageStore.Get(imgID) |
|
| 65 |
+ return nil, ErrImageDoesNotExist{ref}
|
|
| 75 | 66 |
} |
| ... | ... |
@@ -64,14 +64,15 @@ func (i *ImageService) ImageDelete(imageRef string, force, prune bool) ([]types. |
| 64 | 64 |
start := time.Now() |
| 65 | 65 |
records := []types.ImageDeleteResponseItem{}
|
| 66 | 66 |
|
| 67 |
- imgID, operatingSystem, err := i.GetImageIDAndOS(imageRef) |
|
| 67 |
+ img, err := i.GetImage(imageRef) |
|
| 68 | 68 |
if err != nil {
|
| 69 | 69 |
return nil, err |
| 70 | 70 |
} |
| 71 |
- if !system.IsOSSupported(operatingSystem) {
|
|
| 71 |
+ if !system.IsOSSupported(img.OperatingSystem()) {
|
|
| 72 | 72 |
return nil, errors.Errorf("unable to delete image: %q", system.ErrNotSupportedOperatingSystem)
|
| 73 | 73 |
} |
| 74 | 74 |
|
| 75 |
+ imgID := img.ID() |
|
| 75 | 76 |
repoRefs := i.referenceStore.References(imgID.Digest()) |
| 76 | 77 |
|
| 77 | 78 |
using := func(c *container.Container) bool {
|
| ... | ... |
@@ -8,7 +8,7 @@ import ( |
| 8 | 8 |
// TagImage creates the tag specified by newTag, pointing to the image named |
| 9 | 9 |
// imageName (alternatively, imageName can also be an image ID). |
| 10 | 10 |
func (i *ImageService) TagImage(imageName, repository, tag string) (string, error) {
|
| 11 |
- imageID, _, err := i.GetImageIDAndOS(imageName) |
|
| 11 |
+ img, err := i.GetImage(imageName) |
|
| 12 | 12 |
if err != nil {
|
| 13 | 13 |
return "", err |
| 14 | 14 |
} |
| ... | ... |
@@ -23,7 +23,7 @@ func (i *ImageService) TagImage(imageName, repository, tag string) (string, erro |
| 23 | 23 |
} |
| 24 | 24 |
} |
| 25 | 25 |
|
| 26 |
- err = i.TagImageWithReference(imageID, newTag) |
|
| 26 |
+ err = i.TagImageWithReference(img.ID(), newTag) |
|
| 27 | 27 |
return reference.FamiliarString(newTag), err |
| 28 | 28 |
} |
| 29 | 29 |
|
| ... | ... |
@@ -324,17 +324,17 @@ func (daemon *Daemon) foldFilter(view container.View, config *types.ContainerLis |
| 324 | 324 |
if psFilters.Contains("ancestor") {
|
| 325 | 325 |
ancestorFilter = true |
| 326 | 326 |
psFilters.WalkValues("ancestor", func(ancestor string) error {
|
| 327 |
- id, _, err := daemon.imageService.GetImageIDAndOS(ancestor) |
|
| 327 |
+ img, err := daemon.imageService.GetImage(ancestor) |
|
| 328 | 328 |
if err != nil {
|
| 329 | 329 |
logrus.Warnf("Error while looking up for image %v", ancestor)
|
| 330 | 330 |
return nil |
| 331 | 331 |
} |
| 332 |
- if imagesFilter[id] {
|
|
| 332 |
+ if imagesFilter[img.ID()] {
|
|
| 333 | 333 |
// Already seen this ancestor, skip it |
| 334 | 334 |
return nil |
| 335 | 335 |
} |
| 336 | 336 |
// Then walk down the graph and put the imageIds in imagesFilter |
| 337 |
- populateImageFilterByParents(imagesFilter, id, daemon.imageService.Children) |
|
| 337 |
+ populateImageFilterByParents(imagesFilter, img.ID(), daemon.imageService.Children) |
|
| 338 | 338 |
return nil |
| 339 | 339 |
}) |
| 340 | 340 |
} |
| ... | ... |
@@ -592,11 +592,11 @@ func (daemon *Daemon) refreshImage(s *container.Snapshot, ctx *listContext) (*ty |
| 592 | 592 |
c := s.Container |
| 593 | 593 |
image := s.Image // keep the original ref if still valid (hasn't changed) |
| 594 | 594 |
if image != s.ImageID {
|
| 595 |
- id, _, err := daemon.imageService.GetImageIDAndOS(image) |
|
| 595 |
+ img, err := daemon.imageService.GetImage(image) |
|
| 596 | 596 |
if _, isDNE := err.(images.ErrImageDoesNotExist); err != nil && !isDNE {
|
| 597 | 597 |
return nil, err |
| 598 | 598 |
} |
| 599 |
- if err != nil || id.String() != s.ImageID {
|
|
| 599 |
+ if err != nil || img.ImageID() != s.ImageID {
|
|
| 600 | 600 |
// ref changed, we need to use original ID |
| 601 | 601 |
image = s.ImageID |
| 602 | 602 |
} |