private void addRelationshipTypeFromSubstitutionTarget(Topology topology, Map<String, RelationshipType> relationshipTypes, SubstitutionTarget substitutionTarget, boolean failOnTypeNotFound) { if (substitutionTarget.getServiceRelationshipType() != null) { RelationshipType relationshipType = getFromContextIfDefined(RelationshipType.class, substitutionTarget.getServiceRelationshipType(), topology.getDependencies(), failOnTypeNotFound); relationshipTypes.put(substitutionTarget.getServiceRelationshipType(), relationshipType); } }
private void initializeSubstitutionTarget(ToscaTypeLoader loader, Map<String, RelationshipType> relationshipTypes, SubstitutionTarget substitutionTarget) { if (substitutionTarget.getServiceRelationshipType() != null) { RelationshipType relationshipType = relationshipTypes.get(substitutionTarget.getServiceRelationshipType()); if (relationshipType != null) { loader.loadType(substitutionTarget.getServiceRelationshipType(), csarDependencyLoader.buildDependencyBean(relationshipType.getArchiveName(), relationshipType.getArchiveVersion())); } } }
private void updateServiceRelationship(ServiceResource serviceResource, Topology topology) { Map<String, RelationshipType> relationshipTypeMap = Maps.newHashMap(); // we also want to configure the service relationships for exposed capabilities for (Entry<String, SubstitutionTarget> substitutionTargetEntry : safe(topology.getSubstitutionMapping().getCapabilities()).entrySet()) { if (serviceResource.getCapabilitiesRelationshipTypes() == null) { serviceResource.setCapabilitiesRelationshipTypes(Maps.newHashMap()); } if (substitutionTargetEntry.getValue().getServiceRelationshipType() == null) { serviceResource.getCapabilitiesRelationshipTypes().remove(substitutionTargetEntry.getKey()); } else { String relationshipId = getRelationshipId(relationshipTypeMap, topology, substitutionTargetEntry.getValue().getServiceRelationshipType()); serviceResource.getCapabilitiesRelationshipTypes().put(substitutionTargetEntry.getKey(), relationshipId); } } for (Entry<String, SubstitutionTarget> substitutionTargetEntry : safe(topology.getSubstitutionMapping().getRequirements()).entrySet()) { if (serviceResource.getRequirementsRelationshipTypes() == null) { serviceResource.setRequirementsRelationshipTypes(Maps.newHashMap()); } if (substitutionTargetEntry.getValue().getServiceRelationshipType() == null) { serviceResource.getRequirementsRelationshipTypes().remove(substitutionTargetEntry.getKey()); } else { String relationshipId = getRelationshipId(relationshipTypeMap, topology, substitutionTargetEntry.getValue().getServiceRelationshipType()); serviceResource.getRequirementsRelationshipTypes().put(substitutionTargetEntry.getKey(), relationshipId); } } serviceResourceService.save(serviceResource); }
@Test public void testServiceRelationshipSubstitution() throws FileNotFoundException, ParsingException { Mockito.reset(csarRepositorySearchService); Mockito.when(csarRepositorySearchService.getArchive("tosca-normative-types", "1.0.0-ALIEN14")).thenReturn(Mockito.mock(Csar.class)); NodeType mockRoot = Mockito.mock(NodeType.class); Mockito.when(mockRoot.isAbstract()).thenReturn(true); Mockito.when(csarRepositorySearchService.getElementInDependencies(Mockito.eq(NodeType.class), Mockito.eq("tosca.nodes.Root"), Mockito.any(Set.class))) .thenReturn(mockRoot); Mockito.when(csarRepositorySearchService.getElementInDependencies(Mockito.eq(CapabilityType.class), Mockito.eq("tosca.capabilities.Root"), Mockito.any(Set.class))).thenReturn(Mockito.mock(CapabilityType.class)); Mockito.when(csarRepositorySearchService.getElementInDependencies(Mockito.eq(RelationshipType.class), Mockito.eq("tosca.relationships.Root"), Mockito.any(Set.class))).thenReturn(Mockito.mock(RelationshipType.class)); ParsingResult<ArchiveRoot> parsingResult = parser.parseFile(Paths.get(getRootDirectory(), "substitution_mapping_service_relationship.yml")); Assert.assertEquals(0, parsingResult.getContext().getParsingErrors().size()); ArchiveRoot archiveRoot = parsingResult.getResult(); Assert.assertNotNull(archiveRoot.getArchive()); Assert.assertEquals(getToscaVersion(), archiveRoot.getArchive().getToscaDefinitionsVersion()); Assert.assertEquals("org.alien4cloud.relationships.test.MyRelationship", archiveRoot.getTopology().getSubstitutionMapping().getCapabilities().get("subst_capa").getServiceRelationshipType()); }