private List<ContainerHostType> getSupportedHostTypes( PlacementHostSelectionTaskState state, ComponentDescription desc) { ServiceDocument serviceDocument = desc.getServiceDocument(); if (serviceDocument instanceof CompositeDescription) { CompositeDescription cd = (CompositeDescription) serviceDocument; List<ContainerHostType> commonSupportedHostTypes = null; for (String descriptionLink : cd.descriptionLinks) { ComponentMeta meta = CompositeComponentRegistry .metaByDescriptionLink(descriptionLink); ResourceType resourceType = ResourceType.fromName(meta.resourceType); List<ContainerHostType> supportedHostTypes = ContainerHostUtil .getContainerHostTypesForResourceType(resourceType); if (commonSupportedHostTypes == null) { commonSupportedHostTypes = supportedHostTypes; } else { AssertUtil.assertTrue(commonSupportedHostTypes.equals(supportedHostTypes), "supported host types are not the same for different components"); } } return commonSupportedHostTypes; } else { ResourceType resourceType = ResourceType.fromName(state.resourceType); return ContainerHostUtil.getContainerHostTypesForResourceType(resourceType); } }
@Test public void testGetContainerHostTypesForResourceType() { List<ContainerHostType> allTypes = new ArrayList<>( Arrays.asList(ContainerHostType.values())); List<ContainerHostType> k8sTypes = ContainerHostUtil .getContainerHostTypesForResourceType(ResourceType.KUBERNETES_DEPLOYMENT_TYPE); assertEquals(Collections.singletonList(ContainerHostType.KUBERNETES), k8sTypes); k8sTypes = ContainerHostUtil .getContainerHostTypesForResourceType(ResourceType.KUBERNETES_POD_TYPE); assertEquals(Collections.singletonList(ContainerHostType.KUBERNETES), k8sTypes); k8sTypes = ContainerHostUtil.getContainerHostTypesForResourceType( ResourceType.KUBERNETES_REPLICATION_CONTROLLER_TYPE); assertEquals(Collections.singletonList(ContainerHostType.KUBERNETES), k8sTypes); k8sTypes = ContainerHostUtil .getContainerHostTypesForResourceType(ResourceType.KUBERNETES_SERVICE_TYPE); assertEquals(Collections.singletonList(ContainerHostType.KUBERNETES), k8sTypes); allTypes.remove(ContainerHostType.KUBERNETES); List<ContainerHostType> otherTypes = ContainerHostUtil .getContainerHostTypesForResourceType(ResourceType.CONTAINER_TYPE); assertEquals(allTypes, otherTypes); }