diff options
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.java | 169 |
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); |