summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main
diff options
context:
space:
mode:
authorAvi Ziv <avi.ziv@amdocs.com>2017-07-18 19:45:38 +0300
committerAvi Ziv <avi.ziv@amdocs.com>2017-07-18 19:45:38 +0300
commitb8e2faf476202b6ffe61bc3a9a37df1304881d40 (patch)
treef78b8c0517d8e16c5ae610bf8b49f68ea8a312a1 /openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main
parent75aacbbe1acf78fa53378f07f0a8c7769449a17e (diff)
[SDC] Onboarding 1710 rebase.
Change-Id: If3b6b81d221fde13908f1e8160db6f7d9433c535 Signed-off-by: Avi Ziv <avi.ziv@amdocs.com>
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main')
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java116
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/composition/UnifiedSubstitutionData.java50
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ConsolidationData.java28
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java10
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationEntityType.java33
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java83
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java289
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java15
-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
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java716
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionUtil.java2
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/globaltypes/GlobalTypesGenerator.java17
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/globaltypes/GlobalTypesServiceTemplates.java2
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/helper/VolumeTranslationHelper.java2
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetAttrImpl.java2
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceConnection.java2
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailServiceInstanceImpl.java2
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNovaServerImpl.java3
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionCatalogInstance.java44
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionNestedSingleCompute.java11
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionScalingInstances.java13
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionSingleSubstitution.java19
22 files changed, 848 insertions, 708 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java
index 7401ac5f2c..0e6610d5cd 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java
@@ -42,6 +42,8 @@ import org.openecomp.sdc.translator.services.heattotosca.NameExtractor;
import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator;
import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -68,8 +70,8 @@ public class TranslationContext {
config.generateMap(ConfigConstants.MAPPING_NAMESPACE, ConfigConstants.RESOURCE_MAPPING_KEY);
try {
globalServiceTemplates = GlobalTypesGenerator.getGlobalTypesServiceTemplate();
- } catch (Exception e) {
- throw new RuntimeException("Failed to load GlobalTypes", e);
+ } catch (Exception exc) {
+ throw new RuntimeException("Failed to load GlobalTypes", exc);
}
nameExtractorImplMap = config.populateMap(ConfigConstants.TRANSLATOR_NAMESPACE,
ConfigConstants.NAMING_CONVENTION_EXTRACTOR_IMPL_KEY, ImplementationConfiguration.class);
@@ -85,7 +87,6 @@ public class TranslationContext {
}
- private Map<String, UnifiedSubstitutionData> unifiedSubstitutionData = new HashMap<>();
private ManifestFile manifest;
public static List getEnrichPortResourceProperties() {
@@ -114,6 +115,8 @@ public class TranslationContext {
private Map<String, Map<String, String>> usedHeatPseudoParams = new HashMap<>();
//Consolidation data gathered for Unified TOSCA model
private ConsolidationData consolidationData = new ConsolidationData();
+ private Map<String, UnifiedSubstitutionData> unifiedSubstitutionData = new HashMap<>();
+ private Set<String> unifiedHandledServiceTemplates = new HashSet<>();
public static Map<String, ImplementationConfiguration>
getSupportedConsolidationComputeResources() {
@@ -184,20 +187,23 @@ public class TranslationContext {
public Optional<String> getUnifiedNestedNodeTemplateId(String serviceTemplateName,
String nestedNodeTemplateId) {
return this.unifiedSubstitutionData.get(serviceTemplateName) == null ? Optional.empty()
- :this.unifiedSubstitutionData.get(serviceTemplateName).getUnifiedNestedNodeTemplateId(nestedNodeTemplateId);
+ : this.unifiedSubstitutionData.get(serviceTemplateName)
+ .getUnifiedNestedNodeTemplateId(nestedNodeTemplateId);
}
public void addUnifiedNestedNodeTypeId(String serviceTemplateName,
- String nestedNodeTypeId,
- String unifiedNestedNodeTypeId){
+ String nestedNodeTypeId,
+ String unifiedNestedNodeTypeId) {
this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData());
- this.unifiedSubstitutionData.get(serviceTemplateName).addUnifiedNestedNodeTypeId(nestedNodeTypeId, unifiedNestedNodeTypeId);
+ this.unifiedSubstitutionData.get(serviceTemplateName)
+ .addUnifiedNestedNodeTypeId(nestedNodeTypeId, unifiedNestedNodeTypeId);
}
public Optional<String> getUnifiedNestedNodeTypeId(String serviceTemplateName,
String nestedNodeTemplateId) {
return this.unifiedSubstitutionData.get(serviceTemplateName) == null ? Optional.empty()
- : this.unifiedSubstitutionData.get(serviceTemplateName).getUnifiedNestedNodeTypeId(nestedNodeTemplateId);
+ : this.unifiedSubstitutionData.get(serviceTemplateName)
+ .getUnifiedNestedNodeTypeId(nestedNodeTemplateId);
}
public ConsolidationData getConsolidationData() {
@@ -323,7 +329,7 @@ public class TranslationContext {
}
private void addHeatSharedResourcesByParam(String parameterName,
- TranslatedHeatResource translatedHeatResource) {
+ TranslatedHeatResource translatedHeatResource) {
this.heatSharedResourcesByParam.put(parameterName, translatedHeatResource);
}
@@ -385,9 +391,10 @@ public class TranslationContext {
* @param substitutionServiceTemplateNodeTemplateId the node template id in the substitution
* service template
*/
- public void addSubstitutionServiceTemplateUnifiedSubstitutionData(String serviceTemplateFileName,
- String originalNodeTemplateId,
- String substitutionServiceTemplateNodeTemplateId) {
+ public void addSubstitutionServiceTemplateUnifiedSubstitutionData(
+ String serviceTemplateFileName,
+ String originalNodeTemplateId,
+ String substitutionServiceTemplateNodeTemplateId) {
Map<String, String> nodesRelatedSubstitutionServiceTemplateNodeTemplateIdMap = this
.getUnifiedSubstitutionData()
@@ -433,22 +440,49 @@ public class TranslationContext {
}
public int getHandledNestedComputeNodeTemplateIndex(String serviceTemplateName,
- String computeType){
+ String computeType) {
return this.unifiedSubstitutionData.get(serviceTemplateName)
.getHandledNestedComputeNodeTemplateIndex(computeType);
}
public void updateHandledComputeType(String serviceTemplateName,
- String nestedServiceTemplateFileName,
- String handledComputeType){
+ String handledComputeType,
+ String nestedServiceTemplateFileName) {
+ String globalSTName =
+ ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME);
+ this.unifiedSubstitutionData.putIfAbsent(
+ globalSTName, new UnifiedSubstitutionData());
+ this.unifiedSubstitutionData.get(globalSTName)
+ .addHandledComputeType(handledComputeType);
+ this.unifiedSubstitutionData.get(globalSTName).addHandlesNestedServiceTemplate(nestedServiceTemplateFileName);
+
this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData());
- this.unifiedSubstitutionData.get(serviceTemplateName)
- .addHandledComputeType(nestedServiceTemplateFileName, handledComputeType);
+ this.unifiedSubstitutionData.get(serviceTemplateName).addHandlesNestedServiceTemplate(nestedServiceTemplateFileName);
+ }
+
+ public void addHandledComputeTypeInServiceTemplate(String serviceTemplateName,
+ String handledComputeType){
+ this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData());
+ this.unifiedSubstitutionData.get(serviceTemplateName).addHandledComputeType(handledComputeType);
+ }
+
+ public boolean isComputeTypeHandledInServiceTemplate(String serviceTemplateName,
+ String computeType) {
+ return !Objects.isNull(this.unifiedSubstitutionData.get(serviceTemplateName))
+ && this.unifiedSubstitutionData.get(serviceTemplateName)
+ .isComputeTypeHandledInServiceTemplate(computeType);
+ }
+
+ public int getHandledNestedComputeNodeTemplateIndex(String serviceTemplateName,
+ String nestedServiceTemplateName,
+ String computeType){
+ return this.unifiedSubstitutionData.get(serviceTemplateName)
+ .getHandledNestedComputeNodeTemplateIndex(computeType);
}
public boolean isNestedServiceTemplateWasHandled(String serviceTemplateName,
- String nestedServiceTemplateFileName){
- if(Objects.isNull(this.unifiedSubstitutionData.get(serviceTemplateName))){
+ String nestedServiceTemplateFileName) {
+ if (Objects.isNull(this.unifiedSubstitutionData.get(serviceTemplateName))) {
return false;
}
return this.unifiedSubstitutionData.get(serviceTemplateName)
@@ -465,18 +499,48 @@ public class TranslationContext {
return this.unifiedSubstitutionData.get(globalName).getAllRelatedNestedNodeTypeIds();
}
- public void addNestedFileToUsedNestedComputeType(String serviceTemplateName,
- String nestedServiceTemplateFileName,
- String computeType){
+ public boolean isUnifiedHandledServiceTemplate(ServiceTemplate serviceTemplate) {
+ String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
+ if (unifiedHandledServiceTemplates.contains(serviceTemplateFileName)) {
+ return true;
+ }
+ return false;
+ }
+
+
+
+ public void addUnifiedHandledServiceTeamplte(ServiceTemplate serviceTemplate) {
+ String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
+ this.unifiedHandledServiceTemplates.add(serviceTemplateFileName);
+ }
+
+ public boolean isNestedNodeWasHandled(String serviceTemplateName,
+ String nestedNodeTemplateId) {
+ if (Objects.isNull(this.unifiedSubstitutionData.get(serviceTemplateName))) {
+ return false;
+ }
+ return this.unifiedSubstitutionData.get(serviceTemplateName)
+ .isNestedNodeWasHandled(nestedNodeTemplateId);
+ }
+
+ public void addNestedNodeAsHandled(String serviceTemplateName,
+ String nestedNodeTemplateId) {
this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData());
+ this.unifiedSubstitutionData.get(serviceTemplateName)
+ .addHandledNestedNodes(nestedNodeTemplateId);
+ }
- this.unifiedSubstitutionData.get(serviceTemplateName).addNestedFileToUsedNestedComputeType
- (computeType, nestedServiceTemplateFileName);
+ public void updateUsedTimesForNestedComputeNodeType(String serviceTemplateName,
+ String computeType) {
+ this.unifiedSubstitutionData.putIfAbsent(serviceTemplateName, new UnifiedSubstitutionData());
+
+ this.unifiedSubstitutionData.get(serviceTemplateName)
+ .updateUsedTimesForNestedComputeNodeType(computeType);
}
public int getGlobalNodeTypeIndex(String serviceTemplateName,
- String computeType){
- if(Objects.isNull(this.unifiedSubstitutionData.get(serviceTemplateName))){
+ String computeType) {
+ if (Objects.isNull(this.unifiedSubstitutionData.get(serviceTemplateName))) {
return 0;
}
return this.unifiedSubstitutionData.get(serviceTemplateName).getGlobalNodeTypeIndex
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/composition/UnifiedSubstitutionData.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/composition/UnifiedSubstitutionData.java
index c7fb7bb75a..7b461d2903 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/composition/UnifiedSubstitutionData.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/composition/UnifiedSubstitutionData.java
@@ -7,6 +7,7 @@ import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import java.util.Set;
@@ -25,11 +26,13 @@ public class UnifiedSubstitutionData {
private Map<String, Integer> handledComputeTypesInNestedSubstitutionTemplate =
new HashMap<>();
//Key - nested compute type, Value - list of nested files that the compute type is present
- private Map<String, Set<String>> handledNestedComputeTypesNestedFiles = new HashMap<>();
+ private Map<String, Integer> handledNestedComputeTypesNestedFiles = new HashMap<>();
//Key - new property id, Value - orig property value
private Map<String, Object> newParameterIdsToPropertiesFromOrigNodeTemplate = new HashMap<>();
//handled nested files
private Set<String> handledNestedFiles = new HashSet<>();
+ //handled nested nodes
+ private Set<String> handledNestedNodes = new HashSet<>();
public Map<String, String> getNodesRelatedAbstractNode() {
return nodesRelatedAbstractNode;
@@ -40,6 +43,10 @@ public class UnifiedSubstitutionData {
this.nodesRelatedAbstractNode = nodesRelatedAbstractNode;
}
+ public void addHandledNestedNodes(String handledNestedNodeId) {
+ this.handledNestedNodes.add(handledNestedNodeId);
+ }
+
public Map<String, String> getNodesRelatedSubstitutionServiceTemplateNode() {
return nodesRelatedSubstitutionServiceTemplateNode;
}
@@ -114,8 +121,7 @@ public class UnifiedSubstitutionData {
return new HashSet<>(this.nestedNodeTypeRelatedUnifiedTranslatedId.values());
}
- public void addHandledComputeType(String nestedServiceTemplateFileName,
- String handledComputeType) {
+ public void addHandledComputeType(String handledComputeType) {
if (this.handledComputeTypesInNestedSubstitutionTemplate.containsKey(handledComputeType)) {
Integer timesHandled =
@@ -123,7 +129,7 @@ public class UnifiedSubstitutionData {
this.handledComputeTypesInNestedSubstitutionTemplate
.put(handledComputeType, timesHandled + 1);
} else {
- this.handledNestedFiles.add(nestedServiceTemplateFileName);
+ //this.handledNestedFiles.add(nestedServiceTemplateFileName);
handledComputeTypesInNestedSubstitutionTemplate.put(handledComputeType, 0);
}
}
@@ -134,23 +140,38 @@ public class UnifiedSubstitutionData {
public int getHandledNestedComputeNodeTemplateIndex(String computeType) {
return this.handledComputeTypesInNestedSubstitutionTemplate.containsKey(computeType) ?
- this.handledComputeTypesInNestedSubstitutionTemplate.get(computeType):
- 0;
+ this.handledComputeTypesInNestedSubstitutionTemplate.get(computeType) : 0;
+ }
+
+ public void addHandlesNestedServiceTemplate(String nestedServiceTemplateFileName){
+ this.handledNestedFiles.add(nestedServiceTemplateFileName);
}
public boolean isNestedServiceTemplateWasHandled(String nestedServiceTemplateFileName) {
return this.handledNestedFiles.contains(nestedServiceTemplateFileName);
}
- public void addNestedFileToUsedNestedComputeType(String computeType,
- String nestedServiceTemplateFileName){
- this.handledNestedComputeTypesNestedFiles.putIfAbsent(computeType, new HashSet<>());
- this.handledNestedComputeTypesNestedFiles.get(computeType).add(nestedServiceTemplateFileName);
+ public void updateUsedTimesForNestedComputeNodeType(String computeType) {
+ this.handledNestedComputeTypesNestedFiles.putIfAbsent(computeType, 0);
+
+ Integer usedNumber = this.handledNestedComputeTypesNestedFiles.get(computeType);
+ this.handledNestedComputeTypesNestedFiles.put(computeType, usedNumber + 1);
+
+ }
+
+ public int getGlobalNodeTypeIndex(String computeType) {
+ return Objects.isNull(this.handledNestedComputeTypesNestedFiles.get(computeType))
+ || this.handledNestedComputeTypesNestedFiles.get(computeType)== 0 ? 0
+ : this.handledNestedComputeTypesNestedFiles.get(computeType);
}
- public int getGlobalNodeTypeIndex(String computeType){
- return this.handledNestedComputeTypesNestedFiles.get(computeType).size() == 1 ? 0:
- this.handledNestedComputeTypesNestedFiles.get(computeType).size() - 1;
+ public boolean isNestedNodeWasHandled(String nestedNodeId) {
+ return this.handledNestedNodes.contains(nestedNodeId);
+ }
+
+
+ public Map<String, Object> getAllNewPropertyInputParamIds(){
+ return this.newParameterIdsToPropertiesFromOrigNodeTemplate;
}
public void addNewPropertyIdToNodeTemplate(String newPropertyId,
@@ -168,7 +189,4 @@ public class UnifiedSubstitutionData {
return Optional.of(newParameterIdsToPropertiesFromOrigNodeTemplate.get(newPropertyId));
}
- public Map<String, Object> getAllNewPropertyInputParamIds(){
- return this.newParameterIdsToPropertiesFromOrigNodeTemplate;
- }
}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ConsolidationData.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ConsolidationData.java
index 496da78f76..20cc3be3cd 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ConsolidationData.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ConsolidationData.java
@@ -1,9 +1,5 @@
package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
/**
* The type Consolidation data.
*/
@@ -15,11 +11,6 @@ public class ConsolidationData {
//Port Consolidation data
private PortConsolidationData portConsolidationData;
- //Key - Service Template file name
- //value - List of the abstract/substitute node template id
- private Map<String, List<String>> substituteNodeTemplates; // todo - remove this one and use
- // nestedConsolidationData instead
-
//Nested Consolidation data
private NestedConsolidationData nestedConsolidationData;
@@ -31,7 +22,6 @@ public class ConsolidationData {
computeConsolidationData = new ComputeConsolidationData();
portConsolidationData = new PortConsolidationData();
nestedConsolidationData = new NestedConsolidationData();
- substituteNodeTemplates = new HashMap<>();
}
/**
@@ -72,24 +62,6 @@ public class ConsolidationData {
}
/**
- * Gets substitute node templates.
- *
- * @return the substitute node templates
- */
- public Map<String, List<String>> getSubstituteNodeTemplates() {
- return substituteNodeTemplates;
- }
-
- /**
- * Sets substitute node templates.
- *
- * @param substituteNodeTemplates the substitute node templates
- */
- public void setSubstituteNodeTemplates(Map<String, List<String>> substituteNodeTemplates) {
- this.substituteNodeTemplates = substituteNodeTemplates;
- }
-
- /**
* Gets nested consolidation data.
*
* @return the nested consolidation data
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
index 148e754cfd..4e92372b7e 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
@@ -271,10 +271,7 @@ public class ConsolidationDataUtil {
targetResource, translateTo.getContext());
// Add resource dependency information in nodesConnectedIn if the target node
// is a consolidation entity
- if (isConsolidationEntity(consolidationEntityType.getTargetEntityType())
- && HeatToToscaUtil
- .isValidDependsOnCandidate(heatOrchestrationTemplate, sourceResource,
- targetResource, consolidationEntityType, translationContext)) {
+ if (isConsolidationEntity(consolidationEntityType.getTargetEntityType())) {
ConsolidationDataUtil.updateNodesConnectedIn(translateTo,
nodeTemplateId, consolidationEntityType.getTargetEntityType(), targetResourceId,
requirementId, requirementAssignment);
@@ -282,10 +279,7 @@ public class ConsolidationDataUtil {
//Add resource dependency information in nodesConnectedOut if the source node
//is a consolidation entity
- if (isConsolidationEntity(consolidationEntityType.getSourceEntityType())
- && HeatToToscaUtil
- .isValidDependsOnCandidate(heatOrchestrationTemplate, sourceResource,
- targetResource, consolidationEntityType, translationContext)) {
+ if (isConsolidationEntity(consolidationEntityType.getSourceEntityType())) {
ConsolidationDataUtil.updateNodesConnectedOut(translateTo,
requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
requirementId, requirementAssignment);
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationEntityType.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationEntityType.java
index c2de58fd5a..8e6e9024fb 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationEntityType.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationEntityType.java
@@ -1,19 +1,12 @@
package org.openecomp.sdc.translator.services.heattotosca;
-import static org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil.isComputeResource;
-import static org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil.isPortResource;
-import static org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil.isVolumeResource;
-
-import org.apache.commons.lang3.ObjectUtils;
-import org.openecomp.core.utilities.yaml.YamlUtil;
-import org.openecomp.sdc.heat.datatypes.manifest.FileData;
import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
import org.openecomp.sdc.heat.datatypes.model.Resource;
import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
-import java.util.Collection;
-import java.util.Objects;
-import java.util.Optional;
+import static org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil.isComputeResource;
+import static org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil.isPortResource;
+import static org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil.isVolumeResource;
/**
* The enum Entity type.
@@ -23,6 +16,8 @@ public enum ConsolidationEntityType {
PORT,
VOLUME,
NESTED,
+ //Simple nested VFC (nested file with one compute) or a complex VFC (nested ST with more than
+ //one compute)
VFC_NESTED,
SUB_PORT,
OTHER;
@@ -64,21 +59,11 @@ public enum ConsolidationEntityType {
} else if (isVolumeResource(resource)) {
return ConsolidationEntityType.VOLUME;
} else if (HeatToToscaUtil.isNestedResource(resource)) {
- Optional<String> nestedHeatFileName = HeatToToscaUtil.getNestedHeatFileName(resource);
- if (nestedHeatFileName.isPresent()) {
- HeatOrchestrationTemplate nestedHeatOrchestrationTemplate = new YamlUtil()
- .yamlToObject(context.getFileContent(nestedHeatFileName.get()),
- HeatOrchestrationTemplate.class);
- if (Objects.nonNull(nestedHeatOrchestrationTemplate.getResources())) {
- for (String innerResourceId : nestedHeatOrchestrationTemplate.getResources().keySet()) {
- if (ConsolidationDataUtil
- .isComputeResource(nestedHeatOrchestrationTemplate, innerResourceId)) {
- return ConsolidationEntityType.VFC_NESTED;
- }
- }
- }
+ if (HeatToToscaUtil.isNestedVfcResource(resource, context)) {
+ return ConsolidationEntityType.VFC_NESTED;
+ } else {
+ return ConsolidationEntityType.NESTED;
}
- return ConsolidationEntityType.NESTED;
} else {
return ConsolidationEntityType.OTHER;
}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
index 9566e222ff..16a6301968 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
@@ -48,8 +48,8 @@ public class ConsolidationService {
}
- void mainServiceTemplateConsolidation(ServiceTemplate serviceTemplate,
- TranslationContext translationContext) {
+ void serviceTemplateConsolidation(ServiceTemplate serviceTemplate,
+ TranslationContext translationContext) {
ConsolidationData consolidationData = translationContext.getConsolidationData();
@@ -90,7 +90,7 @@ public class ConsolidationService {
}
- private Map<String, String> getConsolidationEntityIdToType(ServiceTemplate serviceTemplate,
+ public static Map<String, String> getConsolidationEntityIdToType(ServiceTemplate serviceTemplate,
ConsolidationData consolidationData) {
Map<String, String> consolidationEntityIdToType = new HashMap<>();
@@ -101,21 +101,24 @@ public class ConsolidationService {
FilePortConsolidationData filePortConsolidationData =
consolidationData.getPortConsolidationData()
.getFilePortConsolidationData(serviceTemplateFileName);
-
- for (String computeType : fileComputeConsolidationData.getAllComputeTypes()) {
- TypeComputeConsolidationData typeComputeConsolidationData =
- fileComputeConsolidationData.getTypeComputeConsolidationData(computeType);
- Set<String> computeNodeTemplateIds =
- typeComputeConsolidationData.getAllComputeNodeTemplateIds();
- for (String computeNodeTemplateId : computeNodeTemplateIds) {
- consolidationEntityIdToType.put(computeNodeTemplateId, computeType);
+ if(Objects.nonNull(fileComputeConsolidationData)) {
+ for (String computeType : fileComputeConsolidationData.getAllComputeTypes()) {
+ TypeComputeConsolidationData typeComputeConsolidationData =
+ fileComputeConsolidationData.getTypeComputeConsolidationData(computeType);
+ Set<String> computeNodeTemplateIds =
+ typeComputeConsolidationData.getAllComputeNodeTemplateIds();
+ for (String computeNodeTemplateId : computeNodeTemplateIds) {
+ consolidationEntityIdToType.put(computeNodeTemplateId, computeType);
+ }
}
}
- Set<String> portNodeTemplateIds = filePortConsolidationData.getAllPortNodeTemplateIds();
- for (String portNodeTemplateId : portNodeTemplateIds) {
- consolidationEntityIdToType
- .put(portNodeTemplateId, ConsolidationDataUtil.getPortType(portNodeTemplateId));
+ if(Objects.nonNull(filePortConsolidationData)) {
+ Set<String> portNodeTemplateIds = filePortConsolidationData.getAllPortNodeTemplateIds();
+ for (String portNodeTemplateId : portNodeTemplateIds) {
+ consolidationEntityIdToType
+ .put(portNodeTemplateId, ConsolidationDataUtil.getPortType(portNodeTemplateId));
+ }
}
return consolidationEntityIdToType;
@@ -287,8 +290,9 @@ public class ConsolidationService {
return new ArrayList<>(firstMap.values()).equals(new ArrayList<>(secondMap.values()));
}
- private Set<GetAttrFuncData> getEntityGetAttrFuncAsSet(String portType,
- EntityConsolidationData entityConsolidationData) {
+ private Set<GetAttrFuncData> getEntityGetAttrFuncAsSet(
+ String portType,
+ EntityConsolidationData entityConsolidationData) {
Set<GetAttrFuncData> getAttrFuncDataFromPortsWithSameType = new HashSet<>();
Map<String, List<GetAttrFuncData>> nodesGetAttrOut =
@@ -506,8 +510,8 @@ public class ConsolidationService {
private boolean checkGroupIdsRelations(EntityConsolidationData startingEntity,
EntityConsolidationData currentEntity) {
- if (CollectionUtils.isEmpty(startingEntity.getGroupIds()) &&
- CollectionUtils.isEmpty(currentEntity.getGroupIds())) {
+ if (CollectionUtils.isEmpty(startingEntity.getGroupIds())
+ && CollectionUtils.isEmpty(currentEntity.getGroupIds())) {
return true;
}
@@ -710,7 +714,7 @@ public class ConsolidationService {
}
public void substitutionServiceTemplateConsolidation(String substituteNodeTemplateId,
- ServiceTemplate mainServiceTemplate,
+ ServiceTemplate serviceTemplate,
ServiceTemplate substitutionServiceTemplate,
TranslationContext translationContext) {
@@ -720,24 +724,28 @@ public class ConsolidationService {
translationContext.getConsolidationData().getComputeConsolidationData()
.getFileComputeConsolidationData(
ToscaUtil.getServiceTemplateFileName(substitutionServiceTemplate));
- boolean consolidationRuleResult =
+ boolean substitutionConsolidationRuleResult =
substitutionServiceTemplateConsolidationRule(substitutionServiceTemplate,
fileComputeConsolidationData, translationContext);
- if (consolidationRuleResult) {
+ if (substitutionConsolidationRuleResult) {
List<UnifiedCompositionData> unifiedCompositionDataList =
createSubstitutionUnifiedCompositionDataList(substituteNodeTemplateId,
- mainServiceTemplate, consolidationData);
+ serviceTemplate, consolidationData);
unifiedCompositionService
- .createUnifiedComposition(mainServiceTemplate, substitutionServiceTemplate,
+ .createUnifiedComposition(serviceTemplate, substitutionServiceTemplate,
unifiedCompositionDataList, UnifiedCompositionMode.NestedSingleCompute,
translationContext);
} else {
- //The node template does not qualify for unified composition
+ //The node template does not represent unified VFC but complexVFC
//Adding the id in the context for fixing connectivity from/to nested non-unified nodes
translationContext.addUnifiedNestedNodeTemplateId(ToscaUtil
- .getServiceTemplateFileName(mainServiceTemplate),
+ .getServiceTemplateFileName(serviceTemplate),
substituteNodeTemplateId, substituteNodeTemplateId);
+
+ if (!translationContext.isUnifiedHandledServiceTemplate(substitutionServiceTemplate)) {
+ serviceTemplateConsolidation(substitutionServiceTemplate, translationContext);
+ }
}
}
@@ -829,24 +837,21 @@ public class ConsolidationService {
.getFileNestedConsolidationData(ToscaUtil.getServiceTemplateFileName(serviceTemplate));
if (Objects.nonNull(fileNestedConsolidationData)) {
- Collection<NestedTemplateConsolidationData> nestedConsolidationDatas =
- fileNestedConsolidationData.getAllNestedConsolidationData();
-
- for (NestedTemplateConsolidationData nested : nestedConsolidationDatas) {
- if (nested.getNodeTemplateId().equals(substituteNodeTemplateId)) {
- UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData();
- unifiedCompositionData.setNestedTemplateConsolidationData(nested);
- unifiedCompositionDataList.add(unifiedCompositionData);
- }
- }
+ NestedTemplateConsolidationData nestedTemplateConsolidationData =
+ fileNestedConsolidationData.getNestedTemplateConsolidationData(substituteNodeTemplateId);
+ UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData();
+ unifiedCompositionData.setNestedTemplateConsolidationData(nestedTemplateConsolidationData);
+ unifiedCompositionDataList.add(unifiedCompositionData);
+ return unifiedCompositionDataList;
}
return unifiedCompositionDataList;
}
- private boolean consolidationPreCondition(ServiceTemplate serviceTemplate,
- ConsolidationData consolidationData,
- TypeComputeConsolidationData typeComputeConsolidationData) {
+ private boolean consolidationPreCondition(
+ ServiceTemplate serviceTemplate,
+ ConsolidationData consolidationData,
+ TypeComputeConsolidationData typeComputeConsolidationData) {
return (isThereMoreThanOneComputeTypeInstance(typeComputeConsolidationData)
&& isNumberOfPortsEqualsBetweenComputeNodes(typeComputeConsolidationData)
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java
index 7c67a5af2c..81ef3e01ce 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java
@@ -25,10 +25,9 @@ import org.apache.commons.collections4.MapUtils;
import org.openecomp.core.translator.api.HeatToToscaTranslator;
import org.openecomp.core.translator.datatypes.TranslatorOutput;
import org.openecomp.core.translator.factory.HeatToToscaTranslatorFactory;
-import org.openecomp.core.utilities.CommonMethods;
import org.openecomp.core.utilities.file.FileContentHandler;
import org.openecomp.core.utilities.file.FileUtils;
-import org.openecomp.core.utilities.yaml.YamlUtil;
+import org.openecomp.sdc.tosca.services.YamlUtil;
import org.openecomp.core.validation.util.MessageContainerUtil;
import org.openecomp.sdc.common.errors.CoreException;
import org.openecomp.sdc.common.utils.SdcCommon;
@@ -68,7 +67,6 @@ import org.openecomp.sdc.tosca.datatypes.model.PropertyType;
import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
import org.openecomp.sdc.tosca.datatypes.model.RequirementDefinition;
import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
-import org.openecomp.sdc.tosca.datatypes.model.SubstitutionMapping;
import org.openecomp.sdc.tosca.datatypes.model.Template;
import org.openecomp.sdc.tosca.datatypes.model.TopologyTemplate;
import org.openecomp.sdc.tosca.services.DataModelUtil;
@@ -76,7 +74,7 @@ import org.openecomp.sdc.tosca.services.ToscaAnalyzerService;
import org.openecomp.sdc.tosca.services.ToscaConstants;
import org.openecomp.sdc.tosca.services.ToscaUtil;
import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl;
-import org.openecomp.sdc.tosca.services.yamlutil.ToscaExtensionYamlUtil;
+import org.openecomp.sdc.tosca.services.ToscaExtensionYamlUtil;
import org.openecomp.sdc.translator.datatypes.heattotosca.AttachedPropertyVal;
import org.openecomp.sdc.translator.datatypes.heattotosca.AttachedResourceId;
import org.openecomp.sdc.translator.datatypes.heattotosca.ReferenceType;
@@ -337,10 +335,11 @@ public class HeatToToscaUtil {
* @param propertyValue the property value
* @return the optional
*/
- public static Optional<AttachedResourceId> extractAttachedResourceId(String heatFileName,
- HeatOrchestrationTemplate heatOrchestrationTemplate,
- TranslationContext context,
- Object propertyValue) {
+ public static Optional<AttachedResourceId> extractAttachedResourceId(
+ String heatFileName,
+ HeatOrchestrationTemplate heatOrchestrationTemplate,
+ TranslationContext context,
+ Object propertyValue) {
Object entity;
Object translatedId;
@@ -539,6 +538,32 @@ public class HeatToToscaUtil {
}
/**
+ * Checks if the nested resource represents a VFC or a complex VFC (Heat file should contain at
+ * least one or more compute nodes).
+ *
+ * @param resource the resource
+ * @param context the context
+ * @return true if the resource represents a VFC and false otherwise.
+ */
+ public static boolean isNestedVfcResource(Resource resource, TranslationContext context) {
+ mdcDataDebugMessage.debugEntryMessage(null, null);
+ Optional<String> nestedHeatFileName = HeatToToscaUtil.getNestedHeatFileName(resource);
+ HeatOrchestrationTemplate nestedHeatOrchestrationTemplate = new YamlUtil()
+ .yamlToObject(context.getFileContent(nestedHeatFileName.get()),
+ HeatOrchestrationTemplate.class);
+ if (Objects.nonNull(nestedHeatOrchestrationTemplate.getResources())) {
+ for (String innerResourceId : nestedHeatOrchestrationTemplate.getResources().keySet()) {
+ if (ConsolidationDataUtil
+ .isComputeResource(nestedHeatOrchestrationTemplate, innerResourceId)) {
+ return true;
+ }
+ }
+ }
+ mdcDataDebugMessage.debugExitMessage(null, null);
+ return false;
+ }
+
+ /**
* Get nested heat file name in case of nested resource.
*
* @param resource the resource
@@ -734,8 +759,9 @@ public class HeatToToscaUtil {
* @param entryDefinitionMetadata template name of the entry definition servie template
* @return the tosca service model
*/
- public static ToscaServiceModel getToscaServiceModel(TranslationContext context,
- Map<String, String> entryDefinitionMetadata) {
+ public static ToscaServiceModel getToscaServiceModel(
+ TranslationContext context,
+ Map<String, String> entryDefinitionMetadata) {
mdcDataDebugMessage.debugEntryMessage(null, null);
Map<String, ServiceTemplate> serviceTemplates =
@@ -776,28 +802,6 @@ public class HeatToToscaUtil {
}
/**
- * Adding binding requerment from port node template to compute node template.
- *
- * @param computeNodeTemplateId compute node template id
- * @param portNodeTemplate port node template
- */
- public static void addBindingReqFromPortToCompute(String computeNodeTemplateId,
- NodeTemplate portNodeTemplate) {
-
-
- mdcDataDebugMessage.debugEntryMessage(null, null);
-
- RequirementAssignment requirementAssignment = new RequirementAssignment();
- requirementAssignment.setCapability(ToscaCapabilityType.NATIVE_NETWORK_BINDABLE);
- requirementAssignment.setRelationship(ToscaRelationshipType.NATIVE_NETWORK_BINDS_TO);
- requirementAssignment.setNode(computeNodeTemplateId);
- DataModelUtil.addRequirementAssignment(portNodeTemplate, ToscaConstants.BINDING_REQUIREMENT_ID,
- requirementAssignment);
-
- mdcDataDebugMessage.debugExitMessage(null, null);
- }
-
- /**
* Adding link requerment from port node template to network node template.
*
* @param portNodeTemplate port node template
@@ -1062,7 +1066,7 @@ public class HeatToToscaUtil {
nestedSubstitutionServiceTemplate, context);
//add substitution mapping after capability and requirement expose calculation
nestedSubstitutionServiceTemplate.getTopology_template().setSubstitution_mappings(
- createSubstitutionTemplateSubMapping(substitutionNodeTypeKey,
+ DataModelUtil.createSubstitutionTemplateSubMapping(substitutionNodeTypeKey,
substitutionNodeType, substitutionMapping));
}
@@ -1233,69 +1237,6 @@ public class HeatToToscaUtil {
return substitutionProperties;
}
- private static SubstitutionMapping createSubstitutionTemplateSubMapping(
- String nodeTypeKey,
- NodeType substitutionNodeType,
- Map<String, Map<String, List<String>>> mapping) {
- mdcDataDebugMessage.debugEntryMessage(null, null);
- SubstitutionMapping substitutionMapping = new SubstitutionMapping();
- substitutionMapping.setNode_type(nodeTypeKey);
- substitutionMapping.setCapabilities(
- manageCapabilityMapping(substitutionNodeType.getCapabilities(), mapping.get("capability")));
- substitutionMapping.setRequirements(
- manageRequirementMapping(substitutionNodeType.getRequirements(),
- mapping.get("requirement")));
-
- mdcDataDebugMessage.debugExitMessage(null, null);
- return substitutionMapping;
- }
-
- private static Map<String, List<String>> manageRequirementMapping(
- List<Map<String, RequirementDefinition>> requirementList,
- Map<String, List<String>> requirementSubstitutionMapping) {
- mdcDataDebugMessage.debugEntryMessage(null, null);
-
- if (requirementList == null) {
- return null;
- }
- Map<String, List<String>> requirementMapping = new HashMap<>();
- String requirementKey;
- List<String> requirementMap;
- for (Map<String, RequirementDefinition> requirementDefMap : requirementList) {
- for (Map.Entry<String, RequirementDefinition> entry : requirementDefMap.entrySet()) {
- requirementKey = entry.getKey();
- requirementMap = requirementSubstitutionMapping.get(requirementKey);
- requirementMapping.put(requirementKey, requirementMap);
- }
- }
-
- mdcDataDebugMessage.debugExitMessage(null, null);
- return requirementMapping;
- }
-
- private static Map<String, List<String>> manageCapabilityMapping(
- Map<String, CapabilityDefinition> capabilities,
- Map<String, List<String>> capabilitySubstitutionMapping) {
- mdcDataDebugMessage.debugEntryMessage(null, null);
-
- if (capabilities == null) {
- mdcDataDebugMessage.debugExitMessage(null, null);
- return null;
- }
-
- Map<String, List<String>> capabilityMapping = new HashMap<>();
- String capabilityKey;
- List<String> capabilityMap;
- for (Map.Entry<String, CapabilityDefinition> entry : capabilities.entrySet()) {
- capabilityKey = entry.getKey();
- capabilityMap = capabilitySubstitutionMapping.get(capabilityKey);
- capabilityMapping.put(capabilityKey, capabilityMap);
- }
-
- mdcDataDebugMessage.debugExitMessage(null, null);
- return capabilityMapping;
- }
-
private static Map<String, Map<String, List<String>>>
getSubstitutionNodeTypeExposedConnectionPoints(NodeType substitutionNodeType,
ServiceTemplate substitutionServiceTemplate,
@@ -1323,6 +1264,7 @@ public class HeatToToscaUtil {
new HashMap<>();
Map<String, CapabilityDefinition> nodeTypeCapabilitiesDefinition = new HashMap<>();
Map<String, CapabilityDefinition> exposedCapabilitiesDefinition;
+ ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) {
nodeTemplateId = entry.getKey();
@@ -1336,9 +1278,11 @@ public class HeatToToscaUtil {
nodeTemplateRequirementsAssignment = DataModelUtil.getNodeTemplateRequirements(nodeTemplate);
fullFilledRequirementsDefinition.put(nodeTemplateId, nodeTemplateRequirementsAssignment);
//set substitution node type requirements
- exposedRequirementsDefinition = calculateExposedRequirements(nodeTypeRequirementsDefinition,
+ exposedRequirementsDefinition =
+ toscaAnalyzerService.calculateExposedRequirements(nodeTypeRequirementsDefinition,
nodeTemplateRequirementsAssignment);
- addSubstitutionNodeTypeRequirements(substitutionNodeType, exposedRequirementsDefinition,
+ DataModelUtil
+ .addSubstitutionNodeTypeRequirements(substitutionNodeType, exposedRequirementsDefinition,
nodeTemplateId);
//get capabilities
@@ -1347,7 +1291,8 @@ public class HeatToToscaUtil {
nodeTemplateId, substitutionServiceTemplate, context);
}
- exposedCapabilitiesDefinition = calculateExposedCapabilities(nodeTypeCapabilitiesDefinition,
+ exposedCapabilitiesDefinition =
+ toscaAnalyzerService.calculateExposedCapabilities(nodeTypeCapabilitiesDefinition,
fullFilledRequirementsDefinition);
DataModelUtil.addNodeTypeCapabilitiesDef(substitutionNodeType, exposedCapabilitiesDefinition);
@@ -1355,48 +1300,6 @@ public class HeatToToscaUtil {
return substitutionMapping;
}
- private static Map<String, CapabilityDefinition> calculateExposedCapabilities(
- Map<String, CapabilityDefinition> nodeTypeCapabilitiesDefinition,
- Map<String, Map<String, RequirementAssignment>> fullFilledRequirementsDefinitionMap) {
-
-
- mdcDataDebugMessage.debugEntryMessage(null, null);
-
- String capabilityKey;
- String capability;
- String node;
- for (Map.Entry<String, Map<String, RequirementAssignment>> entry :
- fullFilledRequirementsDefinitionMap.entrySet()) {
- for (Map.Entry<String, RequirementAssignment> fullFilledEntry : entry.getValue().entrySet()) {
-
- capability = fullFilledEntry.getValue().getCapability();
- fullFilledEntry.getValue().getOccurrences();
- node = fullFilledEntry.getValue().getNode();
- capabilityKey = capability + "_" + node;
- CapabilityDefinition capabilityDefinition = nodeTypeCapabilitiesDefinition.get(
- capabilityKey);
- if (capabilityDefinition != null) {
- CapabilityDefinition clonedCapabilityDefinition = capabilityDefinition.clone();
- nodeTypeCapabilitiesDefinition.put(capabilityKey, capabilityDefinition.clone());
- if (evaluateCapabilityFulfillment(clonedCapabilityDefinition)) {
- nodeTypeCapabilitiesDefinition.remove(capabilityKey);
- } else {
- nodeTypeCapabilitiesDefinition.put(capabilityKey, clonedCapabilityDefinition);
- }
- }
- }
- }
-
- Map<String, CapabilityDefinition> exposedCapabilitiesDefinition = new HashMap<>();
- for (Map.Entry<String, CapabilityDefinition> entry : nodeTypeCapabilitiesDefinition
- .entrySet()) {
- exposedCapabilitiesDefinition.put(entry.getKey(), entry.getValue());
- }
-
- mdcDataDebugMessage.debugExitMessage(null, null);
- return exposedCapabilitiesDefinition;
- }
-
private static void addNodeTypeCapabilitiesToSubMapping(
Map<String, CapabilityDefinition> nodeTypeCapabilitiesDefinition,
Map<String, List<String>> capabilitySubstitutionMapping, String type, String templateName,
@@ -1422,31 +1325,6 @@ public class HeatToToscaUtil {
mdcDataDebugMessage.debugExitMessage(null, null);
}
- private static void addSubstitutionNodeTypeRequirements(NodeType substitutionNodeType,
- List<Map<String, RequirementDefinition>>
- requirementsList,
- String templateName) {
- mdcDataDebugMessage.debugEntryMessage(null, null);
-
- if (requirementsList == null || requirementsList.size() == 0) {
- return;
- }
-
- if (substitutionNodeType.getRequirements() == null) {
- substitutionNodeType.setRequirements(new ArrayList<>());
- }
-
- for (Map<String, RequirementDefinition> requirementDef : requirementsList) {
- for (Map.Entry<String, RequirementDefinition> entry : requirementDef.entrySet()) {
- Map<String, RequirementDefinition> requirementMap = new HashMap<>();
- requirementMap.put(entry.getKey() + "_" + templateName, entry.getValue().clone());
- substitutionNodeType.getRequirements().add(requirementMap);
- }
- }
-
- mdcDataDebugMessage.debugExitMessage(null, null);
- }
-
private static List<Map<String, RequirementDefinition>> getNodeTypeReqs(
String type,
String templateName,
@@ -1489,85 +1367,6 @@ public class HeatToToscaUtil {
return requirementList;
}
- private static List<Map<String, RequirementDefinition>> calculateExposedRequirements(
- List<Map<String, RequirementDefinition>> nodeTypeRequirementsDefinitionList,
- Map<String, RequirementAssignment> nodeTemplateRequirementsAssignment) {
- mdcDataDebugMessage.debugEntryMessage(null, null);
-
- if (nodeTypeRequirementsDefinitionList == null) {
- return null;
- }
- for (Map.Entry<String, RequirementAssignment> entry : nodeTemplateRequirementsAssignment
- .entrySet()) {
- if (entry.getValue().getNode() != null) {
- Optional<RequirementDefinition> requirementDefinition =
- DataModelUtil.getRequirementDefinition(nodeTypeRequirementsDefinitionList, entry
- .getKey());
- RequirementDefinition cloneRequirementDefinition;
- if (requirementDefinition.isPresent()) {
- cloneRequirementDefinition = requirementDefinition.get().clone();
- if (!evaluateRequirementFulfillment(cloneRequirementDefinition)) {
- CommonMethods.mergeEntryInList(entry.getKey(), cloneRequirementDefinition,
- nodeTypeRequirementsDefinitionList);
- } else {
- DataModelUtil.removeRequirementsDefinition(nodeTypeRequirementsDefinitionList, entry
- .getKey());
- }
- }
- } else {
- for (Map<String, RequirementDefinition> nodeTypeRequirementsMap :
- nodeTypeRequirementsDefinitionList) {
- Object max = nodeTypeRequirementsMap.get(entry.getKey()).getOccurrences() != null
- && nodeTypeRequirementsMap.get(entry.getKey()).getOccurrences().length > 0
- ? nodeTypeRequirementsMap.get(entry.getKey()).getOccurrences()[1] : 1;
- Object min = nodeTypeRequirementsMap.get(entry.getKey()).getOccurrences() != null
- && nodeTypeRequirementsMap.get(entry.getKey()).getOccurrences().length > 0
- ? nodeTypeRequirementsMap.get(entry.getKey()).getOccurrences()[0] : 1;
- nodeTypeRequirementsMap.get(entry.getKey()).setOccurrences(new Object[]{min, max});
- }
- }
- }
-
- mdcDataDebugMessage.debugExitMessage(null, null);
- return nodeTypeRequirementsDefinitionList;
- }
-
- private static boolean evaluateRequirementFulfillment(RequirementDefinition
- requirementDefinition) {
- Object[] occurrences = requirementDefinition.getOccurrences();
- if (occurrences == null) {
- requirementDefinition.setOccurrences(new Object[]{1, 1});
- return false;
- }
- if (occurrences[1].equals(ToscaConstants.UNBOUNDED)) {
- return false;
- }
-
- if (occurrences[1].equals(1)) {
- return true;
- }
- occurrences[1] = (Integer) occurrences[1] - 1;
- return false;
- }
-
- private static boolean evaluateCapabilityFulfillment(CapabilityDefinition capabilityDefinition) {
-
- Object[] occurrences = capabilityDefinition.getOccurrences();
- if (occurrences == null) {
- capabilityDefinition.setOccurrences(new Object[]{1, ToscaConstants.UNBOUNDED});
- return false;
- }
- if (occurrences[1].equals(ToscaConstants.UNBOUNDED)) {
- return false;
- }
-
- if (occurrences[1].equals(1)) {
- return true;
- }
- occurrences[1] = (Integer) occurrences[1] - 1;
- return false;
- }
-
/**
* Fetch global substitution service template service template.
*
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java
index ab41d43cc9..43079f9025 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java
@@ -22,9 +22,7 @@ package org.openecomp.sdc.translator.services.heattotosca;
import org.apache.commons.collections4.MapUtils;
import org.openecomp.core.translator.datatypes.TranslatorOutput;
-import org.openecomp.core.utilities.file.FileContentHandler;
import org.openecomp.core.utilities.file.FileUtils;
-import org.openecomp.core.utilities.yaml.YamlUtil;
import org.openecomp.sdc.common.errors.CoreException;
import org.openecomp.sdc.datatypes.error.ErrorLevel;
import org.openecomp.sdc.heat.datatypes.manifest.FileData;
@@ -32,9 +30,6 @@ import org.openecomp.sdc.heat.datatypes.model.Environment;
import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
import org.openecomp.sdc.heat.datatypes.model.Output;
import org.openecomp.sdc.heat.datatypes.model.Resource;
-import org.openecomp.sdc.heat.datatypes.structure.ValidationStructureList;
-import org.openecomp.sdc.heat.services.tree.HeatTreeManager;
-import org.openecomp.sdc.heat.services.tree.HeatTreeManagerUtil;
import org.openecomp.sdc.logging.api.Logger;
import org.openecomp.sdc.logging.api.LoggerFactory;
import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
@@ -46,7 +41,6 @@ import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
import org.openecomp.sdc.tosca.datatypes.ToscaGroupType;
import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
import org.openecomp.sdc.tosca.datatypes.model.GroupDefinition;
-import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
import org.openecomp.sdc.tosca.datatypes.model.ParameterDefinition;
import org.openecomp.sdc.tosca.datatypes.model.PropertyType;
import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
@@ -54,13 +48,11 @@ import org.openecomp.sdc.tosca.datatypes.model.TopologyTemplate;
import org.openecomp.sdc.tosca.services.DataModelUtil;
import org.openecomp.sdc.tosca.services.ToscaConstants;
import org.openecomp.sdc.tosca.services.ToscaFileOutputService;
-import org.openecomp.sdc.tosca.services.ToscaUtil;
+import org.openecomp.sdc.tosca.services.YamlUtil;
import org.openecomp.sdc.tosca.services.impl.ToscaFileOutputServiceCsarImpl;
import org.openecomp.sdc.translator.datatypes.heattotosca.AttachedResourceId;
import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
import org.openecomp.sdc.translator.datatypes.heattotosca.to.FileDataCollection;
-import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.EntityConsolidationData;
-import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.GetAttrFuncData;
import org.openecomp.sdc.translator.services.heattotosca.errors.ResourceNotFoundInHeatFileErrorBuilder;
import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator;
import org.openecomp.sdc.translator.services.heattotosca.mapping.TranslatorHeatToToscaParameterConverter;
@@ -68,7 +60,6 @@ import org.openecomp.sdc.translator.services.heattotosca.mapping.TranslatorHeatT
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -121,6 +112,10 @@ public class TranslationService {
HeatToToscaUtil.createToscaServiceModel(mainServiceTemplate, translationContext);
TranslatorOutput translatorOutput = new TranslatorOutput();
+ //Keeping a copy of tosca service model after first stage of translation for extraction of
+ // composition data
+ translatorOutput.setNonUnifiedToscaServiceModel(
+ ToscaServiceModel.getClonedServiceModel(toscaServiceModel));
translatorOutput.setToscaServiceModel(toscaServiceModel);
mdcDataDebugMessage.debugExitMessage(null, null);
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);
}
}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java
index 185316dad7..3704960466 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java
@@ -20,6 +20,12 @@
package org.openecomp.sdc.translator.services.heattotosca;
+import static org.openecomp.sdc.tosca.services.DataModelUtil.getClonedObject;
+import static org.openecomp.sdc.translator.services.heattotosca.Constants.ABSTRACT_NODE_TEMPLATE_ID_PREFIX;
+import static org.openecomp.sdc.translator.services.heattotosca.Constants.COMPUTE_IDENTICAL_VALUE_PROPERTY_PREFIX;
+import static org.openecomp.sdc.translator.services.heattotosca.Constants.COMPUTE_IDENTICAL_VALUE_PROPERTY_SUFFIX;
+import static org.openecomp.sdc.translator.services.heattotosca.Constants.PORT_IDENTICAL_VALUE_PROPERTY_PREFIX;
+
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
@@ -29,7 +35,6 @@ import org.apache.commons.lang3.tuple.Pair;
import org.openecomp.config.api.Configuration;
import org.openecomp.config.api.ConfigurationManager;
import org.openecomp.core.utilities.CommonMethods;
-import org.openecomp.core.utilities.yaml.YamlUtil;
import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
import org.openecomp.sdc.heat.services.HeatConstants;
import org.openecomp.sdc.logging.api.Logger;
@@ -39,6 +44,7 @@ import org.openecomp.sdc.tosca.datatypes.ToscaFunctions;
import org.openecomp.sdc.tosca.datatypes.ToscaGroupType;
import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
import org.openecomp.sdc.tosca.datatypes.ToscaRelationshipType;
+import org.openecomp.sdc.tosca.datatypes.model.AttributeDefinition;
import org.openecomp.sdc.tosca.datatypes.model.CapabilityDefinition;
import org.openecomp.sdc.tosca.datatypes.model.Constraint;
import org.openecomp.sdc.tosca.datatypes.model.EntrySchema;
@@ -74,12 +80,6 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolida
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.NotSerializableException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -92,11 +92,6 @@ import java.util.Optional;
import java.util.Set;
import java.util.regex.Pattern;
-import static org.openecomp.sdc.translator.services.heattotosca.Constants.ABSTRACT_NODE_TEMPLATE_ID_PREFIX;
-import static org.openecomp.sdc.translator.services.heattotosca.Constants.COMPUTE_IDENTICAL_VALUE_PROPERTY_PREFIX;
-import static org.openecomp.sdc.translator.services.heattotosca.Constants.COMPUTE_IDENTICAL_VALUE_PROPERTY_SUFFIX;
-import static org.openecomp.sdc.translator.services.heattotosca.Constants.PORT_IDENTICAL_VALUE_PROPERTY_PREFIX;
-
public class UnifiedCompositionService {
protected static Logger logger =
@@ -169,14 +164,17 @@ public class UnifiedCompositionService {
* @return the substitution service template
*/
public Optional<ServiceTemplate> createUnifiedSubstitutionServiceTemplate(
- ServiceTemplate serviceTemplate, List<UnifiedCompositionData> unifiedCompositionDataList,
- TranslationContext context, Integer index) {
+ ServiceTemplate serviceTemplate,
+ List<UnifiedCompositionData> unifiedCompositionDataList,
+ TranslationContext context,
+ String substitutionNodeTypeId,
+ Integer index) {
if (CollectionUtils.isEmpty(unifiedCompositionDataList)) {
return Optional.empty();
}
UnifiedCompositionData unifiedCompositionData = unifiedCompositionDataList.get(0);
String templateName =
- getTemplateName(serviceTemplate, unifiedCompositionData, index);
+ getTemplateName(serviceTemplate, unifiedCompositionData, substitutionNodeTypeId, index);
ServiceTemplate substitutionServiceTemplate =
HeatToToscaUtil.createInitSubstitutionServiceTemplate(templateName);
@@ -188,13 +186,13 @@ public class UnifiedCompositionService {
handlePorts(serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList,
computeNodeType, context);
createOutputParameters(serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList,
- computeNodeType);
+ computeNodeType, context);
NodeType substitutionGlobalNodeType =
handleSubstitutionGlobalNodeType(serviceTemplate, substitutionServiceTemplate,
- context, unifiedCompositionData, index);
+ context, unifiedCompositionData, substitutionNodeTypeId, index);
HeatToToscaUtil.handleSubstitutionMapping(context,
- getSubstitutionNodeTypeId(serviceTemplate, unifiedCompositionData, index),
+ substitutionNodeTypeId,
substitutionServiceTemplate, substitutionGlobalNodeType);
context.getTranslatedServiceTemplates().put(templateName, substitutionServiceTemplate);
@@ -218,6 +216,7 @@ public class UnifiedCompositionService {
ServiceTemplate serviceTemplate,
ServiceTemplate substitutionServiceTemplate,
List<UnifiedCompositionData> unifiedCompositionDataList,
+ String substituteNodeTypeId,
TranslationContext context,
Integer index) {
@@ -225,9 +224,7 @@ public class UnifiedCompositionService {
List<String> directiveList = new ArrayList<>();
directiveList.add(ToscaConstants.NODE_TEMPLATE_DIRECTIVE_SUBSTITUTABLE);
substitutionNodeTemplate.setDirectives(directiveList);
- String substituteNodeTemplateType =
- getSubstitutionNodeTypeId(serviceTemplate, unifiedCompositionDataList.get(0), index);
- substitutionNodeTemplate.setType(substituteNodeTemplateType);
+ substitutionNodeTemplate.setType(substituteNodeTypeId);
Optional<Map<String, Object>> abstractSubstitutionProperties =
createAbstractSubstitutionProperties(serviceTemplate,
substitutionServiceTemplate, unifiedCompositionDataList, context);
@@ -237,12 +234,13 @@ public class UnifiedCompositionService {
String substitutionServiceTemplateName = ToscaUtil.getServiceTemplateFileName(
substitutionServiceTemplate);
int count = unifiedCompositionDataList.size();
- addSubstitutionFilteringProperty(substitutionServiceTemplateName, substitutionNodeTemplate,
- count);
+ DataModelUtil.addSubstitutionFilteringProperty(substitutionServiceTemplateName,
+ substitutionNodeTemplate, count);
//Add index_value property
addIndexValueProperty(substitutionNodeTemplate);
String substituteNodeTemplateId =
- getSubstituteNodeTemplateId(serviceTemplate, unifiedCompositionDataList.get(0), index);
+ getSubstituteNodeTemplateId(serviceTemplate, unifiedCompositionDataList.get(0),
+ substituteNodeTypeId, index);
//Add node template id and related abstract node template id in context
addUnifiedSubstitionData(context, serviceTemplate, unifiedCompositionDataList,
substituteNodeTemplateId);
@@ -304,6 +302,13 @@ public class UnifiedCompositionService {
}
+ /**
+ * Clean node types.
+ *
+ * @param serviceTemplate the service template
+ * @param unifiedCompositionDataList the unified composition data list
+ * @param context the context
+ */
public void cleanNodeTypes(ServiceTemplate serviceTemplate,
List<UnifiedCompositionData> unifiedCompositionDataList,
TranslationContext context) {
@@ -312,7 +317,6 @@ public class UnifiedCompositionService {
unifiedData.getComputeTemplateConsolidationData().getNodeTemplateId(), serviceTemplate,
context);
}
-
if (MapUtils.isEmpty(serviceTemplate.getNode_types())) {
serviceTemplate.setNode_types(null);
}
@@ -344,13 +348,21 @@ public class UnifiedCompositionService {
}
}
+ /**
+ * Handle unified nested definition.
+ *
+ * @param mainServiceTemplate the main service template
+ * @param nestedServiceTemplate the nested service template
+ * @param unifiedCompositionData the unified composition data
+ * @param context the context
+ */
public void handleUnifiedNestedDefinition(ServiceTemplate mainServiceTemplate,
ServiceTemplate nestedServiceTemplate,
- List<UnifiedCompositionData> unifiedCompositionDataList,
+ UnifiedCompositionData unifiedCompositionData,
TranslationContext context) {
handleUnifiedNestedNodeType(mainServiceTemplate, nestedServiceTemplate, context);
updateUnifiedNestedTemplates(mainServiceTemplate, nestedServiceTemplate,
- unifiedCompositionDataList, context);
+ unifiedCompositionData, context);
}
private void handleGetAttrInConnectivity(ServiceTemplate serviceTemplate,
@@ -378,17 +390,19 @@ public class UnifiedCompositionService {
Optional<String> newNestedNodeTypeId =
getNewNestedNodeTypeId(mainServiceTemplate, nestedServiceTemplate, context);
- if (isNestedServiceTemplateWasHandled(mainServiceTemplate, nestedServiceTemplate, context,
+ ServiceTemplate globalSubstitutionServiceTemplate =
+ context.getGlobalSubstitutionServiceTemplate();
+
+ if (isNestedServiceTemplateWasHandled(globalSubstitutionServiceTemplate, nestedServiceTemplate,
+ context,
newNestedNodeTypeId)) {
- context.updateHandledComputeType(
- ToscaUtil.getServiceTemplateFileName(mainServiceTemplate),
- ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate),
- newNestedNodeTypeId.get());
+ context
+ .updateHandledComputeType(ToscaUtil.getServiceTemplateFileName(mainServiceTemplate),
+ newNestedNodeTypeId.get(),
+ ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate));
return;
}
- ServiceTemplate globalSubstitutionServiceTemplate =
- context.getGlobalSubstitutionServiceTemplate();
newNestedNodeTypeId.ifPresent(
newNestedNodeTypeIdVal -> handleNestedNodeType(nodeTypeId, newNestedNodeTypeIdVal,
@@ -481,16 +495,12 @@ public class UnifiedCompositionService {
ServiceTemplate mainServiceTemplate,
ServiceTemplate globalSubstitutionServiceTemplate,
TranslationContext context) {
- context.addNestedFileToUsedNestedComputeType(
- ToscaUtil.getServiceTemplateFileName(mainServiceTemplate),
- ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate),
- newNestedNodeTypeId);
String indexedNewNestedNodeTypeId =
handleNestedNodeTypeInGlobalSubstitutionTemplate(nodeTypeId, newNestedNodeTypeId,
- mainServiceTemplate, globalSubstitutionServiceTemplate, context);
+ globalSubstitutionServiceTemplate, context);
handleSubstitutionMappingInNestedServiceTemplate(indexedNewNestedNodeTypeId,
- nestedServiceTemplate);
+ nestedServiceTemplate, context);
context
.updateHandledComputeType(
@@ -502,82 +512,101 @@ public class UnifiedCompositionService {
private String handleNestedNodeTypeInGlobalSubstitutionTemplate(String nodeTypeId,
String newNestedNodeTypeId,
- ServiceTemplate mainServiceTemplate,
ServiceTemplate globalSubstitutionServiceTemplate,
TranslationContext context) {
String indexedNodeType =
- getIndexedGlobalNodeTypeId(newNestedNodeTypeId, mainServiceTemplate, context);
+ getIndexedGlobalNodeTypeId(newNestedNodeTypeId, context);
+ context.updateUsedTimesForNestedComputeNodeType(
+ ToscaUtil.getServiceTemplateFileName(globalSubstitutionServiceTemplate),
+ newNestedNodeTypeId);
handleNestedNodeTypesInGlobalSubstituteServiceTemplate(nodeTypeId, indexedNodeType,
globalSubstitutionServiceTemplate, context);
return indexedNodeType;
}
private String getIndexedGlobalNodeTypeId(String newNestedNodeTypeId,
- ServiceTemplate mainServiceTemplate,
TranslationContext context) {
int globalNodeTypeIndex =
- context.getGlobalNodeTypeIndex(ToscaUtil.getServiceTemplateFileName(mainServiceTemplate),
+ context.getGlobalNodeTypeIndex(
+ ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME),
newNestedNodeTypeId);
- return globalNodeTypeIndex > 0 ?
- newNestedNodeTypeId + "_" + String.valueOf(globalNodeTypeIndex) : newNestedNodeTypeId;
+ return globalNodeTypeIndex > 0 ? newNestedNodeTypeId + "_"
+ + String.valueOf(globalNodeTypeIndex) : newNestedNodeTypeId;
}
private void updateUnifiedNestedTemplates(ServiceTemplate mainServiceTemplate,
ServiceTemplate nestedServiceTemplate,
- List<UnifiedCompositionData> unifiedCompositionDataList,
+ UnifiedCompositionData unifiedCompositionData,
TranslationContext context) {
- for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
- NestedTemplateConsolidationData nestedTemplateConsolidationData =
- unifiedCompositionData.getNestedTemplateConsolidationData();
- if (Objects.isNull(nestedTemplateConsolidationData)) {
- continue;
- }
- handleNestedNodeTemplateInMainServiceTemplate(
- nestedTemplateConsolidationData.getNodeTemplateId(), mainServiceTemplate,
- nestedServiceTemplate, context);
+ NestedTemplateConsolidationData nestedTemplateConsolidationData =
+ unifiedCompositionData.getNestedTemplateConsolidationData();
+ if (Objects.isNull(nestedTemplateConsolidationData)) {
+ return;
}
+ handleNestedNodeTemplateInMainServiceTemplate(
+ nestedTemplateConsolidationData.getNodeTemplateId(), mainServiceTemplate,
+ nestedServiceTemplate, context);
+
}
/**
* Update connectivity for unified nested patterns.
*
- * @param serviceTemplate the service template
- * @param nestedServiceTemplate the nested service template
- * @param unifiedCompositionDataList the unified composition data list
- * @param context the context
+ * @param serviceTemplate the service template
+ * @param nestedServiceTemplate the nested service template
+ * @param unifiedCompositionData the unified composition data
+ * @param context the context
*/
public void updateUnifiedNestedConnectivity(ServiceTemplate serviceTemplate,
ServiceTemplate nestedServiceTemplate,
- List<UnifiedCompositionData>
- unifiedCompositionDataList,
+ UnifiedCompositionData unifiedCompositionData,
TranslationContext context) {
- updNestedCompositionNodesConnectedInConnectivity(serviceTemplate, unifiedCompositionDataList,
+ updNestedCompositionNodesConnectedInConnectivity(serviceTemplate, unifiedCompositionData,
context);
- updNestedCompositionNodesGetAttrInConnectivity(serviceTemplate, unifiedCompositionDataList,
+ updNestedCompositionNodesGetAttrInConnectivity(serviceTemplate, unifiedCompositionData,
context);
updNestedCompositionOutputParamGetAttrInConnectivity(serviceTemplate,
- unifiedCompositionDataList, context);
+ unifiedCompositionData, context);
}
/**
* Clean unified nested entities. Update the heat stack group with the new node template ids.
*
- * @param serviceTemplate the service template
- * @param unifiedCompositionDataList the unified composition data list
- * @param context the context
+ * @param serviceTemplate the service template
+ * @param unifiedCompositionData the unified composition data
+ * @param context the context
*/
public void cleanUnifiedNestedEntities(ServiceTemplate serviceTemplate,
- List<UnifiedCompositionData> unifiedCompositionDataList,
+ UnifiedCompositionData unifiedCompositionData,
TranslationContext context) {
- EntityConsolidationData entityConsolidationData = unifiedCompositionDataList.get(0)
- .getNestedTemplateConsolidationData();
+ EntityConsolidationData entityConsolidationData =
+ unifiedCompositionData.getNestedTemplateConsolidationData();
updateHeatStackGroupNestedComposition(serviceTemplate, entityConsolidationData, context);
}
+ public void handleComplexVfcType(ServiceTemplate serviceTemplate, TranslationContext context) {
+ SubstitutionMapping substitution_mappings =
+ serviceTemplate.getTopology_template().getSubstitution_mappings();
+
+ if (Objects.isNull(substitution_mappings)) {
+ return;
+ }
+
+ ServiceTemplate globalSubstitutionServiceTemplate =
+ context.getGlobalSubstitutionServiceTemplate();
+
+ String substitutionNT = substitution_mappings.getNode_type();
+ if (globalSubstitutionServiceTemplate.getNode_types().containsKey(substitutionNT)) {
+ //todo - remove comment after integration with AT&T
+// globalSubstitutionServiceTemplate.getNode_types().get(substitutionNT).setDerived_from
+// (ToscaNodeType.COMPLEX_VFC_NODE_TYPE);
+ }
+ }
+
protected void updNodesConnectedOutConnectivity(ServiceTemplate serviceTemplate,
List<UnifiedCompositionData>
unifiedCompositionDataList,
@@ -677,22 +706,21 @@ public class UnifiedCompositionService {
}
}
- protected void updNestedCompositionNodesConnectedInConnectivity(ServiceTemplate serviceTemplate,
- List<UnifiedCompositionData>
- unifiedCompositionDataList,
- TranslationContext context) {
- for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
- NestedTemplateConsolidationData nestedTemplateConsolidationData = unifiedCompositionData
- .getNestedTemplateConsolidationData();
- //Update requirements in the node template which pointing to the nested nodes
- String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
- Optional<String> newNestedNodeTemplateId = context.getUnifiedNestedNodeTemplateId(
- serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId());
- newNestedNodeTemplateId.ifPresent(
- newNestedNodeTemplateIdVal -> updNodesConnectedInConnectivity(serviceTemplate,
- nestedTemplateConsolidationData,
- newNestedNodeTemplateIdVal, context, true));
- }
+ protected void updNestedCompositionNodesConnectedInConnectivity(
+ ServiceTemplate serviceTemplate,
+ UnifiedCompositionData unifiedCompositionData,
+ TranslationContext context) {
+ NestedTemplateConsolidationData nestedTemplateConsolidationData = unifiedCompositionData
+ .getNestedTemplateConsolidationData();
+ //Update requirements in the node template which pointing to the nested nodes
+ String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
+ Optional<String> newNestedNodeTemplateId = context.getUnifiedNestedNodeTemplateId(
+ serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId());
+ newNestedNodeTemplateId.ifPresent(
+ newNestedNodeTemplateIdVal -> updNodesConnectedInConnectivity(serviceTemplate,
+ nestedTemplateConsolidationData,
+ newNestedNodeTemplateIdVal, context, true));
+
}
protected void updVolumeConnectivity(ServiceTemplate serviceTemplate,
@@ -835,44 +863,40 @@ public class UnifiedCompositionService {
}
protected void updNestedCompositionOutputParamGetAttrInConnectivity(
- ServiceTemplate serviceTemplate, List<UnifiedCompositionData> unifiedComposotionDataList,
+ ServiceTemplate serviceTemplate, UnifiedCompositionData unifiedCompositionData,
TranslationContext context) {
- for (UnifiedCompositionData unifiedCompositionData : unifiedComposotionDataList) {
- NestedTemplateConsolidationData nestedTemplateConsolidationData =
- unifiedCompositionData.getNestedTemplateConsolidationData();
- if (Objects.isNull(nestedTemplateConsolidationData)) {
- continue;
- }
- String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
- Optional<String> newNestedNodeTemplateId = context.getUnifiedNestedNodeTemplateId(
- serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId());
-
- newNestedNodeTemplateId.ifPresent(
- newNestedNodeTemplateIdVal -> updOutputParamGetAttrInConnectivity(serviceTemplate,
- nestedTemplateConsolidationData, nestedTemplateConsolidationData.getNodeTemplateId(),
- newNestedNodeTemplateIdVal, context, true));
+ NestedTemplateConsolidationData nestedTemplateConsolidationData =
+ unifiedCompositionData.getNestedTemplateConsolidationData();
+ if (Objects.isNull(nestedTemplateConsolidationData)) {
+ return;
}
+ String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
+ Optional<String> newNestedNodeTemplateId = context.getUnifiedNestedNodeTemplateId(
+ serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId());
+
+ newNestedNodeTemplateId.ifPresent(
+ newNestedNodeTemplateIdVal -> updOutputParamGetAttrInConnectivity(serviceTemplate,
+ nestedTemplateConsolidationData, nestedTemplateConsolidationData.getNodeTemplateId(),
+ newNestedNodeTemplateIdVal, context, true));
}
protected void updNestedCompositionNodesGetAttrInConnectivity(
ServiceTemplate serviceTemplate,
- List<UnifiedCompositionData> unifiedCompositionDataList,
+ UnifiedCompositionData unifiedCompositionData,
TranslationContext context) {
- for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
- NestedTemplateConsolidationData nestedTemplateConsolidationData =
- unifiedCompositionData.getNestedTemplateConsolidationData();
- if (Objects.isNull(nestedTemplateConsolidationData)) {
- continue;
- }
- String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
- Optional<String> newNestedNodeTemplateId = context.getUnifiedNestedNodeTemplateId(
- serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId());
-
- newNestedNodeTemplateId.ifPresent(
- newNestedNodeTemplateIdVal -> updNodeGetAttrInConnectivity(serviceTemplate,
- nestedTemplateConsolidationData, nestedTemplateConsolidationData.getNodeTemplateId(),
- newNestedNodeTemplateIdVal, context, null, true));
+ NestedTemplateConsolidationData nestedTemplateConsolidationData =
+ unifiedCompositionData.getNestedTemplateConsolidationData();
+ if (Objects.isNull(nestedTemplateConsolidationData)) {
+ return;
}
+ String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
+ Optional<String> newNestedNodeTemplateId = context.getUnifiedNestedNodeTemplateId(
+ serviceTemplateFileName, nestedTemplateConsolidationData.getNodeTemplateId());
+
+ newNestedNodeTemplateId.ifPresent(
+ newNestedNodeTemplateIdVal -> updNodeGetAttrInConnectivity(serviceTemplate,
+ nestedTemplateConsolidationData, nestedTemplateConsolidationData.getNodeTemplateId(),
+ newNestedNodeTemplateIdVal, context, null, true));
}
private void updateRequirementForNodesConnectedIn(
@@ -1100,11 +1124,11 @@ public class UnifiedCompositionService {
private String getTemplateName(ServiceTemplate serviceTemplate,
UnifiedCompositionData unifiedCompositionData,
+ String nodeTypeId,
Integer index) {
ComputeTemplateConsolidationData computeTemplateConsolidationData =
unifiedCompositionData.getComputeTemplateConsolidationData();
- String computeType =
- getComputeTypeSuffix(serviceTemplate, computeTemplateConsolidationData.getNodeTemplateId());
+ String computeType = getComputeTypeSuffix(nodeTypeId);
String templateName = "Nested_" + computeType;
if (Objects.nonNull(index)) {
templateName = templateName + "_" + index.toString();
@@ -1205,19 +1229,20 @@ public class UnifiedCompositionService {
private void createOutputParameters(ServiceTemplate serviceTemplate,
ServiceTemplate substitutionServiceTemplate,
List<UnifiedCompositionData> unifiedCompositionDataList,
- String computeNodeType) {
+ String computeNodeType, TranslationContext context) {
createOutputParametersForCompute(serviceTemplate, substitutionServiceTemplate,
- unifiedCompositionDataList);
+ unifiedCompositionDataList, context);
createOutputParameterForPorts(serviceTemplate, substitutionServiceTemplate,
- unifiedCompositionDataList, computeNodeType);
+ unifiedCompositionDataList, computeNodeType, context);
}
private void createOutputParameterForPorts(
ServiceTemplate serviceTemplate,
ServiceTemplate substitutionServiceTemplate,
List<UnifiedCompositionData> unifiedCompositionDataList,
- String connectedComputeNodeType) {
+ String connectedComputeNodeType,
+ TranslationContext context) {
for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
getPortTemplateConsolidationDataList(unifiedCompositionData);
@@ -1232,7 +1257,7 @@ public class UnifiedCompositionService {
connectedComputeNodeType,
unifiedCompositionData.getComputeTemplateConsolidationData());
addOutputParameters(portTemplateConsolidationData, newPortNodeTemplateId,
- substitutionServiceTemplate, unifiedCompositionDataList);
+ serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, context);
}
}
}
@@ -1260,7 +1285,8 @@ public class UnifiedCompositionService {
ServiceTemplate serviceTemplate,
ServiceTemplate substitutionServiceTemplate,
List<UnifiedCompositionData>
- unifiedCompositionDataList) {
+ unifiedCompositionDataList,
+ TranslationContext context) {
List<EntityConsolidationData> computeConsolidationDataList =
getComputeConsolidationDataList(unifiedCompositionDataList);
@@ -1269,38 +1295,44 @@ public class UnifiedCompositionService {
getNewComputeNodeTemplateId(serviceTemplate,
computeTemplateConsolidationData.getNodeTemplateId());
addOutputParameters(computeTemplateConsolidationData, newComputeNodeTemplateId,
- substitutionServiceTemplate, unifiedCompositionDataList);
+ serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, context);
}
}
private void addOutputParameters(EntityConsolidationData entityConsolidationData,
String newNodeTemplateId,
+ ServiceTemplate serviceTemplate,
ServiceTemplate substitutionServiceTemplate,
- List<UnifiedCompositionData> unifiedCompositionDataList) {
- handleNodesGetAttrIn(entityConsolidationData, newNodeTemplateId, substitutionServiceTemplate,
- unifiedCompositionDataList);
+ List<UnifiedCompositionData> unifiedCompositionDataList,
+ TranslationContext context) {
+ handleNodesGetAttrIn(entityConsolidationData, newNodeTemplateId, serviceTemplate,
+ substitutionServiceTemplate, unifiedCompositionDataList, context);
- handleOutputParamGetAttrIn(entityConsolidationData, newNodeTemplateId,
- substitutionServiceTemplate);
+ handleOutputParamGetAttrIn(entityConsolidationData, newNodeTemplateId, serviceTemplate,
+ substitutionServiceTemplate, context);
}
private void handleOutputParamGetAttrIn(EntityConsolidationData entityConsolidationData,
String newNodeTemplateId,
- ServiceTemplate substitutionServiceTemplate) {
+ ServiceTemplate serviceTemplate,
+ ServiceTemplate substitutionServiceTemplate,
+ TranslationContext context) {
List<GetAttrFuncData> outputParametersGetAttrIn =
entityConsolidationData.getOutputParametersGetAttrIn();
if (!CollectionUtils.isEmpty(outputParametersGetAttrIn)) {
for (GetAttrFuncData getAttrFuncData : outputParametersGetAttrIn) {
createAndAddOutputParameter(entityConsolidationData, newNodeTemplateId,
- substitutionServiceTemplate, getAttrFuncData);
+ substitutionServiceTemplate, getAttrFuncData, context);
}
}
}
private void handleNodesGetAttrIn(EntityConsolidationData entityConsolidationData,
String newNodeTemplateId,
+ ServiceTemplate serviceTemplate,
ServiceTemplate substitutionServiceTemplate,
- List<UnifiedCompositionData> unifiedCompositionDataList) {
+ List<UnifiedCompositionData> unifiedCompositionDataList,
+ TranslationContext context) {
Map<String, List<GetAttrFuncData>> getAttrIn = entityConsolidationData.getNodesGetAttrIn();
if (!MapUtils.isEmpty(getAttrIn)) {
@@ -1311,7 +1343,7 @@ public class UnifiedCompositionService {
List<GetAttrFuncData> getAttrFuncDataList = getAttrIn.get(sourceNodeTemplateId);
for (GetAttrFuncData getAttrFuncData : getAttrFuncDataList) {
createAndAddOutputParameter(entityConsolidationData, newNodeTemplateId,
- substitutionServiceTemplate, getAttrFuncData);
+ substitutionServiceTemplate, getAttrFuncData, context);
}
}
}
@@ -1321,7 +1353,8 @@ public class UnifiedCompositionService {
private void createAndAddOutputParameter(EntityConsolidationData entityConsolidationData,
String newNodeTemplateId,
ServiceTemplate substitutionServiceTemplate,
- GetAttrFuncData getAttrFuncData) {
+ GetAttrFuncData getAttrFuncData,
+ TranslationContext context) {
Map<String, List<Object>> parameterValue = new HashMap<>();
List<Object> valueList = new ArrayList<>();
valueList.add(newNodeTemplateId);
@@ -1329,16 +1362,93 @@ public class UnifiedCompositionService {
parameterValue.put(ToscaFunctions.GET_ATTRIBUTE.getDisplayName(), valueList);
ParameterDefinition outputParameter = new ParameterDefinition();
outputParameter.setValue(parameterValue);
- //todo - the type need to be change based on the attribute type in the accordingly node type
- // of this node template - XXX, instead of list of string, list of XXXX,
- outputParameter.setType(PropertyType.LIST.getDisplayName());
- outputParameter.setEntry_schema(
- DataModelUtil.createEntrySchema(PropertyType.STRING.getDisplayName(), null, null));
+ setOutputParameterType(substitutionServiceTemplate, newNodeTemplateId, getAttrFuncData
+ .getAttributeName(), outputParameter, context);
DataModelUtil.addOutputParameterToTopologyTemplate(substitutionServiceTemplate,
getNewSubstitutionOutputParameterId(newNodeTemplateId, getAttrFuncData.getAttributeName()),
outputParameter);
}
+ private void setOutputParameterType(ServiceTemplate substitutionServiceTemplate,
+ String newNodeTemplateId,
+ String outputParameterName,
+ ParameterDefinition outputParameter,
+ TranslationContext context) {
+ NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(substitutionServiceTemplate,
+ newNodeTemplateId);
+ //Get the type and entry schema of the output parameter from the node type flat hierarchy
+ String outputParameterType = null;
+ EntrySchema outputParameterEntrySchema = null;
+ NodeType nodeTypeWithFlatHierarchy =
+ HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(),
+ substitutionServiceTemplate, context);
+ //Check if the parameter is present in the attributes
+ AttributeDefinition outputParameterDefinitionFromAttributes =
+ getOutputParameterDefinitionFromAttributes(nodeTypeWithFlatHierarchy, outputParameterName);
+ if (Objects.nonNull(outputParameterDefinitionFromAttributes)) {
+ outputParameterType = outputParameterDefinitionFromAttributes.getType();
+ outputParameterEntrySchema = outputParameterDefinitionFromAttributes.getEntry_schema();
+ } else {
+ //If the below fails due to null pointer then we need to check if the heatToToscaMapping
+ // properties and global types are in sync. Ideally the parameter should be found in either
+ // properties or attributes collected from global types
+ PropertyDefinition outputParameterDefinitionFromProperties =
+ nodeTypeWithFlatHierarchy.getProperties().get(outputParameterName);
+ outputParameterType = outputParameterDefinitionFromProperties.getType();
+ outputParameterEntrySchema = outputParameterDefinitionFromProperties.getEntry_schema();
+ }
+ //Set the type and entry schema for the output param obtained from the node type hierarchy
+ outputParameter.setType(outputParameterType);
+ outputParameter.setEntry_schema(outputParameterEntrySchema);
+ }
+
+ private String getNewInputParameterType(NodeTemplate nodeTemplate,
+ ServiceTemplate serviceTemplate,
+ String inputParameterName,
+ TranslationContext context) {
+ NodeType nodeTypeWithFlatHierarchy =
+ HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(),
+ serviceTemplate, context);
+ String parameterType = nodeTypeWithFlatHierarchy.getProperties()
+ .get(inputParameterName).getType();
+ return getUnifiedInputParameterType(parameterType);
+ }
+
+ private AttributeDefinition getOutputParameterDefinitionFromAttributes(NodeType
+ nodeTypeWithFlatHierarchy,
+ String outputParameterName) {
+ AttributeDefinition outputParameterDefinition = null;
+ if ((Objects.nonNull(nodeTypeWithFlatHierarchy.getAttributes()))
+ && (nodeTypeWithFlatHierarchy.getAttributes().containsKey(outputParameterName))) {
+ outputParameterDefinition =
+ nodeTypeWithFlatHierarchy.getAttributes().get(outputParameterName);
+ }
+ return outputParameterDefinition;
+ }
+
+ private String getUnifiedInputParameterType(String parameterType) {
+ String unifiedInputParameterType = null;
+ if (Objects.nonNull(parameterType)) {
+ if (parameterType.equalsIgnoreCase(PropertyType.STRING.getDisplayName())
+ || parameterType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName())
+ || parameterType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName())
+ || parameterType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName())
+ || parameterType.equalsIgnoreCase(PropertyType.TIMESTAMP.getDisplayName())
+ || parameterType.equalsIgnoreCase(PropertyType.NULL.getDisplayName())
+ || parameterType.equalsIgnoreCase(PropertyType.SCALAR_UNIT_SIZE.getDisplayName())
+ || parameterType.equalsIgnoreCase(PropertyType.SCALAR_UNIT_FREQUENCY.getDisplayName())) {
+ unifiedInputParameterType = parameterType.toLowerCase();
+ } else if (parameterType.equalsIgnoreCase(PropertyType.MAP.getDisplayName())
+ || parameterType.equalsIgnoreCase(PropertyType.LIST.getDisplayName())
+ || parameterType.equalsIgnoreCase(PropertyTypeExt.JSON.getDisplayName())) {
+ unifiedInputParameterType = PropertyTypeExt.JSON.getDisplayName();
+ } else {
+ unifiedInputParameterType = parameterType;
+ }
+ }
+ return unifiedInputParameterType;
+ }
+
private String getNewSubstitutionOutputParameterId(String newNodeTemplateId,
String attributeName) {
return newNodeTemplateId + "_" + attributeName;
@@ -1370,18 +1480,6 @@ public class UnifiedCompositionService {
}
}
- private void addSubstitutionFilteringProperty(String templateName, NodeTemplate nodeTemplate,
- int count) {
- Map<String, Object> serviceTemplateFilterPropertyValue = new HashMap<>();
- Map<String, Object> properties = nodeTemplate.getProperties();
- serviceTemplateFilterPropertyValue.put(ToscaConstants
- .SUBSTITUTE_SERVICE_TEMPLATE_PROPERTY_NAME, templateName);
- serviceTemplateFilterPropertyValue.put(ToscaConstants.COUNT_PROPERTY_NAME, count);
- properties.put(ToscaConstants.SERVICE_TEMPLATE_FILTER_PROPERTY_NAME,
- serviceTemplateFilterPropertyValue);
- nodeTemplate.setProperties(properties);
- }
-
private void addIndexValueProperty(NodeTemplate nodeTemplate) {
List<String> indexValueGetPropertyValue = new ArrayList<>();
indexValueGetPropertyValue.add(ToscaConstants.MODELABLE_ENTITY_NAME_SELF);
@@ -1399,28 +1497,45 @@ public class UnifiedCompositionService {
private String getSubstituteNodeTemplateId(ServiceTemplate serviceTemplate,
UnifiedCompositionData unifiedCompositionData,
+ String nodeTypeId,
Integer index) {
String computeNodeTemplateId =
unifiedCompositionData.getComputeTemplateConsolidationData().getNodeTemplateId();
NodeTemplate computeNodeTemplate =
DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId);
String nodeTemplateId = ABSTRACT_NODE_TEMPLATE_ID_PREFIX + DataModelUtil
- .getNamespaceSuffix(computeNodeTemplate.getType());
+ .getNamespaceSuffix(nodeTypeId);
if (Objects.nonNull(index)) {
nodeTemplateId = nodeTemplateId + "_" + index.toString();
}
return nodeTemplateId;
}
- private String getSubstitutionNodeTypeId(ServiceTemplate serviceTemplate,
- UnifiedCompositionData unifiedCompositionData,
- Integer index) {
+ /**
+ * Gets substitution node type id.
+ *
+ * @param serviceTemplate the service template
+ * @param unifiedCompositionData the unified composition data
+ * @param index the index
+ * @return the substitution node type id
+ */
+ public String getSubstitutionNodeTypeId(ServiceTemplate serviceTemplate,
+ UnifiedCompositionData unifiedCompositionData,
+ Integer index,
+ TranslationContext context) {
String computeNodeTemplateId =
unifiedCompositionData.getComputeTemplateConsolidationData().getNodeTemplateId();
NodeTemplate computeNodeTemplate =
DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId);
+ String computeType = computeNodeTemplate.getType();
+ String globalSTName = ToscaUtil.getServiceTemplateFileName(Constants
+ .GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME);
+
String nodeTypeId = ToscaNodeType.ABSTRACT_NODE_TYPE_PREFIX
- + DataModelUtil.getNamespaceSuffix(computeNodeTemplate.getType());
+ + DataModelUtil.getNamespaceSuffix(getIndexedGlobalNodeTypeId(computeType, context));
+
+ context.updateUsedTimesForNestedComputeNodeType(globalSTName, computeType);
+
if (Objects.nonNull(index)) {
nodeTypeId = nodeTypeId + "_" + index.toString();
}
@@ -1437,9 +1552,10 @@ public class UnifiedCompositionService {
ServiceTemplate substitutionServiceTemplate,
TranslationContext context,
UnifiedCompositionData unifiedCompositionData,
+ String substitutionNodeTypeId,
Integer index) {
- String substitutionNodeTypeId =
- getSubstitutionNodeTypeId(serviceTemplate, unifiedCompositionData, index);
+// String substitutionNodeTypeId =
+// getSubstitutionNodeTypeId(serviceTemplate, unifiedCompositionData, index, context);
NodeType substitutionNodeType = new ToscaAnalyzerServiceImpl()
.createInitSubstitutionNodeType(substitutionServiceTemplate,
ToscaNodeType.VFC_ABSTRACT_SUBSTITUTE);
@@ -1539,16 +1655,20 @@ public class UnifiedCompositionService {
computeTemplateConsolidationData);
//Update requirements for relationships between the consolidation entities
handleConsolidationEntitiesRequirementConnectivity(newPortNodeTemplateId, newPortNodeTemplate,
- substitutionServiceTemplate, context);
+ serviceTemplate, context);
DataModelUtil.addNodeTemplate(substitutionServiceTemplate, newPortNodeTemplateId,
newPortNodeTemplate);
//Add the node template mapping in the context for handling requirement updation
- context.addSubstitutionServiceTemplateUnifiedSubstitutionData(ToscaUtil
- .getServiceTemplateFileName(substitutionServiceTemplate),
- portTemplateConsolidationData.getNodeTemplateId(), newPortNodeTemplateId);
- }
+ for (EntityConsolidationData data : portTemplateConsolidationDataList) {
+ String newPortTemplateId = getNewPortNodeTemplateId(data.getNodeTemplateId(),
+ connectedComputeNodeType, computeTemplateConsolidationData);
+ context.addSubstitutionServiceTemplateUnifiedSubstitutionData(ToscaUtil
+ .getServiceTemplateFileName(serviceTemplate), data.getNodeTemplateId(),
+ newPortTemplateId);
+ }
+ }
private NodeTemplate getNodeTemplate(String nodeTemplateId, ServiceTemplate serviceTemplate,
TranslationContext context) {
@@ -1616,15 +1736,18 @@ public class UnifiedCompositionService {
//Update requirements for relationships between the consolidation entities
handleConsolidationEntitiesRequirementConnectivity(newComputeNodeTemplateId,
newComputeNodeTemplate,
- substitutionServiceTemplate, context);
+ serviceTemplate, context);
DataModelUtil
.addNodeTemplate(substitutionServiceTemplate,
newComputeNodeTemplateId, newComputeNodeTemplate);
//Add the node template mapping in the context for handling requirement updation
- context.addSubstitutionServiceTemplateUnifiedSubstitutionData(ToscaUtil
- .getServiceTemplateFileName(substitutionServiceTemplate),
- computeTemplateConsolidationData.getNodeTemplateId(), newComputeNodeTemplateId);
-
+ for (EntityConsolidationData data : computeConsoliadtionDataList) {
+ String newComputeTemplateId = getNewComputeNodeTemplateId(serviceTemplate,
+ computeTemplateConsolidationData.getNodeTemplateId());
+ context.addSubstitutionServiceTemplateUnifiedSubstitutionData(ToscaUtil
+ .getServiceTemplateFileName(serviceTemplate), data.getNodeTemplateId(),
+ newComputeTemplateId);
+ }
}
private List<EntityConsolidationData> getComputeConsolidationDataList(
@@ -1646,7 +1769,8 @@ public class UnifiedCompositionService {
ComputeTemplateConsolidationData computeTemplateConsolidationData,
List<UnifiedCompositionData> unifiedCompositionDataList,
TranslationContext context) {
-
+ List<String> propertiesWithIdenticalVal =
+ consolidationService.getPropertiesWithIdenticalVal(unifiedCompositionEntity, context);
nodeTemplate.setProperties(new HashedMap());
handleNodeTemplateProperties(serviceTemplate, nodeTemplate, substitutionServiceTemplate,
unifiedCompositionEntity, entityConsolidationDataList, computeTemplateConsolidationData,
@@ -1739,10 +1863,10 @@ public class UnifiedCompositionService {
Map<String, PropertyDefinition> enrichNodeTypeProperties = enrichNodeType.get().getProperties();
if (Objects.nonNull(enrichNodeTypeProperties)) {
for (String enrichPropertyName : enrichProperties) {
- handleEntityConsolidationDataNodeTypeProperties(
- enrichPropertyName, substitutionServiceTemplate,
- enrichNodeType.get(), nodeTemplate, compositionEntity, computeTemplateConsolidationData,
- entityConsolidationDataList, nodeTemplateProperties, context);
+ handleEntityConsolidationDataNodeTypeProperties(
+ enrichPropertyName, substitutionServiceTemplate,
+ enrichNodeType.get(), nodeTemplate, compositionEntity, computeTemplateConsolidationData,
+ entityConsolidationDataList, nodeTemplateProperties, context);
}
}
}
@@ -1768,7 +1892,8 @@ public class UnifiedCompositionService {
Map<String, String> propertyValMap = new HashMap<>();
context
- .addNewPropertyIdToNodeTemplate(ToscaUtil.getServiceTemplateFileName(substitutionServiceTemplate),
+ .addNewPropertyIdToNodeTemplate(
+ ToscaUtil.getServiceTemplateFileName(substitutionServiceTemplate),
inputParamId, nodeTemplateProperties.get(enrichPropertyName));
if (nodeTemplateProperties.containsKey(enrichPropertyName)) {
@@ -1816,14 +1941,13 @@ public class UnifiedCompositionService {
EntrySchema entrySchema, Optional<String> parameterId,
UnifiedCompositionEntity unifiedCompositionEntity,
TranslationContext context) {
- if(parameterId.isPresent() &&
- isParameterBelongsToEnrichedPortProperties(parameterId.get(), context)){
+ if (parameterId.isPresent() &&
+ isParameterBelongsToEnrichedPortProperties(parameterId.get(), context)) {
addInputParameter(parameterId.get(),
propertyType,
- propertyType.equals(PropertyType.LIST.getDisplayName()) ? entrySchema : null ,
+ propertyType.equals(PropertyType.LIST.getDisplayName()) ? entrySchema : null,
substitutionServiceTemplate);
- }
- else if (isPropertySimpleType(propertyType)) {
+ } else if (isPropertySimpleType(propertyType)) {
parameterId
.ifPresent(parameterIdValue -> addInputParameter(parameterIdValue,
PropertyType.LIST.getDisplayName(),
@@ -1831,7 +1955,7 @@ public class UnifiedCompositionService {
.createEntrySchema(propertyType.toLowerCase(), null, null),
substitutionServiceTemplate));
- } else if(propertyType.equals(PropertyTypeExt.JSON.getDisplayName()) ||
+ } else if (propertyType.equals(PropertyTypeExt.JSON.getDisplayName()) ||
(Objects.nonNull(entrySchema) && isPropertySimpleType(entrySchema.getType()))) {
parameterId
.ifPresent(parameterIdValue -> addInputParameter(parameterIdValue,
@@ -1851,11 +1975,11 @@ public class UnifiedCompositionService {
}
private boolean isParameterBelongsToEnrichedPortProperties(String parameterId,
- TranslationContext context){
+ TranslationContext context) {
List enrichPortResourceProperties = context.getEnrichPortResourceProperties();
- for(int i = 0; i < enrichPortResourceProperties.size(); i++){
- if(parameterId.contains((CharSequence) enrichPortResourceProperties.get(i))){
+ for (int i = 0; i < enrichPortResourceProperties.size(); i++) {
+ if (parameterId.contains((CharSequence) enrichPortResourceProperties.get(i))) {
return true;
}
}
@@ -1866,9 +1990,9 @@ public class UnifiedCompositionService {
private boolean isPropertySimpleType(String propertyType) {
return !Objects.isNull(propertyType) &&
(propertyType.equalsIgnoreCase(PropertyType.STRING.getDisplayName())
- || propertyType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName())
- || propertyType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName())
- || propertyType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName()));
+ || propertyType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName())
+ || propertyType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName())
+ || propertyType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName()));
}
private String analyzeParameterType(String propertyType) {
@@ -1883,8 +2007,7 @@ public class UnifiedCompositionService {
private void handleConsolidationEntitiesRequirementConnectivity(String nodeTemplateId,
NodeTemplate nodeTemplate,
- ServiceTemplate
- substitutionServiceTemplate,
+ ServiceTemplate serviceTemplate,
TranslationContext context) {
Map<String, RequirementAssignment> updatedNodeTemplateRequirements = new HashMap<>();
List<Map<String, RequirementAssignment>> nodeTemplateRequirements = DataModelUtil
@@ -1898,7 +2021,7 @@ public class UnifiedCompositionService {
RequirementAssignment requirementAssignment = entry.getValue();
String requirementNode = requirementAssignment.getNode();
String unifiedNodeTemplateId =
- context.getUnifiedSubstitutionNodeTemplateId(substitutionServiceTemplate,
+ context.getUnifiedSubstitutionNodeTemplateId(serviceTemplate,
requirementNode);
if (unifiedNodeTemplateId != null) {
//Update the node id in the requirement
@@ -2021,10 +2144,12 @@ public class UnifiedCompositionService {
List<UnifiedCompositionData> unifiedCompositionDataList,
TranslationContext context) {
- if (handleGetAttrFromConsolidationNodes(serviceTemplate, nodeTemplate, propertyEntry,
- unifiedCompositionDataList, context)) {
+ if (handleGetAttrFromConsolidationNodes(serviceTemplate, nodeTemplateId, nodeTemplate,
+ propertyEntry, unifiedCompositionDataList, context)) {
return Optional.empty();
}
+
+
String inputParamId =
getParameterId(nodeTemplateId, nodeTemplate, propertyEntry.getKey(), compositionEntity,
computeTemplateConsolidationData);
@@ -2047,7 +2172,7 @@ public class UnifiedCompositionService {
private boolean handleGetAttrFromConsolidationNodes(
ServiceTemplate serviceTemplate,
- NodeTemplate nodeTemplate,
+ String nodeTemplateId, NodeTemplate nodeTemplate,
Map.Entry<String, Object> propertyEntry,
List<UnifiedCompositionData> unifiedCompositionDataList,
TranslationContext context) {
@@ -2055,12 +2180,19 @@ public class UnifiedCompositionService {
getAllConsolidationNodeTemplateIdAndType(unifiedCompositionDataList);
Set<String> consolidationNodeTemplateIds = consolidationNodeTemplateIdAndType.keySet();
+ Map<String, String> entityIdToType = ConsolidationService.getConsolidationEntityIdToType(
+ serviceTemplate, context.getConsolidationData());
boolean includeGetAttrFromConsolidationNodes = false;
boolean includeGetAttrFromOutsideNodes = false;
+ boolean isGetAttrFromConsolidationIsFromSameType = false;
List<List<Object>> getAttrFunctionList = extractGetAttrFunction(propertyEntry.getValue());
for (List<Object> getAttrFunc : getAttrFunctionList) {
- if (consolidationNodeTemplateIds.contains(getAttrFunc.get(0))) {
+ String getAttrNodeId = (String) getAttrFunc.get(0);
+ if (consolidationNodeTemplateIds.contains(getAttrNodeId)) {
includeGetAttrFromConsolidationNodes = true;
+ if (isGetAttrNodeTemplateFromSameType(nodeTemplateId, getAttrNodeId, entityIdToType)) {
+ isGetAttrFromConsolidationIsFromSameType = true;
+ }
} else {
includeGetAttrFromOutsideNodes = true;
}
@@ -2071,7 +2203,7 @@ public class UnifiedCompositionService {
ToscaFunctions.GET_INPUT))) {
//This case is currently not supported - this property will be ignored
return true;
- } else if (includeGetAttrFromConsolidationNodes) {
+ } else if (includeGetAttrFromConsolidationNodes && !isGetAttrFromConsolidationIsFromSameType) {
Object clonedPropertyValue = getClonedPropertyValue(propertyEntry);
List<List<Object>> clonedGetAttrFuncList = extractGetAttrFunction(clonedPropertyValue);
for (List<Object> getAttrFunc : clonedGetAttrFuncList) {
@@ -2087,6 +2219,32 @@ public class UnifiedCompositionService {
return false;
}
+ private boolean isGetAttrFromConsolidationNodesIsFromSameType(String sourceNodeTemplateId,
+ Set<String> nodeTemplateIdsFromConsolidation,
+ Map<String, String>
+ nodeTemplateIdToType) {
+ for (String idFromConsolidation : nodeTemplateIdsFromConsolidation) {
+ if (isGetAttrNodeTemplateFromSameType(sourceNodeTemplateId, idFromConsolidation,
+ nodeTemplateIdToType)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean isGetAttrNodeTemplateFromSameType(String sourceNodeTemplateId,
+ String targetNodeTemplateId,
+ Map<String, String> nodeTemplateIdToType) {
+
+ if (Objects.isNull(nodeTemplateIdToType.get(sourceNodeTemplateId))
+ || Objects.isNull(nodeTemplateIdToType.get(targetNodeTemplateId))) {
+ return false;
+ }
+
+ return nodeTemplateIdToType.get(sourceNodeTemplateId).equals(nodeTemplateIdToType
+ .get(targetNodeTemplateId));
+ }
+
private void updatePropertyGetAttrFunc(
ServiceTemplate serviceTemplate,
List<UnifiedCompositionData> unifiedCompositionDataList,
@@ -2153,11 +2311,6 @@ public class UnifiedCompositionService {
if (portIdList.contains(portNodeTemplateId)) {
return unifiedCompositionData.getComputeTemplateConsolidationData();
}
-// for (String portId : portIdList) {
-// if (portId.equals(portNodeTemplateId)) {
-// return unifiedCompositionData.getComputeTemplateConsolidationData();
-// }
-// }
}
}
return null;
@@ -2334,7 +2487,7 @@ public class UnifiedCompositionService {
//If the value object is Optional.empty it implies that the property name was not
// found in the input name
if (!(propertyValue instanceof Optional)) {
- if(!abstractPropertyValue.contains(propertyValue)) {
+ if (!abstractPropertyValue.contains(propertyValue)) {
abstractPropertyValue.add(propertyValue);
}
}
@@ -2360,16 +2513,16 @@ public class UnifiedCompositionService {
ParameterDefinition parameterDefinition,
List<Object> abstractPropertyValue,
Map<String, Object> abstractSubstituteProperties) {
- if(abstractPropertyValue.size() > 1) {
+ if (abstractPropertyValue.size() > 1) {
abstractSubstituteProperties.put(substitutionTemplateInputName, abstractPropertyValue);
} else {
Object propertyValue = abstractPropertyValue.get(0);
String entrySchemaType = parameterDefinition.getEntry_schema().getType();
- if(entrySchemaType.equalsIgnoreCase(PropertyType.STRING.getDisplayName())
+ if (entrySchemaType.equalsIgnoreCase(PropertyType.STRING.getDisplayName())
|| entrySchemaType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName())
|| entrySchemaType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName())
|| entrySchemaType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName())
- || entrySchemaType.equals(PropertyTypeExt.JSON.getDisplayName())){
+ || entrySchemaType.equals(PropertyTypeExt.JSON.getDisplayName())) {
abstractSubstituteProperties.put(substitutionTemplateInputName, abstractPropertyValue);
} else {
abstractSubstituteProperties.put(substitutionTemplateInputName, propertyValue);
@@ -2475,6 +2628,7 @@ public class UnifiedCompositionService {
TranslationContext context) {
removeNodeTemplateFromServiceTemplate(serviceTemplate, entity, context);
updateHeatStackGroup(serviceTemplate, entity, context);
+ updateSubstitutionMapping(serviceTemplate, context);
}
private void removeNodeTemplateFromServiceTemplate(ServiceTemplate serviceTemplate,
@@ -2544,6 +2698,64 @@ public class UnifiedCompositionService {
groupEntry.getValue().setMembers(members);
}
+ private void updateSubstitutionMapping(ServiceTemplate serviceTemplate,
+ TranslationContext context) {
+ SubstitutionMapping substitutionMappings =
+ DataModelUtil.getSubstitutionMappings(serviceTemplate);
+ if (Objects.nonNull(substitutionMappings)) {
+
+ if (Objects.nonNull(substitutionMappings.getRequirements())) {
+ updateSubstitutionMappingRequirements(substitutionMappings.getRequirements(),
+ serviceTemplate, context);
+ }
+
+ if (Objects.nonNull(substitutionMappings.getCapabilities())) {
+ updateSubstitutionMappingCapabilities(substitutionMappings.getCapabilities(),
+ serviceTemplate, context);
+ }
+ }
+ }
+
+ private void updateSubstitutionMappingRequirements(Map<String, List<String>>
+ substitutionMappingRequirements,
+ ServiceTemplate serviceTemplate,
+ TranslationContext context) {
+ for (Map.Entry<String, List<String>> entry : substitutionMappingRequirements.entrySet()) {
+ List<String> requirement = entry.getValue();
+ String oldNodeTemplateId = requirement.get(0);
+ String newAbstractNodeTemplateId = context.getUnifiedAbstractNodeTemplateId(serviceTemplate,
+ requirement.get(0));
+ String newSubstitutionNodeTemplateId = context.getUnifiedSubstitutionNodeTemplateId(
+ serviceTemplate, oldNodeTemplateId);
+ if (Objects.nonNull(newAbstractNodeTemplateId)
+ && Objects.nonNull(newSubstitutionNodeTemplateId)) {
+ requirement.set(0, newAbstractNodeTemplateId);
+ String newRequirementValue = requirement.get(1) + "_" + newSubstitutionNodeTemplateId;
+ requirement.set(1, newRequirementValue);
+ }
+ }
+ }
+
+ private void updateSubstitutionMappingCapabilities(Map<String, List<String>>
+ substitutionMappingCapabilities,
+ ServiceTemplate serviceTemplate,
+ TranslationContext context) {
+ for (Map.Entry<String, List<String>> entry : substitutionMappingCapabilities.entrySet()) {
+ List<String> capability = entry.getValue();
+ String oldNodeTemplateId = capability.get(0);
+ String newAbstractNodeTemplateId = context.getUnifiedAbstractNodeTemplateId(serviceTemplate,
+ capability.get(0));
+ String newSubstitutionNodeTemplateId = context.getUnifiedSubstitutionNodeTemplateId(
+ serviceTemplate, oldNodeTemplateId);
+ if (Objects.nonNull(newAbstractNodeTemplateId)
+ && Objects.nonNull(newSubstitutionNodeTemplateId)) {
+ capability.set(0, newAbstractNodeTemplateId);
+ String newRequirementValue = capability.get(1) + "_" + newSubstitutionNodeTemplateId;
+ capability.set(1, newRequirementValue);
+ }
+ }
+ }
+
private void updateHeatStackGroupNestedComposition(ServiceTemplate serviceTemplate,
EntityConsolidationData entity,
TranslationContext context) {
@@ -2576,24 +2788,25 @@ public class UnifiedCompositionService {
updateNestedNodeTemplateProperties(nestedServiceTemplate, nestedNodeTemplate, context);
Optional<String> unifiedNestedNodeTypeId = context
- .getUnifiedNestedNodeTypeId(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
+ .getUnifiedNestedNodeTypeId(
+ ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME),
nestedNodeTemplate.getType());
unifiedNestedNodeTypeId
.ifPresent(unifiedNestedNodeTypeIdVal -> updateNestedNodeTemplate(
unifiedNestedNodeTypeIdVal, nestedNodeTemplateId, nestedNodeTemplate,
- mainServiceTemplate, nestedServiceTemplate, context));
+ mainServiceTemplate, context));
}
private void updateNestedNodeTemplateProperties(ServiceTemplate nestedServiceTemplate,
NodeTemplate nestedNodeTemplate,
- TranslationContext context){
+ TranslationContext context) {
Map<String, Object> newPropertyInputParamIds =
context.getAllNewPropertyInputParamIdsPerNodeTenplateId(ToscaUtil
.getServiceTemplateFileName(nestedServiceTemplate));
- for(Map.Entry<String, Object> entry : newPropertyInputParamIds.entrySet()){
- if(Objects.nonNull(entry.getValue())) {
+ for (Map.Entry<String, Object> entry : newPropertyInputParamIds.entrySet()) {
+ if (Objects.nonNull(entry.getValue())) {
Object value = getClonedObject(entry.getValue());
nestedNodeTemplate.getProperties().put(entry.getKey(), value);
}
@@ -2603,38 +2816,42 @@ public class UnifiedCompositionService {
private void handleSubstitutionMappingInNestedServiceTemplate(
String newNestedNodeType,
- ServiceTemplate nestedServiceTemplate) {
+ ServiceTemplate nestedServiceTemplate,
+ TranslationContext context) {
if (Objects.isNull(newNestedNodeType)) {
return;
}
- SubstitutionMapping substitutionMappings =
+ Set<String> relatedNestedNodeTypeIds =
+ context.getAllRelatedNestedNodeTypeIds();
+
+ SubstitutionMapping substitutionMappings =
nestedServiceTemplate.getTopology_template().getSubstitution_mappings();
- substitutionMappings.setNode_type(newNestedNodeType);
+ if(!relatedNestedNodeTypeIds.contains(substitutionMappings.getNode_type())) {
+ substitutionMappings.setNode_type(newNestedNodeType);
+ }
}
private void updateNestedNodeTemplate(String newNestedNodeTypeId,
String nestedNodeTemplateId,
NodeTemplate nestedNodeTemplate,
ServiceTemplate mainServiceTemplate,
- ServiceTemplate nestedServiceTemplate,
TranslationContext context) {
- String mainServiceTemplateName = ToscaUtil.getServiceTemplateFileName(mainServiceTemplate);
+ String mainSTName = ToscaUtil.getServiceTemplateFileName(mainServiceTemplate);
+ String globalSTName =
+ ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME);
int index =
- context.getHandledNestedComputeNodeTemplateIndex(mainServiceTemplateName,
- newNestedNodeTypeId);
+ context.getHandledNestedComputeNodeTemplateIndex(globalSTName, newNestedNodeTypeId);
String newNodeTemplateId =
- Constants.ABSTRACT_NODE_TEMPLATE_ID_PREFIX + getComputeTypeSuffix(newNestedNodeTypeId) +
- "_" + index;
+ Constants.ABSTRACT_NODE_TEMPLATE_ID_PREFIX + getComputeTypeSuffix(newNestedNodeTypeId)
+ + "_" + index;
nestedNodeTemplate.setType(newNestedNodeTypeId);
mainServiceTemplate.getTopology_template().getNode_templates().remove(nestedNodeTemplateId);
mainServiceTemplate.getTopology_template().getNode_templates()
.put(newNodeTemplateId, nestedNodeTemplate);
- context
- .addUnifiedNestedNodeTemplateId(mainServiceTemplateName,
- nestedNodeTemplateId, newNodeTemplateId);
+ context.addUnifiedNestedNodeTemplateId(mainSTName, nestedNodeTemplateId, newNodeTemplateId);
}
private void handleNestedNodeTypesInGlobalSubstituteServiceTemplate(
@@ -2645,14 +2862,20 @@ public class UnifiedCompositionService {
Set<String> relatedNestedNodeTypeIds =
context.getAllRelatedNestedNodeTypeIds();
- if(!relatedNestedNodeTypeIds.contains(origNestedNodeTypeId)) {
- Map<String, NodeType> nodeTypes = globalSubstitutionServiceTemplate.getNode_types();
+ Map<String, NodeType> nodeTypes = globalSubstitutionServiceTemplate.getNode_types();
+ if (!relatedNestedNodeTypeIds.contains(origNestedNodeTypeId)) {
NodeType nested = DataModelUtil.getNodeType(globalSubstitutionServiceTemplate,
origNestedNodeTypeId);
setNewValuesForNestedNodeType(origNestedNodeTypeId, newNestedNodeTypeId, nested, nodeTypes);
- context.addUnifiedNestedNodeTypeId(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
- origNestedNodeTypeId, newNestedNodeTypeId);
+ } else {
+ NodeType nested =
+ (NodeType) DataModelUtil.getClonedObject(
+ DataModelUtil.getNodeType(globalSubstitutionServiceTemplate, origNestedNodeTypeId));
+ nested.setDerived_from(ToscaNodeType.VFC_ABSTRACT_SUBSTITUTE);
+ nodeTypes.put(newNestedNodeTypeId, nested);
}
+ context.addUnifiedNestedNodeTypeId(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
+ origNestedNodeTypeId, newNestedNodeTypeId);
}
private void setNewValuesForNestedNodeType(String origNestedNodeType,
@@ -3041,35 +3264,6 @@ public class UnifiedCompositionService {
return null;
}
- private <T> Object getClonedObject(Object objectValue, Class<T> clazz) {
- YamlUtil yamlUtil = new YamlUtil();
- Object clonedObjectValue;
- String objectToYaml = yamlUtil.objectToYaml(objectValue);
- clonedObjectValue = yamlUtil.yamlToObject(objectToYaml, clazz);
- return clonedObjectValue;
- }
-
- private Object getClonedObject(Object objectValue) {
- Object clonedObjectValue;
- try {
- ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
- ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
- objectOutputStream.writeObject(objectValue);
-
- ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream
- .toByteArray());
- ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
- clonedObjectValue = objectInputStream.readObject();
- } catch (NotSerializableException ex) {
- return getClonedObject(objectValue, objectValue.getClass());
- } catch (IOException ioe) {
- return null;
- } catch (ClassNotFoundException cnfe) {
- return null;
- }
- return clonedObjectValue;
- }
-
private Map<String, UnifiedCompositionEntity> getAllConsolidationNodeTemplateIdAndType(
List<UnifiedCompositionData> unifiedCompositionDataList) {
@@ -3100,15 +3294,15 @@ public class UnifiedCompositionService {
return consolidationNodeTemplateIdAndType;
}
- private enum PortInputType {
- NodeTemplateId,
- PortType,
- Other;
- }
-
private List<PortTemplateConsolidationData> getPortTemplateConsolidationDataList(
UnifiedCompositionData unifiedCompositionData) {
return unifiedCompositionData.getPortTemplateConsolidationDataList() == null ? new
ArrayList<>() : unifiedCompositionData.getPortTemplateConsolidationDataList();
}
+
+ private enum PortInputType {
+ NodeTemplateId,
+ PortType,
+ Other;
+ }
}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionUtil.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionUtil.java
index 4d08176943..5586574669 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionUtil.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionUtil.java
@@ -1,10 +1,8 @@
package org.openecomp.sdc.translator.services.heattotosca;
-import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.openecomp.sdc.logging.api.Logger;
import org.openecomp.sdc.logging.api.LoggerFactory;
-import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
import java.util.Collection;
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/globaltypes/GlobalTypesGenerator.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/globaltypes/GlobalTypesGenerator.java
index 6dada6ab84..9eadfc2907 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/globaltypes/GlobalTypesGenerator.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/globaltypes/GlobalTypesGenerator.java
@@ -60,4 +60,21 @@ public class GlobalTypesGenerator {
globalImports.add(globalImportMap);
return globalImports;
}
+
+ /**
+ * Gets global types import list for Manual Vsp onboarding.
+ *
+ * @return the global types import list
+ */
+ public static List<Map<String, Import>> getManualVspGlobalTypesImportList() {
+ List<Map<String, Import>> globalImports = new ArrayList<>();
+ Map<String, Import> globalImportMap = new HashMap<>();
+ Map<String, ServiceTemplate> globalTypesServiceTemplate =
+ GlobalTypesGenerator.getGlobalTypesServiceTemplate();
+ globalImportMap.put("openecomp_index",
+ HeatToToscaUtil.createServiceTemplateImport(globalTypesServiceTemplate.get
+ ("openecomp/_index.yml")));
+ globalImports.add(globalImportMap);
+ return globalImports;
+ }
}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/globaltypes/GlobalTypesServiceTemplates.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/globaltypes/GlobalTypesServiceTemplates.java
index cbc56d7773..531de16998 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/globaltypes/GlobalTypesServiceTemplates.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/globaltypes/GlobalTypesServiceTemplates.java
@@ -6,7 +6,7 @@ import org.openecomp.sdc.common.errors.ErrorCode;
import org.openecomp.sdc.logging.types.LoggerErrorDescription;
import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
import org.openecomp.sdc.tosca.services.ToscaUtil;
-import org.openecomp.sdc.tosca.services.yamlutil.ToscaExtensionYamlUtil;
+import org.openecomp.sdc.tosca.services.ToscaExtensionYamlUtil;
import org.openecomp.sdc.translator.utils.ResourceWalker;
import java.util.HashMap;
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/helper/VolumeTranslationHelper.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/helper/VolumeTranslationHelper.java
index 5f4e40a4b2..f1cb33372e 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/helper/VolumeTranslationHelper.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/helper/VolumeTranslationHelper.java
@@ -25,7 +25,7 @@ import static org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes.CINDER_V
import org.apache.commons.collections4.CollectionUtils;
import org.openecomp.sdc.common.utils.CommonUtil;
import org.openecomp.sdc.logging.api.Logger;
-import org.openecomp.core.utilities.yaml.YamlUtil;
+import org.openecomp.sdc.tosca.services.YamlUtil;
import org.openecomp.sdc.heat.datatypes.manifest.FileData;
import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
import org.openecomp.sdc.heat.datatypes.model.Output;
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetAttrImpl.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetAttrImpl.java
index 823daa53c8..6f7d7a921e 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetAttrImpl.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetAttrImpl.java
@@ -20,7 +20,7 @@
package org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation;
-import org.openecomp.core.utilities.yaml.YamlUtil;
+import org.openecomp.sdc.tosca.services.YamlUtil;
import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
import org.openecomp.sdc.heat.datatypes.model.Resource;
import org.openecomp.sdc.heat.services.HeatConstants;
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceConnection.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceConnection.java
index b9fed89133..b0094b0a7c 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceConnection.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceConnection.java
@@ -21,7 +21,7 @@
package org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation;
import org.apache.commons.collections4.MapUtils;
-import org.openecomp.core.utilities.yaml.YamlUtil;
+import org.openecomp.sdc.tosca.services.YamlUtil;
import org.openecomp.sdc.common.errors.CoreException;
import org.openecomp.sdc.common.errors.ErrorCategory;
import org.openecomp.sdc.common.errors.ErrorCode;
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailServiceInstanceImpl.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailServiceInstanceImpl.java
index eed7953cda..3b9eb08f53 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailServiceInstanceImpl.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailServiceInstanceImpl.java
@@ -507,7 +507,7 @@ public class ResourceTranslationContrailServiceInstanceImpl extends ResourceTran
portProperties.put("order", index);
}
portNodeTemplate.setProperties(portProperties);
- HeatToToscaUtil.addBindingReqFromPortToCompute(computeNodeTemplateId, portNodeTemplate);
+ DataModelUtil.addBindingReqFromPortToCompute(computeNodeTemplateId, portNodeTemplate);
mdcDataDebugMessage.debugExitMessage(null, null);
return portNodeTemplate;
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNovaServerImpl.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNovaServerImpl.java
index 499ac5f80a..96c105c04a 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNovaServerImpl.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNovaServerImpl.java
@@ -46,7 +46,6 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslatedHeatResource;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
-import org.openecomp.sdc.translator.services.heattotosca.ConfigConstants;
import org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil;
import org.openecomp.sdc.translator.services.heattotosca.Constants;
import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
@@ -480,7 +479,7 @@ public class ResourceTranslationNovaServerImpl extends ResourceTranslationBase {
if (translatedPortId.isPresent()) {
NodeTemplate portNodeTemplate =
DataModelUtil.getNodeTemplate(serviceTemplate, translatedPortId.get());
- HeatToToscaUtil.addBindingReqFromPortToCompute(novaServerResourceId, portNodeTemplate);
+ DataModelUtil.addBindingReqFromPortToCompute(novaServerResourceId, portNodeTemplate);
// Add ports
ConsolidationDataUtil.updatePortInConsolidationData(translateTo, novaNodeTemplate.getType(),
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionCatalogInstance.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionCatalogInstance.java
index 9742a44f52..c1daf1891a 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionCatalogInstance.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionCatalogInstance.java
@@ -11,18 +11,56 @@ import java.util.List;
import java.util.Optional;
public class UnifiedCompositionCatalogInstance implements UnifiedComposition {
+
+ UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
+
+ // There is consolidation in ScalingInstance implemetation.
+ // In case of scaling instance, if there is more than one entry in the
+ // unifiedComposotionDataList, we should have consolidation between them.
+ // (all entries in the list are the once which need to be consolidated)
@Override
public void createUnifiedComposition(ServiceTemplate serviceTemplate,
ServiceTemplate nestedServiceTemplate,
List<UnifiedCompositionData> unifiedComposotionDataList,
TranslationContext context) {
+ UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
+ unifiedCompositionService.handleComplexVfcType(serviceTemplate, context);
+
UnifiedCompositionSingleSubstitution unifiedCompositionSingleSubstitution =
new UnifiedCompositionSingleSubstitution();
- unifiedCompositionSingleSubstitution
- .createUnifiedComposition(serviceTemplate, null, unifiedComposotionDataList, context);
- }
+ String substitutionNodeTypeId =
+ unifiedCompositionService.getSubstitutionNodeTypeId(serviceTemplate,
+ unifiedComposotionDataList.get(0), null, context);
+ // create one substitution ST for all computes
+ Optional<ServiceTemplate> substitutionServiceTemplate =
+ unifiedCompositionService.createUnifiedSubstitutionServiceTemplate(serviceTemplate,
+ unifiedComposotionDataList, context, substitutionNodeTypeId, null);
+
+ if (!substitutionServiceTemplate.isPresent()) {
+ return;
+ }
+
+ // create abstract NT for each compute
+ for(int i = 0; i < unifiedComposotionDataList.size(); i++){
+ List<UnifiedCompositionData> catalogInstanceUnifiedList = new ArrayList<>();
+ catalogInstanceUnifiedList.add(unifiedComposotionDataList.get(i));
+ Integer index = unifiedComposotionDataList.size() > 1 ? i : null;
+
+ unifiedCompositionService
+ .createAbstractSubstituteNodeTemplate(serviceTemplate, substitutionServiceTemplate.get(),
+ catalogInstanceUnifiedList, substitutionNodeTypeId, context, index);
+
+ unifiedCompositionService
+ .updateCompositionConnectivity(serviceTemplate, catalogInstanceUnifiedList, context);
+
+ unifiedCompositionService
+ .cleanUnifiedCompositionEntities(serviceTemplate, catalogInstanceUnifiedList, context);
+ }
+
+ unifiedCompositionService.cleanNodeTypes(serviceTemplate, unifiedComposotionDataList, context);
+ }
}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionNestedSingleCompute.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionNestedSingleCompute.java
index 03d7eb02df..8530d5150d 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionNestedSingleCompute.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionNestedSingleCompute.java
@@ -11,6 +11,11 @@ import java.util.ArrayList;
import java.util.List;
public class UnifiedCompositionNestedSingleCompute implements UnifiedComposition {
+
+ // There is no consolidation in NestedSingleCompute implemetation.
+ // In case of nested single compute, if there is more than one entry in the
+ // unifiedComposotionDataList, each one should be handed seperatly, no consolidation between
+ // them.
@Override
public void createUnifiedComposition(ServiceTemplate serviceTemplate,
ServiceTemplate nestedServiceTemplate,
@@ -27,12 +32,12 @@ public class UnifiedCompositionNestedSingleCompute implements UnifiedComposition
unifiedCompositionService
.handleUnifiedNestedDefinition(serviceTemplate, nestedServiceTemplate,
- unifiedCompositionDataList, context);
+ unifiedCompositionDataList.get(i), context);
unifiedCompositionService
.updateUnifiedNestedConnectivity(serviceTemplate, nestedServiceTemplate,
- nestedUnifiedCompositionDataList, context);
+ unifiedCompositionDataList.get(i), context);
unifiedCompositionService
- .cleanUnifiedNestedEntities(serviceTemplate, nestedUnifiedCompositionDataList, context);
+ .cleanUnifiedNestedEntities(serviceTemplate, unifiedCompositionDataList.get(i), context);
}
}
}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionScalingInstances.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionScalingInstances.java
index fe287a4014..001655d2b0 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionScalingInstances.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionScalingInstances.java
@@ -7,7 +7,6 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.compositi
import org.openecomp.sdc.translator.services.heattotosca.UnifiedComposition;
import org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionService;
-import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@@ -20,14 +19,20 @@ public class UnifiedCompositionScalingInstances implements UnifiedComposition {
ServiceTemplate nestedServiceTemplate,
List<UnifiedCompositionData> unifiedCompositionDataList,
TranslationContext context) {
- if (CollectionUtils.isEmpty(unifiedCompositionDataList)) {
+ if (CollectionUtils.isEmpty(unifiedCompositionDataList)
+ || context.isUnifiedHandledServiceTemplate(serviceTemplate)) {
return;
}
+ unifiedCompositionService.handleComplexVfcType(serviceTemplate, context);
+
Integer index = null;
+ String substitutionNodeTypeId =
+ unifiedCompositionService.getSubstitutionNodeTypeId(serviceTemplate,
+ unifiedCompositionDataList.get(0), null, context);
Optional<ServiceTemplate> substitutionServiceTemplate =
unifiedCompositionService.createUnifiedSubstitutionServiceTemplate(serviceTemplate,
- unifiedCompositionDataList, context, index);
+ unifiedCompositionDataList, context, substitutionNodeTypeId, index);
if (!substitutionServiceTemplate.isPresent()) {
return;
@@ -35,7 +40,7 @@ public class UnifiedCompositionScalingInstances implements UnifiedComposition {
String abstractNodeTemplateId = unifiedCompositionService
.createAbstractSubstituteNodeTemplate(serviceTemplate, substitutionServiceTemplate.get(),
- unifiedCompositionDataList, context, index);
+ unifiedCompositionDataList, substitutionNodeTypeId, context, index);
unifiedCompositionService
.updateCompositionConnectivity(serviceTemplate, unifiedCompositionDataList, context);
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionSingleSubstitution.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionSingleSubstitution.java
index c3965a5f52..a7078f2e5d 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionSingleSubstitution.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionSingleSubstitution.java
@@ -17,6 +17,8 @@ import java.util.Optional;
*/
public class UnifiedCompositionSingleSubstitution implements UnifiedComposition {
+ UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
+
// There is no consolidation in SingleSubstitution implemetation.
// In case of single substitution, if there is more than one entry in the
// unifiedComposotionDataList, they all should contain the same compute type but the
@@ -28,27 +30,35 @@ public class UnifiedCompositionSingleSubstitution implements UnifiedComposition
ServiceTemplate nestedServiceTemplate,
List<UnifiedCompositionData> unifiedCompositionDataList,
TranslationContext context) {
- UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
- if (CollectionUtils.isEmpty(unifiedCompositionDataList)) {
+ if (CollectionUtils.isEmpty(unifiedCompositionDataList)
+ || context.isUnifiedHandledServiceTemplate(serviceTemplate)) {
return;
}
+ unifiedCompositionService.handleComplexVfcType(serviceTemplate, context);
+
for (int i = 0; i < unifiedCompositionDataList.size(); i++) {
List<UnifiedCompositionData> singleSubstitutionUnifiedList = new ArrayList<>();
singleSubstitutionUnifiedList.add(unifiedCompositionDataList.get(i));
Integer index = unifiedCompositionDataList.size() > 1 ? i : null;
+
+ String substitutionNodeTypeId =
+ unifiedCompositionService.getSubstitutionNodeTypeId(serviceTemplate,
+ singleSubstitutionUnifiedList.get(0), null, context);
+
Optional<ServiceTemplate> substitutionServiceTemplate =
unifiedCompositionService.createUnifiedSubstitutionServiceTemplate(serviceTemplate,
- singleSubstitutionUnifiedList, context, index);
+ singleSubstitutionUnifiedList, context, substitutionNodeTypeId, null);
if (!substitutionServiceTemplate.isPresent()) {
continue;
}
+
String abstractNodeTemplateId = unifiedCompositionService
.createAbstractSubstituteNodeTemplate(serviceTemplate, substitutionServiceTemplate.get(),
- singleSubstitutionUnifiedList, context, index);
+ singleSubstitutionUnifiedList, substitutionNodeTypeId, context, null);
unifiedCompositionService
.updateCompositionConnectivity(serviceTemplate, singleSubstitutionUnifiedList, context);
@@ -60,6 +70,5 @@ public class UnifiedCompositionSingleSubstitution implements UnifiedComposition
unifiedCompositionService
.cleanNodeTypes(serviceTemplate, unifiedCompositionDataList, context);
-
}
}