[FIX]: import all requested images (#701, @mszostok)
This commit is contained in:
parent
5d0d0acc77
commit
0c02607d1e
@ -178,7 +178,11 @@ func ImageImportIntoClusterMulti(ctx context.Context, runtime runtimes.Runtime,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func findImages(ctx context.Context, runtime runtimes.Runtime, requestedImages []string) (imagesFromRuntime, imagesFromTar []string, err error) {
|
type runtimeImageGetter interface {
|
||||||
|
GetImages(context.Context) ([]string, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
func findImages(ctx context.Context, runtime runtimeImageGetter, requestedImages []string) (imagesFromRuntime, imagesFromTar []string, err error) {
|
||||||
runtimeImages, err := runtime.GetImages(ctx)
|
runtimeImages, err := runtime.GetImages(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorln("Failed to fetch list of existing images from runtime")
|
log.Errorln("Failed to fetch list of existing images from runtime")
|
||||||
@ -189,14 +193,14 @@ func findImages(ctx context.Context, runtime runtimes.Runtime, requestedImages [
|
|||||||
if isFile(requestedImage) {
|
if isFile(requestedImage) {
|
||||||
imagesFromTar = append(imagesFromTar, requestedImage)
|
imagesFromTar = append(imagesFromTar, requestedImage)
|
||||||
log.Debugf("Selected image '%s' is a file", requestedImage)
|
log.Debugf("Selected image '%s' is a file", requestedImage)
|
||||||
break
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
runtimeImage, found := findRuntimeImage(requestedImage, runtimeImages)
|
runtimeImage, found := findRuntimeImage(requestedImage, runtimeImages)
|
||||||
if found {
|
if found {
|
||||||
imagesFromRuntime = append(imagesFromRuntime, runtimeImage)
|
imagesFromRuntime = append(imagesFromRuntime, runtimeImage)
|
||||||
log.Debugf("Selected image '%s' (found as '%s') in runtime", requestedImage, runtimeImage)
|
log.Debugf("Selected image '%s' (found as '%s') in runtime", requestedImage, runtimeImage)
|
||||||
break
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Warnf("Image '%s' is not a file and couldn't be found in the container runtime", requestedImage)
|
log.Warnf("Image '%s' is not a file and couldn't be found in the container runtime", requestedImage)
|
||||||
|
@ -23,7 +23,12 @@ THE SOFTWARE.
|
|||||||
package tools
|
package tools
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/go-test/deep"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Test_findRuntimeImage(T *testing.T) {
|
func Test_findRuntimeImage(T *testing.T) {
|
||||||
@ -170,3 +175,44 @@ func Test_findRuntimeImage(T *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_findImages(t *testing.T) {
|
||||||
|
// given
|
||||||
|
tarImage, err := ioutil.TempFile("", "images.tgz")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal("Failed to create temporary file")
|
||||||
|
}
|
||||||
|
defer os.Remove(tarImage.Name())
|
||||||
|
|
||||||
|
tarImages := []string{tarImage.Name()}
|
||||||
|
runtimeImages := []string{
|
||||||
|
"alpine:version",
|
||||||
|
"busybox:latest",
|
||||||
|
}
|
||||||
|
runtime := &FakeRuntimeImageGetter{runtimeImages: runtimeImages}
|
||||||
|
|
||||||
|
requestedImages := append(runtimeImages, tarImages...)
|
||||||
|
|
||||||
|
// when
|
||||||
|
foundRuntimeImages, foundTarImages, err := findImages(context.Background(), runtime, requestedImages)
|
||||||
|
|
||||||
|
// then
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Got unexpected error %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if diff := deep.Equal(foundRuntimeImages, runtimeImages); diff != nil {
|
||||||
|
t.Errorf("Found runtime images\n%+v\ndoes not match expected runtime images\n%+v\nDiff:\n%+v", foundRuntimeImages, runtimeImages, diff)
|
||||||
|
}
|
||||||
|
if diff := deep.Equal(foundTarImages, tarImages); diff != nil {
|
||||||
|
t.Errorf("Found tar images\n%+v\ndoes not match expected tar images\n%+v\nDiff:\n%+v", foundTarImages, runtimeImages, diff)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type FakeRuntimeImageGetter struct {
|
||||||
|
runtimeImages []string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *FakeRuntimeImageGetter) GetImages(_ context.Context) ([]string, error) {
|
||||||
|
return f.runtimeImages, nil
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user