mirror of
				https://github.com/containers/podman.git
				synced 2025-11-04 08:56:05 +08:00 
			
		
		
		
	Move secrets package to buildah
Trying to remove circular dependencies between libpod and buildah. First step to move pkg content from libpod to buildah. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
		
							
								
								
									
										65
									
								
								vendor/github.com/containers/buildah/pull.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										65
									
								
								vendor/github.com/containers/buildah/pull.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -19,10 +19,9 @@ import (
 | 
			
		||||
	"github.com/containers/image/signature"
 | 
			
		||||
	is "github.com/containers/image/storage"
 | 
			
		||||
	"github.com/containers/image/transports"
 | 
			
		||||
	"github.com/containers/image/transports/alltransports"
 | 
			
		||||
	"github.com/containers/image/types"
 | 
			
		||||
	"github.com/containers/storage"
 | 
			
		||||
	"github.com/hashicorp/go-multierror"
 | 
			
		||||
	multierror "github.com/hashicorp/go-multierror"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
)
 | 
			
		||||
@ -52,15 +51,14 @@ type PullOptions struct {
 | 
			
		||||
	AllTags bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func localImageNameForReference(ctx context.Context, store storage.Store, srcRef types.ImageReference, spec string) (string, error) {
 | 
			
		||||
func localImageNameForReference(ctx context.Context, store storage.Store, srcRef types.ImageReference) (string, error) {
 | 
			
		||||
	if srcRef == nil {
 | 
			
		||||
		return "", errors.Errorf("reference to image is empty")
 | 
			
		||||
	}
 | 
			
		||||
	split := strings.SplitN(spec, ":", 2)
 | 
			
		||||
	file := split[len(split)-1]
 | 
			
		||||
	var name string
 | 
			
		||||
	switch srcRef.Transport().Name() {
 | 
			
		||||
	case dockerarchive.Transport.Name():
 | 
			
		||||
		file := srcRef.StringWithinTransport()
 | 
			
		||||
		tarSource, err := tarfile.NewSourceFromFile(file)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return "", errors.Wrapf(err, "error opening tarfile %q as a source image", file)
 | 
			
		||||
@ -104,14 +102,15 @@ func localImageNameForReference(ctx context.Context, store storage.Store, srcRef
 | 
			
		||||
		}
 | 
			
		||||
	case directory.Transport.Name():
 | 
			
		||||
		// supports pull from a directory
 | 
			
		||||
		name = split[1]
 | 
			
		||||
		name = srcRef.StringWithinTransport()
 | 
			
		||||
		// remove leading "/"
 | 
			
		||||
		if name[:1] == "/" {
 | 
			
		||||
			name = name[1:]
 | 
			
		||||
		}
 | 
			
		||||
	case oci.Transport.Name():
 | 
			
		||||
		// supports pull from a directory
 | 
			
		||||
		name = split[1]
 | 
			
		||||
		split := strings.SplitN(srcRef.StringWithinTransport(), ":", 2)
 | 
			
		||||
		name = split[0]
 | 
			
		||||
		// remove leading "/"
 | 
			
		||||
		if name[:1] == "/" {
 | 
			
		||||
			name = name[1:]
 | 
			
		||||
@ -175,21 +174,29 @@ func Pull(ctx context.Context, imageName string, options PullOptions) error {
 | 
			
		||||
			return errors.New("Non-docker transport is not supported, for --all-tags pulling")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		spec := transport + storageRef.DockerReference().Name()
 | 
			
		||||
		storageRef, err = alltransports.ParseImageName(spec)
 | 
			
		||||
		repo := reference.TrimNamed(storageRef.DockerReference())
 | 
			
		||||
		dockerRef, err := docker.NewReference(reference.TagNameOnly(storageRef.DockerReference()))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return errors.Wrapf(err, "error getting repository tags")
 | 
			
		||||
			return errors.Wrapf(err, "internal error creating docker.Transport reference for %s", storageRef.DockerReference().String())
 | 
			
		||||
		}
 | 
			
		||||
		tags, err := docker.GetRepositoryTags(ctx, systemContext, storageRef)
 | 
			
		||||
		tags, err := docker.GetRepositoryTags(ctx, systemContext, dockerRef)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return errors.Wrapf(err, "error getting repository tags")
 | 
			
		||||
		}
 | 
			
		||||
		for _, tag := range tags {
 | 
			
		||||
			name := spec + ":" + tag
 | 
			
		||||
			if options.ReportWriter != nil {
 | 
			
		||||
				options.ReportWriter.Write([]byte("Pulling " + name + "\n"))
 | 
			
		||||
			tagged, err := reference.WithTag(repo, tag)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				errs = multierror.Append(errs, err)
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			ref, err := pullImage(ctx, options.Store, transport, name, options, systemContext)
 | 
			
		||||
			taggedRef, err := docker.NewReference(tagged)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return errors.Wrapf(err, "internal error creating docker.Transport reference for %s", tagged.String())
 | 
			
		||||
			}
 | 
			
		||||
			if options.ReportWriter != nil {
 | 
			
		||||
				options.ReportWriter.Write([]byte("Pulling " + tagged.String() + "\n"))
 | 
			
		||||
			}
 | 
			
		||||
			ref, err := pullImage(ctx, options.Store, taggedRef, options, systemContext)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				errs = multierror.Append(errs, err)
 | 
			
		||||
				continue
 | 
			
		||||
@ -208,27 +215,7 @@ func Pull(ctx context.Context, imageName string, options PullOptions) error {
 | 
			
		||||
	return errs.ErrorOrNil()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func pullImage(ctx context.Context, store storage.Store, transport string, imageName string, options PullOptions, sc *types.SystemContext) (types.ImageReference, error) {
 | 
			
		||||
	spec := imageName
 | 
			
		||||
	srcRef, err := alltransports.ParseImageName(spec)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logrus.Debugf("error parsing image name %q, trying with transport %q: %v", spec, transport, err)
 | 
			
		||||
		if transport == "" {
 | 
			
		||||
			transport = util.DefaultTransport
 | 
			
		||||
		} else {
 | 
			
		||||
			if transport != util.DefaultTransport {
 | 
			
		||||
				transport = transport + ":"
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		spec = transport + spec
 | 
			
		||||
		srcRef2, err2 := alltransports.ParseImageName(spec)
 | 
			
		||||
		if err2 != nil {
 | 
			
		||||
			return nil, errors.Wrapf(err2, "error parsing image name %q", spec)
 | 
			
		||||
		}
 | 
			
		||||
		srcRef = srcRef2
 | 
			
		||||
	}
 | 
			
		||||
	logrus.Debugf("parsed image name %q", spec)
 | 
			
		||||
 | 
			
		||||
func pullImage(ctx context.Context, store storage.Store, srcRef types.ImageReference, options PullOptions, sc *types.SystemContext) (types.ImageReference, error) {
 | 
			
		||||
	blocked, err := isReferenceBlocked(srcRef, sc)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, errors.Wrapf(err, "error checking if pulling from registry for %q is blocked", transports.ImageName(srcRef))
 | 
			
		||||
@ -237,7 +224,7 @@ func pullImage(ctx context.Context, store storage.Store, transport string, image
 | 
			
		||||
		return nil, errors.Errorf("pull access to registry for %q is blocked by configuration", transports.ImageName(srcRef))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	destName, err := localImageNameForReference(ctx, store, srcRef, spec)
 | 
			
		||||
	destName, err := localImageNameForReference(ctx, store, srcRef)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, errors.Wrapf(err, "error computing local image name for %q", transports.ImageName(srcRef))
 | 
			
		||||
	}
 | 
			
		||||
@ -274,9 +261,9 @@ func pullImage(ctx context.Context, store storage.Store, transport string, image
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
 | 
			
		||||
	logrus.Debugf("copying %q to %q", spec, destName)
 | 
			
		||||
	logrus.Debugf("copying %q to %q", transports.ImageName(srcRef), destName)
 | 
			
		||||
	if _, err := cp.Image(ctx, policyContext, maybeCachedDestRef, srcRef, getCopyOptions(options.ReportWriter, srcRef, sc, maybeCachedDestRef, nil, "")); err != nil {
 | 
			
		||||
		logrus.Debugf("error copying src image [%q] to dest image [%q] err: %v", spec, destName, err)
 | 
			
		||||
		logrus.Debugf("error copying src image [%q] to dest image [%q] err: %v", transports.ImageName(srcRef), destName, err)
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return destRef, nil
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user