From aa960bfe2f9a15d5c6c91427198be589e598d118 Mon Sep 17 00:00:00 2001 From: Wei Zheng Date: Thu, 4 Dec 2014 17:21:14 -0800 Subject: [PATCH] Support tag in push image command --- .../dockerjava/api/command/PushImageCmd.java | 9 +++++- .../core/command/PushImageCmdImpl.java | 28 +++++++++++++++---- .../dockerjava/jaxrs/PushImageCmdExec.java | 3 +- 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/github/dockerjava/api/command/PushImageCmd.java b/src/main/java/com/github/dockerjava/api/command/PushImageCmd.java index cd3e66814..c746fd7c2 100644 --- a/src/main/java/com/github/dockerjava/api/command/PushImageCmd.java +++ b/src/main/java/com/github/dockerjava/api/command/PushImageCmd.java @@ -14,12 +14,19 @@ public interface PushImageCmd extends DockerCmd{ public String getName(); + public String getTag(); + /** * @param name The name, e.g. "alexec/busybox" or just "busybox" if you want to default. Not null. */ public PushImageCmd withName(String name); - public AuthConfig getAuthConfig(); + /** + * @param tag The image's tag. Not null. + */ + public PushImageCmd withTag(String tag); + + public AuthConfig getAuthConfig(); public PushImageCmd withAuthConfig(AuthConfig authConfig); diff --git a/src/main/java/com/github/dockerjava/core/command/PushImageCmdImpl.java b/src/main/java/com/github/dockerjava/core/command/PushImageCmdImpl.java index 65ea843fb..56f587158 100644 --- a/src/main/java/com/github/dockerjava/core/command/PushImageCmdImpl.java +++ b/src/main/java/com/github/dockerjava/core/command/PushImageCmdImpl.java @@ -14,18 +14,24 @@ */ public class PushImageCmdImpl extends AbstrAuthCfgDockerCmd implements PushImageCmd { - private String name; + private String name; + private String tag; - public PushImageCmdImpl(PushImageCmd.Exec exec, String name) { - super(exec); - withName(name); - } + public PushImageCmdImpl(PushImageCmd.Exec exec, String name) { + super(exec); + withName(name); + } @Override public String getName() { return name; } + @Override + public String getTag() { + return tag; + } + /** * @param name The name, e.g. "alexec/busybox" or just "busybox" if you want to default. Not null. */ @@ -36,6 +42,16 @@ public PushImageCmd withName(String name) { return this; } + /** + * @param tag The image's tag. Can be null or empty. + */ + @Override + public PushImageCmd withTag(String tag) { + Preconditions.checkNotNull(tag, "tag was not specified"); + this.tag = tag; + return this; + } + @Override public String toString() { return new StringBuilder("push ") @@ -46,7 +62,7 @@ public String toString() { /** * @throws NotFoundException No such image */ - @Override + @Override public InputStream exec() throws NotFoundException { return super.exec(); } diff --git a/src/main/java/com/github/dockerjava/jaxrs/PushImageCmdExec.java b/src/main/java/com/github/dockerjava/jaxrs/PushImageCmdExec.java index 8d5aabefb..9454a0e73 100644 --- a/src/main/java/com/github/dockerjava/jaxrs/PushImageCmdExec.java +++ b/src/main/java/com/github/dockerjava/jaxrs/PushImageCmdExec.java @@ -24,7 +24,8 @@ public PushImageCmdExec(WebTarget baseResource) { @Override protected InputStream execute(PushImageCmd command) { - WebTarget webResource = getBaseResource().path("/images/" + name(command) + "/push"); + WebTarget webResource = getBaseResource().path("/images/" + name(command) + "/push") + .queryParam("tag", command.getTag()); final String registryAuth = registryAuth(command.getAuthConfig()); LOGGER.trace("POST: {}", webResource);