aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java')
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java1524
1 files changed, 821 insertions, 703 deletions
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 cfab3fc022..84a9dcf442 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
@@ -1,25 +1,40 @@
/*
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+ * Copyright © 2016-2018 European Support Limited
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
- * ============LICENSE_END=========================================================
*/
package org.openecomp.sdc.translator.services.heattotosca;
+import static org.openecomp.sdc.tosca.services.DataModelUtil.getClonedObject;
+import static org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionEntity.COMPUTE;
+import static org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionEntity.PORT;
+import static org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionEntity.SUB_INTERFACE;
+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 static org.openecomp.sdc.translator.services.heattotosca.Constants.SUB_INTERFACE_PROPERTY_VALUE_PREFIX;
+import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getComputeTypeSuffix;
+import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getConnectedComputeConsolidationData;
+import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getNewComputeNodeTemplateId;
+import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getNewPortNodeTemplateId;
+import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getNewSubInterfaceNodeTemplateId;
+import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getSubInterfacePortTemplateConsolidationData;
+import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getSubInterfaceTemplateConsolidationDataList;
+import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getSubInterfaceTypeSuffix;
+
+import com.google.common.collect.ListMultimap;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
@@ -31,8 +46,6 @@ import org.openecomp.config.api.ConfigurationManager;
import org.openecomp.core.utilities.CommonMethods;
import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
import org.openecomp.sdc.heat.services.HeatConstants;
-import org.openecomp.sdc.logging.api.Logger;
-import org.openecomp.sdc.logging.api.LoggerFactory;
import org.openecomp.sdc.tosca.datatypes.ToscaFunctions;
import org.openecomp.sdc.tosca.datatypes.ToscaGroupType;
import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
@@ -49,9 +62,9 @@ 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;
-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.heatextend.ParameterDefinitionExt;
import org.openecomp.sdc.tosca.datatypes.model.heatextend.PropertyTypeExt;
import org.openecomp.sdc.tosca.services.DataModelUtil;
import org.openecomp.sdc.tosca.services.ToscaAnalyzerService;
@@ -63,6 +76,9 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.compositi
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionEntity;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionMode;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedSubstitutionData;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.commands.CommandImplNames;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.commands.UnifiedSubstitutionNodeTemplateIdGenerator;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.to.UnifiedCompositionTo;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.EntityConsolidationData;
@@ -72,11 +88,12 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolida
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedTemplateConsolidationData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.SubInterfaceTemplateConsolidationData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
+import java.util.EnumMap;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
@@ -86,42 +103,41 @@ import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.regex.Pattern;
-
-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 java.util.stream.Collectors;
public class UnifiedCompositionService {
- protected static Logger logger =
- (Logger) LoggerFactory.getLogger(UnifiedCompositionService.class);
- private static Map<String, ImplementationConfiguration> unifiedCompositionImplMap;
+ private static final Map<String, ImplementationConfiguration> unifiedCompositionImplMap;
+
+ private static final EnumMap<UnifiedCompositionEntity, String> unifiedSubstitutionNodeTemplateIdGeneratorImplMap;
static {
Configuration config = ConfigurationManager.lookup();
unifiedCompositionImplMap =
config.populateMap(ConfigConstants.MANDATORY_UNIFIED_MODEL_NAMESPACE,
ConfigConstants.UNIFIED_COMPOSITION_IMPL_KEY, ImplementationConfiguration.class);
+ unifiedSubstitutionNodeTemplateIdGeneratorImplMap = new EnumMap<>(UnifiedCompositionEntity.class);
+ initNodeTemplateIdGeneratorImplMap();
+ }
+ private static void initNodeTemplateIdGeneratorImplMap() {
+ unifiedSubstitutionNodeTemplateIdGeneratorImplMap.put(COMPUTE, CommandImplNames
+ .COMPUTE_NEW_NODE_TEMPLATE_ID_GENERATOR_IMPL);
+ unifiedSubstitutionNodeTemplateIdGeneratorImplMap.put(PORT, CommandImplNames
+ .PORT_NEW_NODE_TEMPLATE_ID_GENERATOR_IMPL);
+ unifiedSubstitutionNodeTemplateIdGeneratorImplMap.put(SUB_INTERFACE, CommandImplNames
+ .SUB_INTERFACE_NEW_NODE_TEMPLATE_ID_GENERATOR_IMPL);
}
- private ConsolidationService consolidationService = new ConsolidationService();
+ private final ConsolidationService consolidationService = new ConsolidationService();
private static List<EntityConsolidationData> getPortConsolidationDataList(
List<String> portIds,
List<UnifiedCompositionData> unifiedCompositionDataList) {
- List<EntityConsolidationData> portConsolidationDataList = new ArrayList<>();
- for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
- for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
- .getPortTemplateConsolidationDataList()) {
- if (portIds.contains(portTemplateConsolidationData.getNodeTemplateId())) {
- portConsolidationDataList.add(portTemplateConsolidationData);
- }
- }
- }
- return portConsolidationDataList;
+ return unifiedCompositionDataList.stream()
+ .flatMap(unifiedCompositionData -> unifiedCompositionData.getPortTemplateConsolidationDataList().stream())
+ .filter(portTemplateConsolidationData -> portIds.contains(portTemplateConsolidationData.getNodeTemplateId()))
+ .collect(Collectors.toList());
}
/**
@@ -170,9 +186,7 @@ public class UnifiedCompositionService {
if (CollectionUtils.isEmpty(unifiedCompositionDataList)) {
return Optional.empty();
}
- UnifiedCompositionData unifiedCompositionData = unifiedCompositionDataList.get(0);
- String templateName =
- getTemplateName(serviceTemplate, unifiedCompositionData, substitutionNodeTypeId, index);
+ String templateName = getTemplateName(substitutionNodeTypeId, index);
ServiceTemplate substitutionServiceTemplate =
HeatToToscaUtil.createInitSubstitutionServiceTemplate(templateName);
@@ -183,11 +197,14 @@ public class UnifiedCompositionService {
context);
handlePorts(serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList,
computeNodeType, context);
- createOutputParameters(serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList,
- computeNodeType, context);
+
+ UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(serviceTemplate,
+ substitutionServiceTemplate, unifiedCompositionDataList, context);
+ handleSubInterfaces(unifiedCompositionTo);
+ createOutputParameters(unifiedCompositionTo, computeNodeType);
NodeType substitutionGlobalNodeType =
handleSubstitutionGlobalNodeType(serviceTemplate, substitutionServiceTemplate,
- context, unifiedCompositionData, substitutionNodeTypeId, index);
+ context, substitutionNodeTypeId);
HeatToToscaUtil.handleSubstitutionMapping(context,
substitutionNodeTypeId,
@@ -224,9 +241,13 @@ public class UnifiedCompositionService {
directiveList.add(ToscaConstants.NODE_TEMPLATE_DIRECTIVE_SUBSTITUTABLE);
substitutionNodeTemplate.setDirectives(directiveList);
substitutionNodeTemplate.setType(substituteNodeTypeId);
- Optional<Map<String, Object>> abstractSubstitutionProperties =
- createAbstractSubstitutionProperties(serviceTemplate,
- substitutionServiceTemplate, unifiedCompositionDataList, context);
+ Map<String, ParameterDefinition> substitutionTemplateInputs = DataModelUtil
+ .getInputParameters(substitutionServiceTemplate);
+ Optional<Map<String, Object>> abstractSubstitutionProperties = Optional.empty();
+ if (Objects.nonNull(substitutionTemplateInputs)) {
+ abstractSubstitutionProperties = createAbstractSubstitutionProperties(serviceTemplate,
+ substitutionTemplateInputs, unifiedCompositionDataList, context);
+ }
abstractSubstitutionProperties.ifPresent(substitutionNodeTemplate::setProperties);
//Add substitution filtering property
@@ -237,9 +258,7 @@ public class UnifiedCompositionService {
substitutionNodeTemplate, count);
//Add index_value property
addIndexValueProperty(substitutionNodeTemplate);
- String substituteNodeTemplateId =
- getSubstituteNodeTemplateId(serviceTemplate, unifiedCompositionDataList.get(0),
- substituteNodeTypeId, index);
+ String substituteNodeTemplateId = getSubstituteNodeTemplateId(substituteNodeTypeId, index);
//Add node template id and related abstract node template id in context
addUnifiedSubstitionData(context, serviceTemplate, unifiedCompositionDataList,
substituteNodeTemplateId);
@@ -287,18 +306,27 @@ public class UnifiedCompositionService {
List<UnifiedCompositionData> unifiedCompositionDataList,
TranslationContext context) {
for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
+ //Clean compute node template data from top level service template
ComputeTemplateConsolidationData computeTemplateConsolidationData =
unifiedCompositionData.getComputeTemplateConsolidationData();
cleanServiceTemplate(serviceTemplate, computeTemplateConsolidationData, context);
+ //Clean port node template data from top level service template
List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
getPortTemplateConsolidationDataList(unifiedCompositionData);
for (PortTemplateConsolidationData portTemplateConsolidationData :
portTemplateConsolidationDataList) {
cleanServiceTemplate(serviceTemplate, portTemplateConsolidationData, context);
}
- }
+ //Clean sub-interface node template data from top level service template
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ getSubInterfaceTemplateConsolidationDataList(unifiedCompositionData);
+ for (SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData :
+ subInterfaceTemplateConsolidationDataList) {
+ cleanServiceTemplate(serviceTemplate, subInterfaceTemplateConsolidationData, context);
+ }
+ }
}
/**
@@ -322,10 +350,10 @@ public class UnifiedCompositionService {
}
public void updateSubstitutionNodeTypePrefix(ServiceTemplate substitutionServiceTemplate) {
- Map<String, NodeTemplate> node_templates =
+ Map<String, NodeTemplate> nodeTemplates =
substitutionServiceTemplate.getTopology_template().getNode_templates();
- for (Map.Entry<String, NodeTemplate> nodeTemplateEntry : node_templates.entrySet()) {
+ for (Map.Entry<String, NodeTemplate> nodeTemplateEntry : nodeTemplates.entrySet()) {
String nodeTypeId = nodeTemplateEntry.getValue().getType();
NodeType origNodeType = substitutionServiceTemplate.getNode_types().get(nodeTypeId);
if (Objects.nonNull(origNodeType)
@@ -409,8 +437,7 @@ public class UnifiedCompositionService {
nestedServiceTemplate.getTopology_template().getSubstitution_mappings();
String nodeTypeId = substitutionMappings.getNode_type();
- Optional<String> newNestedNodeTypeId =
- getNewNestedNodeTypeId(mainServiceTemplate, nestedServiceTemplate, context);
+ Optional<String> newNestedNodeTypeId = getNewNestedNodeTypeId(nestedServiceTemplate, context);
ServiceTemplate globalSubstitutionServiceTemplate =
context.getGlobalSubstitutionServiceTemplate();
@@ -480,7 +507,7 @@ public class UnifiedCompositionService {
.getPortTemplateConsolidationData(portNodeTemplateId));
handleNodeTypeProperties(nestedServiceTemplate,
- portEntityConsolidationDataList, portNodeTemplate, UnifiedCompositionEntity.Port,
+ portEntityConsolidationDataList, portNodeTemplate, UnifiedCompositionEntity.PORT,
null, context);
}
}
@@ -499,8 +526,6 @@ public class UnifiedCompositionService {
updateNodeTypeProperties(nestedServiceTemplate, globalSubstitutionServiceTemplate,
indexedNewNestedNodeTypeId);
- //addComputeNodeTypeToGlobalST();
-
}
private void updateNodeTypeProperties(ServiceTemplate nestedServiceTemplate,
@@ -555,7 +580,7 @@ public class UnifiedCompositionService {
ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME),
newNestedNodeTypeId);
return globalNodeTypeIndex > 0 ? newNestedNodeTypeId + "_"
- + String.valueOf(globalNodeTypeIndex) : newNestedNodeTypeId;
+ + globalNodeTypeIndex : newNestedNodeTypeId;
}
private void updateUnifiedNestedTemplates(ServiceTemplate mainServiceTemplate,
@@ -615,21 +640,19 @@ public class UnifiedCompositionService {
}
public void handleComplexVfcType(ServiceTemplate serviceTemplate, TranslationContext context) {
- SubstitutionMapping substitution_mappings =
+ SubstitutionMapping substitutionMapping =
serviceTemplate.getTopology_template().getSubstitution_mappings();
- if (Objects.isNull(substitution_mappings)) {
+ if (Objects.isNull(substitutionMapping)) {
return;
}
ServiceTemplate globalSubstitutionServiceTemplate =
context.getGlobalSubstitutionServiceTemplate();
- String substitutionNT = substitution_mappings.getNode_type();
+ String substitutionNT = substitutionMapping.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);
+ //This needs to be done when catalog is ready for complex VFC
}
}
@@ -666,6 +689,30 @@ public class UnifiedCompositionService {
newPortNodeTemplateId, portNodesConnectedOut, context);
}
}
+ //For sub-interface
+ //Add requirements in the abstract node template for nodes connected out for ports
+ updateSubInterfaceNodesConnectedOut(serviceTemplate, unifiedCompositionData,
+ computeTemplateConsolidationData, computeType, context);
+ }
+ }
+
+ private void updateSubInterfaceNodesConnectedOut(ServiceTemplate serviceTemplate,
+ UnifiedCompositionData unifiedCompositionData,
+ ComputeTemplateConsolidationData computeTemplateConsolidationData,
+ String computeType,
+ TranslationContext context) {
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ getSubInterfaceTemplateConsolidationDataList(unifiedCompositionData);
+ for (SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData :
+ subInterfaceTemplateConsolidationDataList) {
+ String newSubInterfaceNodeTemplateId = getNewSubInterfaceNodeTemplateId(serviceTemplate, computeType,
+ computeTemplateConsolidationData, subInterfaceTemplateConsolidationData, context);
+ Map<String, List<RequirementAssignmentData>> subInterfaceNodesConnectedOut =
+ subInterfaceTemplateConsolidationData.getNodesConnectedOut();
+ if (subInterfaceNodesConnectedOut != null) {
+ updateRequirementInAbstractNodeTemplate(serviceTemplate, subInterfaceTemplateConsolidationData,
+ newSubInterfaceNodeTemplateId, subInterfaceNodesConnectedOut, context);
+ }
}
}
@@ -694,13 +741,13 @@ public class UnifiedCompositionService {
}
String singleComputeId = computeType.getAllComputeNodeTemplateIds().iterator().next();
- if (Objects.nonNull(singleComputeId)) {
+ if (Objects.nonNull(singleComputeId) && (Objects.nonNull(nestedTemplateConsolidationData))) {
updateRequirementInNestedNodeTemplate(serviceTemplate, nestedTemplateConsolidationData,
singleComputeId, nodesConnectedOut);
}
}
- protected void updNodesConnectedInConnectivity(ServiceTemplate serviceTemplate,
+ private void updNodesConnectedInConnectivity(ServiceTemplate serviceTemplate,
List<UnifiedCompositionData>
unifiedCompositionDataList,
TranslationContext context) {
@@ -725,6 +772,10 @@ public class UnifiedCompositionService {
updNodesConnectedInConnectivity(serviceTemplate, portTemplateConsolidationData,
newPortNodeTemplateId, context, false);
}
+
+ //Update requirements in the node template which pointing to the sub-interface
+ updateSubInterfaceNodesConnectedIn(serviceTemplate, unifiedCompositionData,
+ computeTemplateConsolidationData, computeType, context);
}
}
@@ -754,7 +805,7 @@ public class UnifiedCompositionService {
//Update the requirement assignment object in the original node template
if (isNested) {
updateRequirementForNestedCompositionNodesConnectedIn(serviceTemplate,
- requirementAssignmentData, entityConsolidationData, newNodeTemplateId, context);
+ requirementAssignmentData, newNodeTemplateId);
} else {
updateRequirementForNodesConnectedIn(serviceTemplate, requirementAssignmentData,
entityConsolidationData, entry.getKey(), newNodeTemplateId, context);
@@ -764,6 +815,22 @@ public class UnifiedCompositionService {
}
}
+ private void updateSubInterfaceNodesConnectedIn(ServiceTemplate serviceTemplate,
+ UnifiedCompositionData unifiedCompositionData,
+ ComputeTemplateConsolidationData computeTemplateConsolidationData,
+ String computeType,
+ TranslationContext context) {
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ getSubInterfaceTemplateConsolidationDataList(unifiedCompositionData);
+ for (SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData :
+ subInterfaceTemplateConsolidationDataList) {
+ String newSubInterfaceNodeTemplateId = getNewSubInterfaceNodeTemplateId(serviceTemplate, computeType,
+ computeTemplateConsolidationData, subInterfaceTemplateConsolidationData, context);
+ updNodesConnectedInConnectivity(serviceTemplate, subInterfaceTemplateConsolidationData,
+ newSubInterfaceNodeTemplateId, context, false);
+ }
+ }
+
protected void updNestedCompositionNodesConnectedInConnectivity(
ServiceTemplate serviceTemplate,
UnifiedCompositionData unifiedCompositionData,
@@ -781,24 +848,7 @@ public class UnifiedCompositionService {
}
-// protected void updNestedCompositionNodesConnectedOutConnectivity(
-// 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 -> updNodesConnectedOutConnectivity(serviceTemplate,
-// nestedTemplateConsolidationData,
-// newNestedNodeTemplateIdVal, context, true));
-//
-// }
-
- protected void updVolumeConnectivity(ServiceTemplate serviceTemplate,
+ private void updVolumeConnectivity(ServiceTemplate serviceTemplate,
List<UnifiedCompositionData>
unifiedCompositionDataList,
TranslationContext context) {
@@ -817,7 +867,7 @@ public class UnifiedCompositionService {
}
}
- protected void updGroupsConnectivity(ServiceTemplate serviceTemplate,
+ private void updGroupsConnectivity(ServiceTemplate serviceTemplate,
List<UnifiedCompositionData>
unifiedCompositionDataList,
TranslationContext context) {
@@ -825,21 +875,23 @@ public class UnifiedCompositionService {
ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData
.getComputeTemplateConsolidationData();
//Add requirements in the abstract node template for nodes connected in for computes
- String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate,
- computeTemplateConsolidationData.getNodeTemplateId());
updGroupsConnectivity(serviceTemplate, computeTemplateConsolidationData, context);
- String computeType = getComputeTypeSuffix(serviceTemplate, computeTemplateConsolidationData
- .getNodeTemplateId());
//Add requirements in the abstract node template for nodes connected in for ports
List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
getPortTemplateConsolidationDataList(unifiedCompositionData);
for (PortTemplateConsolidationData portTemplateConsolidationData :
portTemplateConsolidationDataList) {
- String newPortNodeTemplateId = getNewPortNodeTemplateId(portTemplateConsolidationData
- .getNodeTemplateId(), computeType, computeTemplateConsolidationData);
updGroupsConnectivity(serviceTemplate, portTemplateConsolidationData, context);
}
+
+ //Add requirements in the abstract node template for nodes connected in for subInterface
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ getSubInterfaceTemplateConsolidationDataList(unifiedCompositionData);
+ for (SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData :
+ subInterfaceTemplateConsolidationDataList) {
+ updGroupsConnectivity(serviceTemplate, subInterfaceTemplateConsolidationData, context);
+ }
}
}
@@ -853,25 +905,27 @@ public class UnifiedCompositionService {
String abstractNodeTemplateId = context.getUnifiedAbstractNodeTemplateId(
serviceTemplate, entityConsolidationData.getNodeTemplateId());
Map<String, GroupDefinition> groups = serviceTemplate.getTopology_template().getGroups();
- if (groups != null) {
- for (String groupId : groupIds) {
- GroupDefinition groupDefinition = groups.get(groupId);
- if (groupDefinition != null) {
- List<String> groupMembers = groupDefinition.getMembers();
- if (groupMembers.contains(oldNodeTemplateId)) {
- //Replace the old node template id
- groupMembers.remove(oldNodeTemplateId);
- if (!groupMembers.contains(abstractNodeTemplateId)) {
- //Add the abstract node template id if not already present
- groupMembers.add(abstractNodeTemplateId);
- }
- }
+ if (groups == null) {
+ return;
+ }
+ for (String groupId : groupIds) {
+ GroupDefinition groupDefinition = groups.get(groupId);
+ if (groupDefinition == null) {
+ continue;
+ }
+ List<String> groupMembers = groupDefinition.getMembers();
+ if (groupMembers.contains(oldNodeTemplateId)) {
+ //Replace the old node template id
+ groupMembers.remove(oldNodeTemplateId);
+ if (!groupMembers.contains(abstractNodeTemplateId)) {
+ //Add the abstract node template id if not already present
+ groupMembers.add(abstractNodeTemplateId);
}
}
}
}
- protected void updOutputParamGetAttrInConnectivity(
+ private void updOutputParamGetAttrInConnectivity(
ServiceTemplate serviceTemplate, List<UnifiedCompositionData> unifiedComposotionDataList,
TranslationContext context) {
for (UnifiedCompositionData unifiedCompositionData : unifiedComposotionDataList) {
@@ -899,10 +953,30 @@ public class UnifiedCompositionService {
portTemplateConsolidationData.getNodeTemplateId(), newPortNodeTemplateId, context,
false);
}
+
+ updateSubInterfaceOutputParamGetAttrIn(serviceTemplate, unifiedCompositionData,
+ computeTemplateConsolidationData, computeType, context);
+ }
+ }
+
+ private void updateSubInterfaceOutputParamGetAttrIn(ServiceTemplate serviceTemplate,
+ UnifiedCompositionData unifiedCompositionData,
+ ComputeTemplateConsolidationData computeTemplateConsolidationData,
+ String computeType,
+ TranslationContext context) {
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ getSubInterfaceTemplateConsolidationDataList(unifiedCompositionData);
+ for (SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData :
+ subInterfaceTemplateConsolidationDataList) {
+ String newSubInterfaceNodeTemplateId = getNewSubInterfaceNodeTemplateId(serviceTemplate, computeType,
+ computeTemplateConsolidationData, subInterfaceTemplateConsolidationData, context);
+ updOutputParamGetAttrInConnectivity(serviceTemplate, subInterfaceTemplateConsolidationData,
+ subInterfaceTemplateConsolidationData.getNodeTemplateId(), newSubInterfaceNodeTemplateId, context,
+ false);
}
}
- protected void updNodesGetAttrInConnectivity(
+ private void updNodesGetAttrInConnectivity(
ServiceTemplate serviceTemplate,
List<UnifiedCompositionData> unifiedComposotionDataList,
TranslationContext context) {
@@ -934,6 +1008,28 @@ public class UnifiedCompositionService {
portTemplateConsolidationData.getNodeTemplateId(),
newPotNodeTemplateId, context, consolidationNodeTemplateIdAndType, false);
}
+
+ updateSubInterfaceNodesGetAttrIn(serviceTemplate, unifiedCompositionData,
+ computeTemplateConsolidationData, computeType, consolidationNodeTemplateIdAndType, context);
+ }
+ }
+
+ private void updateSubInterfaceNodesGetAttrIn(ServiceTemplate serviceTemplate,
+ UnifiedCompositionData unifiedCompositionData,
+ ComputeTemplateConsolidationData computeTemplateConsolidationData,
+ String computeType,
+ Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType,
+ TranslationContext context) {
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ getSubInterfaceTemplateConsolidationDataList(unifiedCompositionData);
+ for (SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData :
+ subInterfaceTemplateConsolidationDataList) {
+ String newSubInterfaceNodeTemplateId = getNewSubInterfaceNodeTemplateId(serviceTemplate, computeType,
+ computeTemplateConsolidationData, subInterfaceTemplateConsolidationData, context);
+ updNodeGetAttrInConnectivity(serviceTemplate, subInterfaceTemplateConsolidationData,
+ subInterfaceTemplateConsolidationData.getNodeTemplateId(),
+ newSubInterfaceNodeTemplateId, context,
+ consolidationNodeTemplateIdAndType, false);
}
}
@@ -1018,9 +1114,7 @@ public class UnifiedCompositionService {
private void updateRequirementForNestedCompositionNodesConnectedIn(
ServiceTemplate serviceTemplate,
RequirementAssignmentData requirementAssignmentData,
- EntityConsolidationData entityConsolidationData,
- String newNodeTemplateId,
- TranslationContext context) {
+ String newNodeTemplateId) {
ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
String newAbstractUnifiedNodeTemplateId = newNodeTemplateId;
RequirementAssignment requirementAssignment = requirementAssignmentData
@@ -1064,11 +1158,10 @@ public class UnifiedCompositionService {
String capabilityId = entry.getKey();
CapabilityDefinition capabilityDefinition = entry.getValue();
String capabilityType = capabilityDefinition.getType();
- if (capabilityType.equals(requirementAssignment.getCapability())) {
+ if (capabilityType.equals(requirementAssignment.getCapability())
+ && capabilityId.endsWith(newNodeTemplateId)) {
//Matching capability type found..Check if the id ends with new node template id
- if (capabilityId.endsWith(newNodeTemplateId)) {
- return Optional.ofNullable(capabilityId);
- }
+ return Optional.ofNullable(capabilityId);
}
}
return Optional.empty();
@@ -1154,38 +1247,6 @@ public class UnifiedCompositionService {
}
}
- private NodeTemplate getAbstractNodeTemplate(
- ServiceTemplate serviceTemplate,
- UnifiedCompositionEntity unifiedCompositionEntity,
- ComputeTemplateConsolidationData computeTemplateConsolidationData,
- PortTemplateConsolidationData portTemplateConsolidationData,
- TranslationContext context) {
- String abstractNodeTemplateId =
- getAbstractNodeTemplateId(serviceTemplate, unifiedCompositionEntity,
- computeTemplateConsolidationData, portTemplateConsolidationData, context);
-
- return DataModelUtil.getNodeTemplate(serviceTemplate,
- abstractNodeTemplateId);
- }
-
- private String getAbstractNodeTemplateId(
- ServiceTemplate serviceTemplate,
- UnifiedCompositionEntity unifiedCompositionEntity,
- ComputeTemplateConsolidationData computeTemplateConsolidationData,
- PortTemplateConsolidationData portTemplateConsolidationData,
- TranslationContext context) {
- switch (unifiedCompositionEntity) {
- case Compute:
- return context.getUnifiedAbstractNodeTemplateId(serviceTemplate,
- computeTemplateConsolidationData.getNodeTemplateId());
- case Port:
- return context.getUnifiedAbstractNodeTemplateId(serviceTemplate,
- portTemplateConsolidationData.getNodeTemplateId());
- default:
- return null;
- }
- }
-
private void updNodeGetAttrInConnectivity(
ServiceTemplate serviceTemplate,
EntityConsolidationData entityConsolidationData,
@@ -1198,13 +1259,14 @@ public class UnifiedCompositionService {
return;
}
- for (String sourceNodeTemplateId : nodesGetAttrIn.keySet()) {
+ for (Map.Entry<String, List<GetAttrFuncData>> nodesGetAttrInEntry : nodesGetAttrIn.entrySet()) {
+ String sourceNodeTemplateId = nodesGetAttrInEntry.getKey();
NodeTemplate sourceNodeTemplate =
DataModelUtil.getNodeTemplate(serviceTemplate, sourceNodeTemplateId);
if (!isNested && consolidationNodeTemplateIdAndType.keySet().contains(sourceNodeTemplateId)) {
continue;
}
- List<GetAttrFuncData> getAttrFuncDataList = nodesGetAttrIn.get(sourceNodeTemplateId);
+ List<GetAttrFuncData> getAttrFuncDataList = nodesGetAttrInEntry.getValue();
for (GetAttrFuncData getAttrFuncData : getAttrFuncDataList) {
Object propertyValue =
DataModelUtil.getPropertyValue(sourceNodeTemplate, getAttrFuncData.getFieldName());
@@ -1237,12 +1299,8 @@ public class UnifiedCompositionService {
}
}
- private String getTemplateName(ServiceTemplate serviceTemplate,
- UnifiedCompositionData unifiedCompositionData,
- String nodeTypeId,
+ private String getTemplateName(String nodeTypeId,
Integer index) {
- ComputeTemplateConsolidationData computeTemplateConsolidationData =
- unifiedCompositionData.getComputeTemplateConsolidationData();
String computeType = getComputeTypeSuffix(nodeTypeId);
String templateName = "Nested_" + computeType;
if (Objects.nonNull(index)) {
@@ -1251,23 +1309,6 @@ public class UnifiedCompositionService {
return templateName;
}
- private String getComputeTypeSuffix(ServiceTemplate serviceTemplate,
- String computeNodeTemplateId) {
- NodeTemplate computeNodeTemplate =
- DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId);
- return getComputeTypeSuffix(computeNodeTemplate.getType());
- }
-
- /**
- * Gets compute type.
- *
- * @param computeType the compute node type abc.def.vFSB
- * @return the compute type e.g.:vFSB
- */
- private String getComputeTypeSuffix(String computeType) {
- return DataModelUtil.getNamespaceSuffix(computeType);
- }
-
private void updOutputParamGetAttrInConnectivity(ServiceTemplate serviceTemplate,
EntityConsolidationData entityConsolidationData,
String oldNodeTemplateId,
@@ -1334,13 +1375,9 @@ public class UnifiedCompositionService {
return true;
}
}
-// Map.Entry<String, Object> functionMapEntry =
-// (Map.Entry<String, Object>) ((Map) valueObject).entrySet().iterator().next();
-// return isIncludeToscaFunc(functionMapEntry.getValue(), toscaFunction);
-
} else if (valueObject instanceof List) {
for (Object valueEntity : (List) valueObject) {
- if (isIncludeToscaFunc(valueEntity, toscaFunction) == true) {
+ if (isIncludeToscaFunc(valueEntity, toscaFunction)) {
return true;
}
}
@@ -1348,19 +1385,18 @@ public class UnifiedCompositionService {
return false;
}
- private void createOutputParameters(ServiceTemplate serviceTemplate,
- ServiceTemplate substitutionServiceTemplate,
- List<UnifiedCompositionData> unifiedCompositionDataList,
- String computeNodeType, TranslationContext context) {
+ private void createOutputParameters(UnifiedCompositionTo unifiedCompositionTo,
+ String computeNodeType) {
- createOutputParametersForCompute(serviceTemplate, substitutionServiceTemplate,
- unifiedCompositionDataList, context);
- createOutputParameterForPorts(serviceTemplate, substitutionServiceTemplate,
- unifiedCompositionDataList, computeNodeType, context);
+ createOutputParametersForCompute(unifiedCompositionTo.getServiceTemplate(),
+ unifiedCompositionTo.getSubstitutionServiceTemplate(), unifiedCompositionTo.getUnifiedCompositionDataList(),
+ unifiedCompositionTo.getContext());
+ createOutputParameterForPorts(unifiedCompositionTo.getSubstitutionServiceTemplate(),
+ unifiedCompositionTo.getUnifiedCompositionDataList(), computeNodeType, unifiedCompositionTo.getContext());
+ createOutputParameterForSubInterfaces(unifiedCompositionTo, computeNodeType);
}
private void createOutputParameterForPorts(
- ServiceTemplate serviceTemplate,
ServiceTemplate substitutionServiceTemplate,
List<UnifiedCompositionData> unifiedCompositionDataList,
String connectedComputeNodeType,
@@ -1379,28 +1415,31 @@ public class UnifiedCompositionService {
connectedComputeNodeType,
unifiedCompositionData.getComputeTemplateConsolidationData());
addOutputParameters(portTemplateConsolidationData, newPortNodeTemplateId,
- serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, context);
+ substitutionServiceTemplate, unifiedCompositionDataList, context);
}
}
}
- //The ID should be <vm_type>_<port_type> or <vm_type>_<portNodeTemplateId>
- private String getNewPortNodeTemplateId(
- String portNodeTemplateId,
- String connectedComputeNodeType,
- ComputeTemplateConsolidationData computeTemplateConsolidationData) {
+ private void createOutputParameterForSubInterfaces(UnifiedCompositionTo unifiedCompositionTo,
+ String connectedComputeNodeType) {
+ for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionTo.getUnifiedCompositionDataList()) {
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ getSubInterfaceTemplateConsolidationDataList(unifiedCompositionData);
+ if (CollectionUtils.isEmpty(subInterfaceTemplateConsolidationDataList)) {
+ return;
+ }
- StringBuilder newPortNodeTemplateId = new StringBuilder();
- String portType = ConsolidationDataUtil.getPortType(portNodeTemplateId);
- newPortNodeTemplateId.append(DataModelUtil.getNamespaceSuffix(connectedComputeNodeType));
- if (computeTemplateConsolidationData.getPorts().get(portType).size() > 1) {
- //single port
- newPortNodeTemplateId.append("_").append(portNodeTemplateId);
- } else {
- //consolidation port
- newPortNodeTemplateId.append("_").append(portType);
+ for (SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData :
+ subInterfaceTemplateConsolidationDataList) {
+ String newSubInterfaceNodeTemplateId = getNewSubInterfaceNodeTemplateId(unifiedCompositionTo
+ .getServiceTemplate(), connectedComputeNodeType, unifiedCompositionData
+ .getComputeTemplateConsolidationData(), subInterfaceTemplateConsolidationData,
+ unifiedCompositionTo.getContext());
+ addOutputParameters(subInterfaceTemplateConsolidationData, newSubInterfaceNodeTemplateId,
+ unifiedCompositionTo.getSubstitutionServiceTemplate(), unifiedCompositionTo.getUnifiedCompositionDataList(),
+ unifiedCompositionTo.getContext());
+ }
}
- return newPortNodeTemplateId.toString();
}
private void createOutputParametersForCompute(
@@ -1417,33 +1456,31 @@ public class UnifiedCompositionService {
getNewComputeNodeTemplateId(serviceTemplate,
computeTemplateConsolidationData.getNodeTemplateId());
addOutputParameters(computeTemplateConsolidationData, newComputeNodeTemplateId,
- serviceTemplate, substitutionServiceTemplate, unifiedCompositionDataList, context);
+ substitutionServiceTemplate, unifiedCompositionDataList, context);
}
}
private void addOutputParameters(EntityConsolidationData entityConsolidationData,
String newNodeTemplateId,
- ServiceTemplate serviceTemplate,
ServiceTemplate substitutionServiceTemplate,
List<UnifiedCompositionData> unifiedCompositionDataList,
TranslationContext context) {
- handleNodesGetAttrIn(entityConsolidationData, newNodeTemplateId, serviceTemplate,
- substitutionServiceTemplate, unifiedCompositionDataList, context);
+ handleNodesGetAttrIn(entityConsolidationData, newNodeTemplateId, substitutionServiceTemplate,
+ unifiedCompositionDataList, context);
- handleOutputParamGetAttrIn(entityConsolidationData, newNodeTemplateId, serviceTemplate,
+ handleOutputParamGetAttrIn(entityConsolidationData, newNodeTemplateId,
substitutionServiceTemplate, context);
}
private void handleOutputParamGetAttrIn(EntityConsolidationData entityConsolidationData,
String newNodeTemplateId,
- ServiceTemplate serviceTemplate,
ServiceTemplate substitutionServiceTemplate,
TranslationContext context) {
List<GetAttrFuncData> outputParametersGetAttrIn =
entityConsolidationData.getOutputParametersGetAttrIn();
if (!CollectionUtils.isEmpty(outputParametersGetAttrIn)) {
for (GetAttrFuncData getAttrFuncData : outputParametersGetAttrIn) {
- createAndAddOutputParameter(entityConsolidationData, newNodeTemplateId,
+ createAndAddOutputParameter(newNodeTemplateId,
substitutionServiceTemplate, getAttrFuncData, context);
}
}
@@ -1451,29 +1488,28 @@ public class UnifiedCompositionService {
private void handleNodesGetAttrIn(EntityConsolidationData entityConsolidationData,
String newNodeTemplateId,
- ServiceTemplate serviceTemplate,
ServiceTemplate substitutionServiceTemplate,
List<UnifiedCompositionData> unifiedCompositionDataList,
TranslationContext context) {
Map<String, List<GetAttrFuncData>> getAttrIn = entityConsolidationData.getNodesGetAttrIn();
-
- if (!MapUtils.isEmpty(getAttrIn)) {
- Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType =
- getAllConsolidationNodeTemplateIdAndType(unifiedCompositionDataList);
- for (String sourceNodeTemplateId : getAttrIn.keySet()) {
- if (!consolidationNodeTemplateIdAndType.keySet().contains(sourceNodeTemplateId)) {
- List<GetAttrFuncData> getAttrFuncDataList = getAttrIn.get(sourceNodeTemplateId);
- for (GetAttrFuncData getAttrFuncData : getAttrFuncDataList) {
- createAndAddOutputParameter(entityConsolidationData, newNodeTemplateId,
- substitutionServiceTemplate, getAttrFuncData, context);
- }
+ if (MapUtils.isEmpty(getAttrIn)) {
+ return;
+ }
+ Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType =
+ getAllConsolidationNodeTemplateIdAndType(unifiedCompositionDataList);
+ for (Map.Entry<String, List<GetAttrFuncData>> getAttrInEntry : getAttrIn.entrySet()) {
+ String sourceNodeTemplateId = getAttrInEntry.getKey();
+ if (!consolidationNodeTemplateIdAndType.keySet().contains(sourceNodeTemplateId)) {
+ List<GetAttrFuncData> getAttrFuncDataList = getAttrInEntry.getValue();
+ for (GetAttrFuncData getAttrFuncData : getAttrFuncDataList) {
+ createAndAddOutputParameter(newNodeTemplateId,
+ substitutionServiceTemplate, getAttrFuncData, context);
}
}
}
}
- private void createAndAddOutputParameter(EntityConsolidationData entityConsolidationData,
- String newNodeTemplateId,
+ private void createAndAddOutputParameter(String newNodeTemplateId,
ServiceTemplate substitutionServiceTemplate,
GetAttrFuncData getAttrFuncData,
TranslationContext context) {
@@ -1499,8 +1535,8 @@ public class UnifiedCompositionService {
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;
+ String outputParameterType;
+ EntrySchema outputParameterEntrySchema;
NodeType nodeTypeWithFlatHierarchy =
HeatToToscaUtil.getNodeTypeWithFlatHierarchy(nodeTemplate.getType(),
substitutionServiceTemplate, context);
@@ -1524,18 +1560,6 @@ public class UnifiedCompositionService {
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) {
@@ -1548,29 +1572,6 @@ public class UnifiedCompositionService {
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;
@@ -1599,6 +1600,16 @@ public class UnifiedCompositionService {
substituteNodeTemplateId);
}
}
+ //Add Sub-interface template mapping information
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ getSubInterfaceTemplateConsolidationDataList(unifiedCompositionData);
+ if (CollectionUtils.isNotEmpty(subInterfaceTemplateConsolidationDataList)) {
+ for (SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData :
+ subInterfaceTemplateConsolidationDataList) {
+ context.addUnifiedSubstitutionData(serviceTemplateFileName,
+ subInterfaceTemplateConsolidationData.getNodeTemplateId(), substituteNodeTemplateId);
+ }
+ }
}
}
@@ -1617,14 +1628,8 @@ public class UnifiedCompositionService {
nodeTemplate.setProperties(properties);
}
- private String getSubstituteNodeTemplateId(ServiceTemplate serviceTemplate,
- UnifiedCompositionData unifiedCompositionData,
- String nodeTypeId,
+ private String getSubstituteNodeTemplateId(String nodeTypeId,
Integer index) {
- String computeNodeTemplateId =
- unifiedCompositionData.getComputeTemplateConsolidationData().getNodeTemplateId();
- NodeTemplate computeNodeTemplate =
- DataModelUtil.getNodeTemplate(serviceTemplate, computeNodeTemplateId);
String nodeTemplateId = ABSTRACT_NODE_TEMPLATE_ID_PREFIX + DataModelUtil
.getNamespaceSuffix(nodeTypeId);
if (Objects.nonNull(index)) {
@@ -1664,18 +1669,10 @@ public class UnifiedCompositionService {
return nodeTypeId;
}
- private String getNewComputeNodeTemplateId(
- ServiceTemplate serviceTemplate,
- String computeNodeTemplateId) {
- return getComputeTypeSuffix(serviceTemplate, computeNodeTemplateId);
- }
-
private NodeType handleSubstitutionGlobalNodeType(ServiceTemplate serviceTemplate,
ServiceTemplate substitutionServiceTemplate,
TranslationContext context,
- UnifiedCompositionData unifiedCompositionData,
- String substitutionNodeTypeId,
- Integer index) {
+ String substitutionNodeTypeId) {
NodeType substitutionNodeType = new ToscaAnalyzerServiceImpl()
.createInitSubstitutionNodeType(substitutionServiceTemplate,
ToscaNodeType.VFC_ABSTRACT_SUBSTITUTE);
@@ -1735,9 +1732,9 @@ public class UnifiedCompositionService {
Map<String, List<String>> portIdsPerPortType = UnifiedCompositionUtil
.collectAllPortsFromEachTypesFromComputes(computeConsolidationDataList);
- for (String portType : portIdsPerPortType.keySet()) {
+ for (Map.Entry<String, List<String>> portIdsPerPortTypeEntry : portIdsPerPortType.entrySet()) {
List<EntityConsolidationData> portTemplateConsolidationDataList =
- getPortConsolidationDataList(portIdsPerPortType.get(portType),
+ getPortConsolidationDataList(portIdsPerPortTypeEntry.getValue(),
unifiedCompositionDataList);
if (CollectionUtils.isEmpty(portTemplateConsolidationDataList)) {
continue;
@@ -1765,7 +1762,7 @@ public class UnifiedCompositionService {
removeConnectivityOut(portTemplateConsolidationData, newPortNodeTemplate);
handleProperties(serviceTemplate, newPortNodeTemplate,
- substitutionServiceTemplate, UnifiedCompositionEntity.Port,
+ substitutionServiceTemplate, UnifiedCompositionEntity.PORT,
portTemplateConsolidationDataList, computeTemplateConsolidationData,
unifiedCompositionDataList, context);
@@ -1790,6 +1787,156 @@ public class UnifiedCompositionService {
}
+ private void handleSubInterfaces(UnifiedCompositionTo unifiedCompositionTo) {
+ if (unifiedCompositionTo.getUnifiedCompositionDataList().size() > 1) {
+ handleConsolidationSubInterfaces(unifiedCompositionTo);
+ } else {
+ handleSingleSubInterfaces(unifiedCompositionTo);
+ }
+ }
+
+ private void handleSingleSubInterfaces(UnifiedCompositionTo unifiedCompositionTo) {
+ UnifiedCompositionData unifiedCompositionData = unifiedCompositionTo.getUnifiedCompositionDataList().get(0);
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ getSubInterfaceTemplateConsolidationDataList(unifiedCompositionData);
+ for (SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData :
+ subInterfaceTemplateConsolidationDataList) {
+ List<SubInterfaceTemplateConsolidationData> subInterfaceDataList = new ArrayList<>();
+ subInterfaceDataList.add(subInterfaceTemplateConsolidationData);
+ createSubInterfaceSubstitutionNodeTemplate(unifiedCompositionTo, subInterfaceDataList);
+ }
+ }
+
+ private void handleConsolidationSubInterfaces(UnifiedCompositionTo unifiedCompositionTo) {
+ Collection<ComputeTemplateConsolidationData> computeConsolidationDataList =
+ (Collection) getComputeConsolidationDataList(unifiedCompositionTo.getUnifiedCompositionDataList());
+
+ Map<String, List<String>> portIdsPerPortType = UnifiedCompositionUtil
+ .collectAllPortsFromEachTypesFromComputes(computeConsolidationDataList);
+
+ for (Map.Entry<String, List<String>> portIdsPerPortTypeEntry : portIdsPerPortType.entrySet()) {
+ List<EntityConsolidationData> portEntityConsolidationDataList =
+ getPortConsolidationDataList(portIdsPerPortTypeEntry.getValue(),
+ unifiedCompositionTo.getUnifiedCompositionDataList());
+ if (CollectionUtils.isEmpty(portEntityConsolidationDataList)) {
+ continue;
+ }
+
+ List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
+ portEntityConsolidationDataList.stream()
+ .map(data -> (PortTemplateConsolidationData) data)
+ .collect(Collectors.toList());
+
+ ListMultimap<String, SubInterfaceTemplateConsolidationData> subInterfacesByType = UnifiedCompositionUtil
+ .collectAllSubInterfacesOfEachTypesFromPorts(portTemplateConsolidationDataList);
+ Set<String> subInterfaceTypes = subInterfacesByType.keySet();
+ for (String subInterfaceType: subInterfaceTypes) {
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ subInterfacesByType.get(subInterfaceType);
+ createSubInterfaceSubstitutionNodeTemplate(unifiedCompositionTo, subInterfaceTemplateConsolidationDataList);
+ }
+ }
+ }
+
+ private void createSubInterfaceSubstitutionNodeTemplate(UnifiedCompositionTo unifiedCompositionTo,
+ List<SubInterfaceTemplateConsolidationData>
+ subInterfaceTemplateConsolidationDataList) {
+ SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData =
+ subInterfaceTemplateConsolidationDataList.get(0);
+ PortTemplateConsolidationData portTemplateConsolidationData =
+ getSubInterfacePortTemplateConsolidationData(unifiedCompositionTo.getServiceTemplate(),
+ subInterfaceTemplateConsolidationData, unifiedCompositionTo.getContext());
+
+ if (Objects.isNull(portTemplateConsolidationData)) {
+ return;
+ }
+
+ String originalSubInterfaceNodeTemplateId = subInterfaceTemplateConsolidationDataList.get(0)
+ .getNodeTemplateId();
+ NodeTemplate originalSubInterfaceNodeTemplate =
+ DataModelUtil.getNodeTemplate(unifiedCompositionTo.getServiceTemplate(), originalSubInterfaceNodeTemplateId);
+ if (Objects.isNull(originalSubInterfaceNodeTemplate)) {
+ return;
+ }
+ NodeTemplate newSubInterfaceNodeTemplate = originalSubInterfaceNodeTemplate.clone();
+ ComputeTemplateConsolidationData connectedComputeConsolidationData =
+ getConnectedComputeConsolidationData(unifiedCompositionTo.getUnifiedCompositionDataList(),
+ portTemplateConsolidationData.getNodeTemplateId());
+ if (Objects.nonNull(connectedComputeConsolidationData)) {
+ NodeTemplate connectedComputeNodeTemplate = DataModelUtil.getNodeTemplate(unifiedCompositionTo
+ .getServiceTemplate(), connectedComputeConsolidationData.getNodeTemplateId());
+ String newSubInterfaceNodeTemplateId = getNewSubInterfaceNodeTemplateId(unifiedCompositionTo
+ .getServiceTemplate(), connectedComputeNodeTemplate.getType(), connectedComputeConsolidationData,
+ subInterfaceTemplateConsolidationData, unifiedCompositionTo.getContext());
+ DataModelUtil.addNodeTemplate(unifiedCompositionTo.getSubstitutionServiceTemplate(),
+ newSubInterfaceNodeTemplateId, newSubInterfaceNodeTemplate);
+ List<EntityConsolidationData> entityConsolidationDataList =
+ new ArrayList<>(subInterfaceTemplateConsolidationDataList);
+ //Remove all the existing properties as we are going to create new based on the
+ // naming convention for the substitution
+ handleSubInterfaceProperties(unifiedCompositionTo, newSubInterfaceNodeTemplate, entityConsolidationDataList,
+ portTemplateConsolidationData);
+ //Update requirements for relationships between the consolidation entities
+ handleConsolidationEntitiesRequirementConnectivity(newSubInterfaceNodeTemplate, unifiedCompositionTo
+ .getServiceTemplate(), unifiedCompositionTo.getContext());
+ removeConnectivityOut(subInterfaceTemplateConsolidationData,newSubInterfaceNodeTemplate);
+ }
+ }
+
+ private void handleSubInterfaceProperties(UnifiedCompositionTo unifiedCompositionTo,
+ NodeTemplate newSubInterfaceNodeTemplate,
+ List<EntityConsolidationData>
+ entityConsolidationDataList,
+ PortTemplateConsolidationData
+ portTemplateConsolidationData) {
+ UnifiedCompositionData unifiedCompositionData = unifiedCompositionTo.getUnifiedCompositionDataList().get(0);
+ ServiceTemplate serviceTemplate = unifiedCompositionTo.getServiceTemplate();
+ TranslationContext context = unifiedCompositionTo.getContext();
+ newSubInterfaceNodeTemplate.setProperties(new HashMap<>());
+ for (EntityConsolidationData entityConsolidationData : entityConsolidationDataList) {
+ String nodeTemplateId = entityConsolidationData.getNodeTemplateId();
+ Optional<List<String>> indexVarProperties =
+ context.getIndexVarProperties(ToscaUtil.getServiceTemplateFileName(serviceTemplate),
+ nodeTemplateId);
+ Map<String, Object> properties =
+ DataModelUtil.getNodeTemplateProperties(serviceTemplate, nodeTemplateId);
+ if (MapUtils.isEmpty(properties)) {
+ continue;
+ }
+
+ for (Map.Entry<String, Object> propertyEntry : properties.entrySet()) {
+ NodeType nodeTypeWithFlatHierarchy =
+ HeatToToscaUtil.getNodeTypeWithFlatHierarchy(newSubInterfaceNodeTemplate.getType(),
+ serviceTemplate, context);
+ PropertyDefinition propertyDefinition =
+ nodeTypeWithFlatHierarchy.getProperties().get(propertyEntry.getKey());
+ String propertyType = propertyDefinition.getType();
+ //Handle service_template_filter property for subinterface as we should not create inputs
+ // for this property
+ if (propertyEntry.getKey().equals(ToscaConstants.SERVICE_TEMPLATE_FILTER_PROPERTY_NAME)) {
+ handleSubInterfaceServiceTemplateFilterProperty(newSubInterfaceNodeTemplate,
+ propertyEntry.getKey(), propertyEntry.getValue(), serviceTemplate,
+ unifiedCompositionTo.getSubstitutionServiceTemplate());
+ } else if (indexVarProperties.isPresent()
+ && indexVarProperties.get().contains(propertyEntry.getKey())) {
+ //Handle index property
+ handleIndexVarProperty(propertyEntry.getKey(), propertyEntry.getValue(),
+ newSubInterfaceNodeTemplate);
+ } else {
+ Optional<String> parameterId =
+ updateProperty(serviceTemplate, nodeTemplateId, newSubInterfaceNodeTemplate,
+ propertyEntry, UnifiedCompositionEntity.SUB_INTERFACE, unifiedCompositionData
+ .getComputeTemplateConsolidationData(), portTemplateConsolidationData,
+ unifiedCompositionTo.getUnifiedCompositionDataList(), context);
+ parameterId.ifPresent(
+ parameterIdValue -> addPropertyInputParameter(propertyType,
+ unifiedCompositionTo.getSubstitutionServiceTemplate(),
+ propertyDefinition.getEntry_schema(), parameterIdValue));
+ }
+ }
+ }
+ }
+
private NodeTemplate getNodeTemplate(String nodeTemplateId, ServiceTemplate serviceTemplate,
TranslationContext context) {
@@ -1813,8 +1960,6 @@ public class UnifiedCompositionService {
unifiedCompositionDataList.get(0).getComputeTemplateConsolidationData();
handleComputeNodeTemplate(serviceTemplate, substitutionServiceTemplate,
unifiedCompositionDataList, context);
- ServiceTemplate globalSubstitutionServiceTemplate =
- HeatToToscaUtil.fetchGlobalSubstitutionServiceTemplate(serviceTemplate, context);
return handleComputeNodeType(serviceTemplate, substitutionServiceTemplate,
computeTemplateConsolidationData);
}
@@ -1834,11 +1979,6 @@ public class UnifiedCompositionService {
return computeNodeTypeId;
}
- private String getComputeNodeType(String nodeType) {
- String computeTypeSuffix = getComputeTypeSuffix(nodeType);
- return ToscaNodeType.COMPUTE_TYPE_PREFIX + "." + computeTypeSuffix;
- }
-
private void handleComputeNodeTemplate(ServiceTemplate serviceTemplate,
ServiceTemplate substitutionServiceTemplate,
List<UnifiedCompositionData> unifiedCompositionDataList,
@@ -1851,12 +1991,12 @@ public class UnifiedCompositionService {
removeConnectivityOut(computeTemplateConsolidationData, newComputeNodeTemplate);
removeVolumeConnectivity(computeTemplateConsolidationData, newComputeNodeTemplate);
- List<EntityConsolidationData> computeConsoliadtionDataList =
+ List<EntityConsolidationData> computeConsolidationDataList =
getComputeConsolidationDataList(unifiedCompositionDataList);
handleProperties(serviceTemplate, newComputeNodeTemplate,
- substitutionServiceTemplate, UnifiedCompositionEntity.Compute,
- computeConsoliadtionDataList, computeTemplateConsolidationData, unifiedCompositionDataList,
+ substitutionServiceTemplate, COMPUTE,
+ computeConsolidationDataList, computeTemplateConsolidationData, unifiedCompositionDataList,
context);
String newComputeNodeTemplateId = getNewComputeNodeTemplateId(serviceTemplate,
@@ -1869,7 +2009,7 @@ public class UnifiedCompositionService {
.addNodeTemplate(substitutionServiceTemplate,
newComputeNodeTemplateId, newComputeNodeTemplate);
//Add the node template mapping in the context for handling requirement updation
- for (EntityConsolidationData data : computeConsoliadtionDataList) {
+ for (EntityConsolidationData data : computeConsolidationDataList) {
String newComputeTemplateId = getNewComputeNodeTemplateId(serviceTemplate,
computeTemplateConsolidationData.getNodeTemplateId());
context.addSubstitutionServiceTemplateUnifiedSubstitutionData(ToscaUtil
@@ -1878,25 +2018,11 @@ public class UnifiedCompositionService {
}
}
- private void updateComputeNodeType(ServiceTemplate serviceTemplate,
- String nodeTemplateId,
- NodeTemplate newComputeNodeTemplate) {
- String computeNodeType = getComputeNodeType(newComputeNodeTemplate.getType());
- NodeType origNodeType = serviceTemplate.getNode_types().get(newComputeNodeTemplate.getType());
- DataModelUtil.removeNodeType(serviceTemplate, newComputeNodeTemplate.getType());
- DataModelUtil.addNodeType(serviceTemplate, computeNodeType, origNodeType);
- newComputeNodeTemplate.setType(computeNodeType);
- DataModelUtil.addNodeTemplate(serviceTemplate, nodeTemplateId, newComputeNodeTemplate);
- }
-
private List<EntityConsolidationData> getComputeConsolidationDataList(
List<UnifiedCompositionData> unifiedCompositionDataList) {
- List<EntityConsolidationData> computeConsolidationDataList = new ArrayList<>();
- for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
- computeConsolidationDataList
- .add(unifiedCompositionData.getComputeTemplateConsolidationData());
- }
- return computeConsolidationDataList;
+ return unifiedCompositionDataList.stream()
+ .map(UnifiedCompositionData::getComputeTemplateConsolidationData)
+ .collect(Collectors.toList());
}
@@ -1908,8 +2034,6 @@ public class UnifiedCompositionService {
ComputeTemplateConsolidationData computeTemplateConsolidationData,
List<UnifiedCompositionData> unifiedCompositionDataList,
TranslationContext context) {
- List<String> propertiesWithIdenticalVal =
- consolidationService.getPropertiesWithIdenticalVal(unifiedCompositionEntity);
nodeTemplate.setProperties(new HashedMap());
handleNodeTemplateProperties(serviceTemplate, nodeTemplate, substitutionServiceTemplate,
unifiedCompositionEntity, entityConsolidationDataList, computeTemplateConsolidationData,
@@ -1936,6 +2060,9 @@ public class UnifiedCompositionService {
for (EntityConsolidationData entityConsolidationData : entityConsolidationDataList) {
String nodeTemplateId = entityConsolidationData.getNodeTemplateId();
+ Optional<List<String>> indexVarProperties =
+ context.getIndexVarProperties(ToscaUtil.getServiceTemplateFileName(serviceTemplate),
+ nodeTemplateId);
Map<String, Object> properties =
DataModelUtil.getNodeTemplateProperties(serviceTemplate, nodeTemplateId);
if (MapUtils.isEmpty(properties)) {
@@ -1960,17 +2087,67 @@ public class UnifiedCompositionService {
propertyType.equals(PropertyType.LIST.getDisplayName()) ? propertyDefinition
.getEntry_schema() : null,
substitutionServiceTemplate);
+ } else if (indexVarProperties.isPresent()
+ && indexVarProperties.get().contains(propertyEntry.getKey())) {
+ //Handle index property
+ handleIndexVarProperty(propertyEntry.getKey(), propertyEntry.getValue(), nodeTemplate);
} else {
Optional<String> parameterId =
updateProperty(serviceTemplate, nodeTemplateId, nodeTemplate, propertyEntry,
- unifiedCompositionEntity, computeTemplateConsolidationData,
+ unifiedCompositionEntity, computeTemplateConsolidationData, null,
unifiedCompositionDataList,
context);
- //todo - define list of type which will match the node property type (instead of string)
parameterId.ifPresent(
parameterIdValue -> addPropertyInputParameter(propertyType,
substitutionServiceTemplate,
- propertyDefinition.getEntry_schema(), parameterIdValue, context));
+ propertyDefinition.getEntry_schema(), parameterIdValue));
+ }
+ }
+ }
+ }
+
+ private void handleIndexVarProperty(String propertyKey, Object propertyValue,
+ NodeTemplate nodeTemplate) {
+ //Retain properties translated from %index% value in heat
+ nodeTemplate.getProperties().put(propertyKey, propertyValue);
+ }
+
+ private void handleSubInterfaceServiceTemplateFilterProperty(NodeTemplate nodeTemplate,
+ String propertyKey,
+ Object propertyValue,
+ ServiceTemplate serviceTemplate,
+ ServiceTemplate substitutionServiceTemplate) {
+ //Retain service_template_filter (Can be present in a sub-interface resource-def)
+ nodeTemplate.getProperties().put(propertyKey, propertyValue);
+ Object serviceTemplateFilterProperty =
+ nodeTemplate.getProperties().get(ToscaConstants.SERVICE_TEMPLATE_FILTER_PROPERTY_NAME);
+ if (!(serviceTemplateFilterProperty instanceof Map)) {
+ return;
+ }
+ Map<String, Object> serviceTemplatePropertyMap = (Map<String, Object>)
+ serviceTemplateFilterProperty;
+ Object countPropertyVal = serviceTemplatePropertyMap.get(ToscaConstants.COUNT_PROPERTY_NAME);
+ //Check if the value of the count property is a tosca function
+ if (!isPropertyContainsToscaFunction(countPropertyVal)) {
+ return;
+ }
+ Map<String, Object> countPropertyValMap = (Map<String, Object>) countPropertyVal;
+ //If the value is in the form of get_input add an input parameter in current service
+ // template
+ if (countPropertyValMap.keySet().contains(ToscaFunctions.GET_INPUT.getDisplayName())) {
+ String countPropertyInputName = countPropertyValMap.get(ToscaFunctions.GET_INPUT
+ .getDisplayName()).toString();
+ //Get the input parameter definition from top level where the resource group was present
+ ParameterDefinitionExt parameterDefinition = (ParameterDefinitionExt)
+ DataModelUtil.getInputParameters(serviceTemplate).get(countPropertyInputName);
+ if (Objects.nonNull(parameterDefinition)) {
+ //Remove annotations if any for the nested service template
+ parameterDefinition.setAnnotations(null);
+ DataModelUtil.getInputParameters(substitutionServiceTemplate)
+ .put(countPropertyInputName, parameterDefinition);
+ if (Objects.nonNull(countPropertyInputName)) {
+ //Remove the input from top level
+ DataModelUtil.getInputParameters(serviceTemplate).remove(countPropertyInputName);
}
}
}
@@ -1987,11 +2164,11 @@ public class UnifiedCompositionService {
Optional<NodeType> enrichNodeType;
List<String> enrichProperties;
- if (compositionEntity.equals(UnifiedCompositionEntity.Port)) {
+ if (compositionEntity.equals(UnifiedCompositionEntity.PORT)) {
enrichNodeType =
toscaAnalyzerService.fetchNodeType(ToscaNodeType.NETWORK_PORT,
context.getGlobalServiceTemplates().values());
- enrichProperties = context.getEnrichPortResourceProperties();
+ enrichProperties = TranslationContext.getEnrichPortResourceProperties();
if (!enrichNodeType.isPresent() || Objects.isNull(enrichProperties)) {
return;
}
@@ -2028,7 +2205,7 @@ public class UnifiedCompositionService {
String inputParamId =
getParameterId(nodeTemplateId, nodeTemplate, enrichPropertyName,
- compositionEntity, computeTemplateConsolidationData);
+ compositionEntity, computeTemplateConsolidationData, null);
Map<String, String> propertyValMap = new HashMap<>();
context
@@ -2047,7 +2224,7 @@ public class UnifiedCompositionService {
addPropertyInputParameter(propertyType, substitutionServiceTemplate, enrichNodeType
.getProperties().get(enrichPropertyName).getEntry_schema(),
- inputParamId, context);
+ inputParamId);
}
}
@@ -2078,9 +2255,11 @@ public class UnifiedCompositionService {
private void addPropertyInputParameter(String propertyType,
ServiceTemplate substitutionServiceTemplate,
- EntrySchema entrySchema, String parameterId,
- TranslationContext context) {
- if (isParameterBelongsToEnrichedPortProperties(parameterId, context)) {
+ EntrySchema entrySchema, String parameterId) {
+ if (Objects.isNull(propertyType)) {
+ return;
+ }
+ if (isParameterBelongsToEnrichedPortProperties(parameterId)) {
addInputParameter(parameterId,
propertyType,
propertyType.equals(PropertyType.LIST.getDisplayName()) ? entrySchema : null,
@@ -2102,9 +2281,8 @@ public class UnifiedCompositionService {
}
}
- private boolean isParameterBelongsToEnrichedPortProperties(String parameterId,
- TranslationContext context) {
- List enrichPortResourceProperties = context.getEnrichPortResourceProperties();
+ private boolean isParameterBelongsToEnrichedPortProperties(String parameterId) {
+ List enrichPortResourceProperties = TranslationContext.getEnrichPortResourceProperties();
for (int i = 0; i < enrichPortResourceProperties.size(); i++) {
if (parameterId.contains((CharSequence) enrichPortResourceProperties.get(i))) {
@@ -2116,11 +2294,8 @@ 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()));
+ return !Objects.isNull(propertyType)
+ && (PropertyType.getSimplePropertyTypes().contains(propertyType.toLowerCase()));
}
private String analyzeParameterType(String propertyType) {
@@ -2129,7 +2304,7 @@ public class UnifiedCompositionService {
}
private String analyzeEntrySchemaType(String propertyType, EntrySchema entrySchema) {
- return propertyType.equalsIgnoreCase(PropertyType.LIST.getDisplayName()) ?
+ return propertyType.equalsIgnoreCase(PropertyType.LIST.getDisplayName()) && entrySchema != null ?
entrySchema.getType() : null;
}
@@ -2198,34 +2373,28 @@ public class UnifiedCompositionService {
UnifiedCompositionEntity unifiedCompositionEntity,
List<UnifiedCompositionData> unifiedCompositionDataList) {
- String inputParamId;
+ String inputParamId = null;
Map<String, Object> propertyVal = new HashMap<>();
switch (unifiedCompositionEntity) {
- case Compute:
+ case COMPUTE:
inputParamId = COMPUTE_IDENTICAL_VALUE_PROPERTY_PREFIX + propertyId
+ COMPUTE_IDENTICAL_VALUE_PROPERTY_SUFFIX;
-
propertyVal.put(ToscaFunctions.GET_INPUT.getDisplayName(), inputParamId);
nodeTemplate.getProperties().put(propertyId, propertyVal);
-
- return inputParamId;
-
- case Port:
+ break;
+ case PORT:
String portType = ConsolidationDataUtil.getPortType(nodeTemplateId);
ComputeTemplateConsolidationData computeTemplateConsolidationData =
getConnectedComputeConsolidationData(unifiedCompositionDataList, nodeTemplateId);
- inputParamId = getInputParamIdForPort(nodeTemplateId, propertyId, portType,
- computeTemplateConsolidationData);
-
+ inputParamId = getInputParamIdForPort(nodeTemplateId, propertyId, portType, computeTemplateConsolidationData);
propertyVal.put(ToscaFunctions.GET_INPUT.getDisplayName(), inputParamId);
nodeTemplate.getProperties().put(propertyId, propertyVal);
-
- return inputParamId;
-
+ break;
default:
- return null;
+ break;
}
+ return inputParamId;
}
private String getInputParamIdForPort(String nodeTemplateId, String propertyId, String portType,
@@ -2234,12 +2403,12 @@ public class UnifiedCompositionService {
if (Objects.isNull(computeTemplateConsolidationData)
|| computeTemplateConsolidationData.getPorts().get(portType).size() > 1) {
inputParamId =
- UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + nodeTemplateId + "_" +
+ UnifiedCompositionEntity.PORT.getDisplayName().toLowerCase() + "_" + nodeTemplateId + "_" +
propertyId;
} else {
inputParamId =
- UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + portType + "_"
+ UnifiedCompositionEntity.PORT.getDisplayName().toLowerCase() + "_" + portType + "_"
+ propertyId;
}
return inputParamId;
@@ -2267,6 +2436,7 @@ public class UnifiedCompositionService {
Map.Entry<String, Object> propertyEntry,
UnifiedCompositionEntity compositionEntity,
ComputeTemplateConsolidationData computeTemplateConsolidationData,
+ PortTemplateConsolidationData portTemplateConsolidationData,
List<UnifiedCompositionData> unifiedCompositionDataList,
TranslationContext context) {
@@ -2278,16 +2448,13 @@ public class UnifiedCompositionService {
String inputParamId =
getParameterId(nodeTemplateId, nodeTemplate, propertyEntry.getKey(), compositionEntity,
- computeTemplateConsolidationData);
- Map<String, List<String>> propertyVal = getPropertyValueInputParam(nodeTemplateId,
- nodeTemplate, inputParamId);
+ computeTemplateConsolidationData, portTemplateConsolidationData);
+ Map<String, List<String>> propertyVal = getPropertyValueInputParam(inputParamId);
nodeTemplate.getProperties().put(propertyEntry.getKey(), propertyVal);
return Optional.of(inputParamId);
}
- private Map<String, List<String>> getPropertyValueInputParam(String nodeTemplateId,
- NodeTemplate nodeTemplate,
- String inputParamId) {
+ private Map<String, List<String>> getPropertyValueInputParam(String inputParamId) {
Map<String, List<String>> propertyVal = new HashMap<>();
List<String> getInputFuncParams = new ArrayList<>();
getInputFuncParams.add(inputParamId);
@@ -2335,8 +2502,8 @@ public class UnifiedCompositionService {
for (List<Object> getAttrFunc : clonedGetAttrFuncList) {
String targetNodeTemplateId = (String) getAttrFunc.get(0);
if (consolidationNodeTemplateIds.contains(targetNodeTemplateId)) {
- updatePropertyGetAttrFunc(serviceTemplate, unifiedCompositionDataList, context,
- consolidationNodeTemplateIdAndType, targetNodeTemplateId, getAttrFunc);
+ updatePropertyGetAttrFunc(serviceTemplate, unifiedCompositionDataList,
+ consolidationNodeTemplateIdAndType, targetNodeTemplateId, getAttrFunc, context);
}
}
nodeTemplate.getProperties().put(propertyEntry.getKey(), clonedPropertyValue);
@@ -2345,19 +2512,6 @@ 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) {
@@ -2374,37 +2528,33 @@ public class UnifiedCompositionService {
private void updatePropertyGetAttrFunc(
ServiceTemplate serviceTemplate,
List<UnifiedCompositionData> unifiedCompositionDataList,
- TranslationContext context,
Map<String, UnifiedCompositionEntity> consolidationNodeTemplateIdAndType,
String targetNodeTemplateId,
- List<Object> getAttrFunc) {
+ List<Object> getAttrFunc, TranslationContext context) {
UnifiedCompositionEntity targetCompositionEntity =
consolidationNodeTemplateIdAndType.get(targetNodeTemplateId);
String targetNewNodeTemplateId =
getNewNodeTemplateId(serviceTemplate, unifiedCompositionDataList, targetNodeTemplateId,
- targetCompositionEntity);
+ targetCompositionEntity, context);
getAttrFunc.set(0, targetNewNodeTemplateId);
}
private String getNewNodeTemplateId(ServiceTemplate serviceTemplate,
List<UnifiedCompositionData> unifiedCompositionDataList,
String nodeTemplateId,
- UnifiedCompositionEntity compositionEntity) {
- switch (compositionEntity) {
- case Compute:
- return getNewComputeNodeTemplateId(serviceTemplate, nodeTemplateId);
- case Port:
- ComputeTemplateConsolidationData connectedComputeConsolidationData =
- getConnectedComputeConsolidationData(
- unifiedCompositionDataList, nodeTemplateId);
- NodeTemplate connectedComputeNodeTemplate =
- DataModelUtil.getNodeTemplate(serviceTemplate,
- connectedComputeConsolidationData.getNodeTemplateId());
- return getNewPortNodeTemplateId(nodeTemplateId, connectedComputeNodeTemplate.getType(),
- connectedComputeConsolidationData);
- default:
- return null;
+ UnifiedCompositionEntity compositionEntity,
+ TranslationContext context) {
+ String newNodeTemplateId = nodeTemplateId;
+ String nodeTemplateIdGeneratorImpl = unifiedSubstitutionNodeTemplateIdGeneratorImplMap.get(compositionEntity);
+ UnifiedSubstitutionNodeTemplateIdGenerator nodeTemplateIdGenerator =
+ CommonMethods.newInstance(nodeTemplateIdGeneratorImpl, UnifiedSubstitutionNodeTemplateIdGenerator.class);
+ UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(serviceTemplate, null,
+ unifiedCompositionDataList, context);
+ Optional<String> generatedNodeTemplateId = nodeTemplateIdGenerator.generate(unifiedCompositionTo, nodeTemplateId);
+ if (generatedNodeTemplateId.isPresent()) {
+ newNodeTemplateId = generatedNodeTemplateId.get();
}
+ return newNodeTemplateId;
}
private String getNewNodeTemplateId(String origNodeTemplateId,
@@ -2413,11 +2563,11 @@ public class UnifiedCompositionService {
TranslationContext context) {
ConsolidationData consolidationData = context.getConsolidationData();
- if (isIdIsOfExpectedType(origNodeTemplateId, UnifiedCompositionEntity.Port,
+ if (isIdIsOfExpectedType(origNodeTemplateId, UnifiedCompositionEntity.PORT,
serviceTemplateFileName,
context)) {
return handleIdOfPort(origNodeTemplateId, serviceTemplateFileName, consolidationData);
- } else if (isIdIsOfExpectedType(origNodeTemplateId, UnifiedCompositionEntity.Compute,
+ } else if (isIdIsOfExpectedType(origNodeTemplateId, COMPUTE,
serviceTemplateFileName, context)) {
NodeTemplate nodeTemplate =
getComputeNodeTemplate(origNodeTemplateId, serviceTemplate, context);
@@ -2427,21 +2577,6 @@ public class UnifiedCompositionService {
return null;
}
- private ComputeTemplateConsolidationData getConnectedComputeConsolidationData(
- List<UnifiedCompositionData> unifiedCompositionDataList,
- String portNodeTemplateId) {
- for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
- Collection<List<String>> portsCollection =
- unifiedCompositionData.getComputeTemplateConsolidationData().getPorts().values();
- for (List<String> portIdList : portsCollection) {
- if (portIdList.contains(portNodeTemplateId)) {
- return unifiedCompositionData.getComputeTemplateConsolidationData();
- }
- }
- }
- return null;
- }
-
private Object getClonedPropertyValue(Map.Entry<String, Object> propertyEntry) {
if (propertyEntry.getValue() instanceof Map) {
return getClonedObject(propertyEntry.getValue(), Map.class);
@@ -2454,23 +2589,49 @@ public class UnifiedCompositionService {
private String getParameterId(String nodeTemplateId, NodeTemplate nodeTemplate, String propertyId,
UnifiedCompositionEntity unifiedCompositionEntity,
- ComputeTemplateConsolidationData computeTemplateConsolidationData) {
+ ComputeTemplateConsolidationData
+ computeTemplateConsolidationData,
+ PortTemplateConsolidationData portTemplateConsolidationData) {
+ String paramterId = propertyId;
switch (unifiedCompositionEntity) {
- case Compute:
- return UnifiedCompositionEntity.Compute.name().toLowerCase() + "_"
+ case COMPUTE:
+ paramterId = COMPUTE.getDisplayName().toLowerCase() + "_"
+ getComputeTypeSuffix(nodeTemplate.getType()) + "_" + propertyId;
- case Port:
+ break;
+ case PORT:
String portType = ConsolidationDataUtil.getPortType(nodeTemplateId);
if (Objects.isNull(computeTemplateConsolidationData)
|| computeTemplateConsolidationData.getPorts().get(portType).size() > 1) {
- return UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + nodeTemplateId + "_"
+ paramterId = UnifiedCompositionEntity.PORT.getDisplayName().toLowerCase() + "_"
+ + nodeTemplateId + "_" + propertyId;
+ } else {
+ paramterId = UnifiedCompositionEntity.PORT.getDisplayName().toLowerCase() + "_" + portType + "_"
+ propertyId;
}
- return UnifiedCompositionEntity.Port.name().toLowerCase() + "_" + portType + "_"
- + propertyId;
+ break;
+ case SUB_INTERFACE:
+ String subInterfaceType = getSubInterfaceTypeSuffix(nodeTemplate.getType());
+ if (Objects.isNull(portTemplateConsolidationData)
+ || isSubInterfaceNodeTemplateIdParameter(portTemplateConsolidationData, nodeTemplate)) {
+ paramterId = UnifiedCompositionEntity.SUB_INTERFACE.getDisplayName().toLowerCase() + "_"
+ + nodeTemplateId + "_" + propertyId;
+ } else {
+ paramterId = UnifiedCompositionEntity.SUB_INTERFACE.getDisplayName().toLowerCase() + "_"
+ + subInterfaceType + "_" + propertyId;
+ }
+ break;
default:
- return propertyId;
+ break;
}
+ return paramterId;
+ }
+
+ private boolean isSubInterfaceNodeTemplateIdParameter(PortTemplateConsolidationData portTemplateConsolidationData,
+ NodeTemplate nodeTemplate) {
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ portTemplateConsolidationData.getSubInterfaceConsolidationData(nodeTemplate.getType());
+ return (Objects.nonNull(subInterfaceTemplateConsolidationDataList)
+ && subInterfaceTemplateConsolidationDataList.size() > 1) ;
}
private void removeConnectivityOut(EntityConsolidationData entityConsolidationData,
@@ -2541,15 +2702,10 @@ public class UnifiedCompositionService {
private Optional<Map<String, Object>> createAbstractSubstitutionProperties(
ServiceTemplate serviceTemplate,
- ServiceTemplate substitutionServiceTemplate,
+ Map<String, ParameterDefinition> substitutionTemplateInputs,
List<UnifiedCompositionData> unifiedCompositionDataList,
TranslationContext context) {
Map<String, Object> abstractSubstituteProperties = new LinkedHashMap<>();
- Map<String, ParameterDefinition> substitutionTemplateInputs = DataModelUtil
- .getInputParameters(substitutionServiceTemplate);
- if (substitutionTemplateInputs == null) {
- return Optional.empty();
- }
//Since all the computes have the same type fetching the type from the first entry
NodeTemplate firstComputeNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
unifiedCompositionDataList.get(0)
@@ -2564,14 +2720,14 @@ public class UnifiedCompositionService {
if (!inputType.equalsIgnoreCase(PropertyType.LIST.getDisplayName())) {
if (isIdenticalValueProperty(
- substitutionTemplateInputName, inputUnifiedCompositionEntity, context)) {
+ substitutionTemplateInputName, inputUnifiedCompositionEntity)) {
//Handle identical value properties
Optional<String> identicalValuePropertyName =
getIdenticalValuePropertyName(substitutionTemplateInputName,
- inputUnifiedCompositionEntity, context);
+ inputUnifiedCompositionEntity);
identicalValuePropertyName.ifPresent(propertyName -> updateIdenticalPropertyValue(propertyName,
- substitutionTemplateInputName, computeType, inputUnifiedCompositionEntity,
+ substitutionTemplateInputName, inputUnifiedCompositionEntity,
unifiedCompositionDataList.get(0), serviceTemplate, abstractSubstituteProperties,
context));
}
@@ -2580,59 +2736,110 @@ public class UnifiedCompositionService {
//Check if the input is of type compute or port
List<Object> abstractPropertyValue = new ArrayList<>();
- Object propertyValue = null;
switch (inputUnifiedCompositionEntity) {
- case Compute:
- for (UnifiedCompositionData compositionData : unifiedCompositionDataList) {
- ComputeTemplateConsolidationData computeTemplateConsolidationData =
- compositionData.getComputeTemplateConsolidationData();
- propertyValue = getComputePropertyValue(substitutionTemplateInputName,
- serviceTemplate, computeTemplateConsolidationData);
- if (!(propertyValue instanceof Optional)) {
- abstractPropertyValue.add(propertyValue);
- }
- }
+ case COMPUTE:
+ createAbstractComputeProperties(unifiedCompositionDataList,
+ substitutionTemplateInputName, serviceTemplate, abstractPropertyValue);
break;
- case Port:
- for (UnifiedCompositionData compositionData : unifiedCompositionDataList) {
- List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
- getPortTemplateConsolidationDataList(compositionData);
- //Get the input type for this input whether it is of type
- // port_<port_node_template_id>_<property_name> or port_<port_type>_<property_name>
- PortInputType portInputType = getPortInputType(substitutionTemplateInputName,
- compositionData);
- for (PortTemplateConsolidationData portTemplateConsolidationData :
- portTemplateConsolidationDataList) {
- //Get the port property value
- String portNodeTemplateId = portTemplateConsolidationData.getNodeTemplateId();
- propertyValue = getPortPropertyValue(substitutionTemplateInputName,
- computeType, portInputType, serviceTemplate,
- portNodeTemplateId);
- //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)) {
- abstractPropertyValue.add(propertyValue);
- }
- }
- }
- }
+ case PORT:
+ createAbstractPortProperties(unifiedCompositionDataList, substitutionTemplateInputName,
+ computeType, serviceTemplate, abstractPropertyValue);
+ break;
+ case SUB_INTERFACE:
+ createAbstractSubInterfaceProperties(unifiedCompositionDataList,
+ substitutionTemplateInputName, serviceTemplate, abstractPropertyValue);
break;
default:
break;
}
//Add the property only if it has at least one non-null value
- for (Object val : abstractPropertyValue) {
- if (Objects.nonNull(val)) {
- updateAbstractPropertyValue(substitutionTemplateInputName, inputParameterDefinition,
- abstractPropertyValue, abstractSubstituteProperties);
- break;
- }
+ if (abstractPropertyValue.stream().anyMatch(Objects::nonNull)) {
+ updateAbstractPropertyValue(substitutionTemplateInputName, inputParameterDefinition,
+ abstractPropertyValue, abstractSubstituteProperties);
}
}
return Optional.ofNullable(abstractSubstituteProperties);
}
+ private void createAbstractComputeProperties(List<UnifiedCompositionData>
+ unifiedCompositionDataList,
+ String substitutionTemplateInputName,
+ ServiceTemplate serviceTemplate,
+ List<Object> abstractPropertyValue) {
+ for (UnifiedCompositionData compositionData : unifiedCompositionDataList) {
+ ComputeTemplateConsolidationData computeTemplateConsolidationData =
+ compositionData.getComputeTemplateConsolidationData();
+ Object propertyValue = getComputePropertyValue(substitutionTemplateInputName,
+ serviceTemplate, computeTemplateConsolidationData);
+ if (!(propertyValue instanceof Optional)) {
+ abstractPropertyValue.add(propertyValue);
+ }
+ }
+ }
+
+ private void createAbstractPortProperties(List<UnifiedCompositionData>
+ unifiedCompositionDataList,
+ String substitutionTemplateInputName,
+ String computeType,
+ ServiceTemplate serviceTemplate,
+ List<Object> abstractPropertyValue) {
+ for (UnifiedCompositionData compositionData : unifiedCompositionDataList) {
+ List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
+ getPortTemplateConsolidationDataList(compositionData);
+ //Get the input type for this input whether it is of type
+ // port_<port_node_template_id>_<property_name> or port_<port_type>_<property_name>
+ PropertyInputType portInputType = getPortInputType(substitutionTemplateInputName,
+ compositionData);
+ for (PortTemplateConsolidationData portTemplateConsolidationData :
+ portTemplateConsolidationDataList) {
+ //Get the port property value
+ String portNodeTemplateId = portTemplateConsolidationData.getNodeTemplateId();
+ Object propertyValue = getPortPropertyValue(substitutionTemplateInputName,
+ computeType, portInputType, serviceTemplate,
+ portNodeTemplateId);
+ //If the value object is Optional.empty it implies that the property name was not
+ // found in the input name
+ if (!(propertyValue instanceof Optional)) {
+ abstractPropertyValue.add(propertyValue);
+ }
+ }
+ }
+ }
+
+ private void createAbstractSubInterfaceProperties(List<UnifiedCompositionData>
+ unifiedCompositionDataList,
+ String substitutionTemplateInputName,
+ ServiceTemplate serviceTemplate,
+ List<Object> abstractPropertyValue) {
+ for (UnifiedCompositionData compositionData : unifiedCompositionDataList) {
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ getSubInterfaceTemplateConsolidationDataList(compositionData);
+ //Get the input type for this input whether it is of type
+ // subInterface_<subinterface_node_template_id>_<property_name> or
+ // subInterface_<subinterface_type>_<property_name>
+ PropertyInputType subInterfaceInputType =
+ getSubInterfaceInputType(substitutionTemplateInputName, compositionData);
+ for (SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData :
+ subInterfaceTemplateConsolidationDataList) {
+ //Get the subInterface property value
+ String subInterfaceNodeTemplateId = subInterfaceTemplateConsolidationData
+ .getNodeTemplateId();
+ NodeTemplate subInterfaceNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
+ subInterfaceNodeTemplateId);
+ String subInterfaceType = getSubInterfaceTypeSuffix(subInterfaceNodeTemplate
+ .getType());
+ Object propertyValue = getSubInterfacePropertyValue(substitutionTemplateInputName,
+ subInterfaceType, subInterfaceInputType, serviceTemplate,
+ subInterfaceNodeTemplateId);
+ //If the value object is Optional.empty it implies that the property name was not
+ // found in the input name
+ if (!(propertyValue instanceof Optional)) {
+ abstractPropertyValue.add(propertyValue);
+ }
+ }
+ }
+ }
+
private void updateAbstractPropertyValue(String substitutionTemplateInputName,
ParameterDefinition parameterDefinition,
List<Object> abstractPropertyValue,
@@ -2642,10 +2849,7 @@ public class UnifiedCompositionService {
} else {
Object propertyValue = abstractPropertyValue.get(0);
String entrySchemaType = parameterDefinition.getEntry_schema().getType();
- if (entrySchemaType.equalsIgnoreCase(PropertyType.STRING.getDisplayName())
- || entrySchemaType.equalsIgnoreCase(PropertyType.INTEGER.getDisplayName())
- || entrySchemaType.equalsIgnoreCase(PropertyType.FLOAT.getDisplayName())
- || entrySchemaType.equalsIgnoreCase(PropertyType.BOOLEAN.getDisplayName())
+ if (PropertyType.getSimplePropertyTypes().contains(entrySchemaType.toLowerCase())
|| entrySchemaType.equals(PropertyTypeExt.JSON.getDisplayName())) {
abstractSubstituteProperties.put(substitutionTemplateInputName, abstractPropertyValue);
} else {
@@ -2656,7 +2860,6 @@ public class UnifiedCompositionService {
private void updateIdenticalPropertyValue(String identicalValuePropertyName,
String substitutionTemplateInputName,
- String computeType,
UnifiedCompositionEntity entity,
UnifiedCompositionData unifiedCompositionData,
ServiceTemplate serviceTemplate,
@@ -2678,73 +2881,95 @@ public class UnifiedCompositionService {
private Optional<Object> getIdenticalPropertyValueByType(String identicalValuePropertyName,
String substitutionTemplateInputName,
UnifiedCompositionEntity entity,
- UnifiedCompositionData unifiedCompositionData,
+ UnifiedCompositionData
+ unifiedCompositionData,
ServiceTemplate serviceTemplate,
TranslationContext context) {
ComputeTemplateConsolidationData computeTemplateConsolidationData =
unifiedCompositionData.getComputeTemplateConsolidationData();
- Optional<Object> computeIdenticalPropertyValue;
+ Optional<Object> identicalPropertyValue = Optional.empty();
switch (entity) {
- case Compute:
- computeIdenticalPropertyValue =
+ case COMPUTE:
+ identicalPropertyValue =
getIdenticalPropertyValue(identicalValuePropertyName, serviceTemplate,
- entity, computeTemplateConsolidationData, context);
- return computeIdenticalPropertyValue.isPresent() ? Optional.of(
- computeIdenticalPropertyValue.get()) : Optional.empty();
-
- case Other:
- computeIdenticalPropertyValue =
+ computeTemplateConsolidationData, context);
+ break;
+ case OTHER:
+ identicalPropertyValue =
getIdenticalPropertyValue(identicalValuePropertyName, serviceTemplate,
- entity, computeTemplateConsolidationData, context);
- return computeIdenticalPropertyValue.isPresent() ? Optional.of(
- computeIdenticalPropertyValue.get()) : Optional.empty();
-
- case Port:
+ computeTemplateConsolidationData, context);
+ break;
+ case PORT:
List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
unifiedCompositionData.getPortTemplateConsolidationDataList();
for (PortTemplateConsolidationData portTemplateConsolidationData : portTemplateConsolidationDataList) {
String portType =
ConsolidationDataUtil.getPortType(portTemplateConsolidationData.getNodeTemplateId());
if (substitutionTemplateInputName.contains(portType)) {
- return getIdenticalPropertyValue(identicalValuePropertyName, serviceTemplate,
- entity, portTemplateConsolidationData, context);
+ return getIdenticalPropertyValue(identicalValuePropertyName,
+ serviceTemplate, portTemplateConsolidationData, context);
}
}
+ break;
+ default:
+ break;
}
-
- return Optional.empty();
-
+ return identicalPropertyValue;
}
- private PortInputType getPortInputType(String inputName,
- UnifiedCompositionData unifiedCompositionData) {
- String portInputPrefix = UnifiedCompositionEntity.Port.name().toLowerCase() + "_";
+ private PropertyInputType getPortInputType(String inputName,
+ UnifiedCompositionData unifiedCompositionData) {
+ String portInputPrefix = UnifiedCompositionEntity.PORT.getDisplayName().toLowerCase() + "_";
ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData
.getComputeTemplateConsolidationData();
List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
getPortTemplateConsolidationDataList(unifiedCompositionData);
//Scan the available port node template ids to check if the input is of the form
// "port_<port_node_template_id>_<property_name>"
- for (PortTemplateConsolidationData portTemplateConsolidationData :
- portTemplateConsolidationDataList) {
- String portNodeTemplateId = portTemplateConsolidationData.getNodeTemplateId();
- String portNodeTemplateIdPrefix = portInputPrefix + portNodeTemplateId;
- if (inputName.startsWith(portNodeTemplateIdPrefix)) {
- return PortInputType.NodeTemplateId;
- }
+ if (portTemplateConsolidationDataList.stream().map(EntityConsolidationData::getNodeTemplateId)
+ .map(portNodeTemplateId -> portInputPrefix + portNodeTemplateId).anyMatch(inputName::startsWith)) {
+ return PropertyInputType.NODE_TEMPLATE_ID;
}
//Check whether the input is of the form "port_<port_type>_<property_name>"
Set<String> portTypes = computeTemplateConsolidationData.getPorts().keySet();
- for (String portType : portTypes) {
- String expectedPortTypeSusbtring = portInputPrefix + portType + "_";
- if (inputName.startsWith(expectedPortTypeSusbtring)) {
- return PortInputType.PortType;
- }
+ if (portTypes.stream().map(portType -> portInputPrefix + portType + "_").anyMatch(inputName::startsWith)) {
+ return PropertyInputType.TYPE;
+ }
+ return PropertyInputType.OTHER;
+ }
+
+ private PropertyInputType getSubInterfaceInputType(String inputName,
+ UnifiedCompositionData unifiedCompositionData) {
+ String subInterfaceInputPrefix = UnifiedCompositionEntity.SUB_INTERFACE.getDisplayName().toLowerCase()
+ + "_";
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ getSubInterfaceTemplateConsolidationDataList(unifiedCompositionData);
+ //Scan the available port node template ids to check if the input is of the form
+ // "subinterface_<subinterface_node_template_id>_<property_name>"
+ if (subInterfaceTemplateConsolidationDataList.stream().map(EntityConsolidationData::getNodeTemplateId)
+ .map(subInterfaceNodeTemplateId -> subInterfaceInputPrefix
+ + subInterfaceNodeTemplateId)
+ .anyMatch(inputName::startsWith)) {
+ return PropertyInputType.NODE_TEMPLATE_ID;
+ }
+ //Check whether the input is of the form "subinterface_<subinterface_type>_<property_name>"
+ Set<String> subInterfaceTypes = new HashSet<>();
+ List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
+ getPortTemplateConsolidationDataList(unifiedCompositionData);
+ for (PortTemplateConsolidationData portTemplateConsolidationData :
+ portTemplateConsolidationDataList) {
+ subInterfaceTypes.addAll(portTemplateConsolidationData.getAllSubInterfaceNodeTypes());
}
- return PortInputType.Other;
+
+ if (subInterfaceTypes.stream().map(UnifiedCompositionUtil::getSubInterfaceTypeSuffix)
+ .map(subInterfaceTypeSuffix -> subInterfaceInputPrefix + subInterfaceTypeSuffix + "_")
+ .anyMatch(inputName::startsWith)) {
+ return PropertyInputType.TYPE;
+ }
+ return PropertyInputType.OTHER;
}
private void cleanServiceTemplate(ServiceTemplate serviceTemplate,
@@ -2768,8 +2993,8 @@ public class UnifiedCompositionService {
context.addCleanedNodeTemplate(ToscaUtil.getServiceTemplateFileName(serviceTemplate),
nodeTemplateIdToRemove,
entity.getClass() == ComputeTemplateConsolidationData.class
- ? UnifiedCompositionEntity.Compute
- : UnifiedCompositionEntity.Port,
+ ? COMPUTE
+ : UnifiedCompositionEntity.PORT,
nodeTemplateToRemove);
}
@@ -2795,7 +3020,6 @@ public class UnifiedCompositionService {
Map<String, GroupDefinition> groups = serviceTemplate.getTopology_template()
.getGroups() == null ? new HashMap<>()
: serviceTemplate.getTopology_template().getGroups();
- String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
String nodeRelatedAbstractNodeId =
context.getUnifiedAbstractNodeTemplateId(serviceTemplate, entity.getNodeTemplateId());
@@ -2822,25 +3046,6 @@ public class UnifiedCompositionService {
groupEntry.getValue().setMembers(members);
}
- private void updateSubstitutableNodeTemplateRequirements(ServiceTemplate serviceTemplate,
- ServiceTemplate substitutionServiceTemplate) {
- if (Objects.isNull(substitutionServiceTemplate.getTopology_template())) {
- return;
- }
-
- SubstitutionMapping substitution_mappings =
- substitutionServiceTemplate.getTopology_template().getSubstitution_mappings();
-
- if (Objects.isNull(substitution_mappings)) {
- return;
- }
-
- String node_type = substitution_mappings.getNode_type();
- Map<String, List<String>> requirements = substitution_mappings.getRequirements();
-
-
- }
-
private void updateSubstitutionMapping(ServiceTemplate serviceTemplate,
TranslationContext context) {
SubstitutionMapping substitutionMappings =
@@ -2938,118 +3143,6 @@ public class UnifiedCompositionService {
.ifPresent(unifiedNestedNodeTypeIdVal -> updateNestedNodeTemplate(
unifiedNestedNodeTypeIdVal, nestedNodeTemplateId, nestedNodeTemplate,
mainServiceTemplate, context));
-
- //updateNestedNodeTemplateRequirement(nestedNodeTemplateId, mainServiceTemplate,
- //nestedServiceTemplate, context);
-
- //updateNodeTemplateRequirements(nestedNodeTemplateId, mainServiceTemplate,
- //nestedServiceTemplate, context);
-
- //updateNodeDependencyRequirement(mainServiceTemplate, context, nestedNodeTemplate);
- }
-
- private void updateNestedNodeTemplateRequirement(String nestedNodeTemplateId,
- ServiceTemplate mainServiceTemplate,
- ServiceTemplate nestedServiceTemplate,
- TranslationContext context) {
- NestedTemplateConsolidationData nestedTemplateConsolidationData =
- ConsolidationDataUtil
- .getNestedTemplateConsolidationData(context, mainServiceTemplate, null,
- nestedNodeTemplateId);
-
- FileComputeConsolidationData fileComputeConsolidationData =
- context.getConsolidationData().getComputeConsolidationData().getFileComputeConsolidationData
- (ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate));
-
-
- TypeComputeConsolidationData compute =
- fileComputeConsolidationData.getAllTypeComputeConsolidationData().iterator().next();
-
- if (Objects.isNull(nestedTemplateConsolidationData)) {
- return;
- }
-
- Map<String, List<RequirementAssignmentData>> nodesConnectedOut =
- nestedTemplateConsolidationData.getNodesConnectedOut();
-
- if (MapUtils.isEmpty(nodesConnectedOut)) {
- return;
- }
-
- updateRequirements(nestedNodeTemplateId, mainServiceTemplate, nestedServiceTemplate, compute,
- nodesConnectedOut);
- }
-
- private void updateRequirements(String nestedNodeTemplateId, ServiceTemplate mainServiceTemplate,
- ServiceTemplate nestedServiceTemplate,
- TypeComputeConsolidationData compute,
- Map<String, List<RequirementAssignmentData>> nodesConnectedOut) {
- NodeTemplate nodeTemplate =
- DataModelUtil.getNodeTemplate(mainServiceTemplate, nestedNodeTemplateId);
-
- for (List<RequirementAssignmentData> requirementAssignmentDataList : nodesConnectedOut
- .values()) {
- for (RequirementAssignmentData data : requirementAssignmentDataList) {
- if (!data.getRequirementId().equals("dependency")) {
- DataModelUtil.addRequirementAssignment(nodeTemplate, data.getRequirementId(),
- cloneRequirementAssignment(data.getRequirementAssignment()));
- updateRequirementInSubMapping(nestedServiceTemplate, compute, data);
-
- }
- }
- }
-
- removeUneccessaryRequirements(nodeTemplate);
- }
-
- private void updateRequirementInSubMapping(ServiceTemplate nestedServiceTemplate,
- TypeComputeConsolidationData compute,
- RequirementAssignmentData data) {
- List<String> subMappingRequirement =
- Arrays.asList(compute.getAllComputeNodeTemplateIds().iterator().next(), "dependency");
- DataModelUtil.addSubstitutionMappingReq(nestedServiceTemplate, data.getRequirementId(),
- subMappingRequirement);
- }
-
-
- private RequirementAssignment cloneRequirementAssignment(RequirementAssignment reqToClone) {
- RequirementAssignment requirementAssignment = new RequirementAssignment();
-
- requirementAssignment.setRelationship(reqToClone.getRelationship());
- requirementAssignment.setNode(reqToClone.getNode());
- requirementAssignment.setCapability(reqToClone.getCapability());
-
- return requirementAssignment;
- }
-
- private void removeUneccessaryRequirements(NodeTemplate nodeTemplate) {
- List<Map<String, RequirementAssignment>> reqsToRemove = new ArrayList<>();
- for (Map<String, RequirementAssignment> requirementDefinitionMap : nodeTemplate
- .getRequirements()) {
- if (requirementDefinitionMap.containsKey("dependency")) {
- reqsToRemove.add(requirementDefinitionMap);
- }
- }
-
- nodeTemplate.getRequirements().removeAll(reqsToRemove);
- }
-
- private RequirementAssignment getRequirementAssignmentFromDefinition(
- Map.Entry<String, RequirementDefinition> requirementDefinitionEntry) {
-
- RequirementAssignment requirementAssignment = new RequirementAssignment();
- if (requirementDefinitionEntry.getValue() instanceof RequirementDefinition) {
- requirementAssignment.setCapability(requirementDefinitionEntry.getValue().getCapability());
- requirementAssignment.setNode(requirementDefinitionEntry.getValue().getNode());
- requirementAssignment
- .setRelationship(requirementDefinitionEntry.getValue().getRelationship());
- } else if (requirementDefinitionEntry.getValue() instanceof Map) {
- Map<String, Object> reqAsMap = (Map<String, Object>) requirementDefinitionEntry.getValue();
- requirementAssignment.setCapability((String) reqAsMap.get("capability"));
- requirementAssignment.setNode((String) reqAsMap.get("node"));
- requirementAssignment.setRelationship((String) reqAsMap.get("relationship"));
- }
- return requirementAssignment;
}
private void updateNestedNodeTemplateProperties(ServiceTemplate nestedServiceTemplate,
@@ -3148,8 +3241,7 @@ public class UnifiedCompositionService {
}
}
- private Optional<String> getNewNestedNodeTypeId(ServiceTemplate mainServiceTemplate,
- ServiceTemplate nestedServiceTemplate,
+ private Optional<String> getNewNestedNodeTypeId(ServiceTemplate nestedServiceTemplate,
TranslationContext context) {
FileComputeConsolidationData fileComputeConsolidationData =
context.getConsolidationData().getComputeConsolidationData()
@@ -3168,7 +3260,7 @@ public class UnifiedCompositionService {
FileComputeConsolidationData fileComputeConsolidationData) {
List<TypeComputeConsolidationData> typeComputeConsolidationDatas =
new ArrayList<>(fileComputeConsolidationData.getAllTypeComputeConsolidationData());
- if (typeComputeConsolidationDatas.size() == 0) {
+ if (typeComputeConsolidationDatas.isEmpty()) {
return null;
} else {
String computeNodeType = fileComputeConsolidationData.getAllComputeTypes().iterator().next();
@@ -3300,15 +3392,16 @@ public class UnifiedCompositionService {
private Object getPortPropertyValue(String inputName,
String computeType,
- PortInputType portInputType,
+ PropertyInputType portInputType,
ServiceTemplate serviceTemplate,
String portNodeTemplateId) {
//Get the input prefix to extract the property name from the input name
- String portInputPrefix = getPortInputPrefix(
- portNodeTemplateId, portInputType);
+ String portType = ConsolidationDataUtil.getPortType(portNodeTemplateId);
+ String portInputPrefix = getPropertyInputPrefix(
+ portNodeTemplateId, portType, portInputType, UnifiedCompositionEntity.PORT);
//Get the property name from the input
Optional<String> propertyName = getPropertyNameFromInput(inputName,
- UnifiedCompositionEntity.Port, computeType, portInputPrefix);
+ UnifiedCompositionEntity.PORT, computeType, portInputPrefix);
//Get the property value from the node template
if (propertyName.isPresent()) {
NodeTemplate portNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
@@ -3320,27 +3413,6 @@ public class UnifiedCompositionService {
return Optional.empty();
}
- private Optional<String> getPortTypeFromInput(
- String inputName,
- String portNodeTemplateId,
- ComputeTemplateConsolidationData computeTemplateConsolidationData) {
- String portTypeFromInput = null;
- String portInputPrefix = UnifiedCompositionEntity.Port.name().toLowerCase() + "_";
- String portNodeTemplateIdPrefix = portInputPrefix + portNodeTemplateId;
- if (inputName.startsWith(portNodeTemplateIdPrefix)) {
- return Optional.empty();
- }
- Set<String> portTypes = computeTemplateConsolidationData.getPorts().keySet();
- for (String portType : portTypes) {
- String expectedPortTypeSusbtring = "_" + portType + "_";
- if (inputName.contains(expectedPortTypeSusbtring)) {
- portTypeFromInput = portType;
- break;
- }
- }
- return Optional.ofNullable(portTypeFromInput);
- }
-
private Object getComputePropertyValue(
String inputName,
ServiceTemplate serviceTemplate,
@@ -3349,16 +3421,37 @@ public class UnifiedCompositionService {
computeTemplateConsolidationData.getNodeTemplateId());
String nodeType = getComputeTypeSuffix(nodeTemplate.getType());
Optional<String> propertyName =
- getPropertyNameFromInput(inputName, UnifiedCompositionEntity.Compute, nodeType, null);
+ getPropertyNameFromInput(inputName, COMPUTE, nodeType, null);
if (propertyName.isPresent()) {
return getPropertyValueFromNodeTemplate(propertyName.get(), nodeTemplate);
}
return Optional.empty();
}
+ private Object getSubInterfacePropertyValue(String inputName,
+ String subInterfaceTypeSuffix,
+ PropertyInputType propertyInputType,
+ ServiceTemplate serviceTemplate,
+ String subInterfaceNodeTemplateId) {
+ //Get the input prefix to extract the property name from the input name
+ String propertyInputPrefix = getPropertyInputPrefix(subInterfaceNodeTemplateId,
+ subInterfaceTypeSuffix, propertyInputType, UnifiedCompositionEntity.SUB_INTERFACE);
+ //Get the property name from the input
+ Optional<String> propertyName = getPropertyNameFromInput(inputName,
+ UnifiedCompositionEntity.SUB_INTERFACE, null, propertyInputPrefix);
+ //Get the property value from the node template
+ if (propertyName.isPresent()) {
+ NodeTemplate subInterfaceNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
+ subInterfaceNodeTemplateId);
+ if (Objects.nonNull(subInterfaceNodeTemplate)) {
+ return getPropertyValueFromNodeTemplate(propertyName.get(), subInterfaceNodeTemplate);
+ }
+ }
+ return Optional.empty();
+ }
+
private Optional<Object> getIdenticalPropertyValue(String identicalValuePropertyName,
ServiceTemplate serviceTemplate,
- UnifiedCompositionEntity unifiedCompositionEntity,
EntityConsolidationData entity,
TranslationContext context) {
NodeTemplate nodeTemplate =
@@ -3372,12 +3465,17 @@ public class UnifiedCompositionService {
}
private UnifiedCompositionEntity getInputCompositionEntity(String inputName) {
- UnifiedCompositionEntity inputCompositionEntity = UnifiedCompositionEntity.Other;
- String inputType = inputName.substring(0, inputName.indexOf('_'));
- if (inputType.equals(UnifiedCompositionEntity.Compute.name().toLowerCase())) {
- inputCompositionEntity = UnifiedCompositionEntity.Compute;
- } else if (inputType.equals(UnifiedCompositionEntity.Port.name().toLowerCase())) {
- inputCompositionEntity = UnifiedCompositionEntity.Port;
+ UnifiedCompositionEntity inputCompositionEntity = UnifiedCompositionEntity.OTHER;
+ if (inputName.indexOf('_') != -1) {
+ String inputType = inputName.substring(0, inputName.indexOf('_'));
+ if (inputType.equalsIgnoreCase(COMPUTE.getDisplayName())) {
+ inputCompositionEntity = COMPUTE;
+ } else if (inputType.equalsIgnoreCase(UnifiedCompositionEntity.PORT.getDisplayName())) {
+ inputCompositionEntity = UnifiedCompositionEntity.PORT;
+ } else if (inputType.equalsIgnoreCase(UnifiedCompositionEntity.SUB_INTERFACE
+ .getDisplayName())) {
+ inputCompositionEntity = UnifiedCompositionEntity.SUB_INTERFACE;
+ }
}
return inputCompositionEntity;
}
@@ -3385,16 +3483,17 @@ public class UnifiedCompositionService {
private Optional<String> getPropertyNameFromInput(
String inputName,
UnifiedCompositionEntity compositionEntity,
- String computeType, String portInputPrefix) {
+ String entityType, String propertyInputPrefix) {
String propertyName = null;
switch (compositionEntity) {
- case Compute:
- propertyName = inputName.substring(inputName.lastIndexOf(computeType)
- + computeType.length() + 1);
+ case COMPUTE:
+ propertyName = inputName.substring(inputName.lastIndexOf(entityType)
+ + entityType.length() + 1);
break;
- case Port:
- if (inputName.startsWith(portInputPrefix)) {
- propertyName = inputName.split(portInputPrefix)[1];
+ case PORT:
+ case SUB_INTERFACE:
+ if (inputName.startsWith(propertyInputPrefix)) {
+ propertyName = inputName.split(propertyInputPrefix)[1];
}
break;
default:
@@ -3403,47 +3502,49 @@ public class UnifiedCompositionService {
return Optional.ofNullable(propertyName);
}
- private String getPortInputPrefix(
- String portNodeTemplateId,
- PortInputType portInputType) {
- String portInputPrefix = UnifiedCompositionEntity.Port.name().toLowerCase() + "_";
- String portType = ConsolidationDataUtil.getPortType(portNodeTemplateId);
- if (portInputType == PortInputType.NodeTemplateId) {
- portInputPrefix += portNodeTemplateId + "_";
- } else if (portInputType == PortInputType.PortType) {
- portInputPrefix += portType + "_";
+ private String getPropertyInputPrefix(String nodeTemplateId,
+ String propertyEntityType,
+ PropertyInputType propertyInputType,
+ UnifiedCompositionEntity unifiedCompositionEntity) {
+ String propertyInputPrefix = unifiedCompositionEntity.getDisplayName().toLowerCase() + "_";
+ if (propertyInputType == PropertyInputType.NODE_TEMPLATE_ID) {
+ propertyInputPrefix += nodeTemplateId + "_";
+ } else if (propertyInputType == PropertyInputType.TYPE) {
+ propertyInputPrefix += propertyEntityType + "_";
}
- return portInputPrefix;
+ return propertyInputPrefix;
}
private boolean isIdenticalValueProperty(String inputName,
- UnifiedCompositionEntity unifiedCompositionEntity,
- TranslationContext context) {
+ UnifiedCompositionEntity unifiedCompositionEntity) {
List<String> identicalValuePropertyList =
consolidationService.getPropertiesWithIdenticalVal(unifiedCompositionEntity);
StringBuilder builder = getPropertyValueStringBuilder(unifiedCompositionEntity);
+ if (Objects.isNull(builder)) {
+ return false;
+ }
boolean isMatchingProperty = Pattern.matches(builder.toString(), inputName);
- return (isMatchingProperty
+ return isMatchingProperty
&& isPropertyFromIdenticalValuesList(inputName, unifiedCompositionEntity,
- identicalValuePropertyList));
+ identicalValuePropertyList);
}
private boolean isPropertyFromIdenticalValuesList(String inputName,
UnifiedCompositionEntity unifiedCompositionEntity,
List<String> identicalValuePropertyList) {
switch (unifiedCompositionEntity) {
- case Compute:
+ case COMPUTE:
return identicalValuePropertyList.contains(getIdenticalValuePropertyName(inputName,
- unifiedCompositionEntity, null).get());
+ unifiedCompositionEntity).get());
- case Other:
+ case OTHER:
return identicalValuePropertyList.contains(getIdenticalValuePropertyName(inputName,
- unifiedCompositionEntity, null).get());
+ unifiedCompositionEntity).get());
- case Port:
+ case PORT:
return getPortPropertyNameFromInput(inputName, identicalValuePropertyList).isPresent();
default:
@@ -3465,15 +3566,18 @@ public class UnifiedCompositionService {
UnifiedCompositionEntity unifiedCompositionEntity) {
switch (unifiedCompositionEntity) {
- case Compute:
+ case COMPUTE:
return getComputePropertyValueStringBuilder();
- case Other:
+ case OTHER:
return getComputePropertyValueStringBuilder();
- case Port:
+ case PORT:
return getPortPropertyValueStringBuilder();
+ case SUB_INTERFACE:
+ return getSubInterfacePropertyValueStringBuilder();
+
default:
return null;
}
@@ -3494,17 +3598,24 @@ public class UnifiedCompositionService {
return builder;
}
+ private StringBuilder getSubInterfacePropertyValueStringBuilder() {
+ StringBuilder builder;
+ builder = new StringBuilder(SUB_INTERFACE_PROPERTY_VALUE_PREFIX);
+ builder.append(".+");
+ return builder;
+ }
+
private Optional<String> getIdenticalValuePropertyName(String input,
- UnifiedCompositionEntity unifiedCompositionEntity,
- TranslationContext context) {
+ UnifiedCompositionEntity
+ unifiedCompositionEntity) {
switch (unifiedCompositionEntity) {
- case Compute:
+ case COMPUTE:
return Optional.of(input.split("_")[1]);
- case Other:
+ case OTHER:
return Optional.of(input.split("_")[1]);
- case Port:
+ case PORT:
return getPortPropertyNameFromInput(input, consolidationService
.getPropertiesWithIdenticalVal(unifiedCompositionEntity));
@@ -3533,21 +3644,28 @@ public class UnifiedCompositionService {
if (Objects.nonNull(computeTemplateConsolidationData)) {
consolidationNodeTemplateIdAndType
.put(computeTemplateConsolidationData.getNodeTemplateId(),
- UnifiedCompositionEntity.Compute);
+ COMPUTE);
+ }
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ getSubInterfaceTemplateConsolidationDataList(unifiedCompositionData);
+ for (SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData :
+ subInterfaceTemplateConsolidationDataList) {
+ consolidationNodeTemplateIdAndType.put(subInterfaceTemplateConsolidationData.getNodeTemplateId(),
+ UnifiedCompositionEntity.SUB_INTERFACE);
}
List<PortTemplateConsolidationData> portTemplateConsolidationDataList =
getPortTemplateConsolidationDataList(unifiedCompositionData);
for (PortTemplateConsolidationData portTemplateConsolidationData :
portTemplateConsolidationDataList) {
consolidationNodeTemplateIdAndType.put(portTemplateConsolidationData.getNodeTemplateId(),
- UnifiedCompositionEntity.Port);
+ UnifiedCompositionEntity.PORT);
}
NestedTemplateConsolidationData nestedTemplateConsolidationData =
unifiedCompositionData.getNestedTemplateConsolidationData();
if (Objects.nonNull(nestedTemplateConsolidationData)) {
consolidationNodeTemplateIdAndType
.put(nestedTemplateConsolidationData.getNodeTemplateId(),
- UnifiedCompositionEntity.Nested);
+ UnifiedCompositionEntity.NESTED);
}
}
return consolidationNodeTemplateIdAndType;
@@ -3559,9 +3677,9 @@ public class UnifiedCompositionService {
ArrayList<>() : unifiedCompositionData.getPortTemplateConsolidationDataList();
}
- private enum PortInputType {
- NodeTemplateId,
- PortType,
- Other;
+ private enum PropertyInputType {
+ NODE_TEMPLATE_ID,
+ TYPE,
+ OTHER
}
}