Skip to content

Commit 9eb916e

Browse files
committed
Merge pull request #425 from docker-java/rebased-issue-356
Implement Network API
2 parents b86392a + f6d225d commit 9eb916e

File tree

53 files changed

+2252
-159
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+2252
-159
lines changed

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,29 @@
1111
import com.github.dockerjava.api.command.AuthCmd;
1212
import com.github.dockerjava.api.command.BuildImageCmd;
1313
import com.github.dockerjava.api.command.CommitCmd;
14+
import com.github.dockerjava.api.command.ConnectToNetworkCmd;
1415
import com.github.dockerjava.api.command.ContainerDiffCmd;
1516
import com.github.dockerjava.api.command.CopyArchiveFromContainerCmd;
1617
import com.github.dockerjava.api.command.CopyArchiveToContainerCmd;
1718
import com.github.dockerjava.api.command.CopyFileFromContainerCmd;
1819
import com.github.dockerjava.api.command.CreateContainerCmd;
1920
import com.github.dockerjava.api.command.CreateImageCmd;
21+
import com.github.dockerjava.api.command.CreateNetworkCmd;
2022
import com.github.dockerjava.api.command.CreateVolumeCmd;
23+
import com.github.dockerjava.api.command.DisconnectFromNetworkCmd;
2124
import com.github.dockerjava.api.command.EventsCmd;
2225
import com.github.dockerjava.api.command.ExecCreateCmd;
2326
import com.github.dockerjava.api.command.ExecStartCmd;
2427
import com.github.dockerjava.api.command.InfoCmd;
2528
import com.github.dockerjava.api.command.InspectContainerCmd;
2629
import com.github.dockerjava.api.command.InspectExecCmd;
2730
import com.github.dockerjava.api.command.InspectImageCmd;
31+
import com.github.dockerjava.api.command.InspectNetworkCmd;
2832
import com.github.dockerjava.api.command.InspectVolumeCmd;
2933
import com.github.dockerjava.api.command.KillContainerCmd;
3034
import com.github.dockerjava.api.command.ListContainersCmd;
3135
import com.github.dockerjava.api.command.ListImagesCmd;
36+
import com.github.dockerjava.api.command.ListNetworksCmd;
3237
import com.github.dockerjava.api.command.ListVolumesCmd;
3338
import com.github.dockerjava.api.command.LogContainerCmd;
3439
import com.github.dockerjava.api.command.PauseContainerCmd;
@@ -37,6 +42,7 @@
3742
import com.github.dockerjava.api.command.PushImageCmd;
3843
import com.github.dockerjava.api.command.RemoveContainerCmd;
3944
import com.github.dockerjava.api.command.RemoveImageCmd;
45+
import com.github.dockerjava.api.command.RemoveNetworkCmd;
4046
import com.github.dockerjava.api.command.RemoveVolumeCmd;
4147
import com.github.dockerjava.api.command.RestartContainerCmd;
4248
import com.github.dockerjava.api.command.SaveImageCmd;
@@ -200,6 +206,18 @@ public interface DockerClient extends Closeable {
200206

201207
public ListVolumesCmd listVolumesCmd();
202208

209+
public ListNetworksCmd listNetworksCmd();
210+
211+
public InspectNetworkCmd inspectNetworkCmd();
212+
213+
public CreateNetworkCmd createNetworkCmd();
214+
215+
public RemoveNetworkCmd removeNetworkCmd(@Nonnull String networkId);
216+
217+
public ConnectToNetworkCmd connectToNetworkCmd();
218+
219+
public DisconnectFromNetworkCmd disconnectFromNetworkCmd();
220+
203221
@Override
204222
public void close() throws IOException;
205223

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import com.github.dockerjava.core.RemoteApiVersion;
4+
5+
import javax.annotation.CheckForNull;
6+
import javax.annotation.Nonnull;
7+
8+
/**
9+
* Connects a container to a network.
10+
*
11+
* @since {@link RemoteApiVersion#VERSION_1_21}
12+
*/
13+
public interface ConnectToNetworkCmd extends SyncDockerCmd<Void> {
14+
15+
@CheckForNull
16+
public String getNetworkId();
17+
18+
@CheckForNull
19+
public String getContainerId();
20+
21+
public ConnectToNetworkCmd withNetworkId(@Nonnull String networkId);
22+
23+
public ConnectToNetworkCmd withContainerId(@Nonnull String containerId);
24+
25+
public static interface Exec extends DockerCmdSyncExec<ConnectToNetworkCmd, Void> {
26+
}
27+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import java.util.Map;
4+
5+
import javax.annotation.CheckForNull;
6+
import javax.annotation.Nonnull;
7+
8+
import com.github.dockerjava.api.model.Network;
9+
import com.github.dockerjava.api.model.Network.Ipam;
10+
import com.github.dockerjava.core.RemoteApiVersion;
11+
12+
/**
13+
* Create a network.
14+
*
15+
* @since {@link RemoteApiVersion#VERSION_1_21}
16+
*/
17+
public interface CreateNetworkCmd extends SyncDockerCmd<CreateNetworkResponse> {
18+
19+
@CheckForNull
20+
public String getName();
21+
22+
@CheckForNull
23+
public String getDriver();
24+
25+
@CheckForNull
26+
public Network.Ipam getIpam();
27+
28+
/** The new network's name. Required. */
29+
public CreateNetworkCmd withName(@Nonnull String name);
30+
31+
/** Optional custom IP scheme for the network. */
32+
public CreateNetworkCmd withIpamConfig(Ipam.Config config);
33+
34+
/** Name of the network driver to use. Defaults to <code>bridge</code>. */
35+
public CreateNetworkCmd withDriver(String driver);
36+
37+
/** Driver specific options */
38+
public CreateNetworkCmd withOptions(Map<String, String> options);
39+
40+
public static interface Exec extends DockerCmdSyncExec<CreateNetworkCmd, CreateNetworkResponse> {
41+
}
42+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
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+
@JsonIgnoreProperties(ignoreUnknown = true)
8+
public class CreateNetworkResponse {
9+
10+
@JsonProperty("Id")
11+
private String id;
12+
13+
@JsonProperty("Warnings")
14+
private String[] warnings;
15+
16+
public String getId() {
17+
return id;
18+
}
19+
20+
public String[] getWarnings() {
21+
return warnings;
22+
}
23+
24+
public void setId(String id) {
25+
this.id = id;
26+
}
27+
28+
public void setWarnings(String[] warnings) {
29+
this.warnings = warnings;
30+
}
31+
32+
@Override
33+
public String toString() {
34+
return ToStringBuilder.reflectionToString(this);
35+
}
36+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import com.github.dockerjava.core.RemoteApiVersion;
4+
5+
import javax.annotation.CheckForNull;
6+
import javax.annotation.Nonnull;
7+
8+
/**
9+
* Disconnects a container from a network.
10+
*
11+
* @since {@link RemoteApiVersion#VERSION_1_21}
12+
*/
13+
public interface DisconnectFromNetworkCmd extends SyncDockerCmd<Void> {
14+
15+
@CheckForNull
16+
public String getNetworkId();
17+
18+
@CheckForNull
19+
public String getContainerId();
20+
21+
public DisconnectFromNetworkCmd withNetworkId(@Nonnull String networkId);
22+
23+
public DisconnectFromNetworkCmd withContainerId(@Nonnull String containerId);
24+
25+
public static interface Exec extends DockerCmdSyncExec<DisconnectFromNetworkCmd, Void> {
26+
}
27+
}

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,18 @@ public interface DockerCmdExecFactory extends Closeable {
9393

9494
public ListVolumesCmd.Exec createListVolumesCmdExec();
9595

96+
public ListNetworksCmd.Exec createListNetworksCmdExec();
97+
98+
public InspectNetworkCmd.Exec createInspectNetworkCmdExec();
99+
100+
public CreateNetworkCmd.Exec createCreateNetworkCmdExec();
101+
102+
public RemoveNetworkCmd.Exec createRemoveNetworkCmdExec();
103+
104+
public ConnectToNetworkCmd.Exec createConnectToNetworkCmdExec();
105+
106+
public DisconnectFromNetworkCmd.Exec createDisconnectFromNetworkCmdExec();
107+
96108
@Override
97109
public void close() throws IOException;
98110

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

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

33
import java.util.List;
4-
import java.util.Map;
54

65
import javax.annotation.CheckForNull;
76

@@ -14,7 +13,7 @@
1413
import com.fasterxml.jackson.annotation.JsonProperty;
1514
import com.github.dockerjava.api.model.ContainerConfig;
1615
import com.github.dockerjava.api.model.HostConfig;
17-
import com.github.dockerjava.api.model.Ports;
16+
import com.github.dockerjava.api.model.NetworkSettings;
1817
import com.github.dockerjava.api.model.Volume;
1918
import com.github.dockerjava.api.model.VolumeBind;
2019
import com.github.dockerjava.api.model.VolumeBinds;
@@ -203,56 +202,7 @@ public String toString() {
203202
return ToStringBuilder.reflectionToString(this);
204203
}
205204

206-
@JsonIgnoreProperties(ignoreUnknown = true)
207-
public class NetworkSettings {
208-
209-
@JsonProperty("IPAddress")
210-
private String ipAddress;
211-
212-
@JsonProperty("IPPrefixLen")
213-
private Integer ipPrefixLen;
214-
215-
@JsonProperty("Gateway")
216-
private String gateway;
217-
218-
@JsonProperty("Bridge")
219-
private String bridge;
220-
221-
@JsonProperty("PortMapping")
222-
private Map<String, Map<String, String>> portMapping;
223-
224-
@JsonProperty("Ports")
225-
private Ports ports;
226-
227-
public String getIpAddress() {
228-
return ipAddress;
229-
}
230-
231-
public Integer getIpPrefixLen() {
232-
return ipPrefixLen;
233-
}
234-
235-
public String getGateway() {
236-
return gateway;
237-
}
238205

239-
public String getBridge() {
240-
return bridge;
241-
}
242-
243-
public Map<String, Map<String, String>> getPortMapping() {
244-
return portMapping;
245-
}
246-
247-
public Ports getPorts() {
248-
return ports;
249-
}
250-
251-
@Override
252-
public String toString() {
253-
return ToStringBuilder.reflectionToString(this);
254-
}
255-
}
256206

257207
@JsonIgnoreProperties(ignoreUnknown = true)
258208
public class ContainerState {
@@ -514,7 +464,5 @@ public String getMode() {
514464
public Boolean getRW() {
515465
return rw;
516466
}
517-
518467
}
519-
520468
}

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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
88
import com.fasterxml.jackson.annotation.JsonProperty;
9+
import com.github.dockerjava.api.model.NetworkSettings;
10+
import com.github.dockerjava.core.RemoteApiVersion;
911

1012
@JsonIgnoreProperties(ignoreUnknown = true)
1113
public class InspectExecResponse {
@@ -27,6 +29,12 @@ public class InspectExecResponse {
2729
@JsonProperty("ExitCode")
2830
private Integer exitCode;
2931

32+
@JsonProperty("ProcessConfig")
33+
private ProcessConfig processConfig;
34+
35+
@JsonProperty("Container")
36+
private Container container;
37+
3038
public String getId() {
3139
return id;
3240
}
@@ -51,13 +59,22 @@ public Integer getExitCode() {
5159
return exitCode;
5260
}
5361

62+
public ProcessConfig getProcessConfig() {
63+
return processConfig;
64+
}
65+
66+
public Container getContainer() {
67+
return container;
68+
}
69+
5470
@Override
5571
public String toString() {
5672
return ToStringBuilder.reflectionToString(this);
5773
}
5874

5975
@JsonIgnoreProperties(ignoreUnknown = true)
6076
public class ProcessConfig {
77+
6178
@JsonProperty("arguments")
6279
private List<String> arguments;
6380

@@ -98,4 +115,18 @@ public String toString() {
98115
return ToStringBuilder.reflectionToString(this);
99116
}
100117
}
118+
119+
@JsonIgnoreProperties(ignoreUnknown = true)
120+
public class Container {
121+
122+
@JsonProperty("NetworkSettings")
123+
private NetworkSettings networkSettings;
124+
125+
/**
126+
* @since {@link RemoteApiVersion#VERSION_1_21}
127+
*/
128+
public NetworkSettings getNetworkSettings() {
129+
return networkSettings;
130+
}
131+
}
101132
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import com.github.dockerjava.api.exception.NotFoundException;
4+
import com.github.dockerjava.api.model.Network;
5+
import com.github.dockerjava.core.RemoteApiVersion;
6+
7+
import javax.annotation.CheckForNull;
8+
import javax.annotation.Nonnull;
9+
10+
/**
11+
* Inspect a network.
12+
*
13+
* @since {@link RemoteApiVersion#VERSION_1_21}
14+
*/
15+
public interface InspectNetworkCmd extends SyncDockerCmd<Network> {
16+
17+
@CheckForNull
18+
public String getNetworkId();
19+
20+
public InspectNetworkCmd withNetworkId(@Nonnull String networkId);
21+
22+
/**
23+
* @throws NotFoundException
24+
* No such network
25+
*/
26+
@Override
27+
public Network exec() throws NotFoundException;
28+
29+
public static interface Exec extends DockerCmdSyncExec<InspectNetworkCmd, Network> {
30+
}
31+
}

0 commit comments

Comments
 (0)