X Tutup
Skip to content

Commit 4c9da61

Browse files
committed
Adding ListNetworksCmd
1 parent ff8c01c commit 4c9da61

File tree

10 files changed

+290
-173
lines changed

10 files changed

+290
-173
lines changed

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

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

9494
public ListVolumesCmd.Exec createListVolumesCmdExec();
9595

96+
public ListNetworksCmd.Exec createListNetworksCmdExec();
97+
9698
@Override
9799
public void close() throws IOException;
98100

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.github.dockerjava.api.command;
2+
3+
import com.github.dockerjava.api.model.Filters;
4+
import com.github.dockerjava.api.model.Network;
5+
6+
import javax.annotation.CheckForNull;
7+
import java.util.List;
8+
9+
public interface ListNetworksCmd extends SyncDockerCmd<List<Network>> {
10+
11+
@CheckForNull
12+
public Filters getFilters();
13+
14+
ListNetworksCmd withFilters(Filters filters);
15+
16+
public static interface Exec extends DockerCmdSyncExec<ListNetworksCmd, List<Network>> {
17+
}
18+
}
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
package com.github.dockerjava.api.model;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
import com.fasterxml.jackson.annotation.JsonInclude;
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import org.apache.commons.lang.builder.ToStringBuilder;
7+
8+
import java.util.List;
9+
import java.util.Map;
10+
11+
@JsonIgnoreProperties(ignoreUnknown = true)
12+
@JsonInclude(JsonInclude.Include.NON_NULL)
13+
public class Network {
14+
15+
@JsonProperty("Id")
16+
private String id;
17+
18+
@JsonProperty("Name")
19+
private String name;
20+
21+
@JsonProperty("Scope")
22+
private String scope;
23+
24+
@JsonProperty("Driver")
25+
private String driver;
26+
27+
@JsonProperty("IPAM")
28+
private Ipam ipam;
29+
30+
@JsonProperty("Containers")
31+
private Map<String, ContainerNetworkConfig> containers;
32+
33+
@JsonProperty("Options")
34+
private Map<String, String> options;
35+
36+
public String getId() {
37+
return id;
38+
}
39+
40+
public String getName() {
41+
return name;
42+
}
43+
44+
public String getScope() {
45+
return scope;
46+
}
47+
48+
public String getDriver() {
49+
return driver;
50+
}
51+
52+
public Ipam getIpam() {
53+
return ipam;
54+
}
55+
56+
public Map<String, ContainerNetworkConfig> getContainers() {
57+
return containers;
58+
}
59+
60+
public Map<String, String> getOptions() {
61+
return options;
62+
}
63+
64+
@Override
65+
public String toString() {
66+
return ToStringBuilder.reflectionToString(this);
67+
}
68+
69+
@JsonIgnoreProperties(ignoreUnknown = true)
70+
public static class ContainerNetworkConfig {
71+
72+
@JsonProperty("EndpointID")
73+
private String endpointId;
74+
75+
@JsonProperty("MacAddress")
76+
private String macAddress;
77+
78+
@JsonProperty("IPv4Address")
79+
private String ipV4Address;
80+
81+
@JsonProperty("IPv6Address")
82+
private String ipV6Address;
83+
84+
public String getEndpointId() {
85+
return endpointId;
86+
}
87+
88+
public String getMacAddress() {
89+
return macAddress;
90+
}
91+
92+
public String getIpV4Address() {
93+
return ipV4Address;
94+
}
95+
96+
public String getIpV6Address() {
97+
return ipV6Address;
98+
}
99+
100+
@Override
101+
public String toString() {
102+
return ToStringBuilder.reflectionToString(this);
103+
}
104+
}
105+
106+
@JsonIgnoreProperties(ignoreUnknown = true)
107+
public static class Ipam {
108+
109+
@JsonProperty("Driver")
110+
private String driver;
111+
112+
@JsonProperty("Config")
113+
List<Map<String, String>> config;
114+
115+
public String getDriver() {
116+
return driver;
117+
}
118+
119+
public List<Map<String, String>> getConfig() {
120+
return config;
121+
}
122+
123+
@Override
124+
public String toString() {
125+
return ToStringBuilder.reflectionToString(this);
126+
}
127+
}
128+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.github.dockerjava.api.model;
2+
3+
/**
4+
* Created by andrewk on 1/5/16.
5+
*/
6+
public class NetworkFilters extends Filters {
7+
8+
public Filters withNames(String... names) {
9+
return withFilter("name", names);
10+
}
11+
12+
public Filters withIds(String... ids) {
13+
return withFilter("id", ids);
14+
}
15+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.github.dockerjava.core.command;
2+
3+
import com.github.dockerjava.api.command.ListNetworksCmd;
4+
import com.github.dockerjava.api.model.Filters;
5+
import com.github.dockerjava.api.model.Network;
6+
7+
import java.util.List;
8+
9+
public class ListNetworksCmdImpl extends AbstrDockerCmd<ListNetworksCmd, List<Network>> implements
10+
ListNetworksCmd {
11+
12+
private Filters filters;
13+
14+
public ListNetworksCmdImpl(ListNetworksCmd.Exec exec) {
15+
super(exec);
16+
}
17+
18+
@Override public Filters getFilters() {
19+
return filters;
20+
}
21+
22+
@Override public ListNetworksCmd withFilters(Filters filters) {
23+
24+
this.filters = filters;
25+
return this;
26+
}
27+
}

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

Lines changed: 6 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import javax.ws.rs.client.ClientResponseFilter;
1717
import javax.ws.rs.client.WebTarget;
1818

19+
import com.github.dockerjava.api.command.*;
1920
import org.apache.http.config.RegistryBuilder;
2021
import org.apache.http.conn.socket.ConnectionSocketFactory;
2122
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
@@ -29,49 +30,6 @@
2930
import org.slf4j.LoggerFactory;
3031

3132
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
32-
import com.github.dockerjava.api.command.AttachContainerCmd;
33-
import com.github.dockerjava.api.command.AuthCmd;
34-
import com.github.dockerjava.api.command.BuildImageCmd;
35-
import com.github.dockerjava.api.command.CommitCmd;
36-
import com.github.dockerjava.api.command.ContainerDiffCmd;
37-
import com.github.dockerjava.api.command.CopyArchiveFromContainerCmd;
38-
import com.github.dockerjava.api.command.CopyArchiveToContainerCmd;
39-
import com.github.dockerjava.api.command.CopyFileFromContainerCmd;
40-
import com.github.dockerjava.api.command.CreateContainerCmd;
41-
import com.github.dockerjava.api.command.CreateImageCmd;
42-
import com.github.dockerjava.api.command.CreateVolumeCmd;
43-
import com.github.dockerjava.api.command.DockerCmdExecFactory;
44-
import com.github.dockerjava.api.command.EventsCmd;
45-
import com.github.dockerjava.api.command.ExecCreateCmd;
46-
import com.github.dockerjava.api.command.ExecStartCmd;
47-
import com.github.dockerjava.api.command.InfoCmd;
48-
import com.github.dockerjava.api.command.InspectContainerCmd;
49-
import com.github.dockerjava.api.command.InspectExecCmd;
50-
import com.github.dockerjava.api.command.InspectImageCmd;
51-
import com.github.dockerjava.api.command.InspectVolumeCmd;
52-
import com.github.dockerjava.api.command.KillContainerCmd;
53-
import com.github.dockerjava.api.command.ListContainersCmd;
54-
import com.github.dockerjava.api.command.ListImagesCmd;
55-
import com.github.dockerjava.api.command.ListVolumesCmd;
56-
import com.github.dockerjava.api.command.LogContainerCmd;
57-
import com.github.dockerjava.api.command.PauseContainerCmd;
58-
import com.github.dockerjava.api.command.PingCmd;
59-
import com.github.dockerjava.api.command.PullImageCmd;
60-
import com.github.dockerjava.api.command.PushImageCmd;
61-
import com.github.dockerjava.api.command.RemoveContainerCmd;
62-
import com.github.dockerjava.api.command.RemoveImageCmd;
63-
import com.github.dockerjava.api.command.RemoveVolumeCmd;
64-
import com.github.dockerjava.api.command.RestartContainerCmd;
65-
import com.github.dockerjava.api.command.SaveImageCmd;
66-
import com.github.dockerjava.api.command.SearchImagesCmd;
67-
import com.github.dockerjava.api.command.StartContainerCmd;
68-
import com.github.dockerjava.api.command.StatsCmd;
69-
import com.github.dockerjava.api.command.StopContainerCmd;
70-
import com.github.dockerjava.api.command.TagImageCmd;
71-
import com.github.dockerjava.api.command.TopContainerCmd;
72-
import com.github.dockerjava.api.command.UnpauseContainerCmd;
73-
import com.github.dockerjava.api.command.VersionCmd;
74-
import com.github.dockerjava.api.command.WaitContainerCmd;
7533
import com.github.dockerjava.api.exception.DockerClientException;
7634
import com.github.dockerjava.core.DockerClientConfig;
7735
import com.github.dockerjava.jaxrs.connector.ApacheConnectorProvider;
@@ -445,6 +403,11 @@ public ListVolumesCmd.Exec createListVolumesCmdExec() {
445403
return new ListVolumesCmdExec(getBaseResource(), getDockerClientConfig());
446404
}
447405

406+
@Override
407+
public ListNetworksCmd.Exec createListNetworksCmdExec() {
408+
return new ListNetworksCmdExec(getBaseResource(), getDockerClientConfig());
409+
}
410+
448411
@Override
449412
public void close() throws IOException {
450413
checkNotNull(client, "Factory not initialized. You probably forgot to call init()!");
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.github.dockerjava.jaxrs;
2+
3+
import com.github.dockerjava.api.command.ListNetworksCmd;
4+
import com.github.dockerjava.api.model.Network;
5+
import com.github.dockerjava.core.DockerClientConfig;
6+
import org.slf4j.Logger;
7+
import org.slf4j.LoggerFactory;
8+
9+
import javax.ws.rs.client.WebTarget;
10+
import javax.ws.rs.core.GenericType;
11+
import javax.ws.rs.core.MediaType;
12+
import java.util.List;
13+
14+
import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
15+
16+
public class ListNetworksCmdExec extends AbstrSyncDockerCmdExec<ListNetworksCmd, List<Network>> implements
17+
ListNetworksCmd.Exec {
18+
19+
private static final Logger LOGGER = LoggerFactory.getLogger(ListNetworksCmdExec.class);
20+
21+
public ListNetworksCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) {
22+
super(baseResource, dockerClientConfig);
23+
}
24+
25+
@Override
26+
protected List<Network> execute(ListNetworksCmd command) {
27+
WebTarget webTarget = getBaseResource().path("/networks");
28+
29+
if (command.getFilters() != null) {
30+
webTarget = webTarget
31+
.queryParam("filters", urlPathSegmentEscaper().escape(command.getFilters().toString()));
32+
}
33+
34+
LOGGER.trace("GET: {}", webTarget);
35+
List<Network> networks = webTarget.request().accept(MediaType.APPLICATION_JSON)
36+
.get(new GenericType<List<Network>>() {
37+
});
38+
LOGGER.trace("Response: {}", networks);
39+
40+
return networks;
41+
}
42+
43+
}

0 commit comments

Comments
 (0)
X Tutup