Record the original reference.Named in imageParts

We will eventually want to eliminate most members of imageParts
in favor of using the c/image/docker/reference API directly.

For now, just record the reference.Named value, and we will
replace uses of the other members before removing them.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
This commit is contained in:
Miloslav Trmač
2019-01-09 18:28:28 +01:00
parent 6486e2c41b
commit c19294c011

View File

@ -9,12 +9,13 @@ import (
// imageParts describes the parts of an image's name // imageParts describes the parts of an image's name
type imageParts struct { type imageParts struct {
transport string unnormalizedRef reference.Named // WARNING: Did not go through docker.io[/library] normalization
registry string transport string
name string registry string
tag string name string
isTagged bool tag string
hasRegistry bool isTagged bool
hasRegistry bool
} }
// Registries must contain a ":" or a "." or be localhost // Registries must contain a ":" or a "." or be localhost
@ -45,6 +46,7 @@ func decompose(input string) (imageParts, error) {
if err != nil { if err != nil {
return parts, err return parts, err
} }
unnormalizedNamed := imgRef.(reference.Named)
ntag, isTagged := imgRef.(reference.NamedTagged) ntag, isTagged := imgRef.(reference.NamedTagged)
if !isTagged { if !isTagged {
tag = "latest" tag = "latest"
@ -54,8 +56,8 @@ func decompose(input string) (imageParts, error) {
} else { } else {
tag = ntag.Tag() tag = ntag.Tag()
} }
registry := reference.Domain(imgRef.(reference.Named)) registry := reference.Domain(unnormalizedNamed)
imageName := reference.Path(imgRef.(reference.Named)) imageName := reference.Path(unnormalizedNamed)
// Is this a registry or a repo? // Is this a registry or a repo?
if isRegistry(registry) { if isRegistry(registry) {
hasRegistry = true hasRegistry = true
@ -66,12 +68,13 @@ func decompose(input string) (imageParts, error) {
} }
} }
return imageParts{ return imageParts{
registry: registry, unnormalizedRef: unnormalizedNamed,
hasRegistry: hasRegistry, registry: registry,
name: imageName, hasRegistry: hasRegistry,
tag: tag, name: imageName,
isTagged: isTagged, tag: tag,
transport: DefaultTransport, isTagged: isTagged,
transport: DefaultTransport,
}, nil }, nil
} }