cmd/kpod/tag.go: Do not assume docker.io for tagging

When performing a tag, if a shortname was provided, tag.go would
preprend docker.io to the shortname through the ParseNormalized
function.  Here we work around that such that is a short name
and tag are provided, the resulting tag will be shortname:tag.  If
a shortname is provided without a tag, we append "latest" as the
tag.

Added specific tag tests too

Signed-off-by: baude <bbaude@redhat.com>
This commit is contained in:
baude 2017-09-05 14:36:49 -05:00
parent 8538c4067a
commit 529eb5bdb7
2 changed files with 57 additions and 7 deletions

View file

@ -62,17 +62,17 @@ func addImageNames(store storage.Store, image *storage.Image, addNames []string)
func expandedTags(tags []string) ([]string, error) {
expandedNames := []string{}
for _, tag := range tags {
name, err := reference.ParseNormalizedNamed(tag)
var labelName string
name, err := reference.Parse(tag)
if err != nil {
return nil, errors.Wrapf(err, "error parsing tag %q", name)
}
name = reference.TagNameOnly(name)
newTag := ""
if tagged, ok := name.(reference.NamedTagged); ok {
newTag = tagged.Tag()
if _, ok := name.(reference.NamedTagged); ok {
labelName = name.String()
} else {
labelName = name.String() + ":latest"
}
expandedNames = append(expandedNames, name.Name()+":"+newTag)
expandedNames = append(expandedNames, labelName)
}
return expandedNames, nil
}