From 417f36281129434cfa57fcaffb7f10b28b36e2e6 Mon Sep 17 00:00:00 2001
From: Jhon Honce <jhonce@redhat.com>
Date: Thu, 18 Mar 2021 12:17:11 -0700
Subject: Cleanup /libpod/images/load handler

* Remove orphaned code
* Add meaningful error from LoadImageFromSingleImageArchive() when
  heuristic fails to determine payload format
* Correct swagger to output correct types and headers

Signed-off-by: Jhon Honce <jhonce@redhat.com>
---
 libpod/runtime_img.go | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

(limited to 'libpod')

diff --git a/libpod/runtime_img.go b/libpod/runtime_img.go
index 90b11f8ca..13ac42e7d 100644
--- a/libpod/runtime_img.go
+++ b/libpod/runtime_img.go
@@ -313,15 +313,23 @@ func (r *Runtime) LoadImageFromSingleImageArchive(ctx context.Context, writer io
 		func() (types.ImageReference, error) {
 			return layout.NewReference(inputFile, "")
 		},
+		func() (types.ImageReference, error) {
+			// This item needs to be last to break out of loop and report meaningful error message
+			return nil,
+				errors.New("payload does not match any of the supported image formats (oci-archive, oci-dir, docker-archive, docker-dir)")
+		},
 	} {
 		src, err := referenceFn()
-		if err == nil && src != nil {
-			newImages, err := r.ImageRuntime().LoadFromArchiveReference(ctx, src, signaturePolicy, writer)
-			if err == nil {
-				return getImageNames(newImages), nil
-			}
+		if err != nil {
 			saveErr = err
+			continue
+		}
+
+		newImages, err := r.ImageRuntime().LoadFromArchiveReference(ctx, src, signaturePolicy, writer)
+		if err == nil {
+			return getImageNames(newImages), nil
 		}
+		saveErr = err
 	}
 	return "", errors.Wrapf(saveErr, "error pulling image")
 }
-- 
cgit v1.2.3-54-g00ecf