aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationNestedImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationNestedImpl.java')
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationNestedImpl.java781
1 files changed, 0 insertions, 781 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationNestedImpl.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationNestedImpl.java
deleted file mode 100644
index 2573b6849d..0000000000
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationNestedImpl.java
+++ /dev/null
@@ -1,781 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.impl;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.MapUtils;
-import org.openecomp.core.utilities.file.FileUtils;
-import org.openecomp.sdc.heat.datatypes.manifest.FileData;
-import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
-import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
-import org.openecomp.sdc.heat.datatypes.model.Resource;
-import org.openecomp.sdc.heat.services.HeatConstants;
-import org.openecomp.sdc.tosca.datatypes.ToscaCapabilityType;
-import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
-import org.openecomp.sdc.tosca.datatypes.ToscaRelationshipType;
-import org.openecomp.sdc.tosca.datatypes.model.AttributeDefinition;
-import org.openecomp.sdc.tosca.datatypes.model.CapabilityDefinition;
-import org.openecomp.sdc.tosca.datatypes.model.Metadata;
-import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
-import org.openecomp.sdc.tosca.datatypes.model.NodeType;
-import org.openecomp.sdc.tosca.datatypes.model.ParameterDefinition;
-import org.openecomp.sdc.tosca.datatypes.model.PropertyDefinition;
-import org.openecomp.sdc.tosca.datatypes.model.PropertyType;
-import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
-import org.openecomp.sdc.tosca.datatypes.model.RequirementDefinition;
-import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
-import org.openecomp.sdc.tosca.datatypes.model.SubstitutionMapping;
-import org.openecomp.sdc.tosca.datatypes.model.Template;
-import org.openecomp.sdc.tosca.datatypes.model.TopologyTemplate;
-import org.openecomp.sdc.tosca.services.DataModelUtil;
-import org.openecomp.sdc.tosca.services.ToscaConstants;
-import org.openecomp.sdc.tosca.services.ToscaUtil;
-import org.openecomp.sdc.translator.datatypes.heattotosca.AttachedResourceId;
-import org.openecomp.sdc.translator.datatypes.heattotosca.to.ResourceFileDataAndIDs;
-import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
-import org.openecomp.sdc.translator.services.heattotosca.Constants;
-import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
-import org.openecomp.sdc.translator.services.heattotosca.TranslationContext;
-import org.openecomp.sdc.translator.services.heattotosca.TranslationService;
-import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator;
-import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesUtil;
-import org.openecomp.sdc.translator.services.heattotosca.mapping.TranslatorHeatToToscaPropertyConverter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-
-public class ResourceTranslationNestedImpl extends ResourceTranslationBase {
-
- protected static Logger logger = LoggerFactory.getLogger(ResourceTranslationNestedImpl.class);
-
- @Override
- public void translate(TranslateTo translateTo) {
- FileData nestedFileData =
- getFileData(translateTo.getResource().getType(), translateTo.getContext());
- String templateName = FileUtils.getFileWithoutExtention(translateTo.getResource().getType());
- String substitutionNodeTypeKey = ToscaConstants.NODES_SUBSTITUTION_PREFIX + templateName;
-
- if (!translateTo.getContext().getTranslatedServiceTemplates()
- .containsKey(translateTo.getResource().getType())) {
-
- //substitution template
- ServiceTemplate nestedSubstitutionServiceTemplate = new ServiceTemplate();
- Metadata templateMetadata = new Metadata();
- templateMetadata.setTemplate_name(templateName);
- nestedSubstitutionServiceTemplate.setMetadata(templateMetadata);
- nestedSubstitutionServiceTemplate
- .setTosca_definitions_version(ToscaConstants.TOSCA_DEFINITIONS_VERSION);
- nestedSubstitutionServiceTemplate.setTopology_template(new TopologyTemplate());
- nestedSubstitutionServiceTemplate.setImports(GlobalTypesGenerator.getGlobalTypesImportList());
- nestedSubstitutionServiceTemplate.getImports()
- .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME, GlobalTypesUtil
- .createServiceTemplateImport(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME));
-
- TranslationService translationService = new TranslationService();
-
- translationService.translateHeatFile(nestedSubstitutionServiceTemplate, nestedFileData,
- translateTo.getContext());
-
- //global substitution template
- ServiceTemplate globalSubstitutionServiceTemplate;
- globalSubstitutionServiceTemplate = translateTo.getContext().getTranslatedServiceTemplates()
- .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME);
- if (globalSubstitutionServiceTemplate == null) {
- globalSubstitutionServiceTemplate = new ServiceTemplate();
- templateMetadata = new Metadata();
- templateMetadata.setTemplate_name(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME);
- globalSubstitutionServiceTemplate.setMetadata(templateMetadata);
- globalSubstitutionServiceTemplate
- .setImports(GlobalTypesGenerator.getGlobalTypesImportList());
- globalSubstitutionServiceTemplate
- .setTosca_definitions_version(ToscaConstants.TOSCA_DEFINITIONS_VERSION);
- }
- translateTo.getServiceTemplate().getImports()
- .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME, GlobalTypesUtil
- .createServiceTemplateImport(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME));
-
-
- //substitution node type
- NodeType substitutionNodeType = new NodeType();
- substitutionNodeType.setDerived_from(ToscaNodeType.ABSTRACT_SUBSTITUTE.getDisplayName());
- substitutionNodeType.setDescription(nestedSubstitutionServiceTemplate.getDescription());
- substitutionNodeType
- .setProperties(manageSubstitutionNodeTypeProperties(nestedSubstitutionServiceTemplate));
- substitutionNodeType
- .setAttributes(manageSubstitutionNodeTypeAttributes(nestedSubstitutionServiceTemplate));
- DataModelUtil.addNodeType(globalSubstitutionServiceTemplate, substitutionNodeTypeKey,
- substitutionNodeType);
- Map<String, Map<String, List<String>>> substitutionMapping =
- manageSubstitutionNodeTypeCapabilitiesAndRequirements(substitutionNodeType,
- nestedSubstitutionServiceTemplate, translateTo);
- //calculate substitution mapping after capability and requirement expose calculation
- nestedSubstitutionServiceTemplate.getTopology_template().setSubstitution_mappings(
- manageSubstitutionTemplateSubstitutionMapping(substitutionNodeTypeKey,
- substitutionNodeType, substitutionMapping));
-
- //add new service template
- translateTo.getContext().getTranslatedServiceTemplates()
- .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
- globalSubstitutionServiceTemplate);
- translateTo.getContext().getTranslatedServiceTemplates()
- .put(translateTo.getResource().getType(), nestedSubstitutionServiceTemplate);
- }
-
- NodeTemplate substitutionNodeTemplate = new NodeTemplate();
- List<String> directiveList = new ArrayList<>();
- directiveList.add(ToscaConstants.NODE_TEMPLATE_DIRECTIVE_SUBSTITUTABLE);
- substitutionNodeTemplate.setDirectives(directiveList);
- substitutionNodeTemplate.setType(substitutionNodeTypeKey);
- substitutionNodeTemplate.setProperties(
- managerSubstitutionNodeTemplateProperties(translateTo, substitutionNodeTemplate,
- templateName));
- manageSubstitutionNodeTemplateConnectionPoint(translateTo, nestedFileData,
- substitutionNodeTemplate);
- DataModelUtil.addNodeTemplate(translateTo.getServiceTemplate(), translateTo.getTranslatedId(),
- substitutionNodeTemplate);
- }
-
- private void manageSubstitutionNodeTemplateConnectionPoint(TranslateTo translateTo,
- FileData nestedFileData,
- NodeTemplate substitutionNodeTemplate) {
- ServiceTemplate globalSubstitutionTemplate =
- translateTo.getContext().getTranslatedServiceTemplates()
- .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME);
- NodeType nodeType = globalSubstitutionTemplate.getNode_types().get(
- ToscaConstants.NODES_SUBSTITUTION_PREFIX
- + FileUtils.getFileWithoutExtention(translateTo.getResource().getType()));
- handlePortToNetConnections(translateTo, nestedFileData, substitutionNodeTemplate, nodeType);
- handleSecurityRulesToPortConnections(translateTo, nestedFileData, substitutionNodeTemplate,
- nodeType);
- handleNovaToVolConnection(translateTo, nestedFileData, substitutionNodeTemplate, nodeType);
- handleContrailV2VmInterfaceToNetworkConnection(translateTo, nestedFileData,
- substitutionNodeTemplate, nodeType);
- }
-
- private void handleContrailV2VmInterfaceToNetworkConnection(TranslateTo translateTo,
- FileData nestedFileData,
- NodeTemplate substitutionNodeTemplate,
- NodeType nodeType) {
- ContrailV2VmInterfaceToNetResourceConnection linker =
- new ContrailV2VmInterfaceToNetResourceConnection(this, translateTo, nestedFileData,
- substitutionNodeTemplate, nodeType);
- linker.connect();
- }
-
- private void handleNovaToVolConnection(TranslateTo translateTo, FileData nestedFileData,
- NodeTemplate substitutionNodeTemplate, NodeType nodeType) {
- NovaToVolResourceConnection linker =
- new NovaToVolResourceConnection(this, translateTo, nestedFileData, substitutionNodeTemplate,
- nodeType);
- linker.connect();
- }
-
- private void handleSecurityRulesToPortConnections(TranslateTo translateTo,
- FileData nestedFileData,
- NodeTemplate substitutionNodeTemplate,
- NodeType nodeType) {
- SecurityRulesToPortResourceConnection linker =
- new SecurityRulesToPortResourceConnection(this, translateTo, nestedFileData,
- substitutionNodeTemplate, nodeType);
- linker.connect();
- }
-
- private void handlePortToNetConnections(TranslateTo translateTo, FileData nestedFileData,
- NodeTemplate substitutionNodeTemplate,
- NodeType nodeType) {
- PortToNetResourceConnection linker =
- new PortToNetResourceConnection(this, translateTo, nestedFileData, substitutionNodeTemplate,
- nodeType);
- linker.connect();
- }
-
- private List<Map<String, RequirementDefinition>> getVolumeRequirements(NodeType nodeType) {
- List<Map<String, RequirementDefinition>> volumeRequirementsList = new ArrayList<>();
- List<Map<String, RequirementDefinition>> requirementsList = nodeType.getRequirements();
-
- for (int i = 0; requirementsList != null && i < requirementsList.size(); i++) {
- RequirementDefinition req;
- for (Map.Entry<String, RequirementDefinition> entry : requirementsList.get(i).entrySet()) {
- req = entry.getValue();
- if (isVolumeRequirement(req, ToscaCapabilityType.ATTACHMENT.getDisplayName(),
- ToscaNodeType.BLOCK_STORAGE.getDisplayName(),
- ToscaRelationshipType.NATIVE_ATTACHES_TO.getDisplayName())) {
- Map<String, RequirementDefinition> volumeRequirementsMap = new HashMap<>();
- volumeRequirementsMap.put(entry.getKey(), entry.getValue());
- volumeRequirementsList.add(volumeRequirementsMap);
- }
-
- }
- }
- return volumeRequirementsList;
- }
-
- private boolean isVolumeRequirement(RequirementDefinition req, String capability, String node,
- String relationship) {
- return req.getCapability().equals(capability) && req.getRelationship().equals(relationship)
- && req.getNode().equals(node);
- }
-
- private String getVolumeIdProperty(HeatOrchestrationTemplate heatOrchestrationTemplate,
- String resourceId) {
-
- String novaResourceId;
- String volumeId = null;
- for (Resource resource : heatOrchestrationTemplate.getResources().values()) {
- if (resource.getType()
- .equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE.getHeatResource())) {
- Optional<String> optNovaResourceId =
- getToscaPropertyValueSource(HeatConstants.INSTANCE_UUID_PROPERTY_NAME, resource,
- "get_resource");
- if (optNovaResourceId.isPresent()) {
- novaResourceId = optNovaResourceId.get();
- if (novaResourceId.equals(resourceId)) {
- Optional<String> optVolumeId =
- getToscaPropertyValueSource(HeatConstants.VOLUME_ID_PROPERTY_NAME, resource,
- "get_param");
- if (optVolumeId.isPresent()) {
- volumeId = optVolumeId.get();
- }
- } else {
- logger.warn("property:" + HeatConstants.VOLUME_ID_PROPERTY_NAME + " of resource type:"
- + resource.getType() + " should contain 'get_param' function");
- }
- }
- }
- }
- return volumeId;
- }
-
- private String getTranslatedVolumeIdByVolumeIdProperty(String volumeId, TranslateTo translateTo) {
- Optional<AttachedResourceId> volumeIdInfo =
- HeatToToscaUtil.extractAttachedResourceId(translateTo, volumeId);
- if (volumeIdInfo.isPresent()) {
- if (volumeIdInfo.get().isGetResource()) {
- return null;//(String) volumeIdInfo.get().getTranslatedId();
- } else if (volumeIdInfo.get().isGetParam()) {
- List<FileData> allFilesData = translateTo.getContext().getManifest().getContent().getData();
- Optional<List<FileData>> fileDataList = HeatToToscaUtil
- .buildListOfFilesToSearch(translateTo.getHeatFileName(), allFilesData,
- FileData.Type.HEAT_VOL);
- if (fileDataList.isPresent()) {
- Optional<ResourceFileDataAndIDs> resourceFileDataAndIDs =
- getFileDataContainingResource(fileDataList.get(),
- (String) volumeIdInfo.get().getEntityId(), translateTo.getContext(),
- FileData.Type.HEAT_VOL);
- if (resourceFileDataAndIDs.isPresent()) {
- return resourceFileDataAndIDs.get().getTranslatedResourceId();
- } else {
- logger.warn("The attached volume based on volume_id property: " + volumeId + " in "
- + translateTo.getResourceId()
- + " can't be found, searching for volume resource id - "
- + volumeIdInfo.get().getEntityId());
- return null;
- }
- } else {
- return null;
- }
- } else {
- logger.warn("property:" + volumeId + " of resource :" + volumeIdInfo.get().getEntityId()
- + " should contain 'get_param' or 'get_resource' function");
- return null;
- }
- } else {
- logger.warn("property:" + volumeId + " of resource :" + translateTo.getResource().toString()
- + " is not exist");
- return null;
- }
- }
-
- private Optional<String> getToscaPropertyValueSource(String propertyName, Resource resource,
- String key) {
- Object propertyInstanceUuIdValue;
- propertyInstanceUuIdValue = resource.getProperties().get(propertyName);
- if (propertyInstanceUuIdValue instanceof Map) {
- return Optional.ofNullable((String) ((Map) propertyInstanceUuIdValue).get(key));
- } else {
- logger.warn("property:" + propertyName + " of resource type:" + resource.getType()
- + " should have a value in key value format");
-
- }
- return Optional.empty();
-
- }
-
- private Map<String, Map<String, List<String>>>
- manageSubstitutionNodeTypeCapabilitiesAndRequirements(
- NodeType substitutionNodeType, ServiceTemplate substitutionServiceTemplate,
- TranslateTo translateTo) {
-
- Map<String, NodeTemplate> nodeTemplates =
- substitutionServiceTemplate.getTopology_template().getNode_templates();
- String templateName;
- NodeTemplate template;
- String type;
- Map<String, Map<String, List<String>>> substitutionMapping = new HashMap<>();
- if (nodeTemplates == null) {
- return substitutionMapping;
- }
-
- Map<String, List<String>> capabilitySubstitutionMapping = new HashMap<>();
- Map<String, List<String>> requirementSubstitutionMapping = new HashMap<>();
- substitutionMapping.put("capability", capabilitySubstitutionMapping);
- substitutionMapping.put("requirement", requirementSubstitutionMapping);
- List<Map<String, RequirementDefinition>> nodeTypeRequirementsDefinition;
- Map<String, RequirementAssignment> nodeTemplateRequirementsAssignment;
- List<Map<String, RequirementDefinition>> exposedRequirementsDefinition;
- Map<String, Map<String, RequirementAssignment>> fullFilledRequirementsDefinition =
- new HashMap<>();
- Map<String, CapabilityDefinition> nodeTypeCapabilitiesDefinition = new HashMap<>();
- Map<String, CapabilityDefinition> exposedCapabilitiesDefinition;
-
- for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) {
- templateName = entry.getKey();
- template = entry.getValue();
- type = template.getType();
-
- // get requirements
- nodeTypeRequirementsDefinition =
- getNodeTypeRequirements(type, templateName, substitutionServiceTemplate,
- requirementSubstitutionMapping, translateTo.getContext());
- nodeTemplateRequirementsAssignment = getNodeTemplateRequirements(template);
- fullFilledRequirementsDefinition.put(templateName, nodeTemplateRequirementsAssignment);
- //set substitution node type requirements
- exposedRequirementsDefinition = calculateExposedRequirements(nodeTypeRequirementsDefinition,
- nodeTemplateRequirementsAssignment);
- addSubstitutionNodeTypeRequirements(substitutionNodeType, exposedRequirementsDefinition,
- templateName);
-
- //get capabilities
- getNodeTypeCapabilities(nodeTypeCapabilitiesDefinition, capabilitySubstitutionMapping, type,
- templateName, substitutionServiceTemplate, translateTo.getContext());
-
- }
-
- exposedCapabilitiesDefinition = calculateExposedCapabilities(nodeTypeCapabilitiesDefinition,
- fullFilledRequirementsDefinition);
- addSubstitutionNodeTypeCapabilities(substitutionNodeType, exposedCapabilitiesDefinition);
- return substitutionMapping;
- }
-
- private Map<String, CapabilityDefinition> calculateExposedCapabilities(
- Map<String, CapabilityDefinition> nodeTypeCapabilitiesDefinition,
- Map<String, Map<String, RequirementAssignment>> fullFilledRequirementsDefinitionMap) {
-
- String capabilityKey;
- String capability;
- String node;
- CapabilityDefinition capabilityDefinition;
- CapabilityDefinition clonedCapabilityDefinition;
- for (Map.Entry<String, Map<String, RequirementAssignment>> entry
- : fullFilledRequirementsDefinitionMap.entrySet()) {
- for (Map.Entry<String, RequirementAssignment> fullFilledEntry : entry.getValue().entrySet()) {
-
- capability = fullFilledEntry.getValue().getCapability();
- fullFilledEntry.getValue().getOccurrences();
- node = fullFilledEntry.getValue().getNode();
- capabilityKey = capability + "_" + node;
- capabilityDefinition = nodeTypeCapabilitiesDefinition.get(capabilityKey);
- if (capabilityDefinition != null) {
- clonedCapabilityDefinition = capabilityDefinition.clone();
- nodeTypeCapabilitiesDefinition.put(capabilityKey, capabilityDefinition.clone());
- if (evaluateCapabilityFullFilament(clonedCapabilityDefinition)) {
- nodeTypeCapabilitiesDefinition.remove(capabilityKey);
- } else {
- nodeTypeCapabilitiesDefinition.put(capabilityKey, clonedCapabilityDefinition);
- }
- }
- }
- }
-
- Map<String, CapabilityDefinition> exposedCapabilitiesDefinition = new HashMap<>();
- for (Map.Entry<String, CapabilityDefinition> entry : nodeTypeCapabilitiesDefinition
- .entrySet()) {
- exposedCapabilitiesDefinition.put(entry.getKey(), entry.getValue());
- }
- return exposedCapabilitiesDefinition;
- }
-
- private boolean evaluateCapabilityFullFilament(CapabilityDefinition capabilityDefinition) {
- Object[] occurrences = capabilityDefinition.getOccurrences();
- if (occurrences == null) {
- capabilityDefinition.setOccurrences(new Object[]{"0", ToscaConstants.UNBOUNDED});
- return false;
- }
- if (occurrences[1].equals(ToscaConstants.UNBOUNDED)) {
- return false;
- }
-
- if (occurrences[1].equals(1)) {
- return true;
- }
- occurrences[1] = (Integer) occurrences[1] - 1;
- return false;
- }
-
- private boolean evaluateRequirementFullFilament(RequirementDefinition requirementDefinition) {
- Object[] occurrences = requirementDefinition.getOccurrences();
- if (occurrences == null) {
- requirementDefinition.setOccurrences(new Object[]{"0", ToscaConstants.UNBOUNDED});
- return false;
- }
- if (occurrences[1].equals(ToscaConstants.UNBOUNDED)) {
- return false;
- }
-
- if (occurrences[1].equals(1)) {
- return true;
- }
- occurrences[1] = (Integer) occurrences[1] - 1;
- return false;
- }
-
- private void getNodeTypeCapabilities(
- Map<String, CapabilityDefinition> nodeTypeCapabilitiesDefinition,
- Map<String, List<String>> capabilitySubstitutionMapping, String type, String templateName,
- ServiceTemplate serviceTemplate, TranslationContext context) {
- NodeType nodeType = getNodeTypeWithFlatHierarchy(type, serviceTemplate, context);
- String capabilityKey;
- List<String> capabilityMapping;
- if (nodeType.getCapabilities() != null) {
- for (Map.Entry<String, CapabilityDefinition> capabilityNodeEntry : nodeType.getCapabilities()
- .entrySet()) {
- capabilityKey = capabilityNodeEntry.getKey() + "_" + templateName;
- nodeTypeCapabilitiesDefinition.put(capabilityKey, capabilityNodeEntry.getValue().clone());
- capabilityMapping = new ArrayList<>();
- capabilityMapping.add(templateName);
- capabilityMapping.add(capabilityNodeEntry.getKey());
- capabilitySubstitutionMapping.put(capabilityKey, capabilityMapping);
- }
- }
-
- String derivedFrom = nodeType.getDerived_from();
- if (derivedFrom != null) {
- getNodeTypeCapabilities(nodeTypeCapabilitiesDefinition, capabilitySubstitutionMapping,
- derivedFrom, templateName, serviceTemplate, context);
- }
- }
-
- private List<Map<String, RequirementDefinition>> calculateExposedRequirements(
- List<Map<String, RequirementDefinition>> nodeTypeRequirementsDefinitionList,
- Map<String, RequirementAssignment> nodeTemplateRequirementsAssignment) {
- if (nodeTypeRequirementsDefinitionList == null) {
- return null;
- }
- for (Map.Entry<String, RequirementAssignment> entry : nodeTemplateRequirementsAssignment
- .entrySet()) {
- if (entry.getValue().getNode() != null) {
- RequirementDefinition requirementDefinition =
- getRequirementDefinition(nodeTypeRequirementsDefinitionList, entry.getKey());
- RequirementDefinition cloneRequirementDefinition;
- if (requirementDefinition != null) {
- cloneRequirementDefinition = requirementDefinition.clone();
- if (!evaluateRequirementFullFilament(cloneRequirementDefinition)) {
- this.mergeEntryInList(entry.getKey(), cloneRequirementDefinition,
- nodeTypeRequirementsDefinitionList);
- } else {
- removeRequirementsDefinition(nodeTypeRequirementsDefinitionList, entry.getKey());
- }
- }
- } else {
- for (Map<String, RequirementDefinition> nodeTypeRequirementsMap
- : nodeTypeRequirementsDefinitionList) {
- Object max = nodeTypeRequirementsMap.get(entry.getKey()).getOccurrences() != null
- && nodeTypeRequirementsMap.get(entry.getKey()).getOccurrences().length > 0
- ? nodeTypeRequirementsMap.get(entry.getKey()).getOccurrences()[1] : 1;
- Object min = nodeTypeRequirementsMap.get(entry.getKey()).getOccurrences() != null
- && nodeTypeRequirementsMap.get(entry.getKey()).getOccurrences().length > 0
- ? nodeTypeRequirementsMap.get(entry.getKey()).getOccurrences()[0] : 1;
- nodeTypeRequirementsMap.get(entry.getKey()).setOccurrences(new Object[]{min, max});
- }
- }
- }
- return nodeTypeRequirementsDefinitionList;
- }
-
- private void removeRequirementsDefinition(
- List<Map<String, RequirementDefinition>> nodeTypeRequirementsDefinitionList,
- String requirementKey) {
- for (Map<String, RequirementDefinition> reqMap : nodeTypeRequirementsDefinitionList) {
- reqMap.remove(requirementKey);
- }
- }
-
- private RequirementDefinition getRequirementDefinition(
- List<Map<String, RequirementDefinition>> nodeTypeRequirementsDefinitionList,
- String requirementKey) {
- for (Map<String, RequirementDefinition> requirementMap : nodeTypeRequirementsDefinitionList) {
- if (requirementMap.containsKey(requirementKey)) {
- return requirementMap.get(requirementKey);
- }
- }
- return null;
- }
-
- private Map<String, RequirementAssignment> getNodeTemplateRequirements(NodeTemplate template) {
- List<Map<String, RequirementAssignment>> templateRequirements = template.getRequirements();
-
- Map<String, RequirementAssignment> nodeTemplateRequirementsDefinition = new HashMap<>();
- if (CollectionUtils.isEmpty(templateRequirements)) {
- return nodeTemplateRequirementsDefinition;
- }
- for (Map<String, RequirementAssignment> requirementAssignmentMap : templateRequirements) {
- for (Map.Entry<String, RequirementAssignment> requirementEntry : requirementAssignmentMap
- .entrySet()) {
- nodeTemplateRequirementsDefinition
- .put(requirementEntry.getKey(), requirementEntry.getValue());
- }
- }
- return nodeTemplateRequirementsDefinition;
- }
-
- private List<Map<String, RequirementDefinition>> getNodeTypeRequirements(String type,
- String templateName,
- ServiceTemplate serviceTemplate,
- Map<String, List<String>> requirementSubstitutionMapping,
- TranslationContext context) {
- List<Map<String, RequirementDefinition>> requirementList = null;
- NodeType nodeType = getNodeTypeWithFlatHierarchy(type, serviceTemplate, context);
- String derivedFrom = nodeType.getDerived_from();
- List<String> requirementMapping;
- if (derivedFrom != null) {
- requirementList = getNodeTypeRequirements(derivedFrom, templateName, serviceTemplate,
- requirementSubstitutionMapping, context);
- }
- if (requirementList == null) {
- requirementList = new ArrayList<>();
- }
-
- if (nodeType.getRequirements() != null) {
- for (Map<String, RequirementDefinition> requirementMap : nodeType.getRequirements()) {
- for (Map.Entry<String, RequirementDefinition> requirementNodeEntry : requirementMap
- .entrySet()) {
- if (requirementNodeEntry.getValue().getOccurrences() == null) {
- requirementNodeEntry.getValue().setOccurrences(new Object[]{1, 1});
- }
- Map<String, RequirementDefinition> requirementDef = new HashMap<>();
- requirementDef.put(requirementNodeEntry.getKey(), requirementNodeEntry.getValue());
- addRequirementToList(requirementList, requirementDef);
- requirementMapping = new ArrayList<>();
- requirementMapping.add(templateName);
- requirementMapping.add(requirementNodeEntry.getKey());
- requirementSubstitutionMapping
- .put(requirementNodeEntry.getKey() + "_" + templateName, requirementMapping);
- if (requirementNodeEntry.getValue().getNode() == null) {
- requirementNodeEntry.getValue().setOccurrences(new Object[]{1, 1});
- }
- }
- }
- }
-
- return requirementList;
- }
-
- private void addRequirementToList(List<Map<String, RequirementDefinition>> requirementList,
- Map<String, RequirementDefinition> requirementDef) {
- for (Map.Entry<String, RequirementDefinition> entry : requirementDef.entrySet()) {
- this.mergeEntryInList(entry.getKey(), entry.getValue(), requirementList);
- }
- }
-
- private void addSubstitutionNodeTypeCapabilities(NodeType substitutionNodeType,
- Map<String, CapabilityDefinition> capabilities) {
- if (capabilities == null || capabilities.entrySet().size() == 0) {
- return;
- }
-
- if (MapUtils.isEmpty(substitutionNodeType.getCapabilities())) {
- substitutionNodeType.setCapabilities(new HashMap<>());
- }
- if (capabilities.size() > 0) {
- substitutionNodeType.setCapabilities(new HashMap<>());
- }
- for (Map.Entry<String, CapabilityDefinition> entry : capabilities.entrySet()) {
- substitutionNodeType.getCapabilities().put(entry.getKey(), entry.getValue());
- }
- }
-
- private void addSubstitutionNodeTypeRequirements(NodeType substitutionNodeType,
- List<Map<String, RequirementDefinition>> requirementsList,
- String templateName) {
- if (requirementsList == null || requirementsList.size() == 0) {
- return;
- }
-
- if (substitutionNodeType.getRequirements() == null) {
- substitutionNodeType.setRequirements(new ArrayList<>());
- }
-
- for (Map<String, RequirementDefinition> requirementDef : requirementsList) {
- for (Map.Entry<String, RequirementDefinition> entry : requirementDef.entrySet()) {
- Map<String, RequirementDefinition> requirementMap = new HashMap<>();
- requirementMap.put(entry.getKey() + "_" + templateName, entry.getValue().clone());
- substitutionNodeType.getRequirements().add(requirementMap);
- }
- }
- }
-
-
- private SubstitutionMapping manageSubstitutionTemplateSubstitutionMapping(String nodeTypeKey,
- NodeType substitutionNodeType,
- Map<String, Map<String, List<String>>> mapping) {
- SubstitutionMapping substitutionMapping = new SubstitutionMapping();
- substitutionMapping.setNode_type(nodeTypeKey);
- substitutionMapping.setCapabilities(
- manageCapabilityMapping(substitutionNodeType.getCapabilities(), mapping.get("capability")));
- substitutionMapping.setRequirements(
- manageRequirementMapping(substitutionNodeType.getRequirements(),
- mapping.get("requirement")));
- return substitutionMapping;
- }
-
- private Map<String, List<String>> manageCapabilityMapping(
- Map<String, CapabilityDefinition> capabilities,
- Map<String, List<String>> capabilitySubstitutionMapping) {
- if (capabilities == null) {
- return null;
- }
-
- Map<String, List<String>> capabilityMapping = new HashMap<>();
- String capabilityKey;
- List<String> capabilityMap;
- for (Map.Entry<String, CapabilityDefinition> entry : capabilities.entrySet()) {
- capabilityKey = entry.getKey();
- capabilityMap = capabilitySubstitutionMapping.get(capabilityKey);
- capabilityMapping.put(capabilityKey, capabilityMap);
- }
- return capabilityMapping;
- }
-
- private Map<String, List<String>> manageRequirementMapping(
- List<Map<String, RequirementDefinition>> requirementList,
- Map<String, List<String>> requirementSubstitutionMapping) {
- if (requirementList == null) {
- return null;
- }
- Map<String, List<String>> requirementMapping = new HashMap<>();
- String requirementKey;
- List<String> requirementMap;
- for (Map<String, RequirementDefinition> requirementDefMap : requirementList) {
- for (Map.Entry<String, RequirementDefinition> entry : requirementDefMap.entrySet()) {
- requirementKey = entry.getKey();
- requirementMap = requirementSubstitutionMapping.get(requirementKey);
- requirementMapping.put(requirementKey, requirementMap);
- }
- }
- return requirementMapping;
- }
-
-
- private Map<String, AttributeDefinition> manageSubstitutionNodeTypeAttributes(
- ServiceTemplate substitutionServiceTemplate) {
-
- Map<String, AttributeDefinition> substitutionNodeTypeAttributes = new HashMap<>();
- Map<String, ParameterDefinition> attributes =
- substitutionServiceTemplate.getTopology_template().getOutputs();
- if (attributes == null) {
- return null;
- }
- AttributeDefinition attributeDefinition;
- String toscaAttributeName;
-
- for (Map.Entry<String, ParameterDefinition> entry : attributes.entrySet()) {
- attributeDefinition = new AttributeDefinition();
- toscaAttributeName = entry.getKey();
- ParameterDefinition parameterDefinition =
- substitutionServiceTemplate.getTopology_template().getOutputs().get(toscaAttributeName);
- if (parameterDefinition.getType() != null && !parameterDefinition.getType().isEmpty()) {
- attributeDefinition.setType(parameterDefinition.getType());
- } else {
- attributeDefinition.setType(PropertyType.STRING.getDisplayName());
- }
- attributeDefinition.setDescription(parameterDefinition.getDescription());
- attributeDefinition.set_default(parameterDefinition.get_default());
- attributeDefinition.setEntry_schema(parameterDefinition.getEntry_schema());
- attributeDefinition.setStatus(parameterDefinition.getStatus());
- substitutionNodeTypeAttributes.put(toscaAttributeName, attributeDefinition);
- }
- return substitutionNodeTypeAttributes;
- }
-
- private Map<String, PropertyDefinition> manageSubstitutionNodeTypeProperties(
- ServiceTemplate substitutionServiceTemplate) {
- Map<String, PropertyDefinition> substitutionNodeTypeProperties = new HashMap<>();
- Map<String, ParameterDefinition> properties =
- substitutionServiceTemplate.getTopology_template().getInputs();
- if (properties == null) {
- return null;
- }
-
- PropertyDefinition propertyDefinition;
- String toscaPropertyName;
- for (Map.Entry<String, ParameterDefinition> entry : properties.entrySet()) {
- toscaPropertyName = entry.getKey();
- propertyDefinition = new PropertyDefinition();
- ParameterDefinition parameterDefinition =
- substitutionServiceTemplate.getTopology_template().getInputs().get(toscaPropertyName);
- propertyDefinition.setType(parameterDefinition.getType());
- propertyDefinition.setDescription(parameterDefinition.getDescription());
- propertyDefinition.setRequired(parameterDefinition.getRequired());
- propertyDefinition.set_default(parameterDefinition.get_default());
- propertyDefinition.setConstraints(parameterDefinition.getConstraints());
- propertyDefinition.setEntry_schema(parameterDefinition.getEntry_schema());
- propertyDefinition.setStatus(parameterDefinition.getStatus());
- substitutionNodeTypeProperties.put(toscaPropertyName, propertyDefinition);
- }
- return substitutionNodeTypeProperties;
- }
-
- private Map<String, Object> managerSubstitutionNodeTemplateProperties(TranslateTo translateTo,
- Template template,
- String templateName) {
- Map<String, Object> substitutionProperties = new HashMap<>();
- Map<String, Object> heatProperties = translateTo.getResource().getProperties();
- if (Objects.nonNull(heatProperties)) {
- for (Map.Entry<String, Object> entry : heatProperties.entrySet()) {
-
- Object property = TranslatorHeatToToscaPropertyConverter
- .getToscaPropertyValue(entry.getKey(), entry.getValue(), null,
- translateTo.getHeatFileName(), translateTo.getHeatOrchestrationTemplate(), template,
- translateTo.getContext());
- substitutionProperties.put(entry.getKey(), property);
- }
- }
-
- return addAbstractSubstitutionProperty(templateName, substitutionProperties);
- }
-
- private Map<String, Object> addAbstractSubstitutionProperty(String templateName,
- Map<String, Object> substitutionProperties) {
- Map<String, Object> innerProps = new HashMap<>();
- innerProps.put(ToscaConstants.SUBSTITUTE_SERVICE_TEMPLATE_PROPERTY_NAME,
- ToscaUtil.getServiceTemplateFileName(templateName));
- substitutionProperties.put(ToscaConstants.SERVICE_TEMPLATE_FILTER_PROPERTY_NAME, innerProps);
- return substitutionProperties;
- }
-
-
-}