/** * Get an archive from it's id. * * @param name The name of the archive to get. * @param version The version of the archive to get. * @return The archive from it's id. */ public Csar getArchive(String name, String version) { String id = new Csar(name, version).getId(); Csar archive = archivesMap.get(id); log.debug("get archive from map {} {} {}", id, archive); if (archive == null) { archive = csarRepositorySearchService.getArchive(name, version); log.debug("get archive from repo {} {} {}", id, archive, csarRepositorySearchService.getClass().getName()); archivesMap.put(id, archive); } return archive; }
Csar csar = new Csar(removedDependency.getName(), removedDependency.getVersion()); archivesMap.remove(csar.getId()); log.debug("Removed dependency {} from the TOSCA context.", removedDependency);
String deploymentId = deploymentContext.getDeploymentPaaSId(); DeploymentTopology deploymentTopology = deploymentContext.getDeploymentTopology(); String yaml = archiveExportService.getYaml(new Csar(deploymentTopology.getArchiveName(), deploymentTopology.getArchiveVersion()), deploymentTopology, false, ToscaParser.LATEST_DSL);
protected void removeNode(Topology topology, NodeTemplate nodeTemplate) { // keep track of the hosted nodes List<NodeTemplate> hostedNodes = TopologyNavigationUtil.getHostedNodes(topology, nodeTemplate.getName()); Csar csar = new Csar(topology.getArchiveName(), topology.getArchiveVersion()); DeleteNodeOperation deleteNodeOperation = new DeleteNodeOperation(); deleteNodeOperation.setNodeName(nodeTemplate.getName()); deleteNodeProcessor.process(csar, topology, deleteNodeOperation); // remove all hosted node also safe(hostedNodes).forEach(hostedNodeTemplate -> removeNode(topology, hostedNodeTemplate)); } }
/** * Utility method to mock the acess to some normative types nodes and capabilities. * * @param repositorySearchService The repositorySearchService to mock. */ public static void mockNormativeTypes(ICSARRepositorySearchService repositorySearchService) { Csar csar = new Csar("tosca-normative-types", "1.0.0-ALIEN12"); Mockito.when(repositorySearchService.getArchive(csar.getName(), csar.getVersion())).thenReturn(csar); NodeType mockedNodeRoot = new NodeType(); Mockito.when(repositorySearchService.getElementInDependencies(Mockito.eq(NodeType.class), Mockito.eq(NormativeTypesConstant.ROOT_NODE_TYPE), Mockito.any(Set.class))).thenReturn(mockedNodeRoot); RelationshipType mockedRelationshipRoot = new RelationshipType(); Mockito.when(repositorySearchService.getElementInDependencies(Mockito.eq(RelationshipType.class), Mockito.eq(NormativeTypesConstant.ROOT_RELATIONSHIP_TYPE), Mockito.any(Set.class))).thenReturn(mockedRelationshipRoot); CapabilityType mockedCapabilityType = new CapabilityType(); Mockito.when(repositorySearchService.getElementInDependencies(Mockito.eq(CapabilityType.class), Mockito.eq(NormativeCapabilityTypes.ROOT), Mockito.any(Set.class))).thenReturn(mockedCapabilityType); DataType mockedDataType = new DataType(); Mockito.when(repositorySearchService.getElementInDependencies(Mockito.eq(DataType.class), Mockito.eq(NormativeTypesConstant.ROOT_DATA_TYPE), Mockito.any(Set.class))).thenReturn(mockedDataType); ArtifactType mockedArtifactType = new ArtifactType(); Mockito.when(repositorySearchService.getElementInDependencies(Mockito.eq(ArtifactType.class), Mockito.eq(NormativeTypesConstant.ROOT_ARTIFACT_TYPE), Mockito.any(Set.class))).thenReturn(mockedArtifactType); } }
@Test public void testParseTopologyReferenceToNormative() throws FileNotFoundException, ParsingException { Csar csar = new Csar("tosca-normative-types", "1.0.0.wd03-SNAPSHOT"); NodeType mockedCompute = getMockedCompute(); NodeType mockedSoftware = getMockedSoftwareComponent(); CapabilityType mockedContainer = Mockito.mock(CapabilityType.class); Mockito.when(mockedContainer.getElementId()).thenReturn("tosca.capabilities.Container"); Mockito.when(csarRepositorySearchService.getElementInDependencies(Mockito.eq(NodeType.class), Mockito.eq("tosca.nodes.SoftwareComponent"), Mockito.any(Set.class))).thenReturn(mockedSoftware); Mockito.when(csarRepositorySearchService.getElementInDependencies(Mockito.eq(CapabilityType.class), Mockito.eq("tosca.capabilities.Container"), Mockito.any(Set.class))).thenReturn(mockedContainer); Mockito.when( csarRepositorySearchService.getElementInDependencies(Mockito.eq(NodeType.class), Mockito.eq("tosca.nodes.Compute"), Mockito.any(Set.class))) .thenReturn(mockedCompute); RelationshipType hostedOn = new RelationshipType(); Mockito.when(csarRepositorySearchService.getElementInDependencies(Mockito.eq(RelationshipType.class), Mockito.eq("tosca.relationships.HostedOn"), Mockito.any(Set.class))).thenReturn(hostedOn); ParsingResult<ArchiveRoot> parsingResult = parser .parseFile(Paths.get(getRootDirectory(), "tosca-topology-template-node-from-derived-type-from-import.yml")); Mockito.verify(csarRepositorySearchService).getArchive(csar.getName(), csar.getVersion()); assertNoBlocker(parsingResult); }
@SuppressWarnings("unchecked") @Test public void testAttributesConcatValid() throws Throwable { Csar csar = new Csar("tosca-normative-types", "1.0.0-SNAPSHOT-wd03");
@Test @SuppressWarnings("unchecked") public void testGetOperationOutputFunction() throws Throwable { Csar csar = new Csar("tosca-normative-types", "1.0.0-SNAPSHOT-wd03");
@Test public void testParseTopologyWithWorkflows() throws FileNotFoundException, ParsingException { Csar csar = new Csar("tosca-normative-types", "1.0.0.wd03-SNAPSHOT"); NodeType mockedCompute = getMockedCompute(); NodeType mockedSoftware = getMockedSoftwareComponent(); CapabilityType mockedContainer = Mockito.mock(CapabilityType.class); Mockito.when(mockedContainer.getElementId()).thenReturn("tosca.capabilities.Container"); Mockito.when(csarRepositorySearchService.getElementInDependencies(Mockito.eq(NodeType.class), Mockito.eq("tosca.nodes.SoftwareComponent"), Mockito.any(Set.class))).thenReturn(mockedSoftware); Mockito.when(csarRepositorySearchService.getElementInDependencies(Mockito.eq(CapabilityType.class), Mockito.eq("tosca.capabilities.Container"), Mockito.any(Set.class))).thenReturn(mockedContainer); Mockito.when( csarRepositorySearchService.getElementInDependencies(Mockito.eq(NodeType.class), Mockito.eq("tosca.nodes.Compute"), Mockito.any(Set.class))) .thenReturn(mockedCompute); RelationshipType hostedOn = Mockito.mock(RelationshipType.class); Mockito.when(hostedOn.getElementId()).thenReturn("tosca.relationships.HostedOn"); Mockito.when(csarRepositorySearchService.getElementInDependencies(Mockito.eq(RelationshipType.class), Mockito.eq("tosca.relationships.HostedOn"), Mockito.any(Set.class))).thenReturn(hostedOn); Mockito.when(csarRepositorySearchService.getArchive(csar.getName(), csar.getVersion())).thenReturn(csar); ParsingResult<ArchiveRoot> parsingResult = parser.parseFile(Paths.get(getRootDirectory(), "tosca-topology-template-workflows.yml")); Mockito.verify(csarRepositorySearchService).getArchive(csar.getName(), csar.getVersion()); assertNoBlocker(parsingResult); Assert.assertEquals(3, parsingResult.getContext().getParsingErrors().size()); assertNotNull(parsingResult.getResult().getTopology()); Assert.assertEquals(5, parsingResult.getResult().getTopology().getWorkflows().size()); // check invalid names were renamed assertTrue(parsingResult.getResult().getTopology().getWorkflows().containsKey("invalidName_")); assertTrue(parsingResult.getResult().getTopology().getWorkflows().containsKey("invalid_Name")); assertTrue(parsingResult.getResult().getTopology().getWorkflows().containsKey("invalid_Name_1")); }
@Test public void testImportDependency() throws FileNotFoundException, ParsingException { Csar csar = new Csar("tosca-normative-types", "1.0.0-SNAPSHOT-wd03"); Mockito.when(csarRepositorySearchService.getArchive(csar.getName(), csar.getVersion())).thenReturn(csar); ParsingResult<ArchiveRoot> parsingResult = parser.parseFile(Paths.get(getRootDirectory(), "tosca-import-dependency.yml")); Mockito.verify(csarRepositorySearchService).getArchive(csar.getName(), csar.getVersion()); assertNoBlocker(parsingResult); ArchiveRoot archiveRoot = parsingResult.getResult(); assertNotNull(archiveRoot.getArchive()); assertNotNull(archiveRoot.getArchive().getDependencies()); Assert.assertEquals(1, archiveRoot.getArchive().getDependencies().size()); Assert.assertEquals(new CSARDependency(csar.getName(), csar.getVersion()), archiveRoot.getArchive().getDependencies().iterator().next()); }
@Test public void testImportDependencyMissing() throws FileNotFoundException, ParsingException { Csar csar = new Csar("tosca-normative-types", "1.0.0-SNAPSHOT-wd03"); Mockito.when(csarRepositorySearchService.getArchive(csar.getName(), csar.getVersion())).thenReturn(null); ParsingResult<ArchiveRoot> parsingResult = parser.parseFile(Paths.get(getRootDirectory(), "tosca-import-dependency.yml")); Mockito.verify(csarRepositorySearchService).getArchive(csar.getName(), csar.getVersion()); assertNoBlocker(parsingResult); ArchiveRoot archiveRoot = parsingResult.getResult(); assertNotNull(archiveRoot.getArchive()); assertNotNull(archiveRoot.getArchive().getDependencies()); Assert.assertEquals(0, archiveRoot.getArchive().getDependencies().size()); }
Mockito.reset(csarRepositorySearchService); Csar csar = new Csar("tosca-normative-types", "1.0.0-ALIEN14"); Mockito.when(csarRepositorySearchService.getArchive(csar.getName(), csar.getVersion())).thenReturn(csar); NodeType mockedResult = Mockito.mock(NodeType.class);
Csar csar = new Csar(applicationId, version); csar.setWorkspace(APP_WORKSPACE_PREFIX + ":" + applicationId); csar.setDelegateId(applicationId); csar.setToscaDefinitionsVersion(csarService.getOrFail(new Csar(oldArchiveName, oldArchiveVersion).getId()).getToscaDefinitionsVersion()); } else { csar.setToscaDefinitionsVersion(ToscaParser.LATEST_DSL);
@Override public Topology createTopologyAsTemplate(String name, String description, String version, String workspace, String fromTopologyId) { NameValidationUtils.validate("topologyTemplateName", name); // Every version of a topology template has a Cloud Service Archive Csar csar = new Csar(name, StringUtils.isNotBlank(version) ? version : VersionUtil.DEFAULT_VERSION_NAME); csar.setWorkspace(workspace); csar.setDelegateType(ArchiveDelegateType.CATALOG.toString()); csar.setToscaDefinitionsVersion(ToscaParser.LATEST_DSL); if (description == null) { csar.setDescription("This archive has been created with alien4cloud."); } else { csar.setDescription("Enclosing archive for topology " + description); } Topology topology; if (fromTopologyId != null) { // "cloning" the topology // TODO Currently, the fromTopologyId is always null. If this implementation needed, please think about initializing the workflow topology = alienDAO.findById(Topology.class, fromTopologyId); } else { topology = new Topology(); // Init the workflow if the topology is totally new workflowBuilderService.initWorkflows(workflowBuilderService.buildTopologyContext(topology, csar)); } topology.setDescription(description); topology.setArchiveName(csar.getName()); topology.setArchiveVersion(csar.getVersion()); topology.setWorkspace(csar.getWorkspace()); archiveIndexer.importNewArchive(csar, topology, null); return topology; }