Skip to content

Commit ec8f1f9

Browse files
committed
Added InspectExec command
1 parent f0c4acb commit ec8f1f9

10 files changed

Lines changed: 203 additions & 2 deletions

File tree

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ public CreateImageCmd createImageCmd(String repository,
7878

7979
public ExecStartCmd execStartCmd(String containerId);
8080

81+
public InspectExecCmd inspectExecCmd(String execId);
82+
8183
public LogContainerCmd logContainerCmd(String containerId);
8284

8385
public CopyFileFromContainerCmd copyFileFromContainerCmd(

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ public interface DockerCmdExecFactory extends Closeable {
5151

5252
public ExecStartCmd.Exec createExecStartCmdExec();
5353

54+
public InspectExecCmd.Exec createInspectExecCmdExec();
55+
5456
public LogContainerCmd.Exec createLogContainerCmdExec();
5557

5658
public CopyFileFromContainerCmd.Exec createCopyFileFromContainerCmdExec();

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.github.dockerjava.api.command;
22

33

4+
import java.util.List;
45
import java.util.Map;
56

67
import com.github.dockerjava.api.model.*;
@@ -66,6 +67,9 @@ public class InspectContainerResponse {
6667
@JsonProperty("ResolvConfPath")
6768
private String resolvConfPath;
6869

70+
@JsonProperty("ExecIDs")
71+
private List<String> execIds;
72+
6973
@JsonProperty("State")
7074
private ContainerState state;
7175

@@ -153,6 +157,10 @@ public String getMountLabel() {
153157
return mountLabel;
154158
}
155159

160+
public List<String> getExecIds() {
161+
return execIds;
162+
}
163+
156164
@Override
157165
public String toString() {
158166
return ToStringBuilder.reflectionToString(this);
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import com.github.dockerjava.api.NotFoundException;
4+
5+
public interface InspectExecCmd extends DockerCmd<InspectExecResponse> {
6+
public String getExecId();
7+
public InspectExecCmd withExecId(String execId);
8+
9+
/**
10+
* @throws NotFoundException if no such exec has been found
11+
*/
12+
@Override
13+
public InspectExecResponse exec() throws NotFoundException;
14+
15+
public static interface Exec extends DockerCmdExec<InspectExecCmd, InspectExecResponse> {}
16+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import org.apache.commons.lang.builder.ToStringBuilder;
6+
7+
import java.util.List;
8+
9+
@JsonIgnoreProperties(ignoreUnknown = true)
10+
public class InspectExecResponse {
11+
@JsonProperty("ID")
12+
private String id;
13+
14+
@JsonProperty("OpenStdin")
15+
private boolean openStdin;
16+
17+
@JsonProperty("OpenStderr")
18+
private boolean openStderr;
19+
20+
@JsonProperty("OpenStdout")
21+
private boolean openStdout;
22+
23+
@JsonProperty("Running")
24+
private boolean running;
25+
26+
public String getId() {
27+
return id;
28+
}
29+
30+
public boolean isOpenStdin() {
31+
return openStdin;
32+
}
33+
34+
public boolean isOpenStderr() {
35+
return openStderr;
36+
}
37+
38+
public boolean isOpenStdout() {
39+
return openStdout;
40+
}
41+
42+
public boolean isRunning() {
43+
return running;
44+
}
45+
46+
@Override
47+
public String toString() {
48+
return ToStringBuilder.reflectionToString(this);
49+
}
50+
51+
@JsonIgnoreProperties(ignoreUnknown = true)
52+
public class ProcessConfig {
53+
@JsonProperty("arguments")
54+
private List<String> arguments;
55+
56+
@JsonProperty("entrypoint")
57+
private String entryPoint;
58+
59+
@JsonProperty("privileged")
60+
private boolean privileged;
61+
62+
@JsonProperty("tty")
63+
private boolean tty;
64+
65+
@JsonProperty("user")
66+
private String user;
67+
68+
public List<String> getArguments() {
69+
return arguments;
70+
}
71+
72+
public String getEntryPoint() {
73+
return entryPoint;
74+
}
75+
76+
public boolean isPrivileged() {
77+
return privileged;
78+
}
79+
80+
public boolean isTty() {
81+
return tty;
82+
}
83+
84+
public String getUser() {
85+
return user;
86+
}
87+
88+
@Override
89+
public String toString() {
90+
return ToStringBuilder.reflectionToString(this);
91+
}
92+
}
93+
}

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,12 @@ public ExecStartCmd execStartCmd(String containerId) {
224224
return new ExecStartCmdImpl(getDockerCmdExecFactory().createExecStartCmdExec(), containerId);
225225
}
226226

227-
@Override
227+
@Override
228+
public InspectExecCmd inspectExecCmd(String execId) {
229+
return new InspectExecCmdImpl(getDockerCmdExecFactory().createInspectExecCmdExec(), execId);
230+
}
231+
232+
@Override
228233
public LogContainerCmd logContainerCmd(String containerId) {
229234
return new LogContainerCmdImpl(getDockerCmdExecFactory()
230235
.createLogContainerCmdExec(), containerId);
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.github.dockerjava.core.command;
2+
3+
import com.github.dockerjava.api.NotFoundException;
4+
import com.github.dockerjava.api.command.DockerCmdExec;
5+
import com.github.dockerjava.api.command.InspectExecCmd;
6+
import com.github.dockerjava.api.command.InspectExecResponse;
7+
import com.google.common.base.Preconditions;
8+
9+
public class InspectExecCmdImpl extends AbstrDockerCmd<InspectExecCmd, InspectExecResponse> implements InspectExecCmd {
10+
private String execId;
11+
12+
public InspectExecCmdImpl(InspectExecCmd.Exec execution, String execId) {
13+
super(execution);
14+
withExecId(execId);
15+
}
16+
17+
@Override
18+
public String getExecId() {
19+
return execId;
20+
}
21+
22+
@Override
23+
public InspectExecCmd withExecId(String execId) {
24+
Preconditions.checkNotNull(execId, "execId was not specified");
25+
this.execId = execId;
26+
return this;
27+
}
28+
29+
@Override
30+
public String toString() {
31+
return "inspect " + execId;
32+
}
33+
34+
/**
35+
* @throws NotFoundException No such exec
36+
*/
37+
@Override
38+
public InspectExecResponse exec() throws NotFoundException {
39+
return super.exec();
40+
}
41+
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,11 @@ public ExecStartCmd.Exec createExecStartCmdExec() {
221221
return new ExecStartCmdExec(getBaseResource());
222222
}
223223

224+
@Override
225+
public InspectExecCmd.Exec createInspectExecCmdExec() {
226+
return new InspectExecCmdExec(getBaseResource());
227+
}
228+
224229
@Override
225230
public LogContainerCmd.Exec createLogContainerCmdExec() {
226231
return new LogContainerCmdExec(getBaseResource());
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.github.dockerjava.jaxrs;
2+
3+
import com.github.dockerjava.api.command.InspectExecCmd;
4+
import com.github.dockerjava.api.command.InspectExecResponse;
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
7+
8+
import javax.ws.rs.client.WebTarget;
9+
import javax.ws.rs.core.MediaType;
10+
11+
public class InspectExecCmdExec extends AbstrDockerCmdExec<InspectExecCmd, InspectExecResponse> implements InspectExecCmd.Exec {
12+
private static final Logger LOGGER = LoggerFactory.getLogger(InspectExecCmdExec.class);
13+
14+
public InspectExecCmdExec(WebTarget baseResource) {
15+
super(baseResource);
16+
}
17+
18+
@Override
19+
protected InspectExecResponse execute(InspectExecCmd command) {
20+
WebTarget webResource = getBaseResource().path("/exec/{id}/json").resolveTemplate("id", command.getExecId());
21+
LOGGER.debug("GET: {}", webResource);
22+
return webResource.request().accept(MediaType.APPLICATION_JSON).get(InspectExecResponse.class);
23+
}
24+
}

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,12 @@ public ExecStartCmd.Exec createExecStartCmdExec() {
194194
return delegate.createExecStartCmdExec();
195195
}
196196

197-
@Override
197+
@Override
198+
public InspectExecCmd.Exec createInspectExecCmdExec() {
199+
return delegate.createInspectExecCmdExec();
200+
}
201+
202+
@Override
198203
public LogContainerCmd.Exec createLogContainerCmdExec() {
199204
return delegate.createLogContainerCmdExec();
200205
}

0 commit comments

Comments
 (0)