client: Allow hex strings as source references for ImageTag
The source of a tag operation is allowed to be a 64-character hex
string. This means it should use ParseAnyReference for validation
instead of ParseNormalizedNamed.
This fixes a regression that happened in 17.04.
Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
(cherry picked from commit 4a0704cdbd
)
Signed-off-by: Victor Vieux <victorvieux@gmail.com>
This commit is contained in:
parent
7e06704af9
commit
aea00bf675
2 changed files with 12 additions and 1 deletions
|
@ -10,7 +10,7 @@ import (
|
|||
|
||||
// ImageTag tags an image in the docker host
|
||||
func (cli *Client) ImageTag(ctx context.Context, source, target string) error {
|
||||
if _, err := reference.ParseNormalizedNamed(source); err != nil {
|
||||
if _, err := reference.ParseAnyReference(source); err != nil {
|
||||
return errors.Wrapf(err, "Error parsing reference: %q is not a valid repository/tag", source)
|
||||
}
|
||||
|
||||
|
|
|
@ -46,6 +46,17 @@ func TestImageTagInvalidSourceImageName(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestImageTagHexSource(t *testing.T) {
|
||||
client := &Client{
|
||||
client: newMockClient(errorMock(http.StatusOK, "OK")),
|
||||
}
|
||||
|
||||
err := client.ImageTag(context.Background(), "0d409d33b27e47423b049f7f863faa08655a8c901749c2b25b93ca67d01a470d", "repo:tag")
|
||||
if err != nil {
|
||||
t.Fatalf("got error: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestImageTag(t *testing.T) {
|
||||
expectedURL := "/images/image_id/tag"
|
||||
tagCases := []struct {
|
||||
|
|
Loading…
Add table
Reference in a new issue