aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main
diff options
context:
space:
mode:
authorMichael Lando <ml636r@att.com>2017-06-11 14:22:02 +0300
committerMichael Lando <ml636r@att.com>2017-06-11 17:48:32 +0300
commitb3d4898d9e8452ea0b8d848c048e712d43b8d9a3 (patch)
tree0609319203be13f6c29ccbe24cb39c9d64f90095 /openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main
parentaf9929df75604ce407d0ca542b200630164e0ae6 (diff)
[SDC-29] rebase continue work to align source
Change-Id: I218f1c5ee23fb2c8314f1c70921d3ad8682c10f4 Signed-off-by: Michael Lando <ml636r@att.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.java27
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConfigConstants.java3
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java27
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java240
-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/resources/config-heatToToscaMapping.json2
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/resources/config-mandatory-unifiedModel.json11
7 files changed, 267 insertions, 45 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 736318bcab..c036e39c21 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,8 +42,11 @@ 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;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
@@ -58,6 +61,7 @@ public class TranslationContext {
private static Map<String, ImplementationConfiguration> nameExtractorImplMap;
private static Map<String, ImplementationConfiguration> supportedConsolidationComputeResources;
private static Map<String, ImplementationConfiguration> supportedConsolidationPortResources;
+ private static List enrichPortResourceProperties;
static {
Configuration config = ConfigurationManager.lookup();
@@ -77,11 +81,19 @@ public class TranslationContext {
supportedConsolidationPortResources = config.populateMap(ConfigConstants
.MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants
.SUPPORTED_CONSOLIDATION_PORT_RESOURCES_KEY, ImplementationConfiguration.class);
+ enrichPortResourceProperties = config.getAsStringValues(ConfigConstants
+ .MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants
+ .ENRICH_PORT_RESOURCE_PROP);
}
private Map<String, UnifiedSubstitutionData> unifiedSubstitutionData = new HashMap<>();
private ManifestFile manifest;
+
+ public static List getEnrichPortResourceProperties() {
+ return enrichPortResourceProperties;
+ }
+
private FileContentHandler files = new FileContentHandler();
private Map<String, FileData.Type> manifestFiles = new HashMap<>();
//Key - file name, value - file type
@@ -242,6 +254,19 @@ public class TranslationContext {
return translatedIds;
}
+ public Set<String> getAllTranslatedResourceIdsFromDiffNestedFiles(String
+ nestedHeatFileNameToSkip){
+ Set<String> allTranslatedResourceIds = new HashSet<>();
+
+ this.translatedIds.entrySet().stream().filter(
+ heatFileNameToTranslatedIdsEntry -> !heatFileNameToTranslatedIdsEntry.getKey()
+ .equals(nestedHeatFileNameToSkip)).forEach(heatFileNameToTranslatedIdsEntry -> {
+ allTranslatedResourceIds.addAll(heatFileNameToTranslatedIdsEntry.getValue().keySet());
+ });
+
+ return allTranslatedResourceIds;
+ }
+
// get tosca name from mapping configuration file
//element type - parameter/attribute
// element name - heat parameter/attribute name
@@ -449,4 +474,6 @@ public class TranslationContext {
return this.unifiedSubstitutionData.get(serviceTemplateName).getGlobalNodeTypeIndex
(computeType);
}
+
+
}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConfigConstants.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConfigConstants.java
index f6918e382b..ca9f21b79a 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConfigConstants.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConfigConstants.java
@@ -40,6 +40,9 @@ public class ConfigConstants {
"supportedConsolidationComputeResources";
public static final String SUPPORTED_CONSOLIDATION_PORT_RESOURCES_KEY =
"supportedConsolidationPortResources";
+ public static final String ENRICH_PORT_RESOURCE_PROP =
+ "enrichPortResourceProperties";
+
//others
public static final String TRANS_MAPPING_DELIMITER_CHAR = "#";
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 a89d08bcf6..148e754cfd 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
@@ -2,6 +2,8 @@ package org.openecomp.sdc.translator.services.heattotosca;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.math.NumberUtils;
+import org.openecomp.sdc.common.errors.CoreException;
+import org.openecomp.sdc.common.errors.ErrorCode;
import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
@@ -141,13 +143,21 @@ public class ConsolidationDataUtil {
*
* @param context the context
* @param serviceTemplate the service template
- * @param nestedNodeTemplateId the nested node template id
- * @return the nested template consolidation data
+ * @param nestedHeatFileName
+ *@param nestedNodeTemplateId the nested node template id @return the nested template consolidation data
*/
public static NestedTemplateConsolidationData getNestedTemplateConsolidationData(
TranslationContext context,
ServiceTemplate serviceTemplate,
- String nestedNodeTemplateId) {
+ String nestedHeatFileName, String nestedNodeTemplateId) {
+
+ if(isNestedResourceIdOccuresInDifferentNestedFiles(context, nestedHeatFileName,
+ nestedNodeTemplateId)){
+ throw new CoreException((new ErrorCode.ErrorCodeBuilder())
+ .withMessage("Resource with id "
+ + nestedNodeTemplateId + " occures more than once in different addOn "
+ + "files").build());
+ }
ConsolidationData consolidationData = context.getConsolidationData();
String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
@@ -176,6 +186,12 @@ public class ConsolidationDataUtil {
return nestedTemplateConsolidationData;
}
+ private static boolean isNestedResourceIdOccuresInDifferentNestedFiles(TranslationContext context,
+ String nestedHeatFileName,
+ String nestedNodeTemplateId) {
+ return context.getAllTranslatedResourceIdsFromDiffNestedFiles(nestedHeatFileName).contains(nestedNodeTemplateId);
+ }
+
/**
* Update group id information in consolidation data.
*
@@ -372,7 +388,7 @@ public class ConsolidationDataUtil {
} else if (consolidationEntityType == ConsolidationEntityType.NESTED
|| consolidationEntityType == ConsolidationEntityType.VFC_NESTED) {
entityConsolidationData = getNestedTemplateConsolidationData(translationContext,
- serviceTemplate, dependentNodeTemplateId);
+ serviceTemplate, translateTo.getHeatFileName(), dependentNodeTemplateId);
}
if (entityConsolidationData.getNodesConnectedIn() == null) {
@@ -530,7 +546,8 @@ public class ConsolidationDataUtil {
public static void updateNestedNodeTemplateId(TranslateTo translateTo) {
TranslationContext context = translateTo.getContext();
ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
- getNestedTemplateConsolidationData(context, serviceTemplate, translateTo.getTranslatedId());
+ getNestedTemplateConsolidationData(
+ context, serviceTemplate, translateTo.getHeatFileName(), translateTo.getTranslatedId());
}
public static void removeSharedResource(ServiceTemplate serviceTemplate,
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 471b1475d6..336d56a77f 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
@@ -46,6 +46,7 @@ import org.openecomp.sdc.tosca.datatypes.model.GroupDefinition;
import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
import org.openecomp.sdc.tosca.datatypes.model.NodeType;
import org.openecomp.sdc.tosca.datatypes.model.ParameterDefinition;
+import org.openecomp.sdc.tosca.datatypes.model.PropertyDefinition;
import org.openecomp.sdc.tosca.datatypes.model.PropertyType;
import org.openecomp.sdc.tosca.datatypes.model.RelationshipTemplate;
import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
@@ -66,6 +67,7 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolida
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.EntityConsolidationData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileComputeConsolidationData;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FilePortConsolidationData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.GetAttrFuncData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedTemplateConsolidationData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
@@ -346,12 +348,13 @@ public class UnifiedCompositionService {
List<UnifiedCompositionData> unifiedCompositionDataList,
TranslationContext context) {
handleUnifiedNestedNodeType(mainServiceTemplate, nestedServiceTemplate, context);
- updateUnifiedNestedTemplates(mainServiceTemplate, nestedServiceTemplate, unifiedCompositionDataList, context);
+ updateUnifiedNestedTemplates(mainServiceTemplate, nestedServiceTemplate,
+ unifiedCompositionDataList, context);
}
private void handleGetAttrInConnectivity(ServiceTemplate serviceTemplate,
- Set<String> unifiedNodeIds,
- TranslationContext context) {
+ Set<String> unifiedNodeIds,
+ TranslationContext context) {
Map<String, NodeTemplate> nodeTemplates =
serviceTemplate.getTopology_template().getNode_templates();
String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
@@ -387,7 +390,7 @@ public class UnifiedCompositionService {
context.getGlobalSubstitutionServiceTemplate();
newNestedNodeTypeId.ifPresent(
- newNestedNodeTypeIdVal -> updateNestedNodeType(nodeTypeId, newNestedNodeTypeIdVal,
+ newNestedNodeTypeIdVal -> handleNestedNodeType(nodeTypeId, newNestedNodeTypeIdVal,
nestedServiceTemplate, mainServiceTemplate, globalSubstitutionServiceTemplate,
context));
@@ -403,26 +406,97 @@ public class UnifiedCompositionService {
ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate));
}
+ private void handleNestedNodeType(String nodeTypeId, String newNestedNodeTypeId,
+ ServiceTemplate nestedServiceTemplate,
+ ServiceTemplate mainServiceTemplate,
+ ServiceTemplate globalSubstitutionServiceTemplate,
+ TranslationContext context) {
+ updateNestedServiceTemplate(nestedServiceTemplate, context);
+ updateNestedNodeType(nodeTypeId, newNestedNodeTypeId, nestedServiceTemplate,
+ mainServiceTemplate,
+ globalSubstitutionServiceTemplate, context);
+
+
+ }
+
+ private void updateNestedServiceTemplate(ServiceTemplate nestedServiceTemplate,
+ TranslationContext context) {
+ enrichPortProperties(nestedServiceTemplate, context);
+ }
+
+ private void enrichPortProperties(ServiceTemplate nestedServiceTemplate,
+ TranslationContext context) {
+ String nestedServiceTemplateFileName =
+ ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate);
+ FilePortConsolidationData filePortConsolidationData =
+ context.getConsolidationData().getPortConsolidationData().getFilePortConsolidationData
+ (nestedServiceTemplateFileName);
+
+ if (Objects.nonNull(filePortConsolidationData)) {
+ Set<String> portNodeTemplateIds = filePortConsolidationData.getAllPortNodeTemplateIds();
+ if (Objects.nonNull(portNodeTemplateIds)) {
+ for (String portNodeTemplateId : portNodeTemplateIds) {
+ NodeTemplate portNodeTemplate = DataModelUtil.getNodeTemplate(nestedServiceTemplate,
+ portNodeTemplateId);
+ List<EntityConsolidationData> portEntityConsolidationDataList = new ArrayList<>();
+ portEntityConsolidationDataList.add(filePortConsolidationData
+ .getPortTemplateConsolidationData(portNodeTemplateId));
+
+ handleNodeTypeProperties(nestedServiceTemplate,
+ portEntityConsolidationDataList, portNodeTemplate, UnifiedCompositionEntity.Port,
+ null, context);
+ }
+ }
+ }
+ }
+
private void updateNestedNodeType(String nodeTypeId, String newNestedNodeTypeId,
ServiceTemplate nestedServiceTemplate,
ServiceTemplate mainServiceTemplate,
ServiceTemplate globalSubstitutionServiceTemplate,
TranslationContext context) {
+ String indexedNewNestedNodeTypeId =
+ updateNodeTypeId(nodeTypeId, newNestedNodeTypeId, nestedServiceTemplate,
+ mainServiceTemplate,
+ globalSubstitutionServiceTemplate, context);
+
+ updateNodeTypeProperties(nestedServiceTemplate, globalSubstitutionServiceTemplate,
+ indexedNewNestedNodeTypeId);
+ }
+
+ private void updateNodeTypeProperties(ServiceTemplate nestedServiceTemplate,
+ ServiceTemplate globalSubstitutionServiceTemplate,
+ String nodeTypeId) {
+ ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
+ Map<String, PropertyDefinition> nodeTypePropertiesDefinition =
+ toscaAnalyzerService.manageSubstitutionNodeTypeProperties(nestedServiceTemplate);
+ NodeType nestedNodeType =
+ DataModelUtil.getNodeType(globalSubstitutionServiceTemplate, nodeTypeId);
+ nestedNodeType.setProperties(nodeTypePropertiesDefinition);
+ }
+
+ private String updateNodeTypeId(String nodeTypeId, String newNestedNodeTypeId,
+ ServiceTemplate nestedServiceTemplate,
+ ServiceTemplate mainServiceTemplate,
+ ServiceTemplate globalSubstitutionServiceTemplate,
+ TranslationContext context) {
context.addNestedFileToUsedNestedComputeType(
- ToscaUtil.getServiceTemplateFileName(mainServiceTemplate),
- ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate),
- newNestedNodeTypeId);
- String indexedNodeType =
+ ToscaUtil.getServiceTemplateFileName(mainServiceTemplate),
+ ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate),
+ newNestedNodeTypeId);
+ String indexedNewNestedNodeTypeId =
handleNestedNodeTypeInGlobalSubstitutionTemplate(nodeTypeId, newNestedNodeTypeId,
mainServiceTemplate, globalSubstitutionServiceTemplate, context);
- handleSubstitutionMappingInNestedServiceTemplate(indexedNodeType, nestedServiceTemplate);
+ handleSubstitutionMappingInNestedServiceTemplate(indexedNewNestedNodeTypeId,
+ nestedServiceTemplate);
context
.updateHandledComputeType(
ToscaUtil.getServiceTemplateFileName(mainServiceTemplate),
ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate),
newNestedNodeTypeId);
+ return indexedNewNestedNodeTypeId;
}
private String handleNestedNodeTypeInGlobalSubstitutionTemplate(String nodeTypeId,
@@ -458,7 +532,9 @@ public class UnifiedCompositionService {
if (Objects.isNull(nestedTemplateConsolidationData)) {
continue;
}
- handleNestedNodeTemplateInMainServiceTemplate(nestedTemplateConsolidationData.getNodeTemplateId(), mainServiceTemplate, nestedServiceTemplate, context);
+ handleNestedNodeTemplateInMainServiceTemplate(
+ nestedTemplateConsolidationData.getNodeTemplateId(), mainServiceTemplate,
+ nestedServiceTemplate, context);
}
}
@@ -1566,9 +1642,29 @@ public class UnifiedCompositionService {
ComputeTemplateConsolidationData computeTemplateConsolidationData,
List<UnifiedCompositionData> unifiedCompositionDataList,
TranslationContext context) {
- List<String> propertiesWithIdenticalVal = consolidationService.getPropertiesWithIdenticalVal();
+
nodeTemplate.setProperties(new HashedMap());
+ handleNodeTemplateProperties(serviceTemplate, nodeTemplate, substitutionServiceTemplate,
+ unifiedCompositionEntity, entityConsolidationDataList, computeTemplateConsolidationData,
+ unifiedCompositionDataList, context);
+ //Add enrich properties from openecomp node type as input to global and substitution ST
+ handleNodeTypeProperties(substitutionServiceTemplate,
+ entityConsolidationDataList, nodeTemplate, unifiedCompositionEntity,
+ computeTemplateConsolidationData, context);
+
+ }
+ private void handleNodeTemplateProperties(ServiceTemplate serviceTemplate,
+ NodeTemplate nodeTemplate,
+ ServiceTemplate substitutionServiceTemplate,
+ UnifiedCompositionEntity unifiedCompositionEntity,
+ List<EntityConsolidationData>
+ entityConsolidationDataList,
+ ComputeTemplateConsolidationData
+ computeTemplateConsolidationData,
+ List<UnifiedCompositionData> unifiedCompositionDataList,
+ TranslationContext context) {
+ List<String> propertiesWithIdenticalVal = consolidationService.getPropertiesWithIdenticalVal();
for (EntityConsolidationData entityConsolidationData : entityConsolidationDataList) {
String nodeTemplateId = entityConsolidationData.getNodeTemplateId();
Map<String, Object> properties =
@@ -1588,7 +1684,6 @@ public class UnifiedCompositionService {
unifiedCompositionEntity, computeTemplateConsolidationData,
unifiedCompositionDataList,
context);
-
//todo - define list of type which will match the node property type (instead of string)
NodeType nodeTypeWithFlatHierarchy =
HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(), serviceTemplate,
@@ -1596,30 +1691,82 @@ public class UnifiedCompositionService {
String propertyType =
nodeTypeWithFlatHierarchy.getProperties().get(propertyEntry.getKey())
.getType();
+ addPropertyInputParameter(propertyType, substitutionServiceTemplate, parameterId);
+ }
+ }
+ }
+ }
+
+ private void handleNodeTypeProperties(ServiceTemplate substitutionServiceTemplate,
+ List<EntityConsolidationData> entityConsolidationDataList,
+ NodeTemplate nodeTemplate,
+ UnifiedCompositionEntity compositionEntity,
+ ComputeTemplateConsolidationData
+ computeTemplateConsolidationData,
+ TranslationContext context) {
+ ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
+ Optional<NodeType> enrichNodeType = Optional.empty();
+ List<String> enrichProperties = new ArrayList<>();
+
+ if (compositionEntity.equals(UnifiedCompositionEntity.Port)) {
+ enrichNodeType =
+ toscaAnalyzerService.fetchNodeType(ToscaNodeType.NETWORK_PORT,
+ context.getGlobalServiceTemplates().values());
+ enrichProperties = context.getEnrichPortResourceProperties();
+ if (!enrichNodeType.isPresent() || Objects.isNull(enrichProperties)) {
+ return;
+ }
+ } else {
+ return;
+ }
- if (propertyType.equalsIgnoreCase(PropertyType.STRING.getDisplayName())
- || propertyType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName())
- || propertyType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName())
- || propertyType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName())) {
- parameterId
- .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue,
- PropertyType.LIST.getDisplayName(),
- DataModelUtil
- .createEntrySchema(propertyType.toLowerCase(), null, null),
- substitutionServiceTemplate));
- } else {
- parameterId
- .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue,
- PropertyType.LIST.getDisplayName(),
- DataModelUtil
- .createEntrySchema(PropertyTypeExt.JSON.getDisplayName(), null, null),
- substitutionServiceTemplate));
+ Map<String, Object> nodeTemplateProperties = nodeTemplate.getProperties();
+ Map<String, PropertyDefinition> enrichNodeTypeProperties = enrichNodeType.get().getProperties();
+ if (Objects.nonNull(enrichNodeTypeProperties)) {
+ for (String enrichPropertyName : enrichProperties) {
+ if (!nodeTemplateProperties.containsKey(enrichPropertyName)) {
+ for (EntityConsolidationData entityConsolidationData : entityConsolidationDataList) {
+ String nodeTemplateId = entityConsolidationData.getNodeTemplateId();
+ String inputParamId =
+ getParameterId(nodeTemplateId, nodeTemplate, enrichPropertyName,
+ compositionEntity, computeTemplateConsolidationData);
+ Map<String, List<String>> propertyVal = getPropertyValueInputParam(nodeTemplateId,
+ nodeTemplate, inputParamId);
+ nodeTemplate.getProperties().put(enrichPropertyName, propertyVal);
+ String propertyType =
+ enrichNodeType.get().getProperties().get(enrichPropertyName).getType();
+ addPropertyInputParameter(propertyType, substitutionServiceTemplate,
+ Optional.of(inputParamId));
}
}
}
}
}
+
+ private void addPropertyInputParameter(String propertyType,
+ ServiceTemplate substitutionServiceTemplate,
+ Optional<String> parameterId) {
+ if (propertyType.equalsIgnoreCase(PropertyType.STRING.getDisplayName())
+ || propertyType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName())
+ || propertyType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName())
+ || propertyType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName())) {
+ parameterId
+ .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue,
+ PropertyType.LIST.getDisplayName(),
+ DataModelUtil
+ .createEntrySchema(propertyType.toLowerCase(), null, null),
+ substitutionServiceTemplate));
+ } else {
+ parameterId
+ .ifPresent(parameterIdValue -> addInputParameter(parameterIdValue,
+ PropertyType.LIST.getDisplayName(),
+ DataModelUtil
+ .createEntrySchema(PropertyTypeExt.JSON.getDisplayName(), null, null),
+ substitutionServiceTemplate));
+ }
+ }
+
private void handleConsolidationEntitiesRequirementConnectivity(String nodeTemplateId,
NodeTemplate nodeTemplate,
ServiceTemplate
@@ -1716,17 +1863,24 @@ public class UnifiedCompositionService {
unifiedCompositionDataList, context)) {
return Optional.empty();
}
-
- Map<String, List<String>> propertyVal = new HashMap<>();
- List<String> getInputFuncParams = new ArrayList<>();
String inputParamId =
getParameterId(nodeTemplateId, nodeTemplate, propertyEntry.getKey(), compositionEntity,
computeTemplateConsolidationData);
+ Map<String, List<String>> propertyVal = getPropertyValueInputParam(nodeTemplateId,
+ nodeTemplate, inputParamId);
+ nodeTemplate.getProperties().put(propertyEntry.getKey(), propertyVal);
+ return Optional.of(inputParamId);
+ }
+
+ private Map<String, List<String>> getPropertyValueInputParam(String nodeTemplateId,
+ NodeTemplate nodeTemplate,
+ String inputParamId) {
+ Map<String, List<String>> propertyVal = new HashMap<>();
+ List<String> getInputFuncParams = new ArrayList<>();
getInputFuncParams.add(inputParamId);
getInputFuncParams.add(ToscaConstants.INDEX_VALUE_PROPERTY_NAME);
propertyVal.put(ToscaFunctions.GET_INPUT.getDisplayName(), getInputFuncParams);
- nodeTemplate.getProperties().put(propertyEntry.getKey(), propertyVal);
- return Optional.of(inputParamId);
+ return propertyVal;
}
private boolean handleGetAttrFromConsolidationNodes(
@@ -1863,7 +2017,8 @@ public class UnifiedCompositionService {
+ getComputeTypeSuffix(nodeTemplate.getType()) + "_" + propertyId;
case Port:
String portType = ConsolidationDataUtil.getPortType(nodeTemplateId);
- if (computeTemplateConsolidationData.getPorts().get(portType).size() > 1) {
+ if (Objects.isNull(computeTemplateConsolidationData)
+ || computeTemplateConsolidationData.getPorts().get(portType).size() > 1) {
return UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + nodeTemplateId + "_"
+ propertyId;
}
@@ -2015,7 +2170,13 @@ public class UnifiedCompositionService {
default:
break;
}
- abstractSubstituteProperties.put(substitutionTemplateInputName, abstractPropertyValue);
+ //Add the property only if it has at least one non-null value
+ for (Object val : abstractPropertyValue) {
+ if (Objects.nonNull(val)) {
+ abstractSubstituteProperties.put(substitutionTemplateInputName, abstractPropertyValue);
+ break;
+ }
+ }
}
return Optional.ofNullable(abstractSubstituteProperties);
}
@@ -2184,7 +2345,8 @@ public class UnifiedCompositionService {
context.getHandledNestedComputeNodeTemplateIndex(mainServiceTemplateName,
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);
@@ -2388,7 +2550,9 @@ public class UnifiedCompositionService {
if (propertyName.isPresent()) {
NodeTemplate portNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
portNodeTemplateId);
- return getPropertyValueFromNodeTemplate(propertyName.get(), portNodeTemplate);
+ if (Objects.nonNull(portNodeTemplate)) {
+ return getPropertyValueFromNodeTemplate(propertyName.get(), portNodeTemplate);
+ }
}
return Optional.empty();
}
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 cc188d71a6..823daa53c8 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
@@ -276,7 +276,7 @@ public class FunctionTranslationGetAttrImpl implements FunctionTranslation {
.getPortTemplateConsolidationData(context, serviceTemplate, resourceId));
} else if (HeatToToscaUtil.isNestedResource(resource)) {
return Optional.of(ConsolidationDataUtil
- .getNestedTemplateConsolidationData(context, serviceTemplate, resourceId));
+ .getNestedTemplateConsolidationData(context, serviceTemplate, heatFileName, resourceId));
}
return Optional.empty();
}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/resources/config-heatToToscaMapping.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/resources/config-heatToToscaMapping.json
index 384847351e..d329b92b9f 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/resources/config-heatToToscaMapping.json
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/resources/config-heatToToscaMapping.json
@@ -74,7 +74,7 @@
},
"attributes": {
"name": "name",
- "virtual_machine_intefrace_mac_addresses": "virtual_machine_intefrace_mac_addresses",
+ "virtual_machine_interface_mac_addresses": "virtual_machine_interface_mac_addresses",
"virtual_machine_interface_mac_addresses#virtual_machine_interface_mac_addresses_mac_address": "mac_address",
"virtual_network_refs": "virtual_network_refs",
"port_tuple_refs": "port_tuple_refs",
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/resources/config-mandatory-unifiedModel.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/resources/config-mandatory-unifiedModel.json
index d4df0699f5..2b8f484705 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/resources/config-mandatory-unifiedModel.json
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/resources/config-mandatory-unifiedModel.json
@@ -26,6 +26,17 @@
"enable": true
}
},
+ "enrichPortResourceProperties": [
+ "network_role_tag",
+ "mac_requirements",
+ "vlan_requirements",
+ "ip_requirements",
+ "network_role",
+ "order",
+ "exCP_naming",
+ "subnetpoolid"
+ ]
+ ,
"_config": {
"namespace": "mandatoryUnifiedModel"
}