mirror of
https://github.com/containers/podman.git
synced 2025-05-21 00:56:36 +08:00
Do not pass name argument to Load API
Not pass the name argument to Load API. Specify in the document the usage of the optional argument is tagging an additional image. Close #7337 Signed-off-by: Qi Wang <qiwan@redhat.com>
This commit is contained in:
@ -10,7 +10,7 @@ podman\-load - Load image(s) from a tar archive into container storage
|
||||
|
||||
## DESCRIPTION
|
||||
**podman load** loads an image from either an **oci-archive** or a **docker-archive** stored on the local machine into container storage. **podman load** reads from stdin by default or a file if the **input** option is set.
|
||||
You can also specify a name for the image if the archive does not contain a named reference, of if you want an additional name for the local image.
|
||||
You can also specify a name for the image if the archive is of single image and load will tag an additional image with the name:tag.
|
||||
**podman load** is used for loading from the archive generated by **podman save**, that includes the image parent layers. To load the archive of container's filesystem created by **podman export**, use **podman import**.
|
||||
|
||||
The local client further supports loading an **oci-dir** or a **docker-dir** as created with **podman save** (1).
|
||||
|
@ -8,7 +8,6 @@ import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/containers/buildah/imagebuildah"
|
||||
"github.com/containers/image/v5/directory"
|
||||
@ -276,56 +275,47 @@ func DownloadFromFile(reader *os.File) (string, error) {
|
||||
}
|
||||
|
||||
// LoadImage loads a container image into local storage
|
||||
func (r *Runtime) LoadImage(ctx context.Context, name, inputFile string, writer io.Writer, signaturePolicy string) (string, error) {
|
||||
var (
|
||||
newImages []*image.Image
|
||||
err error
|
||||
src types.ImageReference
|
||||
)
|
||||
func (r *Runtime) LoadImage(ctx context.Context, inputFile string, writer io.Writer, signaturePolicy string) (string, error) {
|
||||
if newImages, err := r.LoadAllImageFromArchive(ctx, writer, inputFile, signaturePolicy); err == nil {
|
||||
return newImages, nil
|
||||
}
|
||||
return r.LoadImageFromSingleImageArchive(ctx, writer, inputFile, signaturePolicy)
|
||||
}
|
||||
|
||||
if name == "" {
|
||||
newImages, err = r.ImageRuntime().LoadAllImagesFromDockerArchive(ctx, inputFile, signaturePolicy, writer)
|
||||
// LoadAllImageFromArchive loads all images from the archive of multi-image that inputFile points to.
|
||||
func (r *Runtime) LoadAllImageFromArchive(ctx context.Context, writer io.Writer, inputFile, signaturePolicy string) (string, error) {
|
||||
newImages, err := r.ImageRuntime().LoadAllImagesFromDockerArchive(ctx, inputFile, signaturePolicy, writer)
|
||||
if err == nil {
|
||||
return getImageNames(newImages), nil
|
||||
}
|
||||
}
|
||||
return "", err
|
||||
}
|
||||
|
||||
// LoadImageFromSingleImageArchive load image from the archive of single image that inputFile points to.
|
||||
func (r *Runtime) LoadImageFromSingleImageArchive(ctx context.Context, writer io.Writer, inputFile, signaturePolicy string) (string, error) {
|
||||
var err error
|
||||
for _, referenceFn := range []func() (types.ImageReference, error){
|
||||
func() (types.ImageReference, error) {
|
||||
return dockerarchive.ParseReference(inputFile)
|
||||
},
|
||||
func() (types.ImageReference, error) {
|
||||
return ociarchive.NewReference(inputFile, name) // name may be ""
|
||||
},
|
||||
func() (types.ImageReference, error) {
|
||||
// prepend "localhost/" to support local image saved with this semantics
|
||||
if !strings.Contains(name, "/") {
|
||||
return ociarchive.NewReference(inputFile, fmt.Sprintf("%s/%s", image.DefaultLocalRegistry, name))
|
||||
}
|
||||
return nil, nil
|
||||
return ociarchive.NewReference(inputFile, "")
|
||||
},
|
||||
func() (types.ImageReference, error) {
|
||||
return directory.NewReference(inputFile)
|
||||
},
|
||||
func() (types.ImageReference, error) {
|
||||
return layout.NewReference(inputFile, name)
|
||||
},
|
||||
func() (types.ImageReference, error) {
|
||||
// prepend "localhost/" to support local image saved with this semantics
|
||||
if !strings.Contains(name, "/") {
|
||||
return layout.NewReference(inputFile, fmt.Sprintf("%s/%s", image.DefaultLocalRegistry, name))
|
||||
}
|
||||
return nil, nil
|
||||
return layout.NewReference(inputFile, "")
|
||||
},
|
||||
} {
|
||||
src, err = referenceFn()
|
||||
src, err := referenceFn()
|
||||
if err == nil && src != nil {
|
||||
if newImages, err = r.ImageRuntime().LoadFromArchiveReference(ctx, src, signaturePolicy, writer); err == nil {
|
||||
if newImages, err := r.ImageRuntime().LoadFromArchiveReference(ctx, src, signaturePolicy, writer); err == nil {
|
||||
return getImageNames(newImages), nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", errors.Wrapf(err, "error pulling %q", name)
|
||||
return "", errors.Wrapf(err, "error pulling image")
|
||||
}
|
||||
|
||||
func getImageNames(images []*image.Image) string {
|
||||
|
@ -390,7 +390,7 @@ func LoadImages(w http.ResponseWriter, r *http.Request) {
|
||||
utils.Error(w, "Something went wrong.", http.StatusInternalServerError, errors.Wrap(err, "failed to write temporary file"))
|
||||
return
|
||||
}
|
||||
id, err := runtime.LoadImage(r.Context(), "", f.Name(), writer, "")
|
||||
id, err := runtime.LoadImage(r.Context(), f.Name(), writer, "")
|
||||
if err != nil {
|
||||
utils.Error(w, "Something went wrong.", http.StatusInternalServerError, errors.Wrap(err, "failed to load image"))
|
||||
return
|
||||
|
@ -336,7 +336,7 @@ func ImagesLoad(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
tmpfile.Close()
|
||||
loadedImage, err := runtime.LoadImage(context.Background(), query.Reference, tmpfile.Name(), os.Stderr, "")
|
||||
loadedImage, err := runtime.LoadImage(context.Background(), tmpfile.Name(), os.Stderr, "")
|
||||
if err != nil {
|
||||
utils.Error(w, "Something went wrong.", http.StatusInternalServerError, errors.Wrap(err, "unable to load image"))
|
||||
return
|
||||
|
@ -458,7 +458,7 @@ func (ir *ImageEngine) Load(ctx context.Context, opts entities.ImageLoadOptions)
|
||||
if !opts.Quiet {
|
||||
writer = os.Stderr
|
||||
}
|
||||
name, err := ir.Libpod.LoadImage(ctx, opts.Name, opts.Input, writer, opts.SignaturePolicy)
|
||||
name, err := ir.Libpod.LoadImage(ctx, opts.Input, writer, opts.SignaturePolicy)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
Reference in New Issue
Block a user