private static PortBinding[] fromDockerPortsToCompositePortBindings(String[] ports) { if (isNullOrEmpty(ports)) { return null; } PortBinding[] portBindings = new PortBinding[ports.length]; for (int i = 0; i < ports.length; i++) { portBindings[i] = fromDockerPortMapping(DockerPortMapping.fromString(ports[i])); } return portBindings; }
/** * Map port binding to ExposedPorts and PortBinding * * ExposedPorts are only used by the API adapter, as the docker CLI will add that itself * * @param input * @param portBindings */ private void addPortBindings(CommandInput input, List<PortBinding> portBindings) { Map<String, Map<String, String>> exposedPortsMap = new HashMap<>(); input.withProperty(DOCKER_CONTAINER_EXPOSED_PORTS_PROP_NAME, exposedPortsMap); Map<String, Object> hostConfig = getOrAddMap(input, DOCKER_CONTAINER_HOST_CONFIG_PROP_NAME); Map<String, List<Map<String, String>>> portBindingsMap = new HashMap<>(); hostConfig.put(DOCKER_CONTAINER_PORT_BINDINGS_PROP_NAME, portBindingsMap); for (PortBinding portBinding : portBindings) { DockerPortMapping mapping = DockerPortMapping.fromString(portBinding.toString()); Map<String, List<Map<String, String>>> portDetails = mapping.toMap(); portBindingsMap.putAll(portDetails); exposedPortsMap.put(mapping.getContainerPortAndProtocol(), Collections.emptyMap()); } }
public static ContainerDescription createContainerDescriptionWithPortBindingsHostPortSet() { ContainerDescription containerDesc = createContainerDescription("admiral-test"); containerDesc.portBindings = Arrays.stream(new String[] { "5000:5000", "127.0.0.1::20080", "127.0.0.1:20080:80", "1234:1234/tcp" }) .map((s) -> PortBinding.fromDockerPortMapping(DockerPortMapping.fromString(s))) .collect(Collectors.toList()) .toArray(new PortBinding[0]); return containerDesc; }
"127.0.0.1:20080:80", "1234:1234/tcp" }) .map((s) -> PortBinding.fromDockerPortMapping(DockerPortMapping.fromString(s))) .collect(Collectors.toList()) .toArray(new PortBinding[0]);
@Test public void testToString() { DockerPortMapping portMapping = DockerPortMapping.fromString(portBinding); assertEquals(description, portBinding, portMapping.toString()); } }
"127.0.0.1::80", "1234/tcp" }) .map((s) -> PortBinding.fromDockerPortMapping(DockerPortMapping.fromString(s))) .collect(Collectors.toList()) .toArray(new PortBinding[0]);
"5000:5000", "20080:80" }) .map((s) -> PortBinding.fromDockerPortMapping(DockerPortMapping.fromString(s))) .collect(Collectors.toList()); String configValue = String.format(
desc1.portBindings = Arrays.stream(new String[] { "80" }) .map((s) -> PortBinding.fromDockerPortMapping(DockerPortMapping.fromString(s))) .collect(Collectors.toList()) .toArray(new PortBinding[0]); "5008:80", "443" }) .map((s) -> PortBinding.fromDockerPortMapping(DockerPortMapping.fromString(s))) .collect(Collectors.toList()) .toArray(new PortBinding[0]);
@Test public void testDockerPortStringParsing() { DockerPortMapping portMapping = DockerPortMapping.fromString(fullPortString); assertEquals(description + ": hostIp", expectedHostIp, portMapping.getHostIp()); assertEquals(description + ": hostPort", expectedHostPort, portMapping.getHostPort()); assertEquals(description + ": containerPort", expectedContainerPort, portMapping.getContainerPort()); assertEquals(description + ": protocol", expectedProtocol, portMapping.getProtocol()); }