Skip to content

Commit ccb5a0e

Browse files
committed
Merge pull request #509 from KostyaSha/pr504
Pr504
2 parents 119b515 + ec6ca9f commit ccb5a0e

File tree

12 files changed

+330
-0
lines changed

12 files changed

+330
-0
lines changed

src/main/java/com/github/dockerjava/api/DockerClient.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
import com.github.dockerjava.api.command.UpdateContainerCmd;
5757
import com.github.dockerjava.api.command.VersionCmd;
5858
import com.github.dockerjava.api.command.WaitContainerCmd;
59+
import com.github.dockerjava.api.command.RenameContainerCmd;
5960
import com.github.dockerjava.api.exception.DockerException;
6061
import com.github.dockerjava.api.model.AuthConfig;
6162
import com.github.dockerjava.api.model.Identifier;
@@ -185,6 +186,15 @@ public interface DockerClient extends Closeable {
185186
*/
186187
UpdateContainerCmd updateContainerCmd(@Nonnull String containerId);
187188

189+
/**
190+
* Rename container.
191+
*
192+
* @param containerId id of the container
193+
* @return command
194+
* @since {@link RemoteApiVersion#VERSION_1_17}
195+
*/
196+
RenameContainerCmd renameContainerCmd(@Nonnull String containerId);
197+
188198
RestartContainerCmd restartContainerCmd(@Nonnull String containerId);
189199

190200
CommitCmd commitCmd(@Nonnull String containerId);

src/main/java/com/github/dockerjava/api/command/DockerCmdExecFactory.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import javax.net.ssl.SSLContext;
77

88
import com.github.dockerjava.core.DockerClientConfig;
9+
import com.github.dockerjava.core.RemoteApiVersion;
910

1011
public interface DockerCmdExecFactory extends Closeable {
1112

@@ -71,6 +72,13 @@ public interface DockerCmdExecFactory extends Closeable {
7172

7273
UpdateContainerCmd.Exec createUpdateContainerCmdExec();
7374

75+
/**
76+
* Rename container.
77+
*
78+
* @since {@link RemoteApiVersion#VERSION_1_17}
79+
*/
80+
RenameContainerCmd.Exec createRenameContainerCmdExec();
81+
7482
RestartContainerCmd.Exec createRestartContainerCmdExec();
7583

7684
CommitCmd.Exec createCommitCmdExec();
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import com.github.dockerjava.api.exception.NotFoundException;
4+
import com.github.dockerjava.core.RemoteApiVersion;
5+
6+
import javax.annotation.CheckForNull;
7+
import javax.annotation.Nonnull;
8+
9+
/**
10+
* Rename a container.
11+
*
12+
* @since {@link RemoteApiVersion#VERSION_1_17}
13+
*/
14+
public interface RenameContainerCmd extends SyncDockerCmd<Void> {
15+
16+
@CheckForNull
17+
String getContainerId();
18+
19+
RenameContainerCmd withContainerId(@Nonnull String containerId);
20+
21+
@CheckForNull
22+
String getName();
23+
24+
RenameContainerCmd withName(@Nonnull String name);
25+
26+
/**
27+
* @throws NotFoundException No such container
28+
*/
29+
@Override
30+
Void exec() throws NotFoundException;
31+
32+
interface Exec extends DockerCmdSyncExec<RenameContainerCmd, Void> {
33+
}
34+
}

src/main/java/com/github/dockerjava/core/DockerClientImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
import com.github.dockerjava.api.command.UpdateContainerCmd;
5959
import com.github.dockerjava.api.command.VersionCmd;
6060
import com.github.dockerjava.api.command.WaitContainerCmd;
61+
import com.github.dockerjava.api.command.RenameContainerCmd;
6162
import com.github.dockerjava.api.model.AuthConfig;
6263
import com.github.dockerjava.api.model.Identifier;
6364
import com.github.dockerjava.core.command.AttachContainerCmdImpl;
@@ -109,6 +110,7 @@
109110
import com.github.dockerjava.core.command.UpdateContainerCmdImpl;
110111
import com.github.dockerjava.core.command.VersionCmdImpl;
111112
import com.github.dockerjava.core.command.WaitContainerCmdImpl;
113+
import com.github.dockerjava.core.command.RenameContainerCmdImpl;
112114

113115
import javax.annotation.Nonnull;
114116

@@ -364,6 +366,11 @@ public UpdateContainerCmd updateContainerCmd(@Nonnull String containerId) {
364366
return new UpdateContainerCmdImpl(getDockerCmdExecFactory().createUpdateContainerCmdExec(), containerId);
365367
}
366368

369+
@Override
370+
public RenameContainerCmd renameContainerCmd(@Nonnull String containerId) {
371+
return new RenameContainerCmdImpl(getDockerCmdExecFactory().createRenameContainerCmdExec(), containerId);
372+
}
373+
367374
@Override
368375
public RestartContainerCmd restartContainerCmd(String containerId) {
369376
return new RestartContainerCmdImpl(getDockerCmdExecFactory().createRestartContainerCmdExec(), containerId);
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.github.dockerjava.core.command;
2+
3+
import com.github.dockerjava.api.command.RenameContainerCmd;
4+
import com.github.dockerjava.api.exception.NotFoundException;
5+
6+
import javax.annotation.Nonnull;
7+
8+
import static com.google.common.base.Preconditions.checkNotNull;
9+
10+
public class RenameContainerCmdImpl extends AbstrDockerCmd<RenameContainerCmd, Void> implements RenameContainerCmd {
11+
12+
private String containerId;
13+
14+
private String name;
15+
16+
public RenameContainerCmdImpl(RenameContainerCmd.Exec exec, String containerId) {
17+
super(exec);
18+
withContainerId(containerId);
19+
}
20+
21+
@Override
22+
public String getContainerId() {
23+
return containerId;
24+
}
25+
26+
@Override
27+
public String getName() {
28+
return name;
29+
}
30+
31+
@Override
32+
public RenameContainerCmd withContainerId(@Nonnull String containerId) {
33+
checkNotNull(containerId, "containerId was not specified");
34+
this.containerId = containerId;
35+
return this;
36+
}
37+
38+
@Override
39+
public RenameContainerCmd withName(@Nonnull String name) {
40+
checkNotNull(name, "name was not specified");
41+
this.name = name;
42+
return this;
43+
}
44+
45+
/**
46+
* @throws NotFoundException No such container
47+
*/
48+
@Override
49+
public Void exec() throws NotFoundException {
50+
return super.exec();
51+
}
52+
}

src/main/java/com/github/dockerjava/jaxrs/DockerCmdExecFactoryImpl.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
import com.github.dockerjava.api.command.UnpauseContainerCmd;
8181
import com.github.dockerjava.api.command.VersionCmd;
8282
import com.github.dockerjava.api.command.WaitContainerCmd;
83+
import com.github.dockerjava.api.command.RenameContainerCmd;
8384
import com.github.dockerjava.api.exception.DockerClientException;
8485
import com.github.dockerjava.core.DockerClientConfig;
8586
import com.github.dockerjava.core.LocalDirectorySSLConfig;
@@ -417,6 +418,11 @@ public UpdateContainerCmd.Exec createUpdateContainerCmdExec() {
417418
return new UpdateContainerCmdExec(getBaseResource(), getDockerClientConfig());
418419
}
419420

421+
@Override
422+
public RenameContainerCmd.Exec createRenameContainerCmdExec() {
423+
return new RenameContainerCmdExec(getBaseResource(), getDockerClientConfig());
424+
}
425+
420426
@Override
421427
public RestartContainerCmd.Exec createRestartContainerCmdExec() {
422428
return new RestartContainerCmdExec(getBaseResource(), getDockerClientConfig());
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.github.dockerjava.jaxrs;
2+
3+
import javax.ws.rs.client.WebTarget;
4+
import javax.ws.rs.core.MediaType;
5+
6+
import com.github.dockerjava.api.command.RenameContainerCmd;
7+
import com.github.dockerjava.core.DockerClientConfig;
8+
import org.slf4j.Logger;
9+
import org.slf4j.LoggerFactory;
10+
11+
public class RenameContainerCmdExec extends AbstrSyncDockerCmdExec<RenameContainerCmd, Void>
12+
implements RenameContainerCmd.Exec {
13+
private static final Logger LOG = LoggerFactory.getLogger(RenameContainerCmdExec.class);
14+
15+
public RenameContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) {
16+
super(baseResource, dockerClientConfig);
17+
}
18+
19+
@Override
20+
protected Void execute(RenameContainerCmd command) {
21+
WebTarget webResource = getBaseResource().path("/containers/{id}/rename")
22+
.resolveTemplate("id", command.getContainerId())
23+
.queryParam("name", command.getName());
24+
25+
LOG.trace("POST: {}", webResource);
26+
webResource.request().accept(MediaType.APPLICATION_JSON).post(null);
27+
28+
return null;
29+
}
30+
}

src/main/java/com/github/dockerjava/netty/DockerCmdExecFactoryImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import com.github.dockerjava.api.command.UpdateContainerCmd;
5151
import com.github.dockerjava.api.command.VersionCmd;
5252
import com.github.dockerjava.api.command.WaitContainerCmd;
53+
import com.github.dockerjava.api.command.RenameContainerCmd;
5354
import com.github.dockerjava.core.DockerClientConfig;
5455
import com.github.dockerjava.core.DockerClientImpl;
5556
import com.github.dockerjava.core.LocalDirectorySSLConfig;
@@ -102,6 +103,7 @@
102103
import com.github.dockerjava.netty.exec.UpdateContainerCmdExec;
103104
import com.github.dockerjava.netty.exec.VersionCmdExec;
104105
import com.github.dockerjava.netty.exec.WaitContainerCmdExec;
106+
import com.github.dockerjava.netty.exec.RenameContainerCmdExec;
105107

106108
import io.netty.bootstrap.Bootstrap;
107109
import io.netty.channel.ChannelInitializer;
@@ -465,6 +467,11 @@ public UpdateContainerCmd.Exec createUpdateContainerCmdExec() {
465467
return new UpdateContainerCmdExec(getBaseResource(), getDockerClientConfig());
466468
}
467469

470+
@Override
471+
public RenameContainerCmd.Exec createRenameContainerCmdExec() {
472+
return new RenameContainerCmdExec(getBaseResource(), getDockerClientConfig());
473+
}
474+
468475
@Override
469476
public RestartContainerCmd.Exec createRestartContainerCmdExec() {
470477
return new RestartContainerCmdExec(getBaseResource(), getDockerClientConfig());
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.github.dockerjava.netty.exec;
2+
3+
import com.github.dockerjava.api.command.RenameContainerCmd;
4+
import com.github.dockerjava.core.DockerClientConfig;
5+
import com.github.dockerjava.netty.MediaType;
6+
import com.github.dockerjava.netty.WebTarget;
7+
import org.slf4j.Logger;
8+
import org.slf4j.LoggerFactory;
9+
10+
public class RenameContainerCmdExec extends AbstrSyncDockerCmdExec<RenameContainerCmd, Void>
11+
implements RenameContainerCmd.Exec {
12+
private static final Logger LOG = LoggerFactory.getLogger(RenameContainerCmdExec.class);
13+
14+
public RenameContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) {
15+
super(baseResource, dockerClientConfig);
16+
}
17+
18+
@Override
19+
protected Void execute(RenameContainerCmd command) {
20+
WebTarget webResource = getBaseResource().path("/containers/{id}/rename")
21+
.resolveTemplate("id", command.getContainerId())
22+
.queryParam("name", command.getName());
23+
24+
LOG.trace("POST: {}", webResource);
25+
webResource.request().accept(MediaType.APPLICATION_JSON).post(null);
26+
27+
return null;
28+
}
29+
}

src/test/java/com/github/dockerjava/core/TestDockerCmdExecFactory.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,11 @@ public UpdateContainerCmd.Exec createUpdateContainerCmdExec() {
240240
return delegate.createUpdateContainerCmdExec();
241241
}
242242

243+
@Override
244+
public RenameContainerCmd.Exec createRenameContainerCmdExec(){
245+
return delegate.createRenameContainerCmdExec();
246+
}
247+
243248
@Override
244249
public RestartContainerCmd.Exec createRestartContainerCmdExec() {
245250
return delegate.createRestartContainerCmdExec();

0 commit comments

Comments
 (0)