summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pkg/api/handlers/compat/images.go14
-rw-r--r--test/apiv2/10-images.at19
2 files changed, 19 insertions, 14 deletions
diff --git a/pkg/api/handlers/compat/images.go b/pkg/api/handlers/compat/images.go
index 0f7e0ccf5..4b7a2a71c 100644
--- a/pkg/api/handlers/compat/images.go
+++ b/pkg/api/handlers/compat/images.go
@@ -443,7 +443,7 @@ func ExportImages(w http.ResponseWriter, r *http.Request) {
runtime := r.Context().Value("runtime").(*libpod.Runtime)
query := struct {
- Names string `schema:"names"`
+ Names []string `schema:"names"`
}{
// This is where you can override the golang default value for one of fields
}
@@ -451,8 +451,16 @@ func ExportImages(w http.ResponseWriter, r *http.Request) {
utils.Error(w, "Something went wrong.", http.StatusBadRequest, errors.Wrapf(err, "failed to parse parameters for %s", r.URL.String()))
return
}
- images := make([]string, 0)
- images = append(images, strings.Split(query.Names, ",")...)
+ if len(query.Names) <= 0 {
+ utils.Error(w, "Something went wrong.", http.StatusBadRequest, fmt.Errorf("no images to download"))
+ return
+ }
+ if len(query.Names) > 1 {
+ utils.Error(w, "Something went wrong.", http.StatusNotImplemented, fmt.Errorf("getting multiple image is not supported yet"))
+ return
+ }
+
+ images := query.Names
tmpfile, err := ioutil.TempFile("", "api.tar")
if err != nil {
utils.Error(w, "Something went wrong.", http.StatusInternalServerError, errors.Wrap(err, "unable to create tempfile"))
diff --git a/test/apiv2/10-images.at b/test/apiv2/10-images.at
index a6764371c..6f439ad85 100644
--- a/test/apiv2/10-images.at
+++ b/test/apiv2/10-images.at
@@ -140,17 +140,14 @@ t GET images/json?filters='{"reference":["test1"]}' 200 length=1
t DELETE libpod/images/test1:latest 200
-# Export more than one image
-# FIXME FIXME FIXME, this doesn't work:
-# not ok 64 [10-images] GET images/get?names=alpine,busybox : status
-# expected: 200
-# actual: 500
-# expected: 200
-# not ok 65 [10-images] GET images/get?names=alpine,busybox : output
- # expected: [POSIX tar archive]
-# actual: {"cause":"no such image","message":"unable to find a name and tag match for busybox in repotags: no such image","response":500}
-#
-#t GET images/get?names=alpine,busybox 200 '[POSIX tar archive]'
t GET "images/get?names=alpine" 200 '[POSIX tar archive]'
+podman pull busybox
+#t GET "images/get?names=alpine&names=busybox" 200 '[POSIX tar archive]'
+#img_cnt=$(tar xf "$WORKDIR/curl.result.out" manifest.json -O | jq "length")
+#is "$img_cnt" 2 "number of images in tar archive"
+# TODO getting multiple images is not supported yet
+# once it is supported replace the test below by the tests above
+t GET "images/get?names=alpine&names=busybox" 501
+
# vim: filetype=sh