[SDC] Onboarding 1710 rebase.
[sdc.git] / openecomp-be / lib / openecomp-sdc-translator-lib / openecomp-sdc-translator-core / src / main / java / org / openecomp / sdc / translator / services / heattotosca / impl / unifiedcomposition / UnifiedCompositionCatalogInstance.java
1 package org.openecomp.sdc.translator.services.heattotosca.impl.unifiedcomposition;
2
3 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
4 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
5 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData;
6 import org.openecomp.sdc.translator.services.heattotosca.UnifiedComposition;
7 import org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionService;
8
9 import java.util.ArrayList;
10 import java.util.List;
11 import java.util.Optional;
12
13 public class UnifiedCompositionCatalogInstance implements UnifiedComposition {
14
15   UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
16
17   // There is consolidation in ScalingInstance implemetation.
18   // In case of scaling instance, if there is more than one entry in the
19   // unifiedComposotionDataList, we should have consolidation between them.
20   // (all entries in the list are the once which need to be consolidated)
21   @Override
22   public void createUnifiedComposition(ServiceTemplate serviceTemplate,
23                                        ServiceTemplate nestedServiceTemplate,
24                                        List<UnifiedCompositionData> unifiedComposotionDataList,
25                                        TranslationContext context) {
26
27     UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
28     unifiedCompositionService.handleComplexVfcType(serviceTemplate, context);
29
30     UnifiedCompositionSingleSubstitution unifiedCompositionSingleSubstitution =
31         new UnifiedCompositionSingleSubstitution();
32
33     String substitutionNodeTypeId =
34         unifiedCompositionService.getSubstitutionNodeTypeId(serviceTemplate,
35             unifiedComposotionDataList.get(0), null, context);
36     // create one substitution ST for all computes
37     Optional<ServiceTemplate> substitutionServiceTemplate =
38         unifiedCompositionService.createUnifiedSubstitutionServiceTemplate(serviceTemplate,
39             unifiedComposotionDataList, context, substitutionNodeTypeId, null);
40
41     if (!substitutionServiceTemplate.isPresent()) {
42       return;
43     }
44
45
46     // create abstract NT for each compute
47     for(int i = 0; i < unifiedComposotionDataList.size(); i++){
48       List<UnifiedCompositionData> catalogInstanceUnifiedList = new ArrayList<>();
49       catalogInstanceUnifiedList.add(unifiedComposotionDataList.get(i));
50
51       Integer index = unifiedComposotionDataList.size() > 1 ? i : null;
52
53       unifiedCompositionService
54           .createAbstractSubstituteNodeTemplate(serviceTemplate, substitutionServiceTemplate.get(),
55               catalogInstanceUnifiedList, substitutionNodeTypeId, context, index);
56
57       unifiedCompositionService
58           .updateCompositionConnectivity(serviceTemplate, catalogInstanceUnifiedList, context);
59
60       unifiedCompositionService
61           .cleanUnifiedCompositionEntities(serviceTemplate, catalogInstanceUnifiedList, context);
62     }
63
64     unifiedCompositionService.cleanNodeTypes(serviceTemplate, unifiedComposotionDataList, context);
65   }
66 }