// This allows us to tell clients that we don't have the image they asked for
// Where this gets hairy is the image store does not currently support multi-arch images, e.g.:
// An image `foo` may have a multi-arch manifest, but the image store only fetches the image for a specific platform
// The image store does not store the manifest list and image tags are assigned to architecture specific images.
// So we can have a `foo` image that is amd64 but the user requested armv7. If the user looks at the list of images.
// This may be confusing.
// The alternative to this is to return a errdefs.Conflict error with a helpful message, but clients will not be
// able to automatically tell what causes the conflict.
ifretImg.OS!=platform.OS{
retErr=errdefs.NotFound(errors.Errorf("image with reference %s was found but does not match the specified OS platform: wanted: %s, actual: %s",refOrID,platform.OS,retImg.OS))
retImg=nil
return
}
ifretImg.Architecture!=platform.Architecture{
retErr=errdefs.NotFound(errors.Errorf("image with reference %s was found but does not match the specified platform cpu architecture: wanted: %s, actual: %s",refOrID,platform.Architecture,retImg.Architecture))
retImg=nil
return
}
// Only validate variant if retImg has a variant set.
// The image variant may not be set since it's a newer field.
retErr=errdefs.NotFound(errors.Errorf("image with reference %s was found but does not match the specified platform cpu architecture variant: wanted: %s, actual: %s",refOrID,platform.Variant,retImg.Variant))