/** * Get the first capability that match the given type. * * @param nodeTemplate The node template in witch to lookup for the capability. * @param capabilityType The capability type to look for. * @return The capability matching the type. * @throws NotFoundException if the capability is not found. */ public static Capability getCapabilityByTypeOrFail(NodeTemplate nodeTemplate, String capabilityType) { Capability capability = getCapabilityByType(nodeTemplate, capabilityType); if (capability == null) { throw new NotFoundException(""); } return capability; }
public static Capability getScalableCapability(Topology topology, String nodeTemplateId, boolean throwNotFoundException) { NodeTemplate nodeTemplate = throwNotFoundException ? getNodeTemplate(topology, nodeTemplateId) : safe(topology.getNodeTemplates()).get(nodeTemplateId); if (nodeTemplate == null) { return null; } return throwNotFoundException ? NodeTemplateUtils.getCapabilityByTypeOrFail(nodeTemplate, NormativeCapabilityTypes.SCALABLE) : NodeTemplateUtils.getCapabilityByType(nodeTemplate, NormativeCapabilityTypes.SCALABLE); }
@Test public void getMissingCapabilityByTypeTest() { NodeTemplate nodeTemplate = new NodeTemplate(); Capability nodeCapability = new Capability("org.alien4cloud.capabilities.SampleCapability", null); nodeTemplate.setCapabilities(Maps.newHashMap("test", nodeCapability)); // if the capability derives from parent type then a TOSCA context and query is required to fetch the type. CapabilityType capabilityType = new CapabilityType(); capabilityType.setElementId("org.alien4cloud.capabilities.SampleCapability"); capabilityType.setDerivedFrom(Lists.newArrayList("org.alien4cloud.capabilities.TestCapability")); Mockito.reset(csarRepositorySearchService); Mockito.when(csarRepositorySearchService.getElementInDependencies(Mockito.eq(CapabilityType.class), Mockito.eq("org.alien4cloud.capabilities.SampleCapability"), Mockito.any(Set.class))).thenReturn(capabilityType); Capability capability = toscaContextualAspect.execInToscaContext(() -> getCapabilityByType(nodeTemplate, "org.alien4cloud.capabilities.Unknown"), false, Sets.newHashSet(new CSARDependency("org.alien4cloud.testArchive", "1.0.0-SNAPSHOT"))); assertNull(capability); }
@Test public void getCapabilityByTypeTest() { NodeTemplate nodeTemplate = new NodeTemplate(); Capability nodeCapability = new Capability("org.alien4cloud.capabilities.SampleCapability", null); nodeTemplate.setCapabilities(Maps.newHashMap("test", nodeCapability)); // if the capability type exactly equals then no tosca context and request is required Capability capability = getCapabilityByType(nodeTemplate, "org.alien4cloud.capabilities.SampleCapability"); assertSame(nodeCapability, capability); // if the capability derives from parent type then a TOSCA context and query is required to fetch the type. CapabilityType capabilityType = new CapabilityType(); capabilityType.setElementId("org.alien4cloud.capabilities.SampleCapability"); capabilityType.setDerivedFrom(Lists.newArrayList("org.alien4cloud.capabilities.TestCapability")); Mockito.reset(csarRepositorySearchService); Mockito.when(csarRepositorySearchService.getElementInDependencies(Mockito.eq(CapabilityType.class), Mockito.eq("org.alien4cloud.capabilities.SampleCapability"), Mockito.any(Set.class))).thenReturn(capabilityType); capability = toscaContextualAspect.execInToscaContext(() -> getCapabilityByType(nodeTemplate, "org.alien4cloud.capabilities.TestCapability"), false, Sets.newHashSet(new CSARDependency("org.alien4cloud.testArchive", "1.0.0-SNAPSHOT"))); assertSame(nodeCapability, capability); }
private void doScale(final String nodeTemplateId, final int instances, final IPaaSCallback<Object> callback, final Deployment deployment, final DeploymentTopology topology, SecretProviderConfigurationAndCredentials secretProviderConfigurationAndCredentials) { NodeTemplate nodeTemplate = TopologyUtils.getNodeTemplate(topology, nodeTemplateId); // get the secret provider configuration from the location Map<String, String> locationIds = TopologyLocationUtils.getLocationIds(topology); Map<String, Location> locations = deploymentTopologyService.getLocations(locationIds); SecretProviderConfigurationAndCredentials authResponse = null; if (secretProviderService.isSecretProvided(secretProviderConfigurationAndCredentials)) { authResponse = secretProviderService.generateToken(locations, secretProviderConfigurationAndCredentials.getSecretProviderConfiguration().getPluginName(), secretProviderConfigurationAndCredentials.getCredentials()); } // Get alien4cloud specific interface to support cluster controller nodes. Capability clusterControllerCapability = NodeTemplateUtils.getCapabilityByType(nodeTemplate, AlienCapabilityTypes.CLUSTER_CONTROLLER); if (clusterControllerCapability == null) { doScaleNode(nodeTemplateId, instances, callback, deployment, topology, nodeTemplate, authResponse); } else { triggerClusterManagerScaleOperation(nodeTemplateId, instances, callback, deployment, topology, clusterControllerCapability, secretProviderConfigurationAndCredentials); } }