summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionManager.java')
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionManager.java97
1 files changed, 70 insertions, 27 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionManager.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionManager.java
index 2e67983194..a7ba9b549e 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionManager.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionManager.java
@@ -4,15 +4,16 @@ import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
+import org.openecomp.sdc.tosca.services.DataModelUtil;
import org.openecomp.sdc.tosca.services.ToscaAnalyzerService;
+import org.openecomp.sdc.tosca.services.ToscaUtil;
import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl;
import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileNestedConsolidationData;
-import java.util.HashSet;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
-import java.util.Set;
public class UnifiedCompositionManager {
@@ -43,38 +44,80 @@ public class UnifiedCompositionManager {
Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
ServiceTemplate mainServiceTemplate =
serviceTemplates.get(toscaServiceModel.getEntryDefinitionServiceTemplate());
- consolidationService.mainServiceTemplateConsolidation(mainServiceTemplate, translationContext);
- ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
+ createUnifiedComposition(toscaServiceModel, mainServiceTemplate, translationContext);
+ ToscaServiceModel unifiedToscaServiceModel =
+ HeatToToscaUtil.createToscaServiceModel(mainServiceTemplate, translationContext);
+
+ mdcDataDebugMessage.debugExitMessage(null, null);
+ return unifiedToscaServiceModel;
+ }
+
+ private void createUnifiedComposition(ToscaServiceModel toscaServiceModel,
+ ServiceTemplate serviceTemplate,
+ TranslationContext translationContext) {
+ mdcDataDebugMessage.debugEntryMessage(null, null);
+
+ handleNestedServiceTemplates(toscaServiceModel, serviceTemplate, translationContext);
+ consolidationService.serviceTemplateConsolidation(serviceTemplate, translationContext);
+ unifiedCompositionService
+ .updateUnifiedAbstractNodesConnectivity(serviceTemplate, translationContext);
+ translationContext.addUnifiedHandledServiceTeamplte(serviceTemplate);
+
+ mdcDataDebugMessage.debugExitMessage(null, null);
+ }
+ private void handleNestedServiceTemplates(ToscaServiceModel toscaServiceModel,
+ ServiceTemplate serviceTemplate,
+ TranslationContext translationContext) {
+ mdcDataDebugMessage.debugEntryMessage(null, null);
- FileNestedConsolidationData mainFileNestedConsolidationData =
+ String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
+ FileNestedConsolidationData fileNestedConsolidationData =
translationContext.getConsolidationData().getNestedConsolidationData()
- .getFileNestedConsolidationData(toscaServiceModel.getEntryDefinitionServiceTemplate());
- Set<String> substituteNodeTemplatesId =
- mainFileNestedConsolidationData == null
- || mainFileNestedConsolidationData.getAllNestedNodeTemplateIds() == null
- ? new HashSet<>() : mainFileNestedConsolidationData.getAllNestedNodeTemplateIds();
-
- for (String substituteNodeTemplateId : substituteNodeTemplatesId) {
- NodeTemplate subNodeTemplate = mainServiceTemplate.getTopology_template().getNode_templates()
- .get(substituteNodeTemplateId);
- Optional<String> substituteServiceTemplateName = toscaAnalyzerService
- .getSubstituteServiceTemplateName(substituteNodeTemplateId, subNodeTemplate);
- if (substituteServiceTemplateName.isPresent()) {
- ServiceTemplate substituteServiceTemplate =
- serviceTemplates.get(substituteServiceTemplateName.get());
-
- consolidationService.substitutionServiceTemplateConsolidation(substituteNodeTemplateId,
- mainServiceTemplate, substituteServiceTemplate, translationContext);
+ .getFileNestedConsolidationData(serviceTemplateFileName);
+
+ if (Objects.nonNull(fileNestedConsolidationData)) {
+ ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
+ for (String substitutedNodeTemplateId : fileNestedConsolidationData
+ .getAllNestedNodeTemplateIds()) {
+ if (translationContext
+ .isNestedNodeWasHandled(serviceTemplateFileName, substitutedNodeTemplateId)) {
+ continue;
+ }
+ NodeTemplate nestedNodeTemplate =
+ DataModelUtil.getNodeTemplate(serviceTemplate, substitutedNodeTemplateId);
+ Optional<String> substituteServiceTemplateName =
+ toscaAnalyzerService.getSubstituteServiceTemplateName(substitutedNodeTemplateId,
+ nestedNodeTemplate);
+ if (substituteServiceTemplateName.isPresent()) {
+ ServiceTemplate substitutionServiceTemplate =
+ toscaServiceModel.getServiceTemplates().get(substituteServiceTemplateName.get());
+ createUnifiedCompositionForNestedServiceTemplate(toscaServiceModel, serviceTemplate,
+ substitutionServiceTemplate, substitutedNodeTemplateId, translationContext);
+ }
+ translationContext.addNestedNodeAsHandled(serviceTemplateFileName,
+ substitutedNodeTemplateId);
}
}
- unifiedCompositionService
- .updateUnifiedAbstractNodesConnectivity(mainServiceTemplate, translationContext);
- ToscaServiceModel unifiedToscaServiceModel =
- HeatToToscaUtil.createToscaServiceModel(mainServiceTemplate, translationContext);
mdcDataDebugMessage.debugExitMessage(null, null);
- return unifiedToscaServiceModel;
+ }
+
+ private void createUnifiedCompositionForNestedServiceTemplate(
+ ToscaServiceModel toscaServiceModel,
+ ServiceTemplate serviceTemplate,
+ ServiceTemplate substitutionServiceTemplate,
+ String substitutedNodeTemplateId,
+ TranslationContext translationContext) {
+ mdcDataDebugMessage.debugEntryMessage(null, null);
+ handleNestedServiceTemplates(toscaServiceModel, substitutionServiceTemplate,
+ translationContext);
+ consolidationService.substitutionServiceTemplateConsolidation(substitutedNodeTemplateId,
+ serviceTemplate, substitutionServiceTemplate, translationContext);
+ unifiedCompositionService
+ .updateUnifiedAbstractNodesConnectivity(substitutionServiceTemplate, translationContext);
+ translationContext.addUnifiedHandledServiceTeamplte(substitutionServiceTemplate);
+ mdcDataDebugMessage.debugExitMessage(null, null);
}
}