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 @@ -121,6 +121,7 @@
"CamelDockerStdInOpen": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "With StdIn in open flag", "constantName": "org.apache.camel.component.docker.DockerConstants#DOCKER_STD_IN_OPEN" },
"CamelDockerVolumesFrom": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "VolumesFrom or VolumesFrom[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "With volumes from", "constantName": "org.apache.camel.component.docker.DockerConstants#DOCKER_VOLUMES_FROM" },
"CamelDockerDomainName": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "With domain name", "constantName": "org.apache.camel.component.docker.DockerConstants#DOCKER_DOMAIN_NAME" },
"CamelDockerBinds": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Bind or Bind[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "With binds", "constantName": "org.apache.camel.component.docker.DockerConstants#DOCKER_BINDS" },
"CamelDockerCapAdd": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Capability or Capability[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "With cap add", "constantName": "org.apache.camel.component.docker.DockerConstants#DOCKER_CAP_ADD" },
"CamelDockerCapDrop": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Capability or Capability[]", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "With cap drop", "constantName": "org.apache.camel.component.docker.DockerConstants#DOCKER_CAP_DROP" },
"CamelDockerNetwork": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The network name", "constantName": "org.apache.camel.component.docker.DockerConstants#DOCKER_NETWORK" },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -280,11 +280,12 @@ public final class DockerConstants {
public static final String DOCKER_VOLUMES_FROM = "CamelDockerVolumesFrom";
@Metadata(description = "With domain name", javaType = "String")
public static final String DOCKER_DOMAIN_NAME = "CamelDockerDomainName";
@Metadata(description = "With binds", javaType = "Bind or Bind[]")
public static final String DOCKER_BINDS = "CamelDockerBinds";

/**
* Start Container *
*/
public static final String DOCKER_BINDS = "CamelDockerBinds";
@Metadata(description = "With cap add", javaType = "Capability or Capability[]")
public static final String DOCKER_CAP_ADD = "CamelDockerCapAdd";
@Metadata(description = "With cap drop", javaType = "Capability or Capability[]")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
import com.github.dockerjava.api.command.UnpauseContainerCmd;
import com.github.dockerjava.api.command.VersionCmd;
import com.github.dockerjava.api.model.AuthConfig;
import com.github.dockerjava.api.model.Bind;
import com.github.dockerjava.api.model.Capability;
import com.github.dockerjava.api.model.ExposedPort;
import com.github.dockerjava.api.model.ExposedPorts;
Expand Down Expand Up @@ -845,6 +846,12 @@ private CreateContainerCmd executeCreateContainerRequest(DockerClient client, Me
createContainerCmd.withVolumes(volume);
}

Bind[] binds = DockerHelper.getArrayProperty(DockerConstants.DOCKER_BINDS, message, Bind.class);

if (binds != null) {
createContainerCmd.getHostConfig().withBinds(binds);
}

VolumesFrom[] volumesFrom
= DockerHelper.getArrayProperty(DockerConstants.DOCKER_VOLUMES_FROM, message, VolumesFrom.class);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import java.util.Map;

import com.github.dockerjava.api.command.CreateContainerCmd;
import com.github.dockerjava.api.model.Bind;
import com.github.dockerjava.api.model.Capability;
import com.github.dockerjava.api.model.ExposedPort;
import com.github.dockerjava.api.model.HostConfig;
Expand All @@ -31,12 +32,11 @@
import org.mockito.Mockito;

import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;

/**
* Validates Create Container Request headers are parsed properly
*/
public class CreateContainerCmdHeaderTest extends BaseDockerHeaderTest<CreateContainerCmd> {
class CreateContainerCmdHeaderTest extends BaseDockerHeaderTest<CreateContainerCmd> {

@Mock
private CreateContainerCmd mockObject;
Expand Down Expand Up @@ -73,6 +73,7 @@ void createContainerHeaderTest() {
String[] entrypoint = new String[] { "sleep", "9999" };
String portSpecs = "80";
String dns = "8.8.8.8";
Bind bind = Bind.parse("/Users/foo/apps/:/apps:ro");

Map<String, Object> headers = getDefaultParameters();
headers.put(DockerConstants.DOCKER_IMAGE, image);
Expand Down Expand Up @@ -102,15 +103,16 @@ void createContainerHeaderTest() {
headers.put(DockerConstants.DOCKER_PORT_SPECS, portSpecs);
headers.put(DockerConstants.DOCKER_DNS, dns);
headers.put(DockerConstants.DOCKER_DOMAIN_NAME, domainName);
headers.put(DockerConstants.DOCKER_BINDS, bind);

Mockito.when(mockObject.getHostConfig()).thenReturn(hostConfig);

template.sendBodyAndHeaders("direct:in", "", headers);

Mockito.verify(dockerClient, Mockito.times(1)).createContainerCmd(image);
Mockito.verify(mockObject, Mockito.times(1)).withExposedPorts(eq(exposedPort));
Mockito.verify(mockObject, Mockito.times(1)).withTty(eq(tty));
Mockito.verify(mockObject, Mockito.times(1)).withName(eq(name));
Mockito.verify(mockObject, Mockito.times(1)).withExposedPorts(exposedPort);
Mockito.verify(mockObject, Mockito.times(1)).withTty(tty);
Mockito.verify(mockObject, Mockito.times(1)).withName(name);
Mockito.verify(mockObject, Mockito.times(1)).withWorkingDir(workingDir);
Mockito.verify(mockObject, Mockito.times(1)).withNetworkDisabled(disableNetwork);
Mockito.verify(mockObject, Mockito.times(1)).withHostName(hostname);
Expand All @@ -129,6 +131,7 @@ void createContainerHeaderTest() {
Mockito.verify(mockObject, Mockito.times(1)).withDomainName(domainName);

Mockito.verify(hostConfig, Mockito.times(1)).withVolumesFrom(volumesFromContainer);
Mockito.verify(hostConfig, Mockito.times(1)).withBinds(bind);
Mockito.verify(hostConfig, Mockito.times(1)).withCapAdd(capAdd);
Mockito.verify(hostConfig, Mockito.times(1)).withCapDrop(capDrop);
Mockito.verify(hostConfig, Mockito.times(1)).withDns(dns);
Expand Down