Config.Builder containerConfigBuilder = templateOptions.getConfigBuilder(); if (containerConfigBuilder == null) { containerConfigBuilder = Config.builder().image(imageId); containerConfigBuilder.entrypoint(templateOptions.getEntrypoint()); containerConfigBuilder.cmd(templateOptions.getCommands()); containerConfigBuilder.memory(templateOptions.getMemory()); containerConfigBuilder.hostname(templateOptions.getHostname()); containerConfigBuilder.cpuShares(templateOptions.getCpuShares()); containerConfigBuilder.openStdin(templateOptions.getOpenStdin()); containerConfigBuilder.env(templateOptions.getEnv()); containerConfigBuilder.volumes(volumes); containerConfigBuilder.hostConfig(hostConfigBuilder.build()); containerConfig = containerConfigBuilder.build(); Map<String, Object> exposedPorts = Maps.newHashMap(); if (containerConfig.exposedPorts() == null) { containerConfigBuilder.exposedPorts(exposedPorts); containerConfig = containerConfigBuilder.build(); containerConfigBuilder.hostConfig(hostConfigBuilder.build()); } else { containerConfigBuilder.image(imageId); containerConfig = containerConfigBuilder.build();
@Test public void testFromConfig() { Config origConfig = Config.builder() .hostname("6c9932f478bd") .env(ImmutableList.of("PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")) .image("57e570db16baba1e8c0d6f3c15868ddb400f64ff76ec948e65c3ca3f15fb3587") .domainname("") .user("") .cmd(ImmutableList.of("-name", "7a:63:a2:39:7b:0f")) .entrypoint(ImmutableList.of("/home/weave/weaver", "-iface", "ethwe", "-wait", "5")) .image("zettio/weave") .workingDir("/home/weave") .exposedPorts(ImmutableMap.of("6783/tcp", ImmutableMap.of(), "6783/udp", ImmutableMap.of())) .build(); Config newConfig = Config.builder().fromConfig(origConfig).build(); assertThat(origConfig).isEqualTo(newConfig); }
Config.Builder containerConfigBuilder = templateOptions.getConfigBuilder(); if (containerConfigBuilder == null) { containerConfigBuilder = Config.builder().image(imageId); containerConfigBuilder.entrypoint(templateOptions.getEntrypoint()); containerConfigBuilder.cmd(templateOptions.getCommands()); containerConfigBuilder.memory(templateOptions.getMemory()); containerConfigBuilder.hostname(templateOptions.getHostname()); containerConfigBuilder.cpuShares(templateOptions.getCpuShares()); containerConfigBuilder.openStdin(templateOptions.getOpenStdin()); containerConfigBuilder.env(templateOptions.getEnv()); containerConfigBuilder.volumes(volumes); containerConfigBuilder.hostConfig(hostConfigBuilder.build()); containerConfig = containerConfigBuilder.build(); Map<String, Object> exposedPorts = Maps.newHashMap(); if (containerConfig.exposedPorts() == null) { containerConfigBuilder.exposedPorts(exposedPorts); containerConfig = containerConfigBuilder.build(); containerConfigBuilder.hostConfig(hostConfigBuilder.build()); } else { containerConfigBuilder.image(imageId); containerConfig = containerConfigBuilder.build();
Config.Builder containerConfigBuilder = templateOptions.getConfigBuilder(); if (containerConfigBuilder == null) { containerConfigBuilder = Config.builder().image(imageId); containerConfigBuilder.entrypoint(templateOptions.getEntrypoint()); containerConfigBuilder.cmd(templateOptions.getCommands()); containerConfigBuilder.memory(templateOptions.getMemory()); containerConfigBuilder.hostname(templateOptions.getHostname()); containerConfigBuilder.cpuShares(templateOptions.getCpuShares()); containerConfigBuilder.openStdin(templateOptions.getOpenStdin()); containerConfigBuilder.env(templateOptions.getEnv()); containerConfigBuilder.volumes(volumes); containerConfigBuilder.hostConfig(hostConfigBuilder.build()); containerConfig = containerConfigBuilder.build(); Map<String, Object> exposedPorts = Maps.newHashMap(); if (containerConfig.exposedPorts() == null) { containerConfigBuilder.exposedPorts(exposedPorts); containerConfig = containerConfigBuilder.build(); containerConfigBuilder.hostConfig(hostConfigBuilder.build()); } else { containerConfigBuilder.image(imageId); containerConfig = containerConfigBuilder.build();
containerConfigBuilder = Config.builder(); containerConfigBuilder.entrypoint(templateOptions.getEntrypoint()); containerConfigBuilder.cmd(templateOptions.getCommands()); containerConfigBuilder.memory(templateOptions.getMemory()); containerConfigBuilder.hostname(templateOptions.getHostname()); containerConfigBuilder.cpuShares(templateOptions.getCpuShares()); containerConfigBuilder.openStdin(templateOptions.getOpenStdin()); containerConfigBuilder.env(templateOptions.getEnv()); volumes.put(containerDir, Maps.newHashMap()); containerConfigBuilder.volumes(volumes); containerConfigBuilder.hostConfig(hostConfigBuilder.build()); containerConfigBuilder.image(imageId); Config containerConfig = containerConfigBuilder.build(); Map<String, Object> exposedPorts = Maps.newHashMap(); if (containerConfig.exposedPorts() == null) { containerConfigBuilder.exposedPorts(exposedPorts); containerConfig = containerConfigBuilder.build(); containerConfigBuilder.hostConfig(hostConfigBuilder.build()); containerConfig = containerConfigBuilder.build();
.args(ImmutableList.of("-iface", "ethwe", "-wait", "5", "-name", "7a:63:a2:39:7b:0f")) .config(Config.builder() .hostname("6c9932f478bd") .env(ImmutableList.of("PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")) .image("zettio/weave") .domainname("") .user("") .cmd(ImmutableList.of("-name", "7a:63:a2:39:7b:0f")) .entrypoint(ImmutableList.of("/home/weave/weaver", "-iface", "ethwe", "-wait", "5")) .workingDir("/home/weave") .exposedPorts(ImmutableMap.of("6783/tcp", ImmutableMap.of(), "6783/udp", ImmutableMap.of())) .build()) .state(State.create(10357, true, 0, "2015-11-10T09:33:21.68146124Z", "0001-01-01T00:00:00Z", false, false, "running", false, false, "")) .image("57e570db16baba1e8c0d6f3c15868ddb400f64ff76ec948e65c3ca3f15fb3587")
@BeforeMethod public void setup() { Config containerConfig = Config.builder() .hostname("6d35806c1bd2") .domainname("") .user("") .memory(0) .memorySwap(0) .cpuShares(0) .attachStdin(false) .attachStdout(false) .attachStderr(false) .exposedPorts(ImmutableMap.of("22/tcp", ImmutableMap.of())) .tty(false) .openStdin(false) .stdinOnce(false) .env(null) .cmd(ImmutableList.of("/usr/sbin/sshd", "-D")) .image("jclouds/ubuntu") .workingDir("") .entrypoint(null) .networkDisabled(false) .build();
.attachStderr(true) .attachStdin(false) .attachStdout(true) .cmd(ImmutableList.<String> of("/bin/sh", "-c", "exit 9")) .domainname("") .entrypoint(null) .env(ImmutableList.<String> of("PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")) .exposedPorts(null) .hostname("ba033ac44011") .image("ubuntu") .networkDisabled(false) .openStdin(false) .stdinOnce(false) .tty(false) .user("") .volumes(null) .workingDir("") .build()) .created(new SimpleDateFormatDateService().iso8601DateParse("2015-01-06T15:47:31.485331387Z")) .driver("devicemapper")
public Config expected() { return Config.builder() .hostname("") .domainname("") .user("") .attachStdin(false) .attachStdout(true) .attachStderr(true) .tty(false) .openStdin(false) .stdinOnce(false) .env(ImmutableList.of("FOO=bar", "BAZ=quux")) .cmd(ImmutableList.of("date")) .entrypoint(ImmutableList.of("")) .image("ubuntu") .volumes(ImmutableMap.of("/volumes/data", ImmutableMap.of())) .workingDir("") .networkDisabled(false) .exposedPorts(ImmutableMap.of("22/tcp", ImmutableMap.of())) .hostConfig(HostConfig.builder() .binds(ImmutableList.of("/tmp:/tmp")) .links(ImmutableList.of("redis3:redis")) .build();
"author", "comment", Config.builder().cmd(ImmutableList.of("/bin/sh", "-c", "echo hello world")) .env(ImmutableList.of( "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "HOME=/root", .exposedPorts(ImmutableMap.of("8081/tcp", Maps.newHashMap())) .hostname("f22711318734") .domainname("") .user("user") .image("05794515afd5724df1cdf0e674ae932455fce7dea3c70a94d77119ad1fa954ba") .workingDir("/home/user") .build(), Config.builder().cmd(ImmutableList.of("/bin/sh", "-c", "echo hello world")) .env(ImmutableList.of( "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "HOME=/root", "JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64") .exposedPorts(ImmutableMap.of("8081/tcp", Maps.newHashMap())) .hostname("f22711318734") .domainname("") .user("user") .image("05794515afd5724df1cdf0e674ae932455fce7dea3c70a94d77119ad1fa954ba") .workingDir("/home/user") .build(), "05794515afd5724df1cdf0e674ae932455fce7dea3c70a94d77119ad1fa954ba", new SimpleDateFormatDateService().iso8601DateParse("2014-11-24T11:09:20.310023104Z"),
@Test(dependsOnMethods = "testImageCreated") public void testAdvancedConfig() throws RunNodesException { final String portId = SSH_PORT + "/tcp"; final DockerTemplateOptions options = DockerTemplateOptions.Builder .configBuilder( Config.builder().env(ImmutableList.<String> of("SSH_PORT=" + SSH_PORT, "ROOT_PASSWORD=jcloudsRulez")) .exposedPorts(ImmutableMap.<String, Object> of(portId, Maps.newHashMap())) .hostConfig(HostConfig.builder().networkMode("bridge") .portBindings(ImmutableMap.<String, List<Map<String, String>>> of(portId, Lists.<Map<String, String>>newArrayList(ImmutableMap.of("HostPort", String.valueOf(SSH_PORT_BRIDGE))))) .build()) .image("test-if-this-value-is-correctly-overriden")) .overrideLoginUser("root").overrideLoginPassword("jcloudsRulez").blockOnPort(SSH_PORT_BRIDGE, 30); final Template template = view.getComputeService().templateBuilder().imageId(image.id()).options(options).build(); String nodeId = null; try { NodeMetadata node = Iterables .getOnlyElement(view.getComputeService().createNodesInGroup("ssh-net-bridge", 1, template)); nodeId = node.getId(); ExecResponse response = view.getComputeService().runScriptOnNode(nodeId, "sh -c 'true'", wrapInInitScript(false)); assertEquals(response.getExitStatus(), 0); } finally { if (nodeId != null) view.getComputeService().destroyNode(nodeId); } }
@BeforeMethod public void setup() { image = org.jclouds.docker.domain.Image.create( "id", // id "author", "comment", Config.builder() .image("imageId") .build(), Config.builder() .image("imageId") .build(), "parent", // parent new Date(), // created "containerId", // container "1.3.1", // dockerVersion "x86_64", // architecture "os", // os 0L, // size 0L, // virtualSize ImmutableList.of("repoTag1:version") // repoTags ); function = new ImageToImage(); }
public void testCreateContainer() throws Exception { MockWebServer server = mockWebServer(new MockResponse().setBody(payloadFromResource("/container-creation.json"))); ContainerApi api = api(DockerApi.class, server.getUrl("/").toString()).getContainerApi(); Config containerConfig = Config.builder() .cmd(ImmutableList.of("date")) .attachStdin(false) .attachStderr(true) .attachStdout(true) .tty(false) .image("base") .build(); try { Container container = api.createContainer("test", containerConfig); assertSent(server, "POST", "/containers/create?name=test"); assertNotNull(container); assertThat(container.id()).isEqualTo("c6c74153ae4b1d1633d68890a68d89c40aa5e284a1ea016cbc6ef0e634ee37b2"); } finally { server.shutdown(); } }
@BeforeClass protected void init() { if (api.getImageApi().inspectImage(ALPINE_IMAGE_TAG) == null) { CreateImageOptions options = CreateImageOptions.Builder.fromImage(ALPINE_IMAGE_TAG); InputStream createImageStream = api.getImageApi().createImage(options); consumeStream(createImageStream); } image = api.getImageApi().inspectImage(ALPINE_IMAGE_TAG); assertNotNull(image); Config containerConfig = Config.builder().image(image.id()) .cmd(ImmutableList.of("/bin/sh", "-c", "touch hello; while true; do echo hello world; sleep 1; done")) .build(); container = api.getContainerApi().createContainer("miscApiTest", containerConfig); assertNotNull(container); api.getContainerApi().startContainer(container.id()); assertTrue(api.getContainerApi().inspectContainer(container.id()).state().running()); }
/** * This method sets Config.Builder configuration object, which can be used as * a replacement for all the other settings from this class. Some values in * the provided Config.Builder instance (the image name for instance) can be * ignored or their value can be changed. * * @param configBuilder * Config.Builder instance. This instance can be changed in this * method! */ public DockerTemplateOptions configBuilder(Config.Builder configBuilder) { this.configBuilder = configBuilder != null ? Config.builder().fromConfig(configBuilder.image(NO_IMAGE).build()) : null; return this; }
@BeforeClass protected void init() { if (api.getImageApi().inspectImage(ALPINE_IMAGE_TAG) == null) { CreateImageOptions options = CreateImageOptions.Builder.fromImage(ALPINE_IMAGE_TAG); InputStream createImageStream = api.getImageApi().createImage(options); consumeStream(createImageStream); } image = api.getImageApi().inspectImage(ALPINE_IMAGE_TAG); assertNotNull(image); Config containerConfig = Config.builder().image(image.id()) .cmd(ImmutableList.of("sh", "-c", "touch hello; while true; do echo hello world; sleep 1; done")) .build(); container = api.getContainerApi().createContainer("jclouds-test-network", containerConfig); api.getContainerApi().startContainer(container.id()); container = api.getContainerApi().inspectContainer(container.id()); }
/** * This method sets Config.Builder configuration object, which can be used as * a replacement for all the other settings from this class. Some values in * the provided Config.Builder instance (the image name for instance) can be * ignored or their value can be changed. * * @param configBuilder * Config.Builder instance. This instance can be changed in this * method! */ public DockerTemplateOptions configBuilder(Config.Builder configBuilder) { this.configBuilder = configBuilder != null ? Config.builder().fromConfig(configBuilder.image(NO_IMAGE).build()) : null; return this; }
/** * This method sets Config.Builder configuration object, which can be used as * a replacement for all the other settings from this class. Some values in * the provided Config.Builder instance (the image name for instance) can be * ignored or their value can be changed. * * @param configBuilder * Config.Builder instance. This instance can be changed in this * method! */ public DockerTemplateOptions configBuilder(Config.Builder configBuilder) { this.configBuilder = configBuilder != null ? Config.builder().fromConfig(configBuilder.image(NO_IMAGE).build()) : null; return this; }
@Test public void testNullValuesPropagation() { Config config = Config.builder() .image("zettio/weave") .build(); assertThat(config.cmd()).isNull(); assertThat(config.entrypoint()).isNull(); assertThat(config.env()).isNull(); assertThat(config.hostname()).isNull(); assertThat(config.domainname()).isNull(); assertThat(config.workingDir()).isNull(); assertThat(config.hostConfig()).isNull(); } }
/** * This method sets Config.Builder configuration object, which can be used as * a replacement for all the other settings from this class. Some values in * the provided Config.Builder instance (the image name for instance) can be * ignored or their value can be changed. * * @param configBuilder * Config.Builder instance. This instance can be changed in this * method! */ public DockerTemplateOptions configBuilder(Config.Builder configBuilder) { this.configBuilder = configBuilder != null ? Config.builder().fromConfig(configBuilder.image(NO_IMAGE).build()) : null; return this; }