aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main
diff options
context:
space:
mode:
authoreleonorali <eleonoral@amdocs.com>2018-02-11 12:15:48 +0200
committereleonorali <eleonoral@amdocs.com>2018-02-11 12:16:01 +0200
commitd5b4901c6a1ae136138c1300d377447e26bac4ef (patch)
treee25360262affbacfdf1bcaeb1e8976e6d8ebae58 /openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main
parenteae2ba3f5ccfb20a899262562bd91129b6d53423 (diff)
SRIOV - add annotations
SRIOV - add annotations to input TOSCA parameter converted from HEAT file (2) Change-Id: Id0b0156730ae64093df42d09e2873de047c13ac9 Issue-ID: SDC-996 Signed-off-by: eleonorali <eleonoral@amdocs.com>
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main')
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java10
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java582
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/mapping/TranslatorHeatToToscaParameterConverter.java79
3 files changed, 369 insertions, 302 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java
index 88e96037f5..dafd8e6207 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java
@@ -645,7 +645,11 @@ public class HeatToToscaUtil {
* @return the boolean
*/
public static boolean isHeatFileNested(TranslateTo translateTo, String heatFileName) {
- return translateTo.getContext().getNestedHeatsFiles().contains(heatFileName);
+ return isHeatFileNested(translateTo.getContext(), heatFileName);
+ }
+
+ public static boolean isHeatFileNested(TranslationContext context, String heatFileName) {
+ return context.getNestedHeatsFiles().contains(heatFileName);
}
/**
@@ -1190,6 +1194,10 @@ public class HeatToToscaUtil {
return !capabilityKey.contains(FORWARDER) || ToggleableFeature.FORWARDER_CAPABILITY.isActive();
}
+ public static boolean shouldAnnotationsToBeAdded() {
+ return ToggleableFeature.ANNOTATIONS.isActive();
+ }
+
private static void addCapabilityToSubMapping(String templateName,
Map.Entry<String, CapabilityDefinition> capabilityNodeEntry,
Map<String, CapabilityDefinition> nodeTypeCapabilitiesDefinition,
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java
index d403fcbedc..c84ed22011 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java
@@ -1,21 +1,17 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+/*
+ * Copyright © 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;
@@ -39,6 +35,7 @@ import org.openecomp.sdc.tosca.datatypes.model.ParameterDefinition;
import org.openecomp.sdc.tosca.datatypes.model.PropertyType;
import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
import org.openecomp.sdc.tosca.datatypes.model.TopologyTemplate;
+import org.openecomp.sdc.tosca.datatypes.model.heatextend.ParameterDefinitionExt;
import org.openecomp.sdc.tosca.services.DataModelUtil;
import org.openecomp.sdc.tosca.services.ToscaConstants;
import org.openecomp.sdc.tosca.services.ToscaFileOutputService;
@@ -60,308 +57,343 @@ import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
+import java.util.stream.Collectors;
public class TranslationService {
- protected static Logger logger = LoggerFactory.getLogger(TranslationService.class);
- /**
- * Gets types to process by translator.
- *
- * @return the types to process by translator
- */
- public static Set<FileData.Type> getTypesToProcessByTranslator() {
- Set<FileData.Type> types = new HashSet<>();
- types.add(FileData.Type.HEAT);
- types.add(FileData.Type.HEAT_VOL);
- return types;
- }
-
- /**
- * Translate heat files translator output.
- *
- * @param translationContext the translation context
- * @return the translator output
- */
- public TranslatorOutput translateHeatFiles(TranslationContext translationContext) {
- ServiceTemplate mainServiceTemplate = createMainServiceTemplate(translationContext);
- List<FileData> fileDataList = translationContext.getManifest().getContent().getData();
- FileDataCollection fileDataCollection = HeatToToscaUtil.getFileCollectionsByFilter(fileDataList,
- TranslationService.getTypesToProcessByTranslator(), translationContext);
-
- if (fileDataCollection.getBaseFile() != null) {
- for (FileData fileData : fileDataCollection.getBaseFile()) {
- translateHeatFile(mainServiceTemplate, fileData, translationContext);
- }
+ protected static Logger logger = LoggerFactory.getLogger(TranslationService.class);
+
+ /**
+ * Gets types to process by translator.
+ *
+ * @return the types to process by translator
+ */
+ public static Set<FileData.Type> getTypesToProcessByTranslator() {
+ Set<FileData.Type> types = new HashSet<>();
+ types.add(FileData.Type.HEAT);
+ types.add(FileData.Type.HEAT_VOL);
+ return types;
}
- if (fileDataCollection.getAddOnFiles() != null) {
- for (FileData fileData : fileDataCollection.getAddOnFiles()) {
- translateHeatFile(mainServiceTemplate, fileData, translationContext);
- }
+
+ /**
+ * Translate heat files translator output.
+ *
+ * @param translationContext the translation context
+ * @return the translator output
+ */
+ public TranslatorOutput translateHeatFiles(TranslationContext translationContext) {
+ ServiceTemplate mainServiceTemplate = createMainServiceTemplate(translationContext);
+ List<FileData> fileDataList = translationContext.getManifest().getContent().getData();
+ FileDataCollection fileDataCollection = HeatToToscaUtil.getFileCollectionsByFilter(fileDataList,
+ TranslationService.getTypesToProcessByTranslator(), translationContext);
+
+ if (fileDataCollection.getBaseFile() != null) {
+ for (FileData fileData : fileDataCollection.getBaseFile()) {
+ translateHeatFile(mainServiceTemplate, fileData, translationContext);
+ }
+ }
+ if (fileDataCollection.getAddOnFiles() != null) {
+ for (FileData fileData : fileDataCollection.getAddOnFiles()) {
+ translateHeatFile(mainServiceTemplate, fileData, translationContext);
+ }
+ }
+
+ ToscaServiceModel toscaServiceModel =
+ HeatToToscaUtil.createToscaServiceModel(mainServiceTemplate, translationContext);
+
+ TranslatorOutput translatorOutput = new TranslatorOutput();
+ //Keeping a copy of tosca service model after first stage of translation for extraction of
+ // composition data
+ translatorOutput.setNonUnifiedToscaServiceModel(
+ ToscaServiceModel.getClonedServiceModel(toscaServiceModel));
+ translatorOutput.setToscaServiceModel(toscaServiceModel);
+ return translatorOutput;
}
- ToscaServiceModel toscaServiceModel =
- HeatToToscaUtil.createToscaServiceModel(mainServiceTemplate, translationContext);
-
- TranslatorOutput translatorOutput = new TranslatorOutput();
- //Keeping a copy of tosca service model after first stage of translation for extraction of
- // composition data
- translatorOutput.setNonUnifiedToscaServiceModel(
- ToscaServiceModel.getClonedServiceModel(toscaServiceModel));
- translatorOutput.setToscaServiceModel(toscaServiceModel);
- return translatorOutput;
- }
-
- private ServiceTemplate createMainServiceTemplate(TranslationContext translationContext) {
- ServiceTemplate mainServiceTemplate = new ServiceTemplate();
- translationContext.getTranslatedServiceTemplates()
- .put(Constants.MAIN_TEMPLATE_NAME, mainServiceTemplate);
- Map<String, String> templateMetadata = new HashMap<>();
- templateMetadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, Constants.MAIN_TEMPLATE_NAME);
- mainServiceTemplate.setTosca_definitions_version(ToscaConstants.TOSCA_DEFINITIONS_VERSION);
- mainServiceTemplate.setMetadata(templateMetadata);
- mainServiceTemplate.setTopology_template(new TopologyTemplate());
- mainServiceTemplate.setImports(GlobalTypesGenerator.getGlobalTypesImportList());
- return mainServiceTemplate;
- }
-
- /**
- * Translate heat file.
- *
- * @param serviceTemplate the service template
- * @param heatFileData the heat file data
- * @param context the context
- */
- public void translateHeatFile(ServiceTemplate serviceTemplate, FileData heatFileData,
- TranslationContext context) {
- String heatFileName = heatFileData.getFile();
- HeatOrchestrationTemplate heatOrchestrationTemplate = new YamlUtil()
- .yamlToObject(context.getFileContent(heatFileName), HeatOrchestrationTemplate.class);
-
- translateInputParameters(serviceTemplate, heatOrchestrationTemplate, heatFileData, context,
- heatFileName);
- translateResources(heatFileName, serviceTemplate, heatOrchestrationTemplate, context);
- translateOutputParameters(serviceTemplate, heatOrchestrationTemplate, heatFileData,
- heatFileName, context);
- createHeatStackGroup(serviceTemplate, heatFileData, heatOrchestrationTemplate, context);
- handleHeatPseudoParam(heatFileName, serviceTemplate, context);
-
- if (Objects.nonNull(heatFileData.getData())) {
- heatFileData.getData().stream().filter(data -> data.getType() == FileData.Type.HEAT_VOL)
- .forEach(data -> translateHeatFile(serviceTemplate, data, context));
+ private ServiceTemplate createMainServiceTemplate(TranslationContext translationContext) {
+ ServiceTemplate mainServiceTemplate = new ServiceTemplate();
+ translationContext.getTranslatedServiceTemplates()
+ .put(Constants.MAIN_TEMPLATE_NAME, mainServiceTemplate);
+ Map<String, String> templateMetadata = new HashMap<>();
+ templateMetadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, Constants.MAIN_TEMPLATE_NAME);
+ mainServiceTemplate.setTosca_definitions_version(ToscaConstants.TOSCA_DEFINITIONS_VERSION);
+ mainServiceTemplate.setMetadata(templateMetadata);
+ mainServiceTemplate.setTopology_template(new TopologyTemplate());
+ mainServiceTemplate.setImports(GlobalTypesGenerator.getGlobalTypesImportList());
+ return mainServiceTemplate;
}
- }
-
- private void handleHeatPseudoParam(String heatFileName, ServiceTemplate serviceTemplate,
- TranslationContext context) {
- Map<String, String> translatedHeatPseudoParam =
- context.getUsedHeatPseudoParams().get(heatFileName);
- if (Objects.nonNull(translatedHeatPseudoParam)) {
- for (String heatPseudoParam : translatedHeatPseudoParam.keySet()) {
- if (!serviceTemplate.getTopology_template().getInputs().containsKey(heatPseudoParam)) {
- ParameterDefinition parameterDefinition = new ParameterDefinition();
- parameterDefinition.setType(PropertyType.STRING.getDisplayName());
- parameterDefinition.setRequired(false);
- String parameterDefinitionId = translatedHeatPseudoParam.get(heatPseudoParam);
- DataModelUtil.addInputParameterToTopologyTemplate(serviceTemplate, parameterDefinitionId,
- parameterDefinition);
+
+ /**
+ * Translate heat file.
+ *
+ * @param serviceTemplate the service template
+ * @param heatFileData the heat file data
+ * @param context the context
+ */
+ public void translateHeatFile(ServiceTemplate serviceTemplate, FileData heatFileData,
+ TranslationContext context) {
+ String heatFileName = heatFileData.getFile();
+ HeatOrchestrationTemplate heatOrchestrationTemplate = new YamlUtil()
+ .yamlToObject(context.getFileContent(heatFileName), HeatOrchestrationTemplate.class);
+
+ translateInputParameters(serviceTemplate, heatOrchestrationTemplate, heatFileData, context,
+ heatFileName);
+ translateResources(heatFileName, serviceTemplate, heatOrchestrationTemplate, context);
+ translateOutputParameters(serviceTemplate, heatOrchestrationTemplate, heatFileData,
+ heatFileName, context);
+ createHeatStackGroup(serviceTemplate, heatFileData, heatOrchestrationTemplate, context);
+ handleHeatPseudoParam(heatFileName, serviceTemplate, context);
+
+ if (Objects.nonNull(heatFileData.getData())) {
+ heatFileData.getData().stream().filter(data -> data.getType() == FileData.Type.HEAT_VOL)
+ .forEach(data -> translateHeatFile(serviceTemplate, data, context));
}
- }
}
- }
- private void createHeatStackGroup(ServiceTemplate serviceTemplate, FileData heatFileData,
- HeatOrchestrationTemplate heatOrchestrationTemplate,
- TranslationContext context) {
- ToscaFileOutputService toscaFileOutputService = new ToscaFileOutputServiceCsarImpl();
- final String fileName = heatFileData.getFile();
- final String heatStackGroupId = FileUtils.getFileWithoutExtention(fileName) + "_group";
-
- GroupDefinition groupDefinition = new GroupDefinition();
- groupDefinition.setType(ToscaGroupType.HEAT_STACK);
- groupDefinition.setProperties(new HashMap<>());
- groupDefinition.getProperties()
- .put("heat_file", "../" + toscaFileOutputService.getArtifactsFolderName() + "/" + fileName);
- String hotDescription = heatOrchestrationTemplate.getDescription();
- if (hotDescription != null && !hotDescription.isEmpty()) {
- groupDefinition.getProperties().put(Constants.DESCRIPTION_PROPERTY_NAME, hotDescription);
+ private void handleHeatPseudoParam(String heatFileName, ServiceTemplate serviceTemplate,
+ TranslationContext context) {
+ Map<String, String> translatedHeatPseudoParam =
+ context.getUsedHeatPseudoParams().get(heatFileName);
+ if (Objects.nonNull(translatedHeatPseudoParam)) {
+ for (String heatPseudoParam : translatedHeatPseudoParam.keySet()) {
+ if (!serviceTemplate.getTopology_template().getInputs().containsKey(heatPseudoParam)) {
+ ParameterDefinition parameterDefinition = new ParameterDefinition();
+ parameterDefinition.setType(PropertyType.STRING.getDisplayName());
+ parameterDefinition.setRequired(false);
+ String parameterDefinitionId = translatedHeatPseudoParam.get(heatPseudoParam);
+ DataModelUtil.addInputParameterToTopologyTemplate(serviceTemplate, parameterDefinitionId,
+ parameterDefinition);
+ }
+ }
+ }
}
- groupDefinition.setMembers(new ArrayList<>());
- Set<String> heatStackGroupMembersIds = getHeatStackGroupMembers(fileName,
- serviceTemplate, context);
- if (CollectionUtils.isEmpty(heatStackGroupMembersIds)) {
- return; //not creating a group when no resources are present in the heat input
+
+ private void createHeatStackGroup(ServiceTemplate serviceTemplate, FileData heatFileData,
+ HeatOrchestrationTemplate heatOrchestrationTemplate,
+ TranslationContext context) {
+ ToscaFileOutputService toscaFileOutputService = new ToscaFileOutputServiceCsarImpl();
+ final String fileName = heatFileData.getFile();
+ final String heatStackGroupId = FileUtils.getFileWithoutExtention(fileName) + "_group";
+
+ GroupDefinition groupDefinition = new GroupDefinition();
+ groupDefinition.setType(ToscaGroupType.HEAT_STACK);
+ groupDefinition.setProperties(new HashMap<>());
+ groupDefinition.getProperties()
+ .put("heat_file", "../" + toscaFileOutputService.getArtifactsFolderName() + "/" + fileName);
+ String hotDescription = heatOrchestrationTemplate.getDescription();
+ if (hotDescription != null && !hotDescription.isEmpty()) {
+ groupDefinition.getProperties().put(Constants.DESCRIPTION_PROPERTY_NAME, hotDescription);
+ }
+ groupDefinition.setMembers(new ArrayList<>());
+ Set<String> heatStackGroupMembersIds = getHeatStackGroupMembers(fileName,
+ serviceTemplate, context);
+ if (CollectionUtils.isEmpty(heatStackGroupMembersIds)) {
+ return; //not creating a group when no resources are present in the heat input
+ }
+ groupDefinition.getMembers().addAll(heatStackGroupMembersIds);
+ DataModelUtil
+ .addGroupDefinitionToTopologyTemplate(serviceTemplate, heatStackGroupId, groupDefinition);
}
- groupDefinition.getMembers().addAll(heatStackGroupMembersIds);
- DataModelUtil
- .addGroupDefinitionToTopologyTemplate(serviceTemplate, heatStackGroupId, groupDefinition);
- }
- private Set<String> getHeatStackGroupMembers(String heatFileName,
- ServiceTemplate serviceTemplate,
- TranslationContext context){
+ private Set<String> getHeatStackGroupMembers(String heatFileName,
+ ServiceTemplate serviceTemplate,
+ TranslationContext context) {
+
+ Map<String, Set<String>> heatStackGroupMembers = context.getHeatStackGroupMembers();
+ Set<String> groupMembers = MapUtils.isEmpty(heatStackGroupMembers) ? new HashSet<>()
+ : heatStackGroupMembers.get(heatFileName);
+
+ if (CollectionUtils.isEmpty(groupMembers)) {
+ return new HashSet<>();
+ }
+
+ Set<String> updatedMembersIds = new HashSet<>();
- Map<String, Set<String>> heatStackGroupMembers = context.getHeatStackGroupMembers();
- Set<String> groupMembers = MapUtils.isEmpty(heatStackGroupMembers) ? new HashSet<>()
- : heatStackGroupMembers.get(heatFileName);
+ groupMembers.forEach(member -> {
+ if (Objects.nonNull(DataModelUtil.getNodeTemplate(serviceTemplate, member))) {
+ updatedMembersIds.add(member);
+ } else {
+ updateSubstitutableGroupMemberId(heatFileName, serviceTemplate, updatedMembersIds);
+ }
+ });
- if(CollectionUtils.isEmpty(groupMembers)){
- return new HashSet<>();
+ return updatedMembersIds;
}
- Set<String> updatedMembersIds = new HashSet<>();
-
- groupMembers.forEach(member -> {
- if (Objects.nonNull(DataModelUtil.getNodeTemplate(serviceTemplate, member))) {
- updatedMembersIds.add(member);
- } else {
- updateSubstitutableGroupMemberId(heatFileName, serviceTemplate, updatedMembersIds);
- }
- });
-
- return updatedMembersIds;
- }
-
- private void updateSubstitutableGroupMemberId(String heatFileName,
- ServiceTemplate serviceTemplate,
- Set<String> updatedMembersIds) {
- Optional<String> substitutableGroupMemberId =
- ToscaUtil.getSubstitutableGroupMemberId(heatFileName, serviceTemplate);
-
- substitutableGroupMemberId.ifPresent(updatedMembersIds::add);
- }
-
- private void translateInputParameters(ServiceTemplate serviceTemplate,
- HeatOrchestrationTemplate heatOrchestrationTemplate,
- FileData heatFileData, TranslationContext context,
- String heatFileName) {
- if (heatOrchestrationTemplate.getParameters() == null) {
- return;
+ private void updateSubstitutableGroupMemberId(String heatFileName,
+ ServiceTemplate serviceTemplate,
+ Set<String> updatedMembersIds) {
+ Optional<String> substitutableGroupMemberId =
+ ToscaUtil.getSubstitutableGroupMemberId(heatFileName, serviceTemplate);
+
+ substitutableGroupMemberId.ifPresent(updatedMembersIds::add);
}
- Map<String, ParameterDefinition> parameterDefinitionMap =
- TranslatorHeatToToscaParameterConverter
- .parameterConverter(serviceTemplate,heatOrchestrationTemplate.getParameters(),
- heatOrchestrationTemplate, heatFileName, context);
- Environment heatEnvFile = getHeatEnvFile(heatFileData, context);
- Map<String, Object> parameters = heatEnvFile.getParameters();
- Object parameterValue;
- if (parameters != null) {
- for (Map.Entry<String, ParameterDefinition> entry : parameterDefinitionMap.entrySet()) {
- String paramName = entry.getKey();
- parameterValue = parameters.get(paramName);
- if (parameterValue != null) {
- entry.getValue().set_default(TranslatorHeatToToscaParameterConverter
- .getToscaParameterDefaultValue(null, null, parameterValue, entry.getValue().getType(),
- heatFileName, heatOrchestrationTemplate, context));
+ private void translateInputParameters(ServiceTemplate serviceTemplate,
+ HeatOrchestrationTemplate heatOrchestrationTemplate,
+ FileData heatFileData, TranslationContext context,
+ String heatFileName) {
+ if (heatOrchestrationTemplate.getParameters() == null) {
+ return;
+ }
+
+ Map<String, ParameterDefinition> parameterDefinitionMap =
+ TranslatorHeatToToscaParameterConverter
+ .parameterConverter(serviceTemplate, heatOrchestrationTemplate.getParameters(),
+ heatOrchestrationTemplate, heatFileName, context);
+ Environment heatEnvFile = getHeatEnvFile(heatFileData, context);
+ Map<String, Object> parameters = heatEnvFile.getParameters();
+ Object parameterValue;
+ if (parameters != null) {
+ for (Map.Entry<String, ParameterDefinition> entry : parameterDefinitionMap.entrySet()) {
+ String paramName = entry.getKey();
+ parameterValue = parameters.get(paramName);
+ if (parameterValue != null) {
+ entry.getValue().set_default(TranslatorHeatToToscaParameterConverter
+ .getToscaParameterDefaultValue(null, null, parameterValue, entry.getValue().getType(),
+ heatFileName, heatOrchestrationTemplate, context));
+ }
+ }
+ }
+
+
+ Map<String, ParameterDefinition> inputs = serviceTemplate.getTopology_template().getInputs();
+ if (Objects.isNull(inputs)) {
+ serviceTemplate.getTopology_template().setInputs(parameterDefinitionMap);
+ } else {
+ setInputs(inputs, parameterDefinitionMap);
+
}
- }
+
}
- Map<String, ParameterDefinition> inputs = serviceTemplate.getTopology_template().getInputs();
- if (Objects.isNull(inputs)) {
- serviceTemplate.getTopology_template().setInputs(parameterDefinitionMap);
- } else {
- inputs.putAll(parameterDefinitionMap);
+ private void setInputs(Map<String, ParameterDefinition> inputs, Map<String, ParameterDefinition> newParameters) {
+
+ updateAnnotations(inputs, newParameters);
+ inputs.putAll(newParameters);
+
}
- }
-
- private void translateOutputParameters(ServiceTemplate serviceTemplate,
- HeatOrchestrationTemplate heatOrchestrationTemplate,
- FileData heatFileData, String heatFileName,
- TranslationContext context) {
- if (heatOrchestrationTemplate.getOutputs() == null) {
- return;
+
+ private void updateAnnotations(Map<String, ParameterDefinition> inputParameters, Map<String, ParameterDefinition> newParameters) {
+
+ if (Objects.nonNull(newParameters.entrySet())) {
+ newParameters.entrySet().stream().filter(stringParameterDefinitionEntry ->
+ inputParameters.containsKey(stringParameterDefinitionEntry.getKey()) &&
+ isHasAnnotation(inputParameters, stringParameterDefinitionEntry)).
+ forEach(stringParameterDefinitionEntry -> getVFModulesList(stringParameterDefinitionEntry.getValue()).
+ addAll(getVFModulesList(inputParameters.get(stringParameterDefinitionEntry.getKey()))));
+ }
}
- Map<String, ParameterDefinition> parameterDefinitionMap =
- TranslatorHeatToToscaParameterConverter
- .parameterOutputConverter(serviceTemplate,heatOrchestrationTemplate.getOutputs(),
- heatOrchestrationTemplate, heatFileName, context);
- if (serviceTemplate.getTopology_template().getOutputs() != null) {
- serviceTemplate.getTopology_template().getOutputs().putAll(parameterDefinitionMap);
- } else {
- serviceTemplate.getTopology_template().setOutputs(parameterDefinitionMap);
+
+ private boolean isHasAnnotation(Map<String, ParameterDefinition> inputParameters, Map.Entry<String, ParameterDefinition> newParameterSet) {
+ ParameterDefinitionExt inputParameter = (ParameterDefinitionExt) inputParameters.get(newParameterSet.getKey());
+ ParameterDefinitionExt newParameter = (ParameterDefinitionExt) newParameterSet.getValue();
+ return inputParameter.getAnnotations() != null && newParameter.getAnnotations() != null;
}
- if (heatFileData.getBase() != null && heatFileData.getBase().equals(true)) {
- updateSharedResources(serviceTemplate, heatFileName, heatOrchestrationTemplate,
- heatOrchestrationTemplate.getOutputs(), context);
+ private List getVFModulesList(ParameterDefinition param) {
+ ParameterDefinitionExt parameterDefinitionExt = (ParameterDefinitionExt) param;
+ return (List) parameterDefinitionExt.getAnnotations().get(ToscaConstants.SOURCE_ANNOTATION_ID).getProperties().
+ get(ToscaConstants.VF_MODULE_LABEL_PROPERTY_NAME);
}
- }
-
- private void updateSharedResources(ServiceTemplate serviceTemplate, String heatFileName,
- HeatOrchestrationTemplate heatOrchestrationTemplate,
- Map<String, Output> outputs, TranslationContext context) {
- for (Map.Entry<String, Output> parameter : outputs.entrySet()) {
- Optional<AttachedResourceId> attachedSharedResourceId = HeatToToscaUtil
- .extractAttachedResourceId(heatFileName, heatOrchestrationTemplate, context,
- parameter.getValue().getValue());
- if (attachedSharedResourceId.isPresent() && attachedSharedResourceId.get().isGetResource()
- && attachedSharedResourceId.get().getTranslatedId() != null) {
- String sharedTranslatedResourceId =
- attachedSharedResourceId.get().getTranslatedId().toString();
- updateSharedResource(serviceTemplate, context, parameter, sharedTranslatedResourceId,
- heatOrchestrationTemplate.getResources()
- .get(attachedSharedResourceId.get().getEntityId()));
- } else {
- Optional<String> contrailSharedResourceId = HeatToToscaUtil
- .extractContrailGetResourceAttachedHeatResourceId(parameter.getValue().getValue());
- if (contrailSharedResourceId.isPresent()
- && context.getTranslatedIds().get(heatFileName).get(contrailSharedResourceId.get())
- != null) {
- String sharedTranslatedResourceId = context.getTranslatedIds().get(heatFileName).get
- (contrailSharedResourceId.get());
- ConsolidationDataUtil.removeSharedResource(serviceTemplate, heatOrchestrationTemplate,
- context, parameter.getKey(),contrailSharedResourceId.get(), sharedTranslatedResourceId);
- updateSharedResource(serviceTemplate, context, parameter,sharedTranslatedResourceId,
- heatOrchestrationTemplate.getResources().get(contrailSharedResourceId.get()));
+
+ private void translateOutputParameters(ServiceTemplate serviceTemplate,
+ HeatOrchestrationTemplate heatOrchestrationTemplate,
+ FileData heatFileData, String heatFileName,
+ TranslationContext context) {
+ if (heatOrchestrationTemplate.getOutputs() == null) {
+ return;
+ }
+ Map<String, ParameterDefinition> parameterDefinitionMap =
+ TranslatorHeatToToscaParameterConverter
+ .parameterOutputConverter(serviceTemplate, heatOrchestrationTemplate.getOutputs(),
+ heatOrchestrationTemplate, heatFileName, context);
+ if (serviceTemplate.getTopology_template().getOutputs() != null) {
+ serviceTemplate.getTopology_template().getOutputs().putAll(parameterDefinitionMap);
+ } else {
+ serviceTemplate.getTopology_template().setOutputs(parameterDefinitionMap);
}
- }
- }
- if (serviceTemplate.getTopology_template().getOutputs() != null
- && serviceTemplate.getTopology_template().getOutputs().size() == 0) {
- serviceTemplate.getTopology_template().setOutputs(null);
- }
- }
- private void updateSharedResource(ServiceTemplate serviceTemplate, TranslationContext context,
- Map.Entry<String, Output> paramName,
- String sharedTranslatedResourceId, Resource resource) {
- context.addHeatSharedResourcesByParam(paramName.getKey(), sharedTranslatedResourceId, resource);
- serviceTemplate.getTopology_template().getOutputs().remove(paramName.getKey());
- }
+ if (heatFileData.getBase() != null && heatFileData.getBase().equals(true)) {
+ updateSharedResources(serviceTemplate, heatFileName, heatOrchestrationTemplate,
+ heatOrchestrationTemplate.getOutputs(), context);
+ }
+ }
- private void translateResources(String heatFileName, ServiceTemplate serviceTemplate,
- HeatOrchestrationTemplate heatOrchestrationTemplate,
- TranslationContext context) {
- if(MapUtils.isEmpty(heatOrchestrationTemplate.getResources())){
- return;
+ private void updateSharedResources(ServiceTemplate serviceTemplate, String heatFileName,
+ HeatOrchestrationTemplate heatOrchestrationTemplate,
+ Map<String, Output> outputs, TranslationContext context) {
+ for (Map.Entry<String, Output> parameter : outputs.entrySet()) {
+ Optional<AttachedResourceId> attachedSharedResourceId = HeatToToscaUtil
+ .extractAttachedResourceId(heatFileName, heatOrchestrationTemplate, context,
+ parameter.getValue().getValue());
+ if (attachedSharedResourceId.isPresent() && attachedSharedResourceId.get().isGetResource()
+ && attachedSharedResourceId.get().getTranslatedId() != null) {
+ String sharedTranslatedResourceId =
+ attachedSharedResourceId.get().getTranslatedId().toString();
+ updateSharedResource(serviceTemplate, context, parameter, sharedTranslatedResourceId,
+ heatOrchestrationTemplate.getResources()
+ .get(attachedSharedResourceId.get().getEntityId()));
+ } else {
+ Optional<String> contrailSharedResourceId = HeatToToscaUtil
+ .extractContrailGetResourceAttachedHeatResourceId(parameter.getValue().getValue());
+ if (contrailSharedResourceId.isPresent()
+ && context.getTranslatedIds().get(heatFileName).get(contrailSharedResourceId.get())
+ != null) {
+ String sharedTranslatedResourceId = context.getTranslatedIds().get(heatFileName).get
+ (contrailSharedResourceId.get());
+ ConsolidationDataUtil.removeSharedResource(serviceTemplate, heatOrchestrationTemplate,
+ context, parameter.getKey(), contrailSharedResourceId.get(), sharedTranslatedResourceId);
+ updateSharedResource(serviceTemplate, context, parameter, sharedTranslatedResourceId,
+ heatOrchestrationTemplate.getResources().get(contrailSharedResourceId.get()));
+ }
+ }
+ }
+ if (serviceTemplate.getTopology_template().getOutputs() != null
+ && serviceTemplate.getTopology_template().getOutputs().size() == 0) {
+ serviceTemplate.getTopology_template().setOutputs(null);
+ }
}
- for (String resourceId : heatOrchestrationTemplate.getResources().keySet()) {
- Resource resource = heatOrchestrationTemplate.getResources().get(resourceId);
- if (resource == null) {
- throw new CoreException(
- new ResourceNotFoundInHeatFileErrorBuilder(resourceId, heatFileName).build());
- }
- ResourceTranslationFactory.getInstance(resource)
- .translateResource(heatFileName, serviceTemplate, heatOrchestrationTemplate, resource,
- resourceId, context);
+ private void updateSharedResource(ServiceTemplate serviceTemplate, TranslationContext context,
+ Map.Entry<String, Output> paramName,
+ String sharedTranslatedResourceId, Resource resource) {
+ context.addHeatSharedResourcesByParam(paramName.getKey(), sharedTranslatedResourceId, resource);
+ serviceTemplate.getTopology_template().getOutputs().remove(paramName.getKey());
}
- }
- private Environment getHeatEnvFile(FileData heatFileData, TranslationContext context) {
- List<FileData> fileRelatedDataList = heatFileData.getData();
- if (fileRelatedDataList == null) {
- return new Environment();
+ private void translateResources(String heatFileName, ServiceTemplate serviceTemplate,
+ HeatOrchestrationTemplate heatOrchestrationTemplate,
+ TranslationContext context) {
+ if (MapUtils.isEmpty(heatOrchestrationTemplate.getResources())) {
+ return;
+ }
+
+ for (String resourceId : heatOrchestrationTemplate.getResources().keySet()) {
+ Resource resource = heatOrchestrationTemplate.getResources().get(resourceId);
+ if (resource == null) {
+ throw new CoreException(
+ new ResourceNotFoundInHeatFileErrorBuilder(resourceId, heatFileName).build());
+ }
+ ResourceTranslationFactory.getInstance(resource)
+ .translateResource(heatFileName, serviceTemplate, heatOrchestrationTemplate, resource,
+ resourceId, context);
+ }
}
- for (FileData fileRelatedData : fileRelatedDataList) {
- if (fileRelatedData.getType().equals(FileData.Type.HEAT_ENV)) {
- return new YamlUtil().yamlToObject(context.getFileContent(fileRelatedData.getFile()),
- Environment.class);
- }
+
+ private Environment getHeatEnvFile(FileData heatFileData, TranslationContext context) {
+ List<FileData> fileRelatedDataList = heatFileData.getData();
+ if (fileRelatedDataList == null) {
+ return new Environment();
+ }
+ for (FileData fileRelatedData : fileRelatedDataList) {
+ if (fileRelatedData.getType().equals(FileData.Type.HEAT_ENV)) {
+ return new YamlUtil().yamlToObject(context.getFileContent(fileRelatedData.getFile()),
+ Environment.class);
+ }
+ }
+ return new Environment();
}
- return new Environment();
- }
}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/mapping/TranslatorHeatToToscaParameterConverter.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/mapping/TranslatorHeatToToscaParameterConverter.java
index 35b617be99..930a2dee58 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/mapping/TranslatorHeatToToscaParameterConverter.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/mapping/TranslatorHeatToToscaParameterConverter.java
@@ -1,42 +1,37 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+/*
+ * Copyright © 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.mapping;
import org.apache.commons.collections4.MapUtils;
+import org.openecomp.core.utilities.file.FileUtils;
import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
import org.openecomp.sdc.heat.datatypes.model.Output;
import org.openecomp.sdc.heat.datatypes.model.Parameter;
-import org.openecomp.sdc.tosca.datatypes.model.Constraint;
-import org.openecomp.sdc.tosca.datatypes.model.EntrySchema;
-import org.openecomp.sdc.tosca.datatypes.model.ParameterDefinition;
-import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
+import org.openecomp.sdc.tosca.datatypes.extend.ToscaAnnotationType;
+import org.openecomp.sdc.tosca.datatypes.model.*;
+import org.openecomp.sdc.tosca.datatypes.model.heatextend.AnnotationDefinition;
import org.openecomp.sdc.tosca.datatypes.model.heatextend.ParameterDefinitionExt;
+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.services.heattotosca.FunctionTranslationFactory;
+import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
public class TranslatorHeatToToscaParameterConverter {
@@ -73,11 +68,9 @@ public class TranslatorHeatToToscaParameterConverter {
String heatFileName, TranslationContext context) {
Map<String, ParameterDefinition> parameterDefinitionMap = new HashMap<>();
for (Map.Entry<String, Parameter> entry : parameters.entrySet()) {
- //parameterDefinitionMap.put(entry.getKey()+"_"+ FileUtils.getFileWithoutExtention
- // (heatFileName),getToscaParameter(entry.getValue(), heatOrchestrationTemplate,
- // heatFileName, context));
- parameterDefinitionMap.put(entry.getKey(),
- getToscaParameter(serviceTemplate,entry.getKey(), entry.getValue(),
+ String heatParamName = entry.getKey();
+ parameterDefinitionMap.put(heatParamName,
+ getToscaParameter(serviceTemplate,heatParamName, entry.getValue(),
heatOrchestrationTemplate,
heatFileName, context));
}
@@ -118,7 +111,7 @@ public class TranslatorHeatToToscaParameterConverter {
* @return the tosca parameter
*/
public static ParameterDefinitionExt getToscaParameter(ServiceTemplate serviceTemplate,
- String parameterName,
+ String heatParameterName,
Parameter heatParameter,
HeatOrchestrationTemplate
heatOrchestrationTemplate,
@@ -131,14 +124,48 @@ public class TranslatorHeatToToscaParameterConverter {
toscaParameter.setLabel(heatParameter.getLabel());
toscaParameter.setDescription(heatParameter.getDescription());
toscaParameter.set_default(
- getToscaParameterDefaultValue(serviceTemplate, parameterName, heatParameter.get_default(),
+ getToscaParameterDefaultValue(serviceTemplate, heatParameterName, heatParameter.get_default(),
toscaParameter.getType(), heatFileName, heatOrchestrationTemplate, context));
toscaParameter.setHidden(heatParameter.isHidden());
toscaParameter.setImmutable(heatParameter.isImmutable());
toscaParameter.setConstraints(getToscaConstrains(heatParameter.getConstraints()));
+ Optional<Map<String, AnnotationDefinition>> annotations = getToscaAnnotations(context, serviceTemplate, heatFileName, heatParameterName);
+ annotations.ifPresent(ant->toscaParameter.setAnnotations(annotations.get()));
+
+
return toscaParameter;
}
+ private static Optional<Map<String, AnnotationDefinition> > getToscaAnnotations (TranslationContext context, ServiceTemplate serviceTemplate, String heatFileName, String heatParameterName){
+
+ if(!isAnnotationRequired(context, serviceTemplate, heatFileName)){
+ return Optional.empty();
+ }
+
+ AnnotationDefinition annotationDefinition = new AnnotationDefinition();
+ annotationDefinition.setType(ToscaAnnotationType.SOURCE);
+ annotationDefinition.setProperties(new HashMap<>());
+ List<String> vfModuleList = new ArrayList<>();
+ vfModuleList.add( FileUtils.getFileWithoutExtention(heatFileName));
+ annotationDefinition.getProperties().put(ToscaConstants.VF_MODULE_LABEL_PROPERTY_NAME, vfModuleList);
+ annotationDefinition.getProperties().put(ToscaConstants.SOURCE_TYPE_PROPERTY_NAME, ToscaConstants.HEAT_SOURCE_TYPE);
+ annotationDefinition.getProperties().put(ToscaConstants.PARAM_NAME_PROPERTY_NAME, heatParameterName);
+ Map<String, AnnotationDefinition> annotationMap = new HashMap<>();
+ annotationMap.put(ToscaConstants.SOURCE_ANNOTATION_ID, annotationDefinition);
+ return Optional.of(annotationMap);
+
+ }
+
+ private static boolean isAnnotationRequired(TranslationContext context, ServiceTemplate serviceTemplate, String heatFileName){
+ return HeatToToscaUtil.shouldAnnotationsToBeAdded() && !isNestedServiceTemplate(context, serviceTemplate, heatFileName);
+ }
+
+ private static boolean isNestedServiceTemplate(TranslationContext context, ServiceTemplate serviceTemplate, String heatFileName) {
+ String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate.getMetadata());
+ return HeatToToscaUtil.isHeatFileNested(context, heatFileName) || context.getNestedHeatFileName().containsKey(serviceTemplateFileName);
+ }
+
+
/**
* Gets tosca output parameter.
*
@@ -148,7 +175,7 @@ public class TranslatorHeatToToscaParameterConverter {
* @param context the context
* @return the tosca output parameter
*/
- public static ParameterDefinitionExt getToscaOutputParameter(ServiceTemplate serviceTemplate,
+ private static ParameterDefinitionExt getToscaOutputParameter(ServiceTemplate serviceTemplate,
String parameterName,
Output heatOutputParameter,
HeatOrchestrationTemplate