mirror of
https://github.com/containers/podman.git
synced 2025-06-23 02:18:13 +08:00
Not use local image create/add manifest
Avoid using the image from load storage for `manifest create` and `manifest add` since the local image does not include other entries of the list from the registry. `--all` flag of `manifest create` and `manifest add` can not add all of the lists as expected. Signed-off-by: Qi Wang <qiwan@redhat.com>
This commit is contained in:
@ -2,13 +2,14 @@ package image
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"github.com/containers/buildah/manifests"
|
"github.com/containers/buildah/manifests"
|
||||||
|
"github.com/containers/image/v5/docker"
|
||||||
"github.com/containers/image/v5/manifest"
|
"github.com/containers/image/v5/manifest"
|
||||||
"github.com/containers/image/v5/transports/alltransports"
|
"github.com/containers/image/v5/transports/alltransports"
|
||||||
"github.com/containers/image/v5/types"
|
"github.com/containers/image/v5/types"
|
||||||
"github.com/opencontainers/go-digest"
|
"github.com/opencontainers/go-digest"
|
||||||
"github.com/pkg/errors"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Options for adding a manifest
|
// Options for adding a manifest
|
||||||
@ -69,19 +70,10 @@ func CreateManifestList(rt *Runtime, systemContext types.SystemContext, names []
|
|||||||
list := manifests.Create()
|
list := manifests.Create()
|
||||||
opts := ManifestAddOpts{Images: names, All: all}
|
opts := ManifestAddOpts{Images: names, All: all}
|
||||||
for _, img := range imgs {
|
for _, img := range imgs {
|
||||||
var ref types.ImageReference
|
ref, err := alltransports.ParseImageName(img)
|
||||||
newImage, err := rt.NewFromLocal(img)
|
|
||||||
if err == nil {
|
|
||||||
ir, err := newImage.toImageRef(context.Background())
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
dockerPrefix := fmt.Sprintf("%s://", docker.Transport.Name())
|
||||||
}
|
ref, err = alltransports.ParseImageName(fmt.Sprintf("%s%s", dockerPrefix, img))
|
||||||
if ir == nil {
|
|
||||||
return "", errors.New("unable to convert image to ImageReference")
|
|
||||||
}
|
|
||||||
ref = ir.Reference()
|
|
||||||
} else {
|
|
||||||
ref, err = alltransports.ParseImageName(img)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
@ -134,18 +126,10 @@ func addManifestToList(ref types.ImageReference, list manifests.List, systemCont
|
|||||||
|
|
||||||
// AddManifest adds a manifest to a given manifest list.
|
// AddManifest adds a manifest to a given manifest list.
|
||||||
func (i *Image) AddManifest(systemContext types.SystemContext, opts ManifestAddOpts) (string, error) {
|
func (i *Image) AddManifest(systemContext types.SystemContext, opts ManifestAddOpts) (string, error) {
|
||||||
var (
|
ref, err := alltransports.ParseImageName(opts.Images[0])
|
||||||
ref types.ImageReference
|
|
||||||
)
|
|
||||||
newImage, err := i.imageruntime.NewFromLocal(opts.Images[0])
|
|
||||||
if err == nil {
|
|
||||||
ir, err := newImage.toImageRef(context.Background())
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
dockerPrefix := fmt.Sprintf("%s://", docker.Transport.Name())
|
||||||
}
|
ref, err = alltransports.ParseImageName(fmt.Sprintf("%s%s", dockerPrefix, opts.Images[0]))
|
||||||
ref = ir.Reference()
|
|
||||||
} else {
|
|
||||||
ref, err = alltransports.ParseImageName(opts.Images[0])
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user