private Network build(IPAM ipam) { final org.arquillian.cube.docker.impl.client.config.Network network = new org.arquillian.cube.docker.impl.client.config.Network(); network.setDriver(this.networkDriver); network.setIpam(ipam); return new Network(this.id, network); }
public Network build() { final org.arquillian.cube.docker.impl.client.config.Network network = new org.arquillian.cube.docker.impl.client.config.Network(); network.setDriver(this.networkDriver); return new Network(this.id, network); }
private List<String> before(Object testInstance, List<Field> allStaticNetworkDslFields) throws IllegalAccessException { final List<String> networks = new ArrayList<>(); for (final Field networkDslField : allStaticNetworkDslFields) { NetworkDsl networkDsl = (NetworkDsl) networkDslField.get(testInstance); final Network network = networkDsl.buildNetwork(); final org.arquillian.cube.docker.impl.client.config.Network dockerNetwork = network.getNetwork(); final String networkId = dockerClientExecutor.createNetwork(network.getId(), dockerNetwork); dockerNetwork.addMetadata(IsNetworkContainerObject.class, new IsNetworkContainerObject()); networks.add(networkId); } return networks; }
public String createNetwork(String id, Network network) { this.readWriteLock.readLock().lock(); try { final CreateNetworkCmd createNetworkCmd = this.dockerClient.createNetworkCmd().withName(id); if (network.getDriver() != null) { createNetworkCmd.withDriver(network.getDriver()); } if (network.getIpam() != null) { createNetworkCmd.withIpam(new com.github.dockerjava.api.model.Network.Ipam().withConfig( createIpamConfig(network))); } if (network.getOptions() != null && !network.getOptions().isEmpty()) { createNetworkCmd.withOptions(network.getOptions()); } final CreateNetworkResponse exec = createNetworkCmd.exec(); return exec.getId(); } finally { this.readWriteLock.readLock().unlock(); } }
public NetworkBuilder() { this(new Network()); }
@Test public void should_be_able_to_read_network_configuration() { String config = "networks:\n" + " mynetwork:\n " + " driver: bridge\n" + "tomcat6:\n" + " image: tutum/tomcat:6.0\n" + " exposedPorts: [8089/tcp]\n" + " await:\n" + " strategy: static\n" + " ip: localhost\n" + " ports: [8080, 8089]\n" + "tomcat7:\n" + " extends: tomcat6\n" + " image: tutum/tomcat:7.0\n"; Map<String, String> parameters = new HashMap<String, String>(); parameters.put("dockerContainers", config); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); final Network mynetwork = cubeConfiguration.getDockerContainersContent().getNetwork("mynetwork"); assertThat(mynetwork, is(notNullValue())); assertThat(mynetwork.getDriver(), is("bridge")); }
public NetworkBuilder addDriver(String driver) { this.configuration.setDriver(driver); return this; }
public void stopNetworkObjects(@Observes(precedence = 90) AfterClass afterClass) { final NetworkRegistry networkRegistry = networkRegistryInstance.get(); final List<String> networksToRemove = networkRegistry.getNetworkIds() .stream() .filter(id -> networkRegistry.getNetwork(id).hasMetadata(IsNetworkContainerObject.class)) .collect(Collectors.toList()); // To avoid Concurrent modification exception networksToRemove.stream().forEach(id -> { logger.fine(String.format("Stopping Network %s", id)); dockerClientExecutorInstance.get().removeNetwork(id); networkRegistry.removeNetwork(id); }); }
public NetworkBuilder addIpam(Map<String, Object> ipamConfig) { IPAM ipam = new IPAM(); if (ipamConfig != null) { if (ipamConfig.containsKey(DRIVER)) { ipam.setDriver(asString(ipamConfig, DRIVER)); } if (ipamConfig.containsKey(CONFIG)) { ipam.setIpamConfigs(createIpamConfig(asListOfMap(ipamConfig, CONFIG))); } } this.configuration.setIpam(ipam); return this; }
private List<com.github.dockerjava.api.model.Network.Ipam.Config> createIpamConfig(Network network) { List<com.github.dockerjava.api.model.Network.Ipam.Config> ipamConfigs = new ArrayList<>(); List<IPAMConfig> IPAMConfigs = network.getIpam().getIpamConfigs(); if (IPAMConfigs != null) { for (IPAMConfig IpamConfig : IPAMConfigs) { com.github.dockerjava.api.model.Network.Ipam.Config config = new com.github.dockerjava.api.model.Network.Ipam.Config(); if (IpamConfig.getGateway() != null) { config.withGateway(IpamConfig.getGateway()); } if (IpamConfig.getIpRange() != null) { config.withIpRange(IpamConfig.getIpRange()); } if (IpamConfig.getSubnet() != null) { config.withSubnet(IpamConfig.getSubnet()); } ipamConfigs.add(config); } } return ipamConfigs; }
public void merge(DockerCompositions otherContainers) { // merge networks for (Map.Entry<String, Network> thisNetwork : networks.entrySet()) { if (otherContainers.getNetwork(thisNetwork.getKey()) != null) { thisNetwork.getValue().merge(otherContainers.getNetwork(thisNetwork.getKey())); } } Map<String, Network> addAllNetworks = new HashMap<>(); for (Map.Entry<String, Network> otherNetwork : otherContainers.getNetworks().entrySet()) { if (getNetwork(otherNetwork.getKey()) == null) { addAllNetworks.put(otherNetwork.getKey(), otherNetwork.getValue()); } } networks.putAll(addAllNetworks); // merge containers for (Map.Entry<String, CubeContainer> thisContainer : containers.entrySet()) { if (otherContainers.get(thisContainer.getKey()) != null) { thisContainer.getValue().merge(otherContainers.get(thisContainer.getKey())); } } Map<String, CubeContainer> addAll = new HashMap<String, CubeContainer>(); for (Map.Entry<String, CubeContainer> otherContainer : otherContainers.getContainers().entrySet()) { if (get(otherContainer.getKey()) == null) { addAll.put(otherContainer.getKey(), otherContainer.getValue()); } } containers.putAll(addAll); }
@Override public void evaluate() throws Throwable { List<Throwable> errors = new ArrayList<>(); network = networkBuilder.build(); final org.arquillian.cube.docker.impl.client.config.Network dockerNetwork = network.getNetwork(); String networkId = null; try { networkId = dockerClientExecutor.createNetwork(network.getId(), dockerNetwork); dockerNetwork.addMetadata(IsNetworkContainerObject.class, new IsNetworkContainerObject()); base.evaluate(); } catch (Throwable t) { errors.add(t); } finally { if (networkId != null) { dockerClientExecutor.removeNetwork(networkId); } } MultipleFailureException.assertEmpty(errors); } };
public String createNetwork(String id, Network network) { this.readWriteLock.readLock().lock(); try { final CreateNetworkCmd createNetworkCmd = this.dockerClient.createNetworkCmd().withName(id); if (network.getDriver() != null) { createNetworkCmd.withDriver(network.getDriver()); } if (network.getIpam() != null) { createNetworkCmd.withIpam(new com.github.dockerjava.api.model.Network.Ipam().withConfig( createIpamConfig(network))); } if (network.getOptions() != null && !network.getOptions().isEmpty()) { createNetworkCmd.withOptions(network.getOptions()); } final CreateNetworkResponse exec = createNetworkCmd.exec(); return exec.getId(); } finally { this.readWriteLock.readLock().unlock(); } }
public Network build() { final org.arquillian.cube.docker.impl.client.config.Network network = new org.arquillian.cube.docker.impl.client.config.Network(); network.setDriver(this.networkDriver); return new Network(this.id, network); }
public NetworkBuilder() { this(new Network()); }
@Test public void shouldTransformSimpleDockerComposeV2FormatWithNetworks() throws URISyntaxException, IOException { URI simpleDockerCompose = DockerComposeConverterTest.class.getResource("/simple-docker-compose-v2.yml").toURI(); DockerComposeConverter dockerComposeConverter = DockerComposeConverter.create(Paths.get(simpleDockerCompose)); DockerCompositions convert = dockerComposeConverter.convert(); CubeContainer webapp = convert.getContainers().get("webapp"); assertThat(webapp.getBuildImage(), is(notNullValue())); assertThat(webapp.getPortBindings(), is(notNullValue())); Collection<PortBinding> ports = webapp.getPortBindings(); assertThat(ports, containsInAnyOrder(PortBinding.valueOf("8000->8000"))); assertThat(webapp.getDevices(), is(notNullValue())); assertThat(webapp.getVolumes(), is(notNullValue())); Collection<String> webappVolumes = (Collection<String>) webapp.getVolumes(); assertThat(webappVolumes, containsInAnyOrder("/data")); CubeContainer webapp2 = convert.getContainers().get("webapp2"); assertThat(webapp2.getImage(), is(notNullValue())); assertThat(webapp2.getPortBindings(), is(notNullValue())); assertThat(webapp2.getLinks(), is(notNullValue())); Collection<Link> links = webapp2.getLinks(); assertThat(links, containsInAnyOrder(Link.valueOf("webapp:webapp"))); assertThat(webapp2.getEnv(), is(notNullValue())); Collection<String> env = webapp2.getEnv(); assertThat(env, containsInAnyOrder("RACK_ENV=development")); Map<String, Network> networks = convert.getNetworks(); Network network = networks.get("front-tier"); assertThat(network.getDriver(), is("bridge")); Network network2 = networks.get("back-tier"); assertThat(network2.getDriver(), is("bridge")); }
public NetworkBuilder addDriver(String driver) { this.configuration.setDriver(driver); return this; }
public void stopNetworkObjects(@Observes(precedence = 90) AfterClass afterClass) { final NetworkRegistry networkRegistry = networkRegistryInstance.get(); final List<String> networksToRemove = networkRegistry.getNetworkIds() .stream() .filter(id -> networkRegistry.getNetwork(id).hasMetadata(IsNetworkContainerObject.class)) .collect(Collectors.toList()); // To avoid Concurrent modification exception networksToRemove.stream().forEach(id -> { logger.fine(String.format("Stopping Network %s", id)); dockerClientExecutorInstance.get().removeNetwork(id); networkRegistry.removeNetwork(id); }); }
public NetworkBuilder addIpam(Map<String, Object> ipamConfig) { IPAM ipam = new IPAM(); if (ipamConfig != null) { if (ipamConfig.containsKey(DRIVER)) { ipam.setDriver(asString(ipamConfig, DRIVER)); } if (ipamConfig.containsKey(CONFIG)) { ipam.setIpamConfigs(createIpamConfig(asListOfMap(ipamConfig, CONFIG))); } } this.configuration.setIpam(ipam); return this; }
private List<com.github.dockerjava.api.model.Network.Ipam.Config> createIpamConfig(Network network) { List<com.github.dockerjava.api.model.Network.Ipam.Config> ipamConfigs = new ArrayList<>(); List<IPAMConfig> IPAMConfigs = network.getIpam().getIpamConfigs(); if (IPAMConfigs != null) { for (IPAMConfig IpamConfig : IPAMConfigs) { com.github.dockerjava.api.model.Network.Ipam.Config config = new com.github.dockerjava.api.model.Network.Ipam.Config(); if (IpamConfig.getGateway() != null) { config.withGateway(IpamConfig.getGateway()); } if (IpamConfig.getIpRange() != null) { config.withIpRange(IpamConfig.getIpRange()); } if (IpamConfig.getSubnet() != null) { config.withSubnet(IpamConfig.getSubnet()); } ipamConfigs.add(config); } } return ipamConfigs; }