@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); }
public void testPortFromEnvironmentVariables() { Config config = Config.builder().image("alpine-ext:3.2").env(ImmutableList.of("FOO=bar", "SSH_PORT=2345")) .build(); Container container = Container.builder().id("id").config(config).build(); assertEquals(customLoginPortFromImage.apply(container).get().intValue(), 2345); }
@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(); } }
@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(); }
@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); } }
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(); } }
/** * 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("/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; }
public void testNoImageFoundInMap() { Config config = Config.builder().image("unexisting").build(); Container container = Container.builder().id("id").config(config).build(); assertEquals(customLoginPortFromImage.apply(container), Optional.absent()); }
public void testCreateContainer() throws IOException, InterruptedException { 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().createContainer("testCreateContainer", containerConfig); assertNotNull(container); assertNotNull(container.id()); }
public Builder fromConfig(Config in) { return hostname(in.hostname()).domainname(in.domainname()).user(in.user()).memory(in.memory()) .memorySwap(in.memorySwap()).cpuShares(in.cpuShares()).attachStdin(in.attachStdin()) .attachStdout(in.attachStdout()).attachStderr(in.attachStderr()).tty(in.tty()) .openStdin(in.openStdin()).stdinOnce(in.stdinOnce()).env(in.env()).cmd(in.cmd()) .entrypoint(in.entrypoint()).image(in.image()).volumes(in.volumes()).workingDir(in.workingDir()) .networkDisabled(in.networkDisabled()).exposedPorts(in.exposedPorts()) .securityOpts(in.securityOpts()).hostConfig(in.hostConfig()); }
public Builder fromConfig(Config in) { return hostname(in.hostname()).domainname(in.domainname()).user(in.user()).memory(in.memory()) .memorySwap(in.memorySwap()).cpuShares(in.cpuShares()).attachStdin(in.attachStdin()) .attachStdout(in.attachStdout()).attachStderr(in.attachStderr()).tty(in.tty()) .openStdin(in.openStdin()).stdinOnce(in.stdinOnce()).env(in.env()).cmd(in.cmd()) .entrypoint(in.entrypoint()).image(in.image()).volumes(in.volumes()).workingDir(in.workingDir()) .networkDisabled(in.networkDisabled()).exposedPorts(in.exposedPorts()).securityOpts(in.securityOpts()) .hostConfig(in.hostConfig()).binds(in.binds()).links(in.links()).lxcConf(in.lxcConf()) .portBindings(in.portBindings()).publishAllPorts(in.publishAllPorts()).privileged(in.privileged()) .dns(in.dns()).dnsSearch(in.dnsSearch()).volumesFrom(in.volumesFrom()).capAdd(in.capAdd()) .capDrop(in.capDrop()).restartPolicy(in.restartPolicy()); }
public Builder fromConfig(Config in) { return hostname(in.hostname()).domainname(in.domainname()).user(in.user()).memory(in.memory()) .memorySwap(in.memorySwap()).cpuShares(in.cpuShares()).attachStdin(in.attachStdin()) .attachStdout(in.attachStdout()).attachStderr(in.attachStderr()).tty(in.tty()) .openStdin(in.openStdin()).stdinOnce(in.stdinOnce()).env(in.env()).cmd(in.cmd()) .entrypoint(in.entrypoint()).image(in.image()).volumes(in.volumes()).workingDir(in.workingDir()) .networkDisabled(in.networkDisabled()).exposedPorts(in.exposedPorts()) .securityOpts(in.securityOpts()).hostConfig(in.hostConfig()); }
public Builder fromConfig(Config in) { return hostname(in.hostname()).domainname(in.domainname()).user(in.user()).memory(in.memory()) .memorySwap(in.memorySwap()).cpuShares(in.cpuShares()).attachStdin(in.attachStdin()) .attachStdout(in.attachStdout()).attachStderr(in.attachStderr()).tty(in.tty()) .openStdin(in.openStdin()).stdinOnce(in.stdinOnce()).env(in.env()).cmd(in.cmd()) .entrypoint(in.entrypoint()).image(in.image()).volumes(in.volumes()).workingDir(in.workingDir()) .networkDisabled(in.networkDisabled()).exposedPorts(in.exposedPorts()) .securityOpts(in.securityOpts()).hostConfig(in.hostConfig()); }
public void testMostSpecificImageIsPicked() { Config config = Config.builder().image("ubuntu:12.04").build(); Container container = Container.builder().id("id").config(config).build(); assertEquals(customLoginPortFromImage.apply(container).get().intValue(), 8080); }