Merge pull request #509 from KostyaSha/pr504 · docker-java/docker-java@ccb5a0e

File tree

12 files changed

lines changed

    • main/java/com/github/dockerjava

    • test/java/com/github/dockerjava

12 files changed

lines changed

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);

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();

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+

}

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);

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+

}

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());

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+

}

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());

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+

}

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();