summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/AbstractToscaConverter.java
diff options
context:
space:
mode:
authordermot123 <dermot.melia@est.tech>2019-04-08 16:31:20 +0000
committerOren Kleks <orenkle@amdocs.com>2019-04-10 06:46:55 +0000
commitd9c0322b76c48e5f78158cb1a44da7aac9beb2a2 (patch)
tree2eb1428d007e0840c9ca406ecc8874787c14855a /openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/AbstractToscaConverter.java
parent18750938b1513ee32d4d68f0871ec90efdf3ddfd (diff)
Supporting PNFD (SOL001) mapping to Internal AID model
This maps the PNF descriptor containing etsi defined types according to SOL001 v2.5.1 to openecomp internal model. The transformation is done in the "Create VSP" stage. As the main PNF type gets mapped to the outer container in internal ecomp model, it is possible to have no "resource instances" when importing the PNF model into the catalog. The code was updated to allow this for PNFs. Change-Id: I961e91746ca638d858dd468e6c82aeb57993f7a3 Issue-ID: SDC-1976 Issue-ID: SDC-2160 Signed-off-by: dermot123 <dermot.melia@est.tech>
Diffstat (limited to 'openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/AbstractToscaConverter.java')
-rw-r--r--openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/AbstractToscaConverter.java213
1 files changed, 15 insertions, 198 deletions
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/AbstractToscaConverter.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/AbstractToscaConverter.java
index 0fc65c1f94..859d3da9dc 100644
--- a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/AbstractToscaConverter.java
+++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/AbstractToscaConverter.java
@@ -23,21 +23,12 @@
package org.openecomp.core.impl;
import org.apache.commons.collections.MapUtils;
-import org.onap.sdc.tosca.datatypes.model.ArtifactDefinition;
-import org.onap.sdc.tosca.datatypes.model.CapabilityAssignment;
import org.onap.sdc.tosca.datatypes.model.Import;
-import org.onap.sdc.tosca.datatypes.model.NodeFilter;
-import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
import org.onap.sdc.tosca.datatypes.model.NodeType;
-import org.onap.sdc.tosca.datatypes.model.ParameterDefinition;
-import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
-import org.onap.sdc.tosca.datatypes.model.SubstitutionMapping;
import org.openecomp.core.converter.ServiceTemplateReaderService;
import org.openecomp.core.converter.ToscaConverter;
-import org.openecomp.core.converter.datatypes.Constants;
import org.openecomp.core.converter.datatypes.CsarFileTypes;
-import org.openecomp.core.converter.errors.SubstitutionMappingsConverterErrorBuilder;
import org.openecomp.core.impl.services.ServiceTemplateReaderServiceImpl;
import org.openecomp.core.utilities.file.FileContentHandler;
import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
@@ -49,28 +40,23 @@ import org.openecomp.sdc.tosca.services.DataModelUtil;
import org.openecomp.sdc.tosca.services.ToscaUtil;
import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator;
import org.yaml.snakeyaml.error.YAMLException;
+
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.regex.Pattern;
import static org.openecomp.core.converter.datatypes.Constants.ONAP_INDEX;
-import static org.openecomp.core.converter.datatypes.Constants.capabilities;
import static org.openecomp.core.converter.datatypes.Constants.definitionsDir;
import static org.openecomp.core.converter.datatypes.Constants.globalStName;
import static org.openecomp.core.converter.datatypes.Constants.globalSubstitution;
-import static org.openecomp.core.converter.datatypes.Constants.inputs;
import static org.openecomp.core.converter.datatypes.Constants.mainStName;
-import static org.openecomp.core.converter.datatypes.Constants.nodeType;
import static org.openecomp.core.converter.datatypes.Constants.openecompHeatIndex;
-import static org.openecomp.core.converter.datatypes.Constants.outputs;
-import static org.openecomp.core.converter.datatypes.Constants.requirements;
import static org.openecomp.core.impl.GlobalSubstitutionServiceTemplate.GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME;
import static org.openecomp.core.impl.GlobalSubstitutionServiceTemplate.HEAT_INDEX_IMPORT_FILE;
import static org.openecomp.core.impl.GlobalSubstitutionServiceTemplate.ONAP_INDEX_IMPORT_FILE;
@@ -82,6 +68,9 @@ public abstract class AbstractToscaConverter implements ToscaConverter {
@Override
public abstract ToscaServiceModel convert(FileContentHandler fileContentHandler) throws IOException;
+ public abstract void convertTopologyTemplate(ServiceTemplate serviceTemplate,
+ ServiceTemplateReaderService readerService);
+
protected void handleMetadataFile(Map<String, byte[]> csarFiles) {
byte[] bytes = csarFiles.remove(TOSCA_META_PATH_FILE_NAME);
if (bytes != null) {
@@ -105,9 +94,9 @@ public abstract class AbstractToscaConverter implements ToscaConverter {
}
}
- protected String getConcreteArtifactFileName(String fileName){
+ protected String getConcreteArtifactFileName(String fileName) {
int artifactIndex = fileName.indexOf(CsarFileTypes.Artifacts.name());
- if(artifactIndex < 0){
+ if (artifactIndex < 0) {
return fileName;
}
@@ -130,7 +119,7 @@ public abstract class AbstractToscaConverter implements ToscaConverter {
csarFiles.get(TOSCA_META_ORIG_PATH_FILE_NAME));
toscaServiceModel.setArtifactFiles(externalFilesHandler);
- if(MapUtils.isNotEmpty(globalSubstitutionServiceTemplate.getNode_types())) {
+ if (MapUtils.isNotEmpty(globalSubstitutionServiceTemplate.getNode_types())) {
serviceTemplates
.put(GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME, globalSubstitutionServiceTemplate);
}
@@ -146,8 +135,8 @@ public abstract class AbstractToscaConverter implements ToscaConverter {
protected void handleServiceTemplate(String serviceTemplateName,
String fileName, Map<String, byte[]> csarFiles,
Map<String, ServiceTemplate> serviceTemplates) {
- Optional<ServiceTemplate> serviceTemplate =
- getServiceTemplateFromCsar(fileName, csarFiles);
+ final byte[] inputServiceTemplate = getServiceTemplateFromCsar(fileName, csarFiles);
+ Optional<ServiceTemplate> serviceTemplate = convertServiceTemplate(fileName, inputServiceTemplate);
serviceTemplate.ifPresent(
serviceTemplateValue -> addServiceTemplate(serviceTemplateName, serviceTemplateValue,
serviceTemplates));
@@ -159,16 +148,12 @@ public abstract class AbstractToscaConverter implements ToscaConverter {
serviceTemplates.put(serviceTemplateName, serviceTemplate);
}
- private Optional<ServiceTemplate> getServiceTemplateFromCsar(String fileName,
- Map<String, byte[]> csarFiles) {
- byte[] fileContent = csarFiles.get(fileName);
- ServiceTemplate serviceTemplate = convertServiceTemplate(fileName, fileContent);
-
- return Optional.of(serviceTemplate);
+ private byte[] getServiceTemplateFromCsar(String fileName, Map<String, byte[]> csarFiles) {
+ return csarFiles.get(fileName);
}
- private ServiceTemplate convertServiceTemplate(String serviceTemplateName,
- byte[] fileContent) {
+ private Optional<ServiceTemplate> convertServiceTemplate(String serviceTemplateName,
+ byte[] fileContent) {
ServiceTemplate serviceTemplate = new ServiceTemplate();
try {
ServiceTemplateReaderService readerService =
@@ -178,7 +163,6 @@ public abstract class AbstractToscaConverter implements ToscaConverter {
convertImports(serviceTemplate);
convertNodeTypes(serviceTemplate, readerService);
convertTopologyTemplate(serviceTemplate, readerService);
-
} catch (YAMLException ye) {
throw new CoreException(new ErrorCode.ErrorCodeBuilder()
.withMessage("Invalid YAML content in file" + serviceTemplateName)
@@ -186,7 +170,7 @@ public abstract class AbstractToscaConverter implements ToscaConverter {
}
- return serviceTemplate;
+ return Optional.of(serviceTemplate);
}
private void convertToscaVersion(ServiceTemplate serviceTemplate,
@@ -249,133 +233,7 @@ public abstract class AbstractToscaConverter implements ToscaConverter {
}
}
- private void convertTopologyTemplate(ServiceTemplate serviceTemplate,
- ServiceTemplateReaderService readerService) {
-
- convertInputs(serviceTemplate, readerService);
- convertNodeTemplates(serviceTemplate, readerService);
- convertOutputs(serviceTemplate, readerService);
- convertSubstitutionMappings(serviceTemplate, readerService);
- }
-
- private void convertInputs(ServiceTemplate serviceTemplate,
- ServiceTemplateReaderService readerService) {
- Map<String, Object> inputs = readerService.getInputs();
- addInputsOrOutputsToServiceTemplate(serviceTemplate, inputs, Constants.inputs);
- }
-
- private void convertOutputs(ServiceTemplate serviceTemplate,
- ServiceTemplateReaderService readerService) {
- Map<String, Object> outputs = readerService.getOutputs();
- addInputsOrOutputsToServiceTemplate(serviceTemplate, outputs, Constants.outputs);
- }
-
- private void addInputsOrOutputsToServiceTemplate(ServiceTemplate serviceTemplate,
- Map<String, Object> mapToConvert,
- String inputsOrOutputs) {
- if (MapUtils.isEmpty(mapToConvert)) {
- return;
- }
-
- for (Map.Entry<String, Object> entry : mapToConvert.entrySet()) {
- Optional<ParameterDefinition> parameterDefinition =
- ToscaConverterUtil.createObjectFromClass(
- entry.getKey(), entry.getValue(), ParameterDefinition.class);
-
- parameterDefinition.ifPresent(parameterDefinitionValue -> {
- Optional<Object> defaultValue =
- ToscaConverterUtil.getDefaultValue(entry.getValue(), parameterDefinition.get());
- defaultValue.ifPresent(parameterDefinitionValue::set_default);
- addToServiceTemplateAccordingToSection(
- serviceTemplate, inputsOrOutputs, entry.getKey(), parameterDefinition.get());
- });
- }
- }
-
- private void addToServiceTemplateAccordingToSection(ServiceTemplate serviceTemplate,
- String inputsOrOutputs,
- String parameterId,
- ParameterDefinition parameterDefinition) {
- if (inputsOrOutputs.equals(inputs)) {
- DataModelUtil
- .addInputParameterToTopologyTemplate(serviceTemplate, parameterId, parameterDefinition);
- } else if (inputsOrOutputs.equals(outputs)) {
- DataModelUtil
- .addOutputParameterToTopologyTemplate(serviceTemplate, parameterId, parameterDefinition);
- }
- }
-
- private void convertNodeTemplates(ServiceTemplate serviceTemplate,
- ServiceTemplateReaderService readerService) {
- Map<String, Object> nodeTemplates = readerService.getNodeTemplates();
- if (MapUtils.isEmpty(nodeTemplates)) {
- return;
- }
-
- for (Map.Entry<String, Object> nodeTemplateEntry : nodeTemplates.entrySet()) {
- NodeTemplate nodeTemplate = convertNodeTemplate(nodeTemplateEntry.getValue());
- DataModelUtil.addNodeTemplate(serviceTemplate, nodeTemplateEntry.getKey(), nodeTemplate);
- }
- }
-
- private void convertSubstitutionMappings(ServiceTemplate serviceTemplate,
- ServiceTemplateReaderService readerService) {
- Map<String, Object> substitutionMappings = readerService.getSubstitutionMappings();
- if (MapUtils.isEmpty(substitutionMappings)) {
- return;
- }
- SubstitutionMapping substitutionMapping = convertSubstitutionMappings(substitutionMappings);
- DataModelUtil.addSubstitutionMapping(serviceTemplate, substitutionMapping);
- }
-
- private SubstitutionMapping convertSubstitutionMappings(
- Map<String, Object> substitutionMappings) {
- SubstitutionMapping substitutionMapping = new SubstitutionMapping();
-
- substitutionMapping.setNode_type((String) substitutionMappings.get(nodeType));
- substitutionMapping.setCapabilities(
- convertSubstitutionMappingsSections(capabilities, substitutionMappings.get(capabilities)));
- substitutionMapping.setRequirements(
- convertSubstitutionMappingsSections(requirements, substitutionMappings.get(requirements)));
-
- return substitutionMapping;
- }
-
- private Map<String, List<String>> convertSubstitutionMappingsSections(String sectionName,
- Object sectionToConvert) {
-
- if (Objects.isNull(sectionToConvert)) {
- return null;
- }
-
- if (!(sectionToConvert instanceof Map)) {
- throw new CoreException(
- new SubstitutionMappingsConverterErrorBuilder(
- sectionName, sectionToConvert.getClass().getSimpleName()).build());
- }
-
- return convertSection(sectionToConvert);
- }
-
- private Map<String, List<String>> convertSection(Object sectionToConvert) {
-
- Map<String, Object> sectionAsMap = (Map<String, Object>) sectionToConvert;
- Map<String, List<String>> convertedSection = new HashMap<>();
-
- if (MapUtils.isEmpty(sectionAsMap)) {
- return null;
- }
-
- for (Map.Entry<String, Object> entry : sectionAsMap.entrySet()) {
- if (entry.getValue() instanceof List) {
- convertedSection.put(entry.getKey(), (List<String>) entry.getValue());
- }
- }
-
- return convertedSection;
- }
-
- protected CsarFileTypes getFileType(String fileName){
+ protected CsarFileTypes getFileType(String fileName) {
if (isMainServiceTemplate(fileName)) {
return CsarFileTypes.mainServiceTemplate;
} else if (isGlobalServiceTemplate(fileName)) {
@@ -388,47 +246,6 @@ public abstract class AbstractToscaConverter implements ToscaConverter {
return CsarFileTypes.externalFile;
}
- private NodeTemplate convertNodeTemplate(Object candidateNodeTemplate) {
- NodeTemplate nodeTemplate = new NodeTemplate();
-
- Map<String, Object> nodeTemplateAsMap = (Map<String, Object>) candidateNodeTemplate;
- nodeTemplate.setArtifacts((Map<String, ArtifactDefinition>) nodeTemplateAsMap.get("artifacts"));
- nodeTemplate.setAttributes((Map<String, Object>) nodeTemplateAsMap.get("attributes"));
- nodeTemplate.setCopy((String) nodeTemplateAsMap.get("copy"));
- nodeTemplate.setDescription((String) nodeTemplateAsMap.get("description"));
- nodeTemplate.setDirectives((List<String>) nodeTemplateAsMap.get("directives"));
- nodeTemplate.setInterfaces(
- (Map<String, Object>) nodeTemplateAsMap.get("interfaces"));
- nodeTemplate.setNode_filter((NodeFilter) nodeTemplateAsMap.get("node_filter"));
- nodeTemplate.setProperties((Map<String, Object>) nodeTemplateAsMap.get("properties"));
- nodeTemplate.setRequirements(
- (List<Map<String, RequirementAssignment>>) nodeTemplateAsMap.get("requirements"));
- nodeTemplate.setType((String) nodeTemplateAsMap.get("type"));
- nodeTemplate.setCapabilities(
- convertCapabilities((Map<String, Object>) nodeTemplateAsMap.get("capabilities")));
-
- return nodeTemplate;
- }
-
- private Map<String, CapabilityAssignment> convertCapabilities(Map<String, Object> capabilities) {
- if (MapUtils.isEmpty(capabilities)) {
- return null;
- }
-
- Map<String, CapabilityAssignment> convertedCapabilities = new HashMap<>();
- for (Map.Entry<String, Object> capabilityAssignmentEntry : capabilities.entrySet()) {
- Optional<CapabilityAssignment> capabilityAssignment = ToscaConverterUtil.createObjectFromClass
- (capabilityAssignmentEntry.getKey(), capabilityAssignmentEntry.getValue(),
- CapabilityAssignment.class);
-
- capabilityAssignment.ifPresent(capabilityAssignmentValue ->
- convertedCapabilities.put(capabilityAssignmentEntry.getKey(), capabilityAssignmentValue));
-
- }
- return convertedCapabilities;
- }
-
-
protected boolean isMainServiceTemplate(String fileName) {
return fileName.endsWith(mainStName);
}