Skip to content

Commit db8cc70

Browse files
author
Aleksandr Guljajev
committed
Adding support for withPidMode docker-java#332
1 parent a4670ee commit db8cc70

File tree

4 files changed

+60
-32
lines changed

4 files changed

+60
-32
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ public static interface Exec extends DockerCmdSyncExec<CreateContainerCmd, Creat
134134

135135
public boolean isTty();
136136

137+
public String getPidMode();
138+
137139
public CreateContainerCmd withAttachStderr(boolean attachStderr);
138140

139141
public CreateContainerCmd withAttachStdin(boolean attachStdin);
@@ -291,6 +293,7 @@ public static interface Exec extends DockerCmdSyncExec<CreateContainerCmd, Creat
291293

292294
public CreateContainerCmd withContainerIDFile(String containerIDFile);
293295

296+
public CreateContainerCmd withPidMode(String pidMode);
294297
/**
295298
* @return
296299
*/

src/main/java/com/github/dockerjava/api/model/HostConfig.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,16 @@ public class HostConfig {
7575
@JsonProperty("CpuShares")
7676
private int cpuShares = 0;
7777

78+
@JsonProperty("PidMode")
79+
private String pidMode;
80+
7881
public HostConfig() {
7982
}
8083

8184
public HostConfig(Bind[] binds, Link[] links, LxcConf[] lxcConf, LogConfig logConfig, Ports portBindings,
8285
boolean publishAllPorts, boolean privileged, boolean readonlyRootfs, String[] dns, String[] dnsSearch,
8386
VolumesFrom[] volumesFrom, String containerIDFile, Capability[] capAdd, Capability[] capDrop,
84-
RestartPolicy restartPolicy, String networkMode, Device[] devices, String[] extraHosts, Ulimit[] ulimits) {
87+
RestartPolicy restartPolicy, String networkMode, Device[] devices, String[] extraHosts, Ulimit[] ulimits, String pidMode) {
8588
this.binds = new Binds(binds);
8689
this.links = new Links(links);
8790
this.lxcConf = lxcConf;
@@ -101,6 +104,7 @@ public HostConfig(Bind[] binds, Link[] links, LxcConf[] lxcConf, LogConfig logCo
101104
this.devices = devices;
102105
this.extraHosts = extraHosts;
103106
this.ulimits = ulimits;
107+
this.pidMode = pidMode;
104108
}
105109

106110
@JsonIgnore
@@ -194,6 +198,8 @@ public int getCpuShares() {
194198
return cpuShares;
195199
}
196200

201+
public String getPidMode() { return pidMode; }
202+
197203
@JsonIgnore
198204
public void setBinds(Bind... binds) {
199205
this.binds = new Binds(binds);
@@ -273,6 +279,8 @@ public void setUlimits(Ulimit[] ulimits) {
273279
this.ulimits = ulimits;
274280
}
275281

282+
public void setPidMode(String pidMode) { this.pidMode = pidMode; }
283+
276284
@Override
277285
public String toString() {
278286
return ToStringBuilder.reflectionToString(this);

src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
11
package com.github.dockerjava.core.command;
22

3-
import static com.google.common.base.Preconditions.checkNotNull;
4-
5-
import java.util.Map;
6-
7-
import org.apache.commons.lang.builder.ToStringBuilder;
8-
93
import com.fasterxml.jackson.annotation.JsonIgnore;
104
import com.fasterxml.jackson.annotation.JsonProperty;
115
import com.github.dockerjava.api.ConflictException;
@@ -28,6 +22,11 @@
2822
import com.github.dockerjava.api.model.Volume;
2923
import com.github.dockerjava.api.model.Volumes;
3024
import com.github.dockerjava.api.model.VolumesFrom;
25+
import org.apache.commons.lang.builder.ToStringBuilder;
26+
27+
import java.util.Map;
28+
29+
import static com.google.common.base.Preconditions.checkNotNull;
3130

3231
/**
3332
*
@@ -397,6 +396,12 @@ public boolean isTty() {
397396
return tty;
398397
}
399398

399+
@Override
400+
@JsonIgnore
401+
public String getPidMode() {
402+
return hostConfig.getPidMode();
403+
}
404+
400405
@Override
401406
public String toString() {
402407
return new ToStringBuilder(this).append("create container ").append(name != null ? "name=" + name + " " : "")
@@ -733,4 +738,11 @@ public CreateContainerCmdImpl withWorkingDir(String workingDir) {
733738
return this;
734739
}
735740

741+
@Override
742+
public CreateContainerCmd withPidMode(String pidMode) {
743+
checkNotNull(pidMode, "pidMode was not specified");
744+
this.hostConfig.setPidMode(pidMode);
745+
return this;
746+
}
747+
736748
}

src/test/java/com/github/dockerjava/core/command/CreateContainerCmdImplTest.java

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
package com.github.dockerjava.core.command;
22

3+
import com.github.dockerjava.api.ConflictException;
4+
import com.github.dockerjava.api.DockerException;
5+
import com.github.dockerjava.api.command.CreateContainerResponse;
6+
import com.github.dockerjava.api.command.InspectContainerResponse;
7+
import com.github.dockerjava.api.model.*;
8+
import com.github.dockerjava.client.AbstractDockerClientTest;
9+
import org.testng.ITestResult;
10+
import org.testng.annotations.*;
11+
312
import static com.github.dockerjava.api.model.Capability.MKNOD;
413
import static com.github.dockerjava.api.model.Capability.NET_ADMIN;
514
import static org.hamcrest.MatcherAssert.assertThat;
@@ -21,31 +30,10 @@
2130
import java.util.Map;
2231
import java.util.UUID;
2332

24-
import org.testng.ITestResult;
25-
import org.testng.annotations.AfterMethod;
26-
import org.testng.annotations.AfterTest;
27-
import org.testng.annotations.BeforeMethod;
28-
import org.testng.annotations.BeforeTest;
29-
import org.testng.annotations.Test;
30-
31-
import com.github.dockerjava.api.ConflictException;
32-
import com.github.dockerjava.api.DockerException;
33-
import com.github.dockerjava.api.command.CreateContainerResponse;
34-
import com.github.dockerjava.api.command.InspectContainerResponse;
35-
import com.github.dockerjava.api.model.AccessMode;
36-
import com.github.dockerjava.api.model.Bind;
37-
import com.github.dockerjava.api.model.Device;
38-
import com.github.dockerjava.api.model.ExposedPort;
39-
import com.github.dockerjava.api.model.HostConfig;
40-
import com.github.dockerjava.api.model.Link;
41-
import com.github.dockerjava.api.model.LogConfig;
42-
import com.github.dockerjava.api.model.Ports;
43-
import com.github.dockerjava.api.model.RestartPolicy;
44-
import com.github.dockerjava.api.model.Ulimit;
45-
import com.github.dockerjava.api.model.Volume;
46-
import com.github.dockerjava.api.model.VolumeRW;
47-
import com.github.dockerjava.api.model.VolumesFrom;
48-
import com.github.dockerjava.client.AbstractDockerClientTest;
33+
import static com.github.dockerjava.api.model.Capability.MKNOD;
34+
import static com.github.dockerjava.api.model.Capability.NET_ADMIN;
35+
import static org.hamcrest.MatcherAssert.assertThat;
36+
import static org.hamcrest.Matchers.*;
4937

5038
@Test(groups = "integration")
5139
public class CreateContainerCmdImplTest extends AbstractDockerClientTest {
@@ -451,6 +439,21 @@ public void createContainerWithRestartPolicy() throws DockerException {
451439
assertThat(inspectContainerResponse.getHostConfig().getRestartPolicy(), is(equalTo(restartPolicy)));
452440
}
453441

442+
@Test
443+
public void createContainerWithPidMode() throws DockerException {
444+
445+
CreateContainerResponse container = dockerClient.createContainerCmd("busybox").withCmd("true")
446+
.withPidMode("host").exec();
447+
448+
LOG.info("Created container {}", container.toString());
449+
450+
assertThat(container.getId(), not(isEmptyString()));
451+
452+
InspectContainerResponse inspectContainerResponse = dockerClient.inspectContainerCmd(container.getId()).exec();
453+
454+
assertThat(inspectContainerResponse.getHostConfig().getPidMode(), is(equalTo("host")));
455+
}
456+
454457
/**
455458
* This tests support for --net option for the docker run command: --net="bridge" Set the Network mode for the
456459
* container 'bridge': creates a new network stack for the container on the docker bridge 'none': no networking for
@@ -543,4 +546,6 @@ public void createContainerWithLogConfig() throws DockerException {
543546
// null becomes empty string
544547
assertEquals(inspectContainerResponse.getHostConfig().getLogConfig().type, logConfig.type);
545548
}
549+
550+
546551
}

0 commit comments

Comments
 (0)