aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationBase.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/ResourceTranslationBase.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/ResourceTranslationBase.java456
1 files changed, 0 insertions, 456 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/ResourceTranslationBase.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationBase.java
deleted file mode 100644
index 45e3830f6f..0000000000
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationBase.java
+++ /dev/null
@@ -1,456 +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.apache.commons.lang3.StringUtils;
-import org.openecomp.core.utilities.yaml.YamlUtil;
-import org.openecomp.sdc.common.errors.CoreException;
-import org.openecomp.sdc.heat.datatypes.manifest.FileData;
-import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
-import org.openecomp.sdc.heat.datatypes.model.Output;
-import org.openecomp.sdc.heat.datatypes.model.Resource;
-import org.openecomp.sdc.tosca.datatypes.ToscaCapabilityType;
-import org.openecomp.sdc.tosca.datatypes.ToscaRelationshipType;
-import org.openecomp.sdc.tosca.datatypes.model.ArtifactDefinition;
-import org.openecomp.sdc.tosca.datatypes.model.AttributeDefinition;
-import org.openecomp.sdc.tosca.datatypes.model.CapabilityDefinition;
-import org.openecomp.sdc.tosca.datatypes.model.Import;
-import org.openecomp.sdc.tosca.datatypes.model.InterfaceDefinition;
-import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
-import org.openecomp.sdc.tosca.datatypes.model.NodeType;
-import org.openecomp.sdc.tosca.datatypes.model.PropertyDefinition;
-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.services.DataModelUtil;
-import org.openecomp.sdc.tosca.services.ToscaConstants;
-import org.openecomp.sdc.tosca.services.ToscaNativeTypesServiceTemplate;
-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.HeatToToscaUtil;
-import org.openecomp.sdc.translator.services.heattotosca.ResourceTranslation;
-import org.openecomp.sdc.translator.services.heattotosca.ResourceTranslationFactory;
-import org.openecomp.sdc.translator.services.heattotosca.TranslationContext;
-import org.openecomp.sdc.translator.services.heattotosca.TranslationService;
-import org.openecomp.sdc.translator.services.heattotosca.errors.ResourceNotFoundInHeatFileErrorBuilder;
-import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-
-public abstract class ResourceTranslationBase implements ResourceTranslation {
-
- protected static Logger logger = LoggerFactory.getLogger(ResourceTranslationBase.class);
-
- static Optional<ResourceFileDataAndIDs> getFileDataContainingResource(
- List<FileData> filesToSearch, String resourceId, TranslationContext context,
- FileData.Type... types) {
- if (CollectionUtils.isEmpty(filesToSearch)) {
- return Optional.empty();
- }
-
- List<FileData> fileDatas = Objects.isNull(types) ? filesToSearch
- : HeatToToscaUtil.getFilteredListOfFileDataByTypes(filesToSearch, types);
- for (FileData data : fileDatas) {
- HeatOrchestrationTemplate heatOrchestrationTemplate = new YamlUtil()
- .yamlToObject(context.getFiles().getFileContent(data.getFile()),
- HeatOrchestrationTemplate.class);
- Map<String, Output> outputs = heatOrchestrationTemplate.getOutputs();
- if (Objects.isNull(outputs)) {
- continue;
- }
- Output output = outputs.get(resourceId);
- if (Objects.nonNull(output)) {
- Optional<AttachedResourceId> attachedOutputId = HeatToToscaUtil
- .extractAttachedResourceId(data.getFile(), heatOrchestrationTemplate, context,
- output.getValue());
- if (attachedOutputId.isPresent()) {
- AttachedResourceId attachedResourceId = attachedOutputId.get();
- if (!attachedResourceId.isGetResource()) {
- logger.warn("output: '" + resourceId + "' in file '" + data.getFile()
- + "' is not defined as get_resource and therefor not supported.");
- continue;
- }
- ResourceFileDataAndIDs fileDataAndIDs =
- new ResourceFileDataAndIDs((String) attachedResourceId.getEntityId(),
- (String) attachedResourceId.getTranslatedId(),
- data);
- return Optional.of(fileDataAndIDs);
- }
- }
- }
- return Optional.empty();
- }
-
- /**
- * Gets resource translated id.
- *
- * @param heatFileName the heat file name
- * @param heatOrchestrationTemplate the heat orchestration template
- * @param resourceId the resource id
- * @param context the context
- * @return the resource translated id
- */
- public static Optional<String> getResourceTranslatedId(String heatFileName,
- HeatOrchestrationTemplate
- heatOrchestrationTemplate,
- String resourceId,
- TranslationContext context) {
- if (!context.getTranslatedIds().containsKey(heatFileName)) {
- context.getTranslatedIds().put(heatFileName, new HashMap<>());
- }
-
- Map<String, String> translatedIdsPerFile = context.getTranslatedIds().get(heatFileName);
- String translatedId = translatedIdsPerFile.get(resourceId);
- if (translatedId != null) {
- return Optional.of(translatedId);
- }
-
- Resource resource = heatOrchestrationTemplate.getResources().get(resourceId);
- if (resource == null) {
- throw new CoreException(
- new ResourceNotFoundInHeatFileErrorBuilder(resourceId, heatFileName).build());
- }
- TranslateTo translateTo =
- generateTranslationTo(heatFileName, null, heatOrchestrationTemplate, resource, resourceId,
- null, context);
- translatedId =
- ResourceTranslationFactory.getInstance(resource).generateTranslatedId(translateTo);
- if (translatedId != null) {
- context.getTranslatedIds().get(heatFileName).put(resourceId, translatedId);
- }
- return Optional.ofNullable(translatedId);
- }
-
- private static TranslateTo generateTranslationTo(String heatFileName,
- ServiceTemplate serviceTemplate,
- HeatOrchestrationTemplate
- heatOrchestrationTemplate,
- Resource resource, String resourceId,
- String translatedId,
- TranslationContext context) {
- TranslateTo to = new TranslateTo();
- to.setHeatFileName(heatFileName);
- to.setServiceTemplate(serviceTemplate);
- to.setHeatOrchestrationTemplate(heatOrchestrationTemplate);
- to.setResource(resource);
- to.setResourceId(resourceId);
- to.setTranslatedId(translatedId);
- to.setContext(context);
- return to;
- }
-
- protected abstract void translate(TranslateTo translateTo);
-
- protected String generateTranslatedId(TranslateTo translateTo) {
- isEssentialRequirementsValid(translateTo);
- return translateTo.getResourceId();
- }
-
- protected boolean isEssentialRequirementsValid(TranslateTo translateTo) {
- return true;
- }
-
- @Override
- public Optional<String> translateResource(String heatFileName, ServiceTemplate serviceTemplate,
- HeatOrchestrationTemplate heatOrchestrationTemplate,
- Resource resource, String resourceId,
- TranslationContext context) {
- Optional<String> translatedId =
- getResourceTranslatedId(heatFileName, heatOrchestrationTemplate, resourceId, context);
- context.getTranslatedResources().putIfAbsent(heatFileName, new HashSet<>());
- if (context.getTranslatedResources().get(heatFileName).contains(resourceId)) {
- return translatedId;
- }
- if (!translatedId.isPresent()) {
- return Optional.empty();
- }
- logger.debug("Translate- file:" + heatFileName + " resource Id:" + resourceId
- + " translated resource id:" + translatedId.get());
- translate(new TranslateTo(heatFileName, serviceTemplate, heatOrchestrationTemplate, resource,
- resourceId, translatedId.get(), context));
- context.getTranslatedResources().get(heatFileName).add(resourceId);
-
- if (isNodeTemplate(translatedId.get(), serviceTemplate)) {
- if (!context.getHeatStackGroupMembers().containsKey(heatFileName)) {
- context.getHeatStackGroupMembers().put(heatFileName, new HashSet<>());
- }
- context.getHeatStackGroupMembers().get(heatFileName).add(translatedId.get());
- updateResourceDependency(heatFileName, resource, heatOrchestrationTemplate,
- translatedId.get(), serviceTemplate, context);
- }
-
- return translatedId;
- }
-
- private void updateResourceDependency(String heatFileName, Resource resource,
- HeatOrchestrationTemplate heatOrchestrationTemplate,
- String translatedId, ServiceTemplate serviceTemplate,
- TranslationContext context) {
- if (resource.getDepends_on() == null) {
- return;
- }
-
- if (resource.getDepends_on() instanceof List) {
- List<String> dependsOnList = (List<String>) resource.getDepends_on();
- for (String dependsOnResourceId : dependsOnList) {
- addDependOnRequirement(dependsOnResourceId, translatedId, serviceTemplate, heatFileName,
- heatOrchestrationTemplate, context);
- }
- } else {
- String dependsOnResourceId = (String) resource.getDepends_on();
- addDependOnRequirement(dependsOnResourceId, translatedId, serviceTemplate, heatFileName,
- heatOrchestrationTemplate, context);
- }
-
- }
-
- private void addDependOnRequirement(String dependsOnResourceId, String nodeTemplateId,
- ServiceTemplate serviceTemplate, String heatFileName,
- HeatOrchestrationTemplate heatOrchestrationTemplate,
- TranslationContext context) {
- RequirementAssignment requirementAssignment = new RequirementAssignment();
- Optional<String> resourceTranslatedId =
- getResourceTranslatedId(heatFileName, heatOrchestrationTemplate, dependsOnResourceId,
- context);
-
- if (resourceTranslatedId.isPresent()
- && isNodeTemplate(resourceTranslatedId.get(), serviceTemplate)) {
- requirementAssignment.setNode(resourceTranslatedId.get());
- requirementAssignment.setCapability(ToscaCapabilityType.NODE.getDisplayName());
- requirementAssignment.setRelationship(ToscaRelationshipType.DEPENDS_ON.getDisplayName());
- DataModelUtil.addRequirementAssignment(
- serviceTemplate.getTopology_template().getNode_templates().get(nodeTemplateId),
- ToscaConstants.DEPENDS_ON_REQUIREMENT_ID, requirementAssignment);
- }
- }
-
- private boolean isNodeTemplate(String entryId, ServiceTemplate serviceTemplate) {
- return serviceTemplate.getTopology_template().getNode_templates() != null
- && serviceTemplate.getTopology_template().getNode_templates().get(entryId) != null;
- }
-
- FileData getFileData(String fileName, TranslationContext context) {
-
- List<FileData> fileDataList = context.getManifest().getContent().getData();
- for (FileData fileData : fileDataList) {
- if (TranslationService.getTypesToProcessByTranslator().contains(fileData.getType())
- && fileData.getFile().equals(fileName)) {
- return fileData;
- }
- }
- return null;
- }
-
- NodeType getNodeTypeWithFlatHierarchy(String nodeTypeId, ServiceTemplate serviceTemplate,
- TranslationContext context) {
- NodeType nodeType;
- if (serviceTemplate != null && serviceTemplate.getNode_types() != null) {
- nodeType = serviceTemplate.getNode_types().get(nodeTypeId);
-
- if (nodeType != null) {
- return enrichNodeType(nodeType, serviceTemplate, context);
- }
- }
- Map<String, Map<String, NodeType>> globalNodeTypesMap = new HashMap<>();
- Collection<ServiceTemplate> globalNodeTypes =
- GlobalTypesGenerator.getGlobalTypesServiceTemplate().values();
- ServiceTemplate nativeNodeTypeServiceTemplate =
- ToscaNativeTypesServiceTemplate.createServiceTemplate();
- for (ServiceTemplate globalNodeType : globalNodeTypes) {
- globalNodeTypesMap
- .put(globalNodeType.getMetadata().getTemplate_name(), globalNodeType.getNode_types());
- }
- if (Objects.nonNull(serviceTemplate) && MapUtils.isNotEmpty(serviceTemplate.getImports())) {
- for (Map.Entry<String, Import> entry : serviceTemplate.getImports().entrySet()) {
- if (globalNodeTypesMap.containsKey(entry.getKey())) {
- Map<String, NodeType> nodeTypes = globalNodeTypesMap.get(entry.getKey());
- if (nodeTypes != null && nodeTypes.containsKey(nodeTypeId)) {
- return enrichNodeType(nodeTypes.get(nodeTypeId), serviceTemplate, context);
- }
- }
- if (context.getGlobalSubstitutionServiceTemplate() != null
- && context.getGlobalSubstitutionServiceTemplate().getNode_types() != null
- && context.getGlobalSubstitutionServiceTemplate().getNode_types()
- .containsKey(nodeTypeId)) {
- return enrichNodeType(
- context.getGlobalSubstitutionServiceTemplate().getNode_types().get(nodeTypeId),
- serviceTemplate, context);
- }
- if (nativeNodeTypeServiceTemplate.getNode_types().containsKey(nodeTypeId)) {
- return enrichNodeType(nativeNodeTypeServiceTemplate.getNode_types().get(nodeTypeId),
- serviceTemplate, context);
- }
- }
- }
- return new NodeType();
-
- }
-
- private NodeType enrichNodeType(NodeType nodeType, ServiceTemplate serviceTemplate,
- TranslationContext context) {
- NodeType clonedNodeType;
-
- if (StringUtils.isEmpty(nodeType.getDerived_from())) {
- return nodeType.clone();
- }
-
- clonedNodeType = enrichNodeType(
- getNodeTypeWithFlatHierarchy(nodeType.getDerived_from(), serviceTemplate, context),
- serviceTemplate, context);
- mergeNodeTypes(clonedNodeType, nodeType);
- return clonedNodeType;
-
- }
-
- private void mergeNodeTypes(NodeType target, NodeType source) {
- target.setDerived_from(source.getDerived_from());
- target.setDescription(source.getDescription());
- target.setVersion(source.getVersion());
- target.setProperties(
- mergeMaps(target.getProperties(), source.getProperties(), PropertyDefinition.class));
- target.setInterfaces(
- mergeMaps(target.getInterfaces(), source.getInterfaces(), InterfaceDefinition.class));
- target.setArtifacts(
- mergeMaps(target.getArtifacts(), source.getArtifacts(), ArtifactDefinition.class));
- target.setAttributes(
- mergeMaps(target.getAttributes(), source.getAttributes(), AttributeDefinition.class));
- target.setCapabilities(
- mergeMaps(target.getCapabilities(), source.getCapabilities(), CapabilityDefinition.class));
- target.setRequirements(mergeLists(target.getRequirements(), source.getRequirements(),
- RequirementDefinition.class));
- }
-
- private <T, S> List<Map<T, S>> mergeLists(List<Map<T, S>> target, List<Map<T, S>> source,
- Class<S> value) {
- List<Map<T, S>> retList = new ArrayList<>();
- if (Objects.nonNull(target)) {
- retList.addAll(target);
- }
-
- if (Objects.nonNull(source)) {
- for (Map<T, S> sourceMap : source) {
- for (Map.Entry<T, S> entry : sourceMap.entrySet()) {
- mergeEntryInList(entry.getKey(), entry.getValue(), retList);
- }
- }
- }
- return retList;
- }
-
- <T, S> void mergeEntryInList(T key, S value, List<Map<T, S>> target) {
- boolean found = false;
- for (Map<T, S> map : target) {
- if (map.containsKey(key)) {
- map.put(key, value);
- found = true;
- }
- }
-
- if (!found) {
- Map<T, S> newMap = new HashMap<>();
- newMap.put(key, value);
- target.add(newMap);
- }
- }
-
-
- private <T, S> Map<T, S> mergeMaps(Map<T, S> target, Map<T, S> source, Class<S> value) {
- Map<T, S> retMap = new HashMap<>();
- if (MapUtils.isNotEmpty(target)) {
- retMap.putAll(target);
- }
-
- if (MapUtils.isNotEmpty(source)) {
- retMap.putAll(source);
- }
- return retMap;
- }
-
- Optional<List<Map.Entry<String, Resource>>> getResourceByTranslatedResourceId(
- String fileName,
- HeatOrchestrationTemplate heatOrchestrationTemplate,
- String translatedResourceId,TranslateTo translateTo,String heatResourceType) {
- List<Map.Entry<String, Resource>> list = heatOrchestrationTemplate.getResources().entrySet()
- .stream()
- .filter(
- entry -> getPredicatesForTranslatedIdToResourceId(fileName, heatOrchestrationTemplate,
- translatedResourceId, translateTo.getContext(), heatResourceType)
- .stream()
- .allMatch(p -> p.test(entry)))
- .collect(Collectors.toList());
- if (CollectionUtils.isEmpty(list)) {
- return Optional.empty();
- } else {
- return Optional.of(list);
- }
- }
-
- private List<Predicate<Map.Entry<String, Resource>>> getPredicatesForTranslatedIdToResourceId(
- String fileName, HeatOrchestrationTemplate heatOrchestrationTemplate,
- String translatedResourceId, TranslationContext context, String heatResourceType) {
- List<Predicate<Map.Entry<String, Resource>>> list = new ArrayList<>();
- list.add(entry ->
- entry.getValue().getType().equals(heatResourceType));
- list.add(entry -> {
- Optional<String> resourceTranslatedId =
- getResourceTranslatedId(fileName, heatOrchestrationTemplate, entry.getKey(), context);
- return resourceTranslatedId.isPresent()
- && resourceTranslatedId.get().equals(translatedResourceId);
- });
- return list;
- }
-
- void addBindingReqFromPortToCompute(String computeNodeTemplateId, NodeTemplate portNodeTemplate) {
- RequirementAssignment requirementAssignment = new RequirementAssignment();
- requirementAssignment.setCapability(ToscaCapabilityType.NETWORK_BINDABLE.getDisplayName());
- requirementAssignment.setRelationship(ToscaRelationshipType.NETWORK_BINDS_TO.getDisplayName());
- requirementAssignment.setNode(computeNodeTemplateId);
- DataModelUtil.addRequirementAssignment(portNodeTemplate, ToscaConstants.BINDING_REQUIREMENT_ID,
- requirementAssignment);
- }
-
- void addLinkReqFromPortToNetwork(NodeTemplate nodeTemplate, String translatedId) {
- RequirementAssignment requirement = new RequirementAssignment();
- requirement.setCapability(ToscaCapabilityType.NETWORK_LINKABLE.getDisplayName());
- requirement.setRelationship(ToscaRelationshipType.NETWORK_LINK_TO.getDisplayName());
- requirement.setNode(translatedId);
- DataModelUtil
- .addRequirementAssignment(nodeTemplate, ToscaConstants.LINK_REQUIREMENT_ID, requirement);
- }
-
- boolean isResourceTypeSupported(Resource resource, List<String> supportedTypes) {
- return Objects.nonNull(resource) && supportedTypes.contains(resource.getType());
- }
-}