1 package org.openecomp.sdc.translator.services.heattotosca.impl.unifiedcomposition;
3 import org.apache.commons.collections4.CollectionUtils;
4 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
5 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
6 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData;
7 import org.openecomp.sdc.translator.services.heattotosca.UnifiedComposition;
8 import org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionService;
10 import java.util.ArrayList;
11 import java.util.List;
12 import java.util.Optional;
16 * The type Unified composition single substitution.
18 public class UnifiedCompositionSingleSubstitution implements UnifiedComposition {
20 UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
22 // There is no consolidation in SingleSubstitution implemetation.
23 // In case of single substitution, if there is more than one entry in the
24 // unifiedComposotionDataList, they all should contain the same compute type but the
25 // consolidation between them was canceled.
26 // For different compute type, this implementation will be called more than once, each time
27 // per diff compute type, while sending one entry in the unifiedComposotionDataList.
29 public void createUnifiedComposition(ServiceTemplate serviceTemplate,
30 ServiceTemplate nestedServiceTemplate,
31 List<UnifiedCompositionData> unifiedCompositionDataList,
32 TranslationContext context) {
33 if (CollectionUtils.isEmpty(unifiedCompositionDataList)
34 || context.isUnifiedHandledServiceTemplate(serviceTemplate)) {
38 unifiedCompositionService.handleComplexVfcType(serviceTemplate, context);
40 for (int i = 0; i < unifiedCompositionDataList.size(); i++) {
41 List<UnifiedCompositionData> singleSubstitutionUnifiedList = new ArrayList<>();
42 singleSubstitutionUnifiedList.add(unifiedCompositionDataList.get(i));
44 Integer index = unifiedCompositionDataList.size() > 1 ? i : null;
46 String substitutionNodeTypeId =
47 unifiedCompositionService.getSubstitutionNodeTypeId(serviceTemplate,
48 singleSubstitutionUnifiedList.get(0), null, context);
50 Optional<ServiceTemplate> substitutionServiceTemplate =
51 unifiedCompositionService.createUnifiedSubstitutionServiceTemplate(serviceTemplate,
52 singleSubstitutionUnifiedList, context, substitutionNodeTypeId, null);
54 if (!substitutionServiceTemplate.isPresent()) {
59 String abstractNodeTemplateId = unifiedCompositionService
60 .createAbstractSubstituteNodeTemplate(serviceTemplate, substitutionServiceTemplate.get(),
61 singleSubstitutionUnifiedList, substitutionNodeTypeId, context, null);
63 unifiedCompositionService
64 .updateCompositionConnectivity(serviceTemplate, singleSubstitutionUnifiedList, context);
66 unifiedCompositionService
67 .cleanUnifiedCompositionEntities(serviceTemplate, singleSubstitutionUnifiedList, context);
71 unifiedCompositionService
72 .cleanNodeTypes(serviceTemplate, unifiedCompositionDataList, context);