Skip to content

Commit 0abdfeb

Browse files
author
Marcus Linke
committed
Fix for Issue#54 Missing DnsSearch Option
1 parent 8b8fc37 commit 0abdfeb

File tree

6 files changed

+50
-6
lines changed

6 files changed

+50
-6
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.github.dockerjava.api.command.WaitContainerCmd;
3535
import com.github.dockerjava.api.model.AuthConfig;
3636

37+
// https://godoc.org/github.com/fsouza/go-dockerclient
3738
public interface DockerClient extends Closeable {
3839

3940
public AuthConfig authConfig() throws DockerException;

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

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

3-
import java.io.InputStream;
4-
53
import com.github.dockerjava.api.NotFoundException;
64
import com.github.dockerjava.api.model.ExposedPorts;
75
import com.github.dockerjava.api.model.Volumes;

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -254,16 +254,16 @@ public class HostConfig {
254254

255255
@JsonProperty("Dns")
256256
private String[] dns;
257+
258+
@JsonProperty("DnsSearch")
259+
private String[] dnsSearch;
257260

258261
@JsonProperty("VolumesFrom")
259262
private String[] volumesFrom;
260263

261264
@JsonProperty("ContainerIDFile")
262265
private String containerIDFile;
263266

264-
@JsonProperty("DnsSearch")
265-
private String dnsSearch;
266-
267267
// TODO: use Links class here?
268268
@JsonProperty("Links")
269269
private String[] links;
@@ -315,7 +315,7 @@ public String getContainerIDFile() {
315315
return containerIDFile;
316316
}
317317

318-
public String getDnsSearch() {
318+
public String[] getDnsSearch() {
319319
return dnsSearch;
320320
}
321321

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public interface StartContainerCmd extends DockerCmd<Void> {
2727
public boolean isPrivileged();
2828

2929
public String[] getDns();
30+
31+
public String[] getDnsSearch();
3032

3133
public String getVolumesFrom();
3234

@@ -54,7 +56,11 @@ public interface StartContainerCmd extends DockerCmd<Void> {
5456

5557
public StartContainerCmd withPublishAllPorts(boolean publishAllPorts);
5658

59+
// Set custom DNS servers
5760
public StartContainerCmd withDns(String... dns);
61+
62+
// Set custom DNS search domains
63+
public StartContainerCmd withDnsSearch(String... dnsSearch);
5864

5965
public StartContainerCmd withVolumesFrom(String volumesFrom);
6066

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ public class StartContainerCmdImpl extends AbstrDockerCmd<StartContainerCmd, Voi
4444

4545
@JsonProperty("Dns")
4646
private String[] dns;
47+
48+
@JsonProperty("DnsSearch")
49+
private String[] dnsSearch;
4750

4851
@JsonProperty("VolumesFrom")
4952
private String volumesFrom;
@@ -104,6 +107,11 @@ public boolean isPrivileged() {
104107
public String[] getDns() {
105108
return dns;
106109
}
110+
111+
@Override
112+
public String[] getDnsSearch() {
113+
return dnsSearch;
114+
}
107115

108116
@Override
109117
public String getVolumesFrom() {
@@ -189,6 +197,13 @@ public StartContainerCmd withDns(String... dns) {
189197
this.dns = dns;
190198
return this;
191199
}
200+
201+
@Override
202+
public StartContainerCmd withDnsSearch(String... dnsSearch) {
203+
Preconditions.checkNotNull(dnsSearch, "dnsSearch was not specified");
204+
this.dnsSearch = dnsSearch;
205+
return this;
206+
}
192207

193208
@Override
194209
public StartContainerCmd withVolumesFrom(String volumesFrom) {

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,31 @@ public void startContainerWithDns() throws DockerException {
114114

115115
assertThat(Arrays.asList(inspectContainerResponse.getHostConfig().getDns()),
116116
contains(aDnsServer, anotherDnsServer));
117+
}
118+
119+
@Test
120+
public void startContainerWithDnsSearch() throws DockerException {
121+
122+
String dnsSearch = "example.com";
123+
124+
CreateContainerResponse container = dockerClient
125+
.createContainerCmd("busybox")
126+
.withCmd("true").exec();
127+
128+
LOG.info("Created container {}", container.toString());
129+
130+
assertThat(container.getId(), not(isEmptyString()));
131+
132+
InspectContainerResponse inspectContainerResponse = dockerClient
133+
.inspectContainerCmd(container.getId()).exec();
134+
135+
dockerClient.startContainerCmd(container.getId()).withDnsSearch(dnsSearch).exec();
136+
137+
inspectContainerResponse = dockerClient.inspectContainerCmd(container
138+
.getId()).exec();
117139

140+
assertThat(Arrays.asList(inspectContainerResponse.getHostConfig().getDnsSearch()),
141+
contains(dnsSearch));
118142
}
119143

120144
@Test

0 commit comments

Comments
 (0)