public static PortBinding fromPodContainerPortToPortBinding(ContainerPort podContainerPort) { PortBinding portBinding = new PortBinding(); portBinding.protocol = podContainerPort.protocol; portBinding.containerPort = String.valueOf(podContainerPort.containerPort); portBinding.hostIp = podContainerPort.hostIP; portBinding.hostPort = String.valueOf(podContainerPort.hostPort); return portBinding; }
public static PortBinding makePort(ContainerPort port) { PortBinding result = new PortBinding(); result.containerPort = Integer.toString(port.containerPort); result.hostPort = Integer.toString(port.hostPort); result.hostIp = port.hostIP; result.protocol = port.protocol; return result; }
+ ":/usr/local/go/bin:/go/bin" }; PortBinding portBinding = new PortBinding(); portBinding.containerPort = "5000"; portBinding.hostPort = "5000";
PortBinding portBinding = new PortBinding();
private ContainerState createContainerState(String parentLink, boolean isDiscovered) throws Throwable { ContainerState containerState = new ContainerState(); containerState.descriptionLink = isDiscovered ? String.format("%s-%s", SystemContainerDescriptions.DISCOVERED_DESCRIPTION_LINK, UUID.randomUUID().toString()) : UUID.randomUUID().toString(); containerState.image = "test-image"; containerState.tenantLinks = Collections.singletonList(TENANT_LINKS); containerState.command = new String[] { CONTAINER_COMMAND }; containerState.id = UUID.randomUUID().toString(); containerState.names = new ArrayList<>(Arrays.asList("name_" + containerState.id)); containerState.parentLink = parentLink; containerState = doPost(containerState, ContainerFactoryService.SELF_LINK); PortBinding[] ports = new PortBinding[1]; PortBinding port = new PortBinding(); port.containerPort = "8263"; ports[0] = port; containerState.ports = Arrays.asList(ports); containerState.extraHosts = new String[] { "extra-docker.host" }; return containerState; }
public static PortBinding fromDockerPortMapping(DockerPortMapping mapping) { PortBinding portBinding = new PortBinding(); portBinding.protocol = mapping.getProtocol().toString(); portBinding.containerPort = mapping.getContainerPort(); portBinding.hostIp = mapping.getHostIp(); portBinding.hostPort = mapping.getHostPort(); return portBinding; }
containerState.command = DEFAULT_CONTAINER_COMMAND_ARRAY; PortBinding portBinding = new PortBinding(); portBinding.hostIp = DEFAULT_CONTAINER_PUBLISHED_HOST_IP; portBinding.hostPort = DEFAULT_CONTAINER_PUBLISHED_HOST_PORT;
protected void createContainerDescription(String image) throws Throwable { ContainerDescription containerDescription = new ContainerDescription(); containerDescription.image = image; // use a blocking command so the container doesn't terminate immediately containerDescription.command = new String[] { "cat" }; PortBinding portBinding = new PortBinding(); portBinding.protocol = "tcp"; portBinding.containerPort = "8080"; portBinding.hostIp = "0.0.0.0"; portBinding.hostPort = "9999"; containerDescription.portBindings = new PortBinding[] { portBinding }; containerDescription.env = TEST_ENV; containerDescription.restartPolicy = TEST_RESTART_POLICY_NAME; containerDescription.maximumRetryCount = TEST_RESTART_POLICY_RETRIES; containerDescriptionLink = doPost(containerDescription, ContainerDescriptionService.FACTORY_LINK).documentSelfLink; }
protected void createHostShellContainer() throws Throwable { waitForServiceAvailability(ContainerFactoryService.SELF_LINK); ContainerState state = new ContainerState(); String hostId = Service.getId(dockerHostState.documentSelfLink); state.documentSelfLink = SystemContainerDescriptions.getSystemContainerSelfLink( SystemContainerDescriptions.AGENT_CONTAINER_NAME, hostId); state.parentLink = dockerHostState.documentSelfLink; PortBinding portBinding = new PortBinding(); portBinding.containerPort = "80"; portBinding.hostPort = "80"; state.ports = new ArrayList<>(); state.ports.add(portBinding); shellContainerState = doPost(state, ContainerFactoryService.SELF_LINK); }
@Test public void testDuplicateHostPortsMultipleContainers() throws Throwable { PortBinding portBinding = new PortBinding(); portBinding.containerPort = "80"; portBinding.hostPort = "8080"; PortBinding[] bindings = new PortBinding[] { portBinding }; CompositeDescriptionExpanded expanded = createExpandedComposite(bindings, bindings, null); Map<String, ResourceNode> resourceNodes = new CompositionGraph().populateResourceNodesByName(expanded.componentDescriptions); ImplicitDependencyFilters filters = ImplicitDependencyFilters.build(resourceNodes, expanded); filters.apply(); assertTrue(resourceNodes.get(expanded.componentDescriptions.get(0).name).dependsOn != null ^ resourceNodes.get(expanded.componentDescriptions.get(1).name).dependsOn != null); expanded = createExpandedComposite(bindings, bindings, bindings); resourceNodes = new CompositionGraph().populateResourceNodesByName(expanded.componentDescriptions); filters = ImplicitDependencyFilters.build(resourceNodes, expanded); filters.apply(); int size = 0; if (resourceNodes.get(expanded.componentDescriptions.get(0).name).dependsOn != null) { size += resourceNodes.get(expanded.componentDescriptions.get(0).name).dependsOn.size(); } if (resourceNodes.get(expanded.componentDescriptions.get(1).name).dependsOn != null) { size += resourceNodes.get(expanded.componentDescriptions.get(1).name).dependsOn.size(); } if (resourceNodes.get(expanded.componentDescriptions.get(2).name).dependsOn != null) { size += resourceNodes.get(expanded.componentDescriptions.get(2).name).dependsOn.size(); } assertEquals(2, size); }
/** * Extend the setup of testDuplicateHostPortsWithPredefinedDependency with a second predefined dependency */ @Test public void testDuplicateHostPortsWithLinearDependencies() throws Throwable { PortBinding portBinding = new PortBinding(); portBinding.containerPort = "80"; portBinding.hostPort = "8080"; PortBinding[] bindings = new PortBinding[] { portBinding }; CompositeDescriptionExpanded expanded = createExpandedComposite(bindings, bindings, bindings); Map<String, ResourceNode> resourceNodes = new CompositionGraph().populateResourceNodesByName(expanded.componentDescriptions); // Add dependency ResourceNode n1 = resourceNodes.get(CONTAINER_DESC_BASE_NAME + 1); ResourceNode n2 = resourceNodes.get(CONTAINER_DESC_BASE_NAME + 2); n1.dependsOn = new HashSet<>(); n1.dependsOn.add(n2.name); ResourceNode n0 = resourceNodes.get(CONTAINER_DESC_BASE_NAME + 0); n2.dependsOn = new HashSet<>(); n2.dependsOn.add(n0.name); ImplicitDependencyFilters filters = ImplicitDependencyFilters.build(resourceNodes, expanded); filters.apply(); assertNull(n0.dependsOn); assertEquals(1, n1.dependsOn.size()); assertTrue(n1.dependsOn.contains(n2.name)); assertEquals(1, n2.dependsOn.size()); assertTrue(n2.dependsOn.contains(n0.name)); }
@Test public void testSingleComponent() throws Throwable { PortBinding portBinding = new PortBinding(); portBinding.containerPort = "80"; portBinding.hostPort = "8080"; PortBinding[] bindings = new PortBinding[] { portBinding }; CompositeDescriptionExpanded expanded = createExpandedComposite(bindings); Map<String, ResourceNode> resourceNodes = new CompositionGraph().populateResourceNodesByName(expanded.componentDescriptions); ImplicitDependencyFilters filters = ImplicitDependencyFilters.build(resourceNodes, expanded); filters.apply(); assertNull(resourceNodes.get(expanded.componentDescriptions.get(0).name).dependsOn); }
@Test public void testDuplicateHostPorts() throws Throwable { PortBinding portBinding = new PortBinding(); portBinding.containerPort = "80"; portBinding.hostPort = "8080"; PortBinding[] bindings = new PortBinding[] { portBinding }; CompositeDescriptionExpanded expanded = createExpandedComposite(bindings, bindings); Map<String, ResourceNode> resourceNodes = new CompositionGraph().populateResourceNodesByName(expanded.componentDescriptions); ImplicitDependencyFilters filters = ImplicitDependencyFilters.build(resourceNodes, expanded); filters.apply(); assertTrue(resourceNodes.get(CONTAINER_DESC_BASE_NAME + 0).dependsOn != null ^ resourceNodes.get(CONTAINER_DESC_BASE_NAME + 1).dependsOn != null); }
@Test public void testDuplicateHostPortsWithPredefinedDependency() throws Throwable { PortBinding portBinding = new PortBinding(); portBinding.containerPort = "80"; portBinding.hostPort = "8080"; PortBinding[] bindings = new PortBinding[] { portBinding }; CompositeDescriptionExpanded expanded = createExpandedComposite(bindings, bindings, bindings); Map<String, ResourceNode> resourceNodes = new CompositionGraph().populateResourceNodesByName(expanded.componentDescriptions); // Add dependency ResourceNode n1 = resourceNodes.get(CONTAINER_DESC_BASE_NAME + 1); ResourceNode n2 = resourceNodes.get(CONTAINER_DESC_BASE_NAME + 2); n1.dependsOn = new HashSet<>(); n1.dependsOn.add(n2.name); ImplicitDependencyFilters filters = ImplicitDependencyFilters.build(resourceNodes, expanded); filters.apply(); assertEquals(1, n1.dependsOn.size()); assertTrue(n1.dependsOn.contains(n2.name)); assertNull(n2.dependsOn); ResourceNode n0 = resourceNodes.get(CONTAINER_DESC_BASE_NAME + 0); assertNotNull(n0.dependsOn); assertEquals(1, n0.dependsOn.size()); assertTrue(n0.dependsOn.contains(n1.name)); }
@Test public void testDuplicateHostPortsWithPredefinedComplexDependencies() throws Throwable { PortBinding portBinding = new PortBinding(); portBinding.containerPort = "80"; portBinding.hostPort = "8080"; PortBinding[] bindings = new PortBinding[] { portBinding }; CompositeDescriptionExpanded expanded = createExpandedComposite(bindings, bindings, null, bindings); Map<String, ResourceNode> resourceNodes = new CompositionGraph().populateResourceNodesByName(expanded.componentDescriptions); // Add dependencies ResourceNode n0 = resourceNodes.get(CONTAINER_DESC_BASE_NAME + 0); ResourceNode n1 = resourceNodes.get(CONTAINER_DESC_BASE_NAME + 1); ResourceNode n2 = resourceNodes.get(CONTAINER_DESC_BASE_NAME + 2); ResourceNode n3 = resourceNodes.get(CONTAINER_DESC_BASE_NAME + 3); n1.dependsOn = new HashSet<>(); n1.dependsOn.add(n0.name); n2.dependsOn = new HashSet<>(); n2.dependsOn.add(n1.name); n2.dependsOn.add(n3.name); ImplicitDependencyFilters filters = ImplicitDependencyFilters.build(resourceNodes, expanded); filters.apply(); assertNull(n0.dependsOn); assertNotNull(n1.dependsOn); assertEquals(1, n1.dependsOn.size()); assertNotNull(n2.dependsOn); assertEquals(2, n2.dependsOn.size()); assertNotNull(n3.dependsOn); assertEquals(1, n3.dependsOn.size()); assertTrue(n3.dependsOn.contains(n1.name)); }
@Test public void testHealthCheckSuccessWithTcpAndPortBindings() throws Throwable { ComputeState containerHost = new ComputeState(); containerHost.address = host.getPreferredAddress(); containerHost.descriptionLink = UriUtils.buildUriPath(ComputeService.FACTORY_LINK, "mockId"); containerHost = doPost(containerHost, ComputeService.FACTORY_LINK); // Create health config and a container to check the health for String mockContainerDescriptionLink = UriUtils.buildUriPath( ContainerDescriptionService.FACTORY_LINK, "mockDescId"); ContainerDescription containerDesc = createContainerDescription(); containerDesc.documentSelfLink = mockContainerDescriptionLink; containerDesc.healthConfig.protocol = RequestProtocol.TCP; containerDesc.healthConfig.port = 8085; containerDesc = doPost(containerDesc, ContainerDescriptionService.FACTORY_LINK); ContainerState container = createContainerStateNoAddress(mockContainerDescriptionLink); container.parentLink = containerHost.documentSelfLink; PortBinding portBinding = new PortBinding(); portBinding.containerPort = "8085"; portBinding.hostPort = "8085"; container.ports = Arrays.asList(portBinding); container = doPost(container, ContainerFactoryService.SELF_LINK); try (ServerSocket socket = new ServerSocket(containerDesc.healthConfig.port)) { verifyHealthSuccessAfterThreshold(containerDesc.healthConfig.healthyThreshold, containerDesc, container); } }
@Test public void testHealthCheckSuccessWithHttpAndPortBindings() throws Throwable { ComputeState containerHost = new ComputeState(); containerHost.address = host.getPreferredAddress(); containerHost.descriptionLink = UriUtils.buildUriPath(ComputeService.FACTORY_LINK, "mockId"); containerHost = doPost(containerHost, ComputeService.FACTORY_LINK); // Create health config and a container to check the health for String mockContainerDescriptionLink = UriUtils.buildUriPath( ContainerDescriptionService.FACTORY_LINK, "mockDescId"); ContainerDescription containerDesc = createContainerDescription(); containerDesc.documentSelfLink = mockContainerDescriptionLink; containerDesc.healthConfig.port = 85; containerDesc = doPost(containerDesc, ContainerDescriptionService.FACTORY_LINK); ContainerState container = createContainerStateNoAddress(mockContainerDescriptionLink); container.parentLink = containerHost.documentSelfLink; PortBinding portBinding = new PortBinding(); portBinding.containerPort = "85"; portBinding.hostPort = String.valueOf(host.getPort()); container.ports = Arrays.asList(portBinding); container = doPost(container, ContainerFactoryService.SELF_LINK); // Start a test service to ping for health check TestHealthService pingService = new TestHealthService(); URI pingServiceUri = UriUtils.buildUri(host, TestHealthService.SELF_LINK); host.startService(Operation.createPost(pingServiceUri), pingService); waitForServiceAvailability(TestHealthService.SELF_LINK); verifyHealthSuccessAfterThreshold(containerDesc.healthConfig.healthyThreshold, containerDesc, container); }
+ UriUtils.getLastPathSegment(hostState.documentSelfLink); agentState.parentLink = hostState.documentSelfLink; PortBinding binding = new PortBinding(); binding.containerPort = SystemContainerDescriptions.CORE_AGENT_SHELL_PORT; binding.hostIp = "127.0.0.1";