Remove the :// end from DockerTransport

(... but keep it in DefaultTransport, which remains irregular.)

This makes DockerTransport consistent with the others, and much more importantly,
allows several instances to do
> imgRef.Transport().Name() == DockerTransport
instead of the current
> strings.HasPrefix(DockerTransport, imgRef.Transport().Name())
, which currently works but is pretty nonsensical (it does not check
the "docker://" prefix against the _full reference_, but it checks
the _transport name_ as a prefix of "docker://", i.e.  a transport named
"d" would be accepted.

Should not change behavior, because the only currently existing transport
which has a name that is a prefix of "docker://" is c/image/docker.Transport
(but does not add unit tests).

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1176
Approved by: rhatdan
This commit is contained in:
Miloslav Trmač
2018-07-28 02:58:56 +02:00
committed by Atomic Bot
parent 9770ed257e
commit 190e074459
2 changed files with 5 additions and 5 deletions

View File

@ -551,7 +551,7 @@ func (i *Image) PushImage(ctx context.Context, destination, manifestMIMEType, au
return err return err
} }
copyOptions := getCopyOptions(writer, signaturePolicyPath, nil, dockerRegistryOptions, signingOptions, authFile, manifestMIMEType, forceCompress, additionalDockerArchiveTags) copyOptions := getCopyOptions(writer, signaturePolicyPath, nil, dockerRegistryOptions, signingOptions, authFile, manifestMIMEType, forceCompress, additionalDockerArchiveTags)
if strings.HasPrefix(DockerTransport, dest.Transport().Name()) { if dest.Transport().Name() == DockerTransport {
imgRef, err := reference.Parse(dest.DockerReference().String()) imgRef, err := reference.Parse(dest.DockerReference().String())
if err != nil { if err != nil {
return err return err

View File

@ -38,14 +38,14 @@ var (
// and creating a filesystem image // and creating a filesystem image
TarballTransport = tarball.Transport.Name() TarballTransport = tarball.Transport.Name()
// DockerTransport is the transport for docker registries // DockerTransport is the transport for docker registries
DockerTransport = docker.Transport.Name() + "://" DockerTransport = docker.Transport.Name()
// AtomicTransport is the transport for atomic registries // AtomicTransport is the transport for atomic registries
AtomicTransport = "atomic" AtomicTransport = "atomic"
// DefaultTransport is a prefix that we apply to an image name // DefaultTransport is a prefix that we apply to an image name
// NOTE: This is a string prefix, not actually a transport name usable for transports.Get(); // NOTE: This is a string prefix, not actually a transport name usable for transports.Get();
// and because syntaxes of image names are transport-dependent, the prefix is not really interchangeable; // and because syntaxes of image names are transport-dependent, the prefix is not really interchangeable;
// each user implicitly assumes the appended string is a Docker-like reference. // each user implicitly assumes the appended string is a Docker-like reference.
DefaultTransport = DockerTransport DefaultTransport = DockerTransport + "://"
// DefaultLocalRepo is the default local repository for local image operations // DefaultLocalRepo is the default local repository for local image operations
// Remote pulls will still use defined registries // Remote pulls will still use defined registries
DefaultLocalRepo = "localhost" DefaultLocalRepo = "localhost"
@ -206,7 +206,7 @@ func (i *Image) pullImage(ctx context.Context, writer io.Writer, authfile, signa
var images []string var images []string
for _, imageInfo := range pullRefPairs { for _, imageInfo := range pullRefPairs {
copyOptions := getCopyOptions(writer, signaturePolicyPath, dockerOptions, nil, signingOptions, authfile, "", false, nil) copyOptions := getCopyOptions(writer, signaturePolicyPath, dockerOptions, nil, signingOptions, authfile, "", false, nil)
if strings.HasPrefix(DockerTransport, imageInfo.srcRef.Transport().Name()) { if imageInfo.srcRef.Transport().Name() == DockerTransport {
imgRef, err := reference.Parse(imageInfo.srcRef.DockerReference().String()) imgRef, err := reference.Parse(imageInfo.srcRef.DockerReference().String())
if err != nil { if err != nil {
return nil, err return nil, err
@ -219,7 +219,7 @@ func (i *Image) pullImage(ctx context.Context, writer io.Writer, authfile, signa
} }
} }
// Print the following statement only when pulling from a docker or atomic registry // Print the following statement only when pulling from a docker or atomic registry
if writer != nil && (strings.HasPrefix(DockerTransport, imageInfo.srcRef.Transport().Name()) || imageInfo.srcRef.Transport().Name() == AtomicTransport) { if writer != nil && (imageInfo.srcRef.Transport().Name() == DockerTransport || imageInfo.srcRef.Transport().Name() == AtomicTransport) {
io.WriteString(writer, fmt.Sprintf("Trying to pull %s...", imageInfo.image)) io.WriteString(writer, fmt.Sprintf("Trying to pull %s...", imageInfo.image))
} }
if err = cp.Image(ctx, policyContext, imageInfo.dstRef, imageInfo.srcRef, copyOptions); err != nil { if err = cp.Image(ctx, policyContext, imageInfo.dstRef, imageInfo.srcRef, copyOptions); err != nil {