aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
diff options
context:
space:
mode:
authorMichael Lando <ml636r@att.com>2017-06-17 22:40:44 +0300
committerMichael Lando <ml636r@att.com>2017-06-18 07:20:49 +0300
commit4d97d5fac309ce0d66938e5ccd0349e2660d4e23 (patch)
tree3f921054f997d1962fa6f9db9a0119e31a851eea /openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
parent89786d31f266a205857cae0177904c249ac6a512 (diff)
[sdc] update code of sdc
Change-Id: If9f37c80b659cb67b34d18e6c019defecca58b9a Signed-off-by: Michael Lando <ml636r@att.com>
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java')
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java85
1 files changed, 60 insertions, 25 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
index 607dc36c4b..9566e222ff 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
@@ -11,6 +11,7 @@ import org.openecomp.sdc.tosca.services.ToscaConstants;
import org.openecomp.sdc.tosca.services.ToscaUtil;
import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData;
+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.consolidation.ComputeTemplateConsolidationData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
@@ -72,7 +73,7 @@ public class ConsolidationService {
if (preConditionResult) {
boolean consolidationRuleCheckResult =
checkConsolidationRules(serviceTemplate, typeComputeConsolidationData,
- consolidationData);
+ consolidationData, translationContext);
unifiedCompositionService.createUnifiedComposition(
serviceTemplate, null, unifiedCompositionDataList,
@@ -123,9 +124,11 @@ public class ConsolidationService {
private boolean checkConsolidationRules(ServiceTemplate serviceTemplate,
TypeComputeConsolidationData typeComputeConsolidationData,
- ConsolidationData consolidationData) {
+ ConsolidationData consolidationData,
+ TranslationContext context) {
return checkComputeConsolidation(serviceTemplate, typeComputeConsolidationData)
- && checkPortConsolidation(serviceTemplate, typeComputeConsolidationData, consolidationData)
+ && checkPortConsolidation(serviceTemplate, typeComputeConsolidationData,
+ consolidationData, context)
&& !checkGetAttrBetweenEntityConsolidationOfTheSameType(serviceTemplate,
typeComputeConsolidationData, consolidationData);
}
@@ -443,7 +446,7 @@ public class ConsolidationService {
TypeComputeConsolidationData typeComputeConsolidationData) {
List<String> computeNodeTemplateIds =
new ArrayList(typeComputeConsolidationData.getAllComputeNodeTemplateIds());
- List<String> propertiesWithIdenticalVal = getPropertiesWithIdenticalVal();
+ List<String> propertiesWithIdenticalVal = getComputePropertiesWithIdenticalVal();
return arePropertiesSimilarBetweenComputeNodeTemplates(
serviceTemplate, computeNodeTemplateIds, propertiesWithIdenticalVal)
@@ -534,25 +537,27 @@ public class ConsolidationService {
private boolean checkPortConsolidation(ServiceTemplate serviceTemplate,
TypeComputeConsolidationData typeComputeConsolidationData,
- ConsolidationData consolidationData) {
+ ConsolidationData consolidationData,
+ TranslationContext context) {
return isWantedPortPropertiesUsageIsSimilarInAllPorts(serviceTemplate,
- typeComputeConsolidationData)
+ typeComputeConsolidationData, context)
&& checkPortRelations(ToscaUtil.getServiceTemplateFileName(serviceTemplate),
typeComputeConsolidationData, consolidationData);
}
private boolean isWantedPortPropertiesUsageIsSimilarInAllPorts(ServiceTemplate serviceTemplate,
- TypeComputeConsolidationData typeComputeConsolidationData) {
+ TypeComputeConsolidationData typeComputeConsolidationData,
+ TranslationContext context) {
Collection<ComputeTemplateConsolidationData> computeTemplateConsolidationDataCollection =
typeComputeConsolidationData.getAllComputeTemplateConsolidationData();
- List<String> propertiesThatNeedHaveUsage = getPropertiesThatNeedHaveUsage();
+ List<String> propertiesThatNeedHaveUsage = getPortPropertiesWithIdenticalVal(context);
Map<String, Set<String>> portTypeToIds = UnifiedCompositionUtil
.collectAllPortsFromEachTypesFromComputes(computeTemplateConsolidationDataCollection);
for (Set<String> portsIds : portTypeToIds.values()) {
- if (!areAllPortsFromSameTypeHaveTheSameUsageForProperties(
+ if (!areAllPortsFromSameTypeHaveIdenticalValForProperties(
serviceTemplate, portsIds, propertiesThatNeedHaveUsage)) {
return false;
}
@@ -603,7 +608,7 @@ public class ConsolidationService {
return portTemplateConsolidationDataList;
}
- private boolean areAllPortsFromSameTypeHaveTheSameUsageForProperties(
+ private boolean areAllPortsFromSameTypeHaveIdenticalValForProperties(
ServiceTemplate serviceTemplate,
Set<String> portNodeTemplateIds,
List<String> propertiesThatNeedToHaveUsage) {
@@ -611,7 +616,7 @@ public class ConsolidationService {
serviceTemplate.getTopology_template().getNode_templates();
for (String property : propertiesThatNeedToHaveUsage) {
- if (!areAllPortsContainWantedProperty(property, portNodeTemplateIds, nodeTemplates)) {
+ if (!areAllPortsHaveIdenticalValForProperties(property, portNodeTemplateIds, nodeTemplates)) {
return false;
}
}
@@ -619,7 +624,7 @@ public class ConsolidationService {
return true;
}
- private boolean areAllPortsContainWantedProperty(
+ private boolean areAllPortsHaveIdenticalValForProperties(
String propertyToCheck,
Set<String> portNodeTemplateIds,
Map<String, NodeTemplate> nodeTemplates) {
@@ -634,9 +639,6 @@ public class ConsolidationService {
.build());
}
- boolean startingUsageCondition =
- startingPortNodeTemplate.getProperties().containsKey(propertyToCheck);
-
for (int i = 1; i < portNodeTemplateIdList.size(); i++) {
NodeTemplate portNodeTemplate = nodeTemplates.get(portNodeTemplateIdList.get(i));
@@ -647,8 +649,7 @@ public class ConsolidationService {
+ "files").build());
}
- Map<String, Object> properties = portNodeTemplate.getProperties();
- if (!(properties.containsKey(propertyToCheck) == startingUsageCondition)) {
+ if (!isPropertySimilarBetweenNodeTemplates(propertyToCheck, portNodeTemplateIdList, nodeTemplates)) {
return false;
}
}
@@ -666,7 +667,7 @@ public class ConsolidationService {
serviceTemplate.getTopology_template().getNode_templates();
for (String property : propertiesThatNeedToBeSimilar) {
- if (!isPropertySimilarBetweenComputeNodeTemplates(property, computeNodeTemplateIds,
+ if (!isPropertySimilarBetweenNodeTemplates(property, computeNodeTemplateIds,
idToNodeTemplate)) {
return false;
}
@@ -674,17 +675,28 @@ public class ConsolidationService {
return true;
}
- private boolean isPropertySimilarBetweenComputeNodeTemplates(
+ private boolean isPropertySimilarBetweenNodeTemplates(
String propertyToCheck,
- List<String> computeNodeTemplateIds,
+ List<String> entityNodeTemplateIds,
Map<String, NodeTemplate> idToNodeTemplate) {
+
+ NodeTemplate startingNodeTemplate = idToNodeTemplate.get(entityNodeTemplateIds.get(0));
+ boolean propertyExistCondition =
+ isPropertyExistInNodeTemplate(propertyToCheck, startingNodeTemplate);
+
Set<Object> propertiesValues = new HashSet<>();
- for (String computeNodeId : computeNodeTemplateIds) {
- NodeTemplate currentNodeTemplate = idToNodeTemplate.get(computeNodeId);
+ propertiesValues
+ .add(startingNodeTemplate.getProperties().get(propertyToCheck));
+
+ for (int i = 1; i < entityNodeTemplateIds.size(); i++) {
+ NodeTemplate currentNodeTemplate = idToNodeTemplate.get(entityNodeTemplateIds.get(i));
if (Objects.isNull(currentNodeTemplate)) {
throw new CoreException((new ErrorCode.ErrorCodeBuilder())
.withMessage("Resource with id "
- + computeNodeId + " occures more than once in different addOn files").build());
+ + entityNodeTemplateIds.get(i) + " occures more than once in different addOn files").build());
+ }
+ if(propertyExistCondition != isPropertyExistInNodeTemplate(propertyToCheck, currentNodeTemplate)){
+ return false;
}
propertiesValues
.add(currentNodeTemplate.getProperties().get(propertyToCheck));
@@ -693,6 +705,10 @@ public class ConsolidationService {
return propertiesValues.size() == 1;
}
+ private boolean isPropertyExistInNodeTemplate(String propertyToCheck, NodeTemplate nodeTemplate){
+ return !(nodeTemplate.getProperties() == null || nodeTemplate.getProperties().get(propertyToCheck) == null);
+ }
+
public void substitutionServiceTemplateConsolidation(String substituteNodeTemplateId,
ServiceTemplate mainServiceTemplate,
ServiceTemplate substitutionServiceTemplate,
@@ -918,19 +934,38 @@ public class ConsolidationService {
.getPorts().keySet();
}
- List<String> getPropertiesWithIdenticalVal() {
+ public List<String> getPropertiesWithIdenticalVal(UnifiedCompositionEntity entity,
+ TranslationContext context){
+ switch (entity){
+ case Compute:
+ return getComputePropertiesWithIdenticalVal();
+
+ case Other:
+ return getComputePropertiesWithIdenticalVal();
+
+ case Port:
+ return getPortPropertiesWithIdenticalVal(context);
+
+ default:
+ return new ArrayList<>();
+ }
+ }
+
+ private List<String> getComputePropertiesWithIdenticalVal() {
List<String> propertyWithIdenticalValue = new ArrayList<>();
propertyWithIdenticalValue.add(ToscaConstants.COMPUTE_IMAGE);
propertyWithIdenticalValue.add(ToscaConstants.COMPUTE_FLAVOR);
return propertyWithIdenticalValue;
}
- private List<String> getPropertiesThatNeedHaveUsage() {
+ private List<String> getPortPropertiesWithIdenticalVal(TranslationContext context) {
List<String> propertiesThatNeedToHaveUsage = new ArrayList<>();
propertiesThatNeedToHaveUsage.add(ToscaConstants.PORT_FIXED_IPS);
propertiesThatNeedToHaveUsage.add(ToscaConstants.PORT_ALLOWED_ADDRESS_PAIRS);
propertiesThatNeedToHaveUsage.add(ToscaConstants.MAC_ADDRESS);
+ propertiesThatNeedToHaveUsage.addAll(context.getEnrichPortResourceProperties());
+
return propertiesThatNeedToHaveUsage;
}
}