use of com.spotify.docker.client.messages.IpamConfig in project docker-client by spotify.
the class DefaultDockerClientTest method testNetworksConnectContainerWithEndpointConfig.
@Test
public void testNetworksConnectContainerWithEndpointConfig() throws Exception {
requireDockerApiVersionAtLeast("1.22", "createNetwork and listNetworks");
assumeFalse(CIRCLECI);
final String networkName = randomName();
final String containerName = randomName();
final String subnet = "172.20.0.0/16";
final String ipRange = "172.20.10.0/24";
final String gateway = "172.20.10.11";
final IpamConfig ipamConfigToCreate = IpamConfig.create(subnet, ipRange, gateway);
final Ipam ipamToCreate = Ipam.builder().driver("default").config(Lists.newArrayList(ipamConfigToCreate)).build();
final NetworkConfig networkingConfig = NetworkConfig.builder().name(networkName).ipam(ipamToCreate).build();
final NetworkCreation networkCreation = sut.createNetwork(networkingConfig);
assertThat(networkCreation.id(), is(notNullValue()));
final ContainerConfig containerConfig = ContainerConfig.builder().image(BUSYBOX_LATEST).cmd("sh", "-c", "while :; do sleep 1; done").build();
final ContainerCreation containerCreation = sut.createContainer(containerConfig, containerName);
assertThat(containerCreation.id(), is(notNullValue()));
sut.startContainer(containerCreation.id());
// Those are some of the extra parameters that can be set along with the network connection
final String ip = "172.20.10.1";
final String dummyAlias = "value-does-not-matter";
final EndpointConfig endpointConfig = EndpointConfig.builder().ipamConfig(EndpointIpamConfig.builder().ipv4Address(ip).build()).aliases(ImmutableList.<String>of(dummyAlias)).build();
final NetworkConnection networkConnection = NetworkConnection.builder().containerId(containerCreation.id()).endpointConfig(endpointConfig).build();
sut.connectToNetwork(networkCreation.id(), networkConnection);
Network network = sut.inspectNetwork(networkCreation.id());
Network.Container networkContainer = network.containers().get(containerCreation.id());
assertThat(network.containers().size(), equalTo(1));
assertThat(networkContainer, notNullValue());
final ContainerInfo containerInfo = sut.inspectContainer(containerCreation.id());
assertThat(containerInfo.networkSettings().networks(), is(notNullValue()));
assertThat(containerInfo.networkSettings().networks().size(), is(2));
assertThat(containerInfo.networkSettings().networks(), hasKey(networkName));
final AttachedNetwork attachedNetwork = containerInfo.networkSettings().networks().get(networkName);
assertThat(attachedNetwork, is(notNullValue()));
assertThat(attachedNetwork.networkId(), is(equalTo(networkCreation.id())));
assertThat(attachedNetwork.endpointId(), is(notNullValue()));
assertThat(attachedNetwork.gateway(), is(equalTo(gateway)));
assertThat(attachedNetwork.ipAddress(), is(equalTo(ip)));
assertThat(attachedNetwork.ipPrefixLen(), is(notNullValue()));
assertThat(attachedNetwork.macAddress(), is(notNullValue()));
assertThat(attachedNetwork.ipv6Gateway(), is(notNullValue()));
assertThat(attachedNetwork.globalIPv6Address(), is(notNullValue()));
assertThat(attachedNetwork.globalIPv6PrefixLen(), greaterThanOrEqualTo(0));
assertThat(attachedNetwork.aliases(), is(notNullValue()));
assertThat(dummyAlias, isIn(attachedNetwork.aliases()));
sut.disconnectFromNetwork(containerCreation.id(), networkCreation.id());
network = sut.inspectNetwork(networkCreation.id());
assertThat(network.containers().size(), equalTo(0));
sut.stopContainer(containerCreation.id(), 1);
sut.removeContainer(containerCreation.id());
sut.removeNetwork(networkCreation.id());
}
use of com.spotify.docker.client.messages.IpamConfig in project docker-client by spotify.
the class DefaultDockerClientTest method testNetworks.
@Test
public void testNetworks() throws Exception {
requireDockerApiVersionAtLeast("1.21", "createNetwork and listNetworks");
assumeFalse(CIRCLECI);
final String networkName = randomName();
final IpamConfig ipamConfig = IpamConfig.create("192.168.0.0/24", "192.168.0.0/24", "192.168.0.1");
final Ipam ipam = Ipam.builder().driver("default").config(singletonList(ipamConfig)).build();
final Map<String, String> labels = ImmutableMap.of("name", "starship", "foo", "bar");
final NetworkConfig networkConfig = NetworkConfig.builder().name(networkName).driver("bridge").checkDuplicate(true).ipam(ipam).internal(false).enableIPv6(false).labels(labels).build();
final NetworkCreation networkCreation = sut.createNetwork(networkConfig);
assertThat(networkCreation.id(), is(notNullValue()));
assertThat(networkCreation.warnings(), is(nullValue()));
final List<Network> networks = sut.listNetworks();
assertTrue(networks.size() > 0);
Network network = null;
for (final Network n : networks) {
if (n.name().equals(networkName)) {
network = n;
}
}
assertThat(network, is(notNullValue()));
// noinspection ConstantConditions
assertThat(network.id(), is(notNullValue()));
assertThat(sut.inspectNetwork(network.id()).name(), is(networkName));
assertThat(network.ipam(), equalTo(ipam));
if (dockerApiVersionAtLeast("1.23")) {
assertThat(network.internal(), is(false));
assertThat(network.enableIPv6(), is(false));
assertThat(network.labels(), is(labels));
}
sut.removeNetwork(network.id());
exception.expect(NetworkNotFoundException.class);
sut.inspectNetwork(network.id());
}
Aggregations