aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/AbstractSubstituteToscaEnricher.java
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/AbstractSubstituteToscaEnricher.java')
-rw-r--r--openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/AbstractSubstituteToscaEnricher.java169
1 files changed, 56 insertions, 113 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/AbstractSubstituteToscaEnricher.java b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/AbstractSubstituteToscaEnricher.java
index a6bb9323ee..7148d1b3d9 100644
--- a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/AbstractSubstituteToscaEnricher.java
+++ b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/AbstractSubstituteToscaEnricher.java
@@ -13,9 +13,29 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.openecomp.sdc.enrichment.impl.tosca;
+import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.HIGH_AVAIL_MODE;
+import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.MANDATORY;
+import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.MAX_INSTANCES;
+import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.MIN_INSTANCES;
+import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.NFC_FUNCTION;
+import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.NFC_NAMING_CODE;
+import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.VFC_CODE;
+import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.VM_TYPE_TAG;
+import static org.openecomp.sdc.tosca.datatypes.ToscaCapabilityType.NATIVE_NODE;
+import static org.openecomp.sdc.tosca.datatypes.ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE;
+import static org.openecomp.sdc.tosca.datatypes.ToscaNodeType.VFC_ABSTRACT_SUBSTITUTE;
+import static org.openecomp.sdc.tosca.datatypes.ToscaRelationshipType.NATIVE_DEPENDS_ON;
+import static org.openecomp.sdc.tosca.services.ToscaConstants.SERVICE_TEMPLATE_FILTER_PROPERTY_NAME;
+import static org.openecomp.sdc.translator.services.heattotosca.Constants.VNF_NODE_TEMPLATE_ID_SUFFIX;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
@@ -33,98 +53,51 @@ import org.openecomp.sdc.tosca.services.ToscaConstants;
import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl;
import org.openecomp.sdc.versioning.dao.types.Version;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-
-import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.HIGH_AVAIL_MODE;
-import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.MANDATORY;
-import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.MAX_INSTANCES;
-import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.MIN_INSTANCES;
-import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.NFC_FUNCTION;
-import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.NFC_NAMING_CODE;
-import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.VFC_CODE;
-import static org.openecomp.sdc.enrichment.impl.util.EnrichmentConstants.VM_TYPE_TAG;
-import static org.openecomp.sdc.tosca.datatypes.ToscaCapabilityType.NATIVE_NODE;
-import static org.openecomp.sdc.tosca.datatypes.ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE;
-import static org.openecomp.sdc.tosca.datatypes.ToscaNodeType.VFC_ABSTRACT_SUBSTITUTE;
-import static org.openecomp.sdc.tosca.datatypes.ToscaRelationshipType.NATIVE_DEPENDS_ON;
-import static org.openecomp.sdc.tosca.services.ToscaConstants.SERVICE_TEMPLATE_FILTER_PROPERTY_NAME;
-import static org.openecomp.sdc.translator.services.heattotosca.Constants.VNF_NODE_TEMPLATE_ID_SUFFIX;
-
public class AbstractSubstituteToscaEnricher {
private ToscaAnalyzerService toscaAnalyzerService;
private ComponentQuestionnaireData componentQuestionnaireData;
-
public Map<String, List<ErrorMessage>> enrich(ToscaServiceModel toscaModel, String vspId, Version version) {
componentQuestionnaireData = getComponentQuestionnaireData();
toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
-
- Map<String, Map<String, Object>> componentProperties =
- componentQuestionnaireData.getPropertiesfromCompQuestionnaire(vspId, version);
-
+ Map<String, Map<String, Object>> componentProperties = componentQuestionnaireData.getPropertiesfromCompQuestionnaire(vspId, version);
final Map<String, List<String>> sourceToTargetDependencies = componentQuestionnaireData
- .populateDependencies(vspId, version,
- componentQuestionnaireData
- .getSourceToTargetComponent());
+ .populateDependencies(vspId, version, componentQuestionnaireData.getSourceToTargetComponent());
Map<String, List<ErrorMessage>> errors = new HashMap<>();
-
- final ServiceTemplate serviceTemplate =
- toscaModel.getServiceTemplates().get(toscaModel.getEntryDefinitionServiceTemplate());
-
+ final ServiceTemplate serviceTemplate = toscaModel.getServiceTemplates().get(toscaModel.getEntryDefinitionServiceTemplate());
if (serviceTemplate == null) {
return errors;
}
-
final TopologyTemplate topologyTemplate = serviceTemplate.getTopology_template();
if (topologyTemplate == null) {
return errors;
}
-
final Map<String, NodeTemplate> nodeTemplates = serviceTemplate.getTopology_template().getNode_templates();
if (nodeTemplates == null) {
return errors;
}
-
- final Map<String, List<String>> componentDisplayNameToNodeTemplateIds =
- populateAllNodeTemplateIdForComponent(nodeTemplates, serviceTemplate, toscaModel);
-
+ final Map<String, List<String>> componentDisplayNameToNodeTemplateIds = populateAllNodeTemplateIdForComponent(nodeTemplates, serviceTemplate,
+ toscaModel);
nodeTemplates.keySet().forEach(nodeTemplateId -> {
- final NodeTemplate nodeTemplate =
- toscaAnalyzerService.getNodeTemplateById(serviceTemplate, nodeTemplateId).orElse(null);
-
- if (nodeTemplate != null && toscaAnalyzerService.isTypeOf(nodeTemplate, VFC_ABSTRACT_SUBSTITUTE,
- serviceTemplate, toscaModel)) {
-
+ final NodeTemplate nodeTemplate = toscaAnalyzerService.getNodeTemplateById(serviceTemplate, nodeTemplateId).orElse(null);
+ if (nodeTemplate != null && toscaAnalyzerService.isTypeOf(nodeTemplate, VFC_ABSTRACT_SUBSTITUTE, serviceTemplate, toscaModel)) {
String componentDisplayName = getComponentDisplayName(nodeTemplateId, nodeTemplate);
-
enrichProperties(nodeTemplate, componentDisplayName, componentProperties);
-
- enrichRequirements(sourceToTargetDependencies, componentDisplayName, nodeTemplate,
- componentDisplayNameToNodeTemplateIds, serviceTemplate, toscaModel);
+ enrichRequirements(sourceToTargetDependencies, componentDisplayName, nodeTemplate, componentDisplayNameToNodeTemplateIds,
+ serviceTemplate, toscaModel);
}
});
return errors;
}
- private void enrichProperties(NodeTemplate nodeTemplate, String componentDisplayName,
- Map<String, Map<String, Object>> componentProperties) {
+ private void enrichProperties(NodeTemplate nodeTemplate, String componentDisplayName, Map<String, Map<String, Object>> componentProperties) {
setProperty(nodeTemplate, VM_TYPE_TAG, componentDisplayName);
-
if (componentProperties != null && componentProperties.containsKey(componentDisplayName)) {
- final String mandatory =
- getValueFromQuestionnaireDetails(componentProperties, componentDisplayName, MANDATORY);
-
+ final String mandatory = getValueFromQuestionnaireDetails(componentProperties, componentDisplayName, MANDATORY);
boolean isServiceTemplateFilterNotExists = false;
if (!StringUtils.isEmpty(mandatory)) {
- Map<String, Object> innerProps = (Map<String, Object>) nodeTemplate.getProperties()
- .get(SERVICE_TEMPLATE_FILTER_PROPERTY_NAME);
-
+ Map<String, Object> innerProps = (Map<String, Object>) nodeTemplate.getProperties().get(SERVICE_TEMPLATE_FILTER_PROPERTY_NAME);
if (innerProps == null) {
innerProps = new HashMap<>();
isServiceTemplateFilterNotExists = true;
@@ -133,55 +106,31 @@ public class AbstractSubstituteToscaEnricher {
if (mandatoryValue.isPresent()) {
innerProps.put(MANDATORY, mandatoryValue.get());
}
-
if (isServiceTemplateFilterNotExists) {
nodeTemplate.getProperties().put(SERVICE_TEMPLATE_FILTER_PROPERTY_NAME, innerProps);
}
}
-
- setProperty(nodeTemplate, HIGH_AVAIL_MODE,
- getValueFromQuestionnaireDetails(componentProperties, componentDisplayName,
- HIGH_AVAIL_MODE));
-
- setProperty(nodeTemplate, NFC_NAMING_CODE,
- getValueFromQuestionnaireDetails(componentProperties, componentDisplayName,
- NFC_NAMING_CODE));
-
- setProperty(nodeTemplate, VFC_CODE,
- getValueFromQuestionnaireDetails(componentProperties, componentDisplayName, VFC_CODE));
-
- setProperty(nodeTemplate, NFC_FUNCTION,
- getValueFromQuestionnaireDetails(componentProperties, componentDisplayName, NFC_FUNCTION));
-
+ setProperty(nodeTemplate, HIGH_AVAIL_MODE, getValueFromQuestionnaireDetails(componentProperties, componentDisplayName, HIGH_AVAIL_MODE));
+ setProperty(nodeTemplate, NFC_NAMING_CODE, getValueFromQuestionnaireDetails(componentProperties, componentDisplayName, NFC_NAMING_CODE));
+ setProperty(nodeTemplate, VFC_CODE, getValueFromQuestionnaireDetails(componentProperties, componentDisplayName, VFC_CODE));
+ setProperty(nodeTemplate, NFC_FUNCTION, getValueFromQuestionnaireDetails(componentProperties, componentDisplayName, NFC_FUNCTION));
if (componentProperties.get(componentDisplayName).get(MIN_INSTANCES) != null) {
- nodeTemplate.getProperties().put(MIN_INSTANCES,
- componentProperties.get(componentDisplayName).get(MIN_INSTANCES));
+ nodeTemplate.getProperties().put(MIN_INSTANCES, componentProperties.get(componentDisplayName).get(MIN_INSTANCES));
}
-
if (componentProperties.get(componentDisplayName).get(MAX_INSTANCES) != null) {
- nodeTemplate.getProperties().put(MAX_INSTANCES,
- componentProperties.get(componentDisplayName).get(MAX_INSTANCES));
+ nodeTemplate.getProperties().put(MAX_INSTANCES, componentProperties.get(componentDisplayName).get(MAX_INSTANCES));
}
}
}
- private Map<String, List<String>> populateAllNodeTemplateIdForComponent(Map<String, NodeTemplate> nodeTemplates,
- ServiceTemplate serviceTemplate,
- ToscaServiceModel toscaModel) {
-
-
+ private Map<String, List<String>> populateAllNodeTemplateIdForComponent(Map<String, NodeTemplate> nodeTemplates, ServiceTemplate serviceTemplate,
+ ToscaServiceModel toscaModel) {
Map<String, List<String>> componentDisplayNameToNodeTempalteIds = new HashMap<>();
-
//set dependency target
nodeTemplates.keySet().forEach(nodeTemplateId -> {
- final NodeTemplate nodeTemplate =
- toscaAnalyzerService.getNodeTemplateById(serviceTemplate, nodeTemplateId).orElse(null);
-
- if (nodeTemplate != null &&
- toscaAnalyzerService.isTypeOf(nodeTemplate, VFC_ABSTRACT_SUBSTITUTE, serviceTemplate, toscaModel)) {
-
+ final NodeTemplate nodeTemplate = toscaAnalyzerService.getNodeTemplateById(serviceTemplate, nodeTemplateId).orElse(null);
+ if (nodeTemplate != null && toscaAnalyzerService.isTypeOf(nodeTemplate, VFC_ABSTRACT_SUBSTITUTE, serviceTemplate, toscaModel)) {
String componentDisplayName = getComponentDisplayName(nodeTemplateId, nodeTemplate);
-
if (componentDisplayNameToNodeTempalteIds.containsKey(componentDisplayName)) {
componentDisplayNameToNodeTempalteIds.get(componentDisplayName).add(nodeTemplateId);
} else {
@@ -189,49 +138,42 @@ public class AbstractSubstituteToscaEnricher {
nodeTemplateIds.add(nodeTemplateId);
componentDisplayNameToNodeTempalteIds.put(componentDisplayName, nodeTemplateIds);
}
-
}
});
-
return componentDisplayNameToNodeTempalteIds;
}
- private void enrichRequirements(Map<String, List<String>> sourceToTargetDependencies, String componentDisplayName,
- NodeTemplate nodeTemplate,
- Map<String, List<String>> componentDisplayNameToNodeTempalteIds,
- ServiceTemplate serviceTemplate, ToscaServiceModel toscaServiceModel) {
+ private void enrichRequirements(Map<String, List<String>> sourceToTargetDependencies, String componentDisplayName, NodeTemplate nodeTemplate,
+ Map<String, List<String>> componentDisplayNameToNodeTempalteIds, ServiceTemplate serviceTemplate,
+ ToscaServiceModel toscaServiceModel) {
final List<String> targets = sourceToTargetDependencies.get(componentDisplayName);
if (CollectionUtils.isEmpty(targets)) {
return;
}
-
for (String target : targets) {
List<String> targetNodeTemplateIds = componentDisplayNameToNodeTempalteIds.get(target);
if (CollectionUtils.isEmpty(targetNodeTemplateIds)) {
continue;
}
for (String targetNodeTemplateId : targetNodeTemplateIds) {
- Optional<String> dependencyRequirementKey =
- getDependencyRequirementKey(serviceTemplate, componentDisplayName, nodeTemplate,
- toscaServiceModel);
+ Optional<String> dependencyRequirementKey = getDependencyRequirementKey(serviceTemplate, componentDisplayName, nodeTemplate,
+ toscaServiceModel);
if (dependencyRequirementKey.isPresent()) {
RequirementAssignment requirementAssignment = new RequirementAssignment();
requirementAssignment.setCapability(NATIVE_NODE);
requirementAssignment.setRelationship(NATIVE_DEPENDS_ON);
requirementAssignment.setNode(targetNodeTemplateId);
- DataModelUtil.addRequirementAssignment(nodeTemplate, dependencyRequirementKey.get(),
- requirementAssignment);
+ DataModelUtil.addRequirementAssignment(nodeTemplate, dependencyRequirementKey.get(), requirementAssignment);
}
}
}
}
- private Optional<String> getDependencyRequirementKey(ServiceTemplate serviceTemplate, String componentDisplayName,
- NodeTemplate nodeTemplate,
- ToscaServiceModel toscaServiceModel) {
+ private Optional<String> getDependencyRequirementKey(ServiceTemplate serviceTemplate, String componentDisplayName, NodeTemplate nodeTemplate,
+ ToscaServiceModel toscaServiceModel) {
String nodeType = nodeTemplate.getType();
- NodeType flatNodeType = (NodeType) toscaAnalyzerService.getFlatEntity(ToscaElementTypes.NODE_TYPE, nodeType,
- serviceTemplate, toscaServiceModel).getFlatEntity();
+ NodeType flatNodeType = (NodeType) toscaAnalyzerService
+ .getFlatEntity(ToscaElementTypes.NODE_TYPE, nodeType, serviceTemplate, toscaServiceModel).getFlatEntity();
List<Map<String, RequirementDefinition>> flatNodeTypeRequirements = flatNodeType.getRequirements();
if (Objects.isNull(flatNodeTypeRequirements)) {
return Optional.empty();
@@ -259,14 +201,15 @@ public class AbstractSubstituteToscaEnricher {
return componentDisplayName;
}
- private String getValueFromQuestionnaireDetails(Map<String, Map<String, Object>> componentTypetoParams,
- String componentDisplayName, String propertyName) {
+ private String getValueFromQuestionnaireDetails(Map<String, Map<String, Object>> componentTypetoParams, String componentDisplayName,
+ String propertyName) {
return (String) componentTypetoParams.get(componentDisplayName).get(propertyName);
}
private void setProperty(NodeTemplate nodeTemplate, String key, String value) {
if (!StringUtils.isEmpty(value)) {
//YamlUtil throws IllegalStateException("duplicate key: " + key) if key is already present.
+
// So first removing and then populating same key with new updated value
nodeTemplate.getProperties().remove(key);
nodeTemplate.getProperties().put(key, value);