Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import com.github.dockerjava.api.ConflictException;
import com.github.dockerjava.api.NotFoundException;
import com.github.dockerjava.api.model.ExposedPort;
import com.github.dockerjava.api.model.HostConfig;
import com.github.dockerjava.api.model.Links;
import com.github.dockerjava.api.model.Volume;

public interface CreateContainerCmd extends DockerCmd<CreateContainerResponse>{
Expand Down Expand Up @@ -94,6 +96,10 @@ public interface CreateContainerCmd extends DockerCmd<CreateContainerResponse>{
public String[] getVolumesFrom();

public CreateContainerCmd withVolumesFrom(String... volumesFrom);

public HostConfig getHostConfig();

public CreateContainerCmd withHostConfig(HostConfig hostConfig);


/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,121 +234,5 @@ public String toString() {
}
}

@JsonIgnoreProperties(ignoreUnknown = true)
public class HostConfig {

@JsonProperty("Binds")
private String[] binds;

@JsonProperty("LxcConf")
private LxcConf[] lxcConf;

@JsonProperty("PortBindings")
private Ports portBindings;

@JsonProperty("PublishAllPorts")
private boolean publishAllPorts;

@JsonProperty("Privileged")
private boolean privileged;

@JsonProperty("Dns")
private String[] dns;

@JsonProperty("DnsSearch")
private String[] dnsSearch;

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

@JsonProperty("ContainerIDFile")
private String containerIDFile;

// TODO: use Links class here?
@JsonProperty("Links")
private String[] links;

@JsonProperty("NetworkMode")
private String networkMode;

@JsonProperty("Devices")
private Device[] devices;

@JsonProperty("RestartPolicy")
private RestartPolicy restartPolicy;

@JsonProperty("CapAdd")
private String[] capAdd;

@JsonProperty("CapDrop")
private String[] capDrop;

public String[] getBinds() {
return binds;
}

public LxcConf[] getLxcConf() {
return lxcConf;
}

public Ports getPortBindings() {
return portBindings;
}

public boolean isPublishAllPorts() {
return publishAllPorts;
}

public boolean isPrivileged() {
return privileged;
}

public String[] getDns() {
return dns;
}

public String[] getVolumesFrom() {
return volumesFrom;
}

public String getContainerIDFile() {
return containerIDFile;
}

public String[] getDnsSearch() {
return dnsSearch;
}

public String[] getLinks() {
return links;
}

public String getNetworkMode() {
return networkMode;
}

public Device[] getDevices() {
return devices;
}

public RestartPolicy getRestartPolicy() {
return restartPolicy;
}

public String[] getCapAdd() {
return capAdd;
}

public String[] getCapDrop() {
return capDrop;
}

@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}

}

}

204 changes: 204 additions & 0 deletions src/main/java/com/github/dockerjava/api/model/HostConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,204 @@
package com.github.dockerjava.api.model;

import org.apache.commons.lang.builder.ToStringBuilder;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonIgnoreProperties(ignoreUnknown = true)
public class HostConfig {

@JsonProperty("Binds")
private String[] binds;

@JsonProperty("Links")
private Links links;

@JsonProperty("LxcConf")
private LxcConf[] lxcConf;

@JsonProperty("PortBindings")
private Ports portBindings;

@JsonProperty("PublishAllPorts")
private boolean publishAllPorts;

@JsonProperty("Privileged")
private boolean privileged;

@JsonProperty("Dns")
private String[] dns;

@JsonProperty("DnsSearch")
private String[] dnsSearch;

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

@JsonProperty("ContainerIDFile")
private String containerIDFile;

@JsonProperty("CapAdd")
private String[] capAdd;

@JsonProperty("CapDrop")
private String[] capDrop;

@JsonProperty("RestartPolicy")
private RestartPolicy restartPolicy;

@JsonProperty("NetworkMode")
private String networkMode;

@JsonProperty("Devices")
private Device[] devices;

public HostConfig() {
}

public HostConfig(String[] binds, Links links, LxcConf[] lxcConf, Ports portBindings, boolean publishAllPorts,
boolean privileged, String[] dns, String[] dnsSearch, String[] volumesFrom, String containerIDFile,
String[] capAdd, String[] capDrop, RestartPolicy restartPolicy, String networkMode, Device[] devices) {
this.binds = binds;
this.links = links;
this.lxcConf = lxcConf;
this.portBindings = portBindings;
this.publishAllPorts = publishAllPorts;
this.privileged = privileged;
this.dns = dns;
this.dnsSearch = dnsSearch;
this.volumesFrom = volumesFrom;
this.containerIDFile = containerIDFile;
this.capAdd = capAdd;
this.capDrop = capDrop;
this.restartPolicy = restartPolicy;
this.networkMode = networkMode;
this.devices = devices;
}

public String[] getBinds() {
return binds;
}

public LxcConf[] getLxcConf() {
return lxcConf;
}

public Ports getPortBindings() {
return portBindings;
}

public boolean isPublishAllPorts() {
return publishAllPorts;
}

public boolean isPrivileged() {
return privileged;
}

public String[] getDns() {
return dns;
}

public String[] getVolumesFrom() {
return volumesFrom;
}

public String getContainerIDFile() {
return containerIDFile;
}

public String[] getDnsSearch() {
return dnsSearch;
}

public Links getLinks() {
return links;
}

public String getNetworkMode() {
return networkMode;
}

public Device[] getDevices() {
return devices;
}

public RestartPolicy getRestartPolicy() {
return restartPolicy;
}

public String[] getCapAdd() {
return capAdd;
}

public String[] getCapDrop() {
return capDrop;
}

public void setBinds(String[] binds) {
this.binds = binds;
}

public void setLinks(Links links) {
this.links = links;
}

public void setLxcConf(LxcConf[] lxcConf) {
this.lxcConf = lxcConf;
}

public void setPortBindings(Ports portBindings) {
this.portBindings = portBindings;
}

public void setPublishAllPorts(boolean publishAllPorts) {
this.publishAllPorts = publishAllPorts;
}

public void setPrivileged(boolean privileged) {
this.privileged = privileged;
}

public void setDns(String[] dns) {
this.dns = dns;
}

public void setDnsSearch(String[] dnsSearch) {
this.dnsSearch = dnsSearch;
}

public void setVolumesFrom(String[] volumesFrom) {
this.volumesFrom = volumesFrom;
}

public void setContainerIDFile(String containerIDFile) {
this.containerIDFile = containerIDFile;
}

public void setCapAdd(String[] capAdd) {
this.capAdd = capAdd;
}

public void setCapDrop(String[] capDrop) {
this.capDrop = capDrop;
}

public void setRestartPolicy(RestartPolicy restartPolicy) {
this.restartPolicy = restartPolicy;
}

public void setNetworkMode(String networkMode) {
this.networkMode = networkMode;
}

public void setDevices(Device[] devices) {
this.devices = devices;
}

@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}

}
6 changes: 4 additions & 2 deletions src/main/java/com/github/dockerjava/api/model/Link.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public String getAlias()
/**
* Parses a textual link specification (as used by the Docker CLI) to a {@link Link}.
*
* @param serialized the specification, e.g. <code>name:alias</code>
* @param serialized the specification, e.g. <code>name:alias</code> or <code>/name1:/name2/alias</code>
* @return a {@link Link} matching the specification
* @throws IllegalArgumentException if the specification cannot be parsed
*/
Expand All @@ -63,7 +63,9 @@ public static Link parse(final String serialized) throws IllegalArgumentExceptio
final String[] parts = serialized.split(":");
switch (parts.length) {
case 2: {
return new Link(parts[0], parts[1]);
String[] nameSplit = parts[0].split("/");
String[] aliasSplit = parts[1].split("/");
return new Link(nameSplit[nameSplit.length - 1], aliasSplit[aliasSplit.length - 1]);
}
default: {
throw new IllegalArgumentException();
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/com/github/dockerjava/api/model/Links.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,11 @@ public Links deserialize(final JsonParser jsonParser, final DeserializationConte
final List<Link> binds = new ArrayList<Link>();
final ObjectCodec oc = jsonParser.getCodec();
final JsonNode node = oc.readTree(jsonParser);
for (final Iterator<Map.Entry<String, JsonNode>> it = node.fields(); it.hasNext();) {
for (final Iterator<JsonNode> it = node.elements(); it.hasNext();) {

final Map.Entry<String, JsonNode> field = it.next();
if (!field.getValue().equals(NullNode.getInstance())) {
binds.add(Link.parse(field.getKey()));
final JsonNode element = it.next();
if (!element.equals(NullNode.getInstance())) {
binds.add(Link.parse(element.asText()));
}
}
return new Links(binds.toArray(new Link[0]));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;

import com.github.dockerjava.api.command.InspectContainerResponse.HostConfig;
import com.github.dockerjava.api.command.InspectContainerResponse.NetworkSettings;
import com.github.dockerjava.api.model.Ports.Binding;

Expand Down
1 change: 0 additions & 1 deletion src/main/java/com/github/dockerjava/api/model/Ports.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.node.NullNode;
import com.github.dockerjava.api.command.InspectContainerResponse.HostConfig;
import com.github.dockerjava.api.command.InspectContainerResponse.NetworkSettings;

/**
Expand Down
Loading