diff options
author | Derek McGowan <derek@mcgstyle.net> | 2017-01-25 16:54:18 -0800 |
---|---|---|
committer | Derek McGowan <derek@mcgstyle.net> | 2017-02-07 11:08:37 -0800 |
commit | 3a1279393faf78632bf169619d407e584da84b66 (patch) | |
tree | 25d89487c1dcfc045a0dc8bfa72dd2cf31d28489 /client/image_tag.go | |
parent | 2bea87393b7673fc88531851803f073198527021 (diff) | |
download | docker-3a1279393faf78632bf169619d407e584da84b66.tar.gz |
Use distribution reference
Remove forked reference package. Use normalized named values
everywhere and familiar functions to convert back to familiar
strings for UX and storage compatibility.
Enforce that the source repository in the distribution metadata
is always a normalized string, ignore invalid values which are not.
Update distribution tests to use normalized values.
Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
Diffstat (limited to 'client/image_tag.go')
-rw-r--r-- | client/image_tag.go | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/client/image_tag.go b/client/image_tag.go index dbcd078e1c..35abe332bf 100644 --- a/client/image_tag.go +++ b/client/image_tag.go @@ -3,32 +3,33 @@ package client import ( "net/url" - distreference "github.com/docker/distribution/reference" - "github.com/docker/docker/api/types/reference" + "github.com/docker/distribution/reference" "github.com/pkg/errors" "golang.org/x/net/context" ) // ImageTag tags an image in the docker host func (cli *Client) ImageTag(ctx context.Context, source, target string) error { - if _, err := distreference.ParseNamed(source); err != nil { + if _, err := reference.ParseNormalizedNamed(source); err != nil { return errors.Wrapf(err, "Error parsing reference: %q is not a valid repository/tag", source) } - distributionRef, err := distreference.ParseNamed(target) + ref, err := reference.ParseNormalizedNamed(target) if err != nil { return errors.Wrapf(err, "Error parsing reference: %q is not a valid repository/tag", target) } - if _, isCanonical := distributionRef.(distreference.Canonical); isCanonical { + if _, isCanonical := ref.(reference.Canonical); isCanonical { return errors.New("refusing to create a tag with a digest reference") } - tag := reference.GetTagFromNamedRef(distributionRef) + ref = reference.TagNameOnly(ref) query := url.Values{} - query.Set("repo", distributionRef.Name()) - query.Set("tag", tag) + query.Set("repo", reference.FamiliarName(ref)) + if tagged, ok := ref.(reference.Tagged); ok { + query.Set("tag", tagged.Tag()) + } resp, err := cli.post(ctx, "/images/"+source+"/tag", query, nil, nil) ensureReaderClosed(resp) |