1 package org.openecomp.sdc.translator.services.heattotosca;
3 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
4 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
5 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
6 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
7 import org.openecomp.sdc.tosca.services.ToscaAnalyzerService;
8 import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl;
9 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
10 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileNestedConsolidationData;
12 import java.util.HashSet;
14 import java.util.Optional;
17 public class UnifiedCompositionManager {
19 private MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
20 private ConsolidationService consolidationService;
21 private TranslationService translationService = new TranslationService();
22 private UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
24 public UnifiedCompositionManager(ConsolidationService consolidationService) {
25 this.consolidationService = consolidationService;
28 public UnifiedCompositionManager() {
33 * Create unified composition.
35 * @param toscaServiceModel the tosca service model
36 * @param translationContext the translation context
37 * @return the tosca service model
39 public ToscaServiceModel createUnifiedComposition(ToscaServiceModel toscaServiceModel,
40 TranslationContext translationContext) {
42 mdcDataDebugMessage.debugEntryMessage(null, null);
43 Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
44 ServiceTemplate mainServiceTemplate =
45 serviceTemplates.get(toscaServiceModel.getEntryDefinitionServiceTemplate());
46 consolidationService.mainServiceTemplateConsolidation(mainServiceTemplate, translationContext);
47 ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
50 FileNestedConsolidationData mainFileNestedConsolidationData =
51 translationContext.getConsolidationData().getNestedConsolidationData()
52 .getFileNestedConsolidationData(toscaServiceModel.getEntryDefinitionServiceTemplate());
53 Set<String> substituteNodeTemplatesId =
54 mainFileNestedConsolidationData == null
55 || mainFileNestedConsolidationData.getAllNestedNodeTemplateIds() == null
56 ? new HashSet<>() : mainFileNestedConsolidationData.getAllNestedNodeTemplateIds();
58 for (String substituteNodeTemplateId : substituteNodeTemplatesId) {
59 NodeTemplate subNodeTemplate = mainServiceTemplate.getTopology_template().getNode_templates()
60 .get(substituteNodeTemplateId);
61 Optional<String> substituteServiceTemplateName = toscaAnalyzerService
62 .getSubstituteServiceTemplateName(substituteNodeTemplateId, subNodeTemplate);
63 if (substituteServiceTemplateName.isPresent()) {
64 ServiceTemplate substituteServiceTemplate =
65 serviceTemplates.get(substituteServiceTemplateName.get());
67 consolidationService.substitutionServiceTemplateConsolidation(substituteNodeTemplateId,
68 mainServiceTemplate, substituteServiceTemplate, translationContext);
71 unifiedCompositionService
72 .updateUnifiedAbstractNodesConnectivity(mainServiceTemplate, translationContext);
73 ToscaServiceModel unifiedToscaServiceModel =
74 HeatToToscaUtil.createToscaServiceModel(mainServiceTemplate, translationContext);
76 mdcDataDebugMessage.debugExitMessage(null, null);
77 return unifiedToscaServiceModel;