Signed-off-by: David Calavera <david.calavera@gmail.com>
| 1 | 1 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,25 @@ |
| 0 |
+package lib |
|
| 1 |
+ |
|
| 2 |
+import "net/url" |
|
| 3 |
+ |
|
| 4 |
+// ImageTagOptions hold parameters to tag an image |
|
| 5 |
+type ImageTagOptions struct {
|
|
| 6 |
+ ImageID string |
|
| 7 |
+ RepositoryName string |
|
| 8 |
+ Tag string |
|
| 9 |
+ Force bool |
|
| 10 |
+} |
|
| 11 |
+ |
|
| 12 |
+// ImageTag tags an image in the docker host |
|
| 13 |
+func (cli *Client) ImageTag(options types.ImageTagOptions) error {
|
|
| 14 |
+ query := url.Values{}
|
|
| 15 |
+ query.Set("repo", options.RepositoryName)
|
|
| 16 |
+ query.Set("tag", options.Tag)
|
|
| 17 |
+ if options.Force {
|
|
| 18 |
+ query.Set("force", "1")
|
|
| 19 |
+ } |
|
| 20 |
+ |
|
| 21 |
+ resp, err := cli.POST("/images/"+options.ImageID+"/tag", query, nil, nil)
|
|
| 22 |
+ ensureReaderClosed(resp) |
|
| 23 |
+ return err |
|
| 24 |
+} |
| ... | ... |
@@ -2,9 +2,9 @@ package client |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 | 4 |
"errors" |
| 5 |
- "net/url" |
|
| 6 | 5 |
|
| 7 | 6 |
"github.com/docker/distribution/reference" |
| 7 |
+ "github.com/docker/docker/api/client/lib" |
|
| 8 | 8 |
Cli "github.com/docker/docker/cli" |
| 9 | 9 |
flag "github.com/docker/docker/pkg/mflag" |
| 10 | 10 |
"github.com/docker/docker/registry" |
| ... | ... |
@@ -20,7 +20,6 @@ func (cli *DockerCli) CmdTag(args ...string) error {
|
| 20 | 20 |
|
| 21 | 21 |
cmd.ParseFlags(args, true) |
| 22 | 22 |
|
| 23 |
- v := url.Values{}
|
|
| 24 | 23 |
ref, err := reference.ParseNamed(cmd.Arg(1)) |
| 25 | 24 |
if err != nil {
|
| 26 | 25 |
return err |
| ... | ... |
@@ -41,15 +40,13 @@ func (cli *DockerCli) CmdTag(args ...string) error {
|
| 41 | 41 |
if err := registry.ValidateRepositoryName(ref); err != nil {
|
| 42 | 42 |
return err |
| 43 | 43 |
} |
| 44 |
- v.Set("repo", ref.Name())
|
|
| 45 |
- v.Set("tag", tag)
|
|
| 46 | 44 |
|
| 47 |
- if *force {
|
|
| 48 |
- v.Set("force", "1")
|
|
| 45 |
+ options := lib.ImageTagOptions{
|
|
| 46 |
+ ImageID: cmd.Arg(0), |
|
| 47 |
+ RepositoryName: ref.Name(), |
|
| 48 |
+ Tag: tag, |
|
| 49 |
+ Force: *force, |
|
| 49 | 50 |
} |
| 50 | 51 |
|
| 51 |
- if _, _, err := readBody(cli.call("POST", "/images/"+cmd.Arg(0)+"/tag?"+v.Encode(), nil, nil)); err != nil {
|
|
| 52 |
- return err |
|
| 53 |
- } |
|
| 54 |
- return nil |
|
| 52 |
+ return cli.client.ImageTag(options) |
|
| 55 | 53 |
} |