X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=openecomp-be%2Flib%2Fopenecomp-sdc-translator-lib%2Fopenecomp-sdc-translator-core%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fsdc%2Ftranslator%2Fservices%2Fheattotosca%2Fimpl%2Fresourcetranslation%2FResourceTranslationBase.java;fp=openecomp-be%2Flib%2Fopenecomp-sdc-translator-lib%2Fopenecomp-sdc-translator-core%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fsdc%2Ftranslator%2Fservices%2Fheattotosca%2Fimpl%2Fresourcetranslation%2FResourceTranslationBase.java;h=1e040284800aac4ade48340833860bcfb3420abf;hb=d378c37fbd1ecec7b43394926f1ca32a695e07de;hp=9011c9e91c347371d3ab1634e0c3d1b9de32a3db;hpb=a6ae7294ecd336d7e88f915710b08e2658eaee00;p=sdc.git diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationBase.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationBase.java index 9011c9e91c..1e04028480 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationBase.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationBase.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation; import java.util.ArrayList; @@ -25,9 +24,7 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.function.Predicate; - import java.util.stream.Collectors; - import org.apache.commons.collections4.CollectionUtils; import org.onap.sdc.tosca.datatypes.model.RequirementAssignment; import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; @@ -62,76 +59,49 @@ public abstract class ResourceTranslationBase { * @param context the context * @return the resource translated id */ - public static Optional getResourceTranslatedId(String heatFileName, - HeatOrchestrationTemplate - heatOrchestrationTemplate, - String resourceId, - TranslationContext context) { + public static Optional getResourceTranslatedId(String heatFileName, HeatOrchestrationTemplate heatOrchestrationTemplate, + String resourceId, TranslationContext context) { if (!context.getTranslatedIds().containsKey(heatFileName)) { context.getTranslatedIds().put(heatFileName, new HashMap<>()); } - Map 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()); + throw new CoreException(new ResourceNotFoundInHeatFileErrorBuilder(resourceId, heatFileName).build()); } - return getTranslatedResourceId(resourceId, heatFileName, resource, heatOrchestrationTemplate, - context - ); + return getTranslatedResourceId(resourceId, heatFileName, resource, heatOrchestrationTemplate, context); } - private static Optional getTranslatedResourceId(String resourceId, - String heatFileName, - Resource resource, - HeatOrchestrationTemplate heatOrchestrationTemplate, - TranslationContext context) { - TranslateTo translateTo = - generateTranslationTo(heatFileName, heatOrchestrationTemplate, resource, resourceId, - context); - - String translatedId = - ResourceTranslationFactory.getInstance(resource).generateTranslatedId(translateTo); - - if (ConsolidationDataUtil.isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(translatedId, - heatFileName, context)) { + private static Optional getTranslatedResourceId(String resourceId, String heatFileName, Resource resource, + HeatOrchestrationTemplate heatOrchestrationTemplate, TranslationContext context) { + TranslateTo translateTo = generateTranslationTo(heatFileName, heatOrchestrationTemplate, resource, resourceId, context); + String translatedId = ResourceTranslationFactory.getInstance(resource).generateTranslatedId(translateTo); + if (ConsolidationDataUtil.isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(translatedId, heatFileName, context)) { return Optional.empty(); } - if (translatedId != null) { context.getTranslatedIds().get(heatFileName).put(resourceId, translatedId); } - return Optional.ofNullable(translatedId); } private static Optional getResourceTranslatedElementTemplate(String heatFileName, - HeatOrchestrationTemplate heatOrchestrationTemplate, - String resourceId, TranslationContext context) { + HeatOrchestrationTemplate heatOrchestrationTemplate, + String resourceId, TranslationContext context) { Resource resource = heatOrchestrationTemplate.getResources().get(resourceId); if (resource == null) { - throw new CoreException( - new ResourceNotFoundInHeatFileErrorBuilder(resourceId, heatFileName).build()); + throw new CoreException(new ResourceNotFoundInHeatFileErrorBuilder(resourceId, heatFileName).build()); } - TranslateTo translateTo = - generateTranslationTo(heatFileName, heatOrchestrationTemplate, resource, resourceId, - context); - - return ResourceTranslationFactory.getInstance(resource) - .getTranslatedToscaTopologyElement(translateTo); + TranslateTo translateTo = generateTranslationTo(heatFileName, heatOrchestrationTemplate, resource, resourceId, context); + return ResourceTranslationFactory.getInstance(resource).getTranslatedToscaTopologyElement(translateTo); } - private static TranslateTo generateTranslationTo(String heatFileName, - HeatOrchestrationTemplate - heatOrchestrationTemplate, - Resource resource, String resourceId, - TranslationContext context) { + private static TranslateTo generateTranslationTo(String heatFileName, HeatOrchestrationTemplate heatOrchestrationTemplate, Resource resource, + String resourceId, TranslationContext context) { TranslateTo to = new TranslateTo(); to.setHeatFileName(heatFileName); to.setServiceTemplate(null); @@ -157,16 +127,12 @@ public abstract class ResourceTranslationBase { * @return the translated id if this resource is supported, or empty value if not supported */ public Optional translateResource(String heatFileName, ServiceTemplate serviceTemplate, - HeatOrchestrationTemplate heatOrchestrationTemplate, - Resource resource, String resourceId, + HeatOrchestrationTemplate heatOrchestrationTemplate, Resource resource, String resourceId, TranslationContext context) { - Optional translatedId = - getResourceTranslatedId(heatFileName, heatOrchestrationTemplate, resourceId, context); + Optional translatedId = getResourceTranslatedId(heatFileName, heatOrchestrationTemplate, resourceId, context); context.getTranslatedResources().putIfAbsent(heatFileName, new HashSet<>()); - if (isResourceWithSameIdAppearsInOtherFiles(heatFileName, resourceId, context)) { - throw new CoreException( - new DuplicateResourceIdsInDifferentFilesErrorBuilder(resourceId).build()); + throw new CoreException(new DuplicateResourceIdsInDifferentFilesErrorBuilder(resourceId).build()); } if (context.getTranslatedResources().get(heatFileName).contains(resourceId)) { return translatedId; @@ -174,13 +140,11 @@ public abstract class ResourceTranslationBase { if (!translatedId.isPresent()) { return Optional.empty(); } - logger.debug("Translate- file: {} resource Id: {} translated resource id: {}", - heatFileName, resourceId, translatedId.get()); - TranslateTo translateTo = new TranslateTo(heatFileName, serviceTemplate, - heatOrchestrationTemplate, resource, resourceId, translatedId.get(), context); + logger.debug("Translate- file: {} resource Id: {} translated resource id: {}", heatFileName, resourceId, translatedId.get()); + TranslateTo translateTo = new TranslateTo(heatFileName, serviceTemplate, heatOrchestrationTemplate, resource, resourceId, translatedId.get(), + context); translate(translateTo); context.getTranslatedResources().get(heatFileName).add(resourceId); - if (DataModelUtil.isNodeTemplate(translatedId.get(), serviceTemplate)) { if (!context.getHeatStackGroupMembers().containsKey(heatFileName)) { context.getHeatStackGroupMembers().put(heatFileName, new HashSet<>()); @@ -191,14 +155,9 @@ public abstract class ResourceTranslationBase { return translatedId; } - private boolean isResourceWithSameIdAppearsInOtherFiles(String heatFileName, - String resourceId, - TranslationContext context) { - Set translatedResourceIdsFromOtherFiles = - context.getTranslatedResourceIdsFromOtherFiles(heatFileName); - - return CollectionUtils.isNotEmpty(translatedResourceIdsFromOtherFiles) - && translatedResourceIdsFromOtherFiles.contains(resourceId); + private boolean isResourceWithSameIdAppearsInOtherFiles(String heatFileName, String resourceId, TranslationContext context) { + Set translatedResourceIdsFromOtherFiles = context.getTranslatedResourceIdsFromOtherFiles(heatFileName); + return CollectionUtils.isNotEmpty(translatedResourceIdsFromOtherFiles) && translatedResourceIdsFromOtherFiles.contains(resourceId); } protected String generateTranslatedId(TranslateTo translateTo) { @@ -207,11 +166,9 @@ public abstract class ResourceTranslationBase { } else { return null; } - } - protected Optional getTranslatedToscaTopologyElement( - TranslateTo translateTo) { + protected Optional getTranslatedToscaTopologyElement(TranslateTo translateTo) { if (isEssentialRequirementsValid(translateTo)) { return Optional.of(ToscaTopologyTemplateElements.NODE_TEMPLATE); } else { @@ -224,12 +181,10 @@ public abstract class ResourceTranslationBase { } private void updateResourceDependency(TranslateTo translateTo) { - Resource resource = translateTo.getResource(); if (resource.getDepends_on() == null) { return; } - if (resource.getDepends_on() instanceof List) { List dependsOnList = (List) resource.getDepends_on(); for (String dependsOnResourceId : dependsOnList) { @@ -243,67 +198,47 @@ public abstract class ResourceTranslationBase { private void addDependency(String dependsOnResourceId, TranslateTo translateTo) { String heatFileName = translateTo.getHeatFileName(); - HeatOrchestrationTemplate heatOrchestrationTemplate = translateTo - .getHeatOrchestrationTemplate(); + HeatOrchestrationTemplate heatOrchestrationTemplate = translateTo.getHeatOrchestrationTemplate(); TranslationContext context = translateTo.getContext(); - - Optional resourceTranslatedId = - getResourceTranslatedId(heatFileName, heatOrchestrationTemplate, dependsOnResourceId, - context); - - Optional resourceTranslatedElementTemplate = - getResourceTranslatedElementTemplate(heatFileName, heatOrchestrationTemplate, - dependsOnResourceId, context); - - if (resourceTranslatedId.isPresent() - && (resourceTranslatedElementTemplate.isPresent() - && resourceTranslatedElementTemplate.get() == ToscaTopologyTemplateElements.NODE_TEMPLATE)) { + Optional resourceTranslatedId = getResourceTranslatedId(heatFileName, heatOrchestrationTemplate, dependsOnResourceId, context); + Optional resourceTranslatedElementTemplate = getResourceTranslatedElementTemplate(heatFileName, + heatOrchestrationTemplate, dependsOnResourceId, context); + if (resourceTranslatedId.isPresent() && (resourceTranslatedElementTemplate.isPresent() + && resourceTranslatedElementTemplate.get() == ToscaTopologyTemplateElements.NODE_TEMPLATE)) { Resource sourceResource = translateTo.getResource(); - Resource targetResource = HeatToToscaUtil.getResource(heatOrchestrationTemplate, dependsOnResourceId, - translateTo.getHeatFileName()); + Resource targetResource = HeatToToscaUtil.getResource(heatOrchestrationTemplate, dependsOnResourceId, translateTo.getHeatFileName()); if (isValidDependency(sourceResource, targetResource, translateTo)) { - addDependsOnRequirement(dependsOnResourceId, translateTo, resourceTranslatedId.get(), sourceResource, - targetResource); + addDependsOnRequirement(dependsOnResourceId, translateTo, resourceTranslatedId.get(), sourceResource, targetResource); } } } - private void addDependsOnRequirement(String dependsOnResourceId, TranslateTo translateTo, - String resourceTranslatedId, Resource sourceResource, + private void addDependsOnRequirement(String dependsOnResourceId, TranslateTo translateTo, String resourceTranslatedId, Resource sourceResource, Resource targetResource) { RequirementAssignment requirementAssignment = new RequirementAssignment(); requirementAssignment.setNode(resourceTranslatedId); requirementAssignment.setCapability(ToscaCapabilityType.NATIVE_NODE); requirementAssignment.setRelationship(ToscaRelationshipType.NATIVE_DEPENDS_ON); - DataModelUtil.addRequirementAssignment(translateTo.getServiceTemplate().getTopology_template() - .getNode_templates().get(translateTo.getTranslatedId()), + DataModelUtil + .addRequirementAssignment(translateTo.getServiceTemplate().getTopology_template().getNode_templates().get(translateTo.getTranslatedId()), ToscaConstants.DEPENDS_ON_REQUIREMENT_ID, requirementAssignment); ConsolidationDataUtil - .updateNodesConnectedData(translateTo, dependsOnResourceId, targetResource, - sourceResource, translateTo.getTranslatedId(), ToscaConstants.DEPENDS_ON_REQUIREMENT_ID, - requirementAssignment); + .updateNodesConnectedData(translateTo, dependsOnResourceId, targetResource, sourceResource, translateTo.getTranslatedId(), + ToscaConstants.DEPENDS_ON_REQUIREMENT_ID, requirementAssignment); } private boolean isValidDependency(Resource sourceResource, Resource targetResource, TranslateTo translateTo) { - return !(HeatToToscaUtil.isNestedResource(sourceResource) || HeatToToscaUtil.isNestedResource(targetResource)) - && HeatToToscaUtil.isValidDependsOnCandidate(sourceResource, targetResource, - ConsolidationEntityType.OTHER, translateTo.getContext()); + return !(HeatToToscaUtil.isNestedResource(sourceResource) || HeatToToscaUtil.isNestedResource(targetResource)) && HeatToToscaUtil + .isValidDependsOnCandidate(sourceResource, targetResource, ConsolidationEntityType.OTHER, translateTo.getContext()); } - Optional>> getResourceByTranslatedResourceId( - String heatFileName, - HeatOrchestrationTemplate heatOrchestrationTemplate, - String translatedResourceId, - TranslateTo translateTo, - String heatResourceType) { - List> list = heatOrchestrationTemplate.getResources().entrySet() - .stream() - .filter(entry -> getPredicatesForTranslatedIdToResourceId(heatFileName, - heatOrchestrationTemplate, translatedResourceId, translateTo.getContext(), - heatResourceType) - .stream() - .allMatch(p -> p.test(entry))) - .collect(Collectors.toList()); + Optional>> getResourceByTranslatedResourceId(String heatFileName, + HeatOrchestrationTemplate heatOrchestrationTemplate, + String translatedResourceId, TranslateTo translateTo, + String heatResourceType) { + List> list = heatOrchestrationTemplate.getResources().entrySet().stream().filter( + entry -> getPredicatesForTranslatedIdToResourceId(heatFileName, heatOrchestrationTemplate, translatedResourceId, translateTo.getContext(), + heatResourceType).stream().allMatch(p -> p.test(entry))).collect(Collectors.toList()); if (CollectionUtils.isEmpty(list)) { return Optional.empty(); } else { @@ -311,17 +246,16 @@ public abstract class ResourceTranslationBase { } } - private List>> getPredicatesForTranslatedIdToResourceId( - String heatFileName, HeatOrchestrationTemplate heatOrchestrationTemplate, - String translatedResourceId, TranslationContext context, String heatResourceType) { + private List>> getPredicatesForTranslatedIdToResourceId(String heatFileName, + HeatOrchestrationTemplate heatOrchestrationTemplate, + String translatedResourceId, + TranslationContext context, + String heatResourceType) { List>> list = new ArrayList<>(); - list.add(entry -> - entry.getValue().getType().equals(heatResourceType)); + list.add(entry -> entry.getValue().getType().equals(heatResourceType)); list.add(entry -> { - Optional resourceTranslatedId = - getResourceTranslatedId(heatFileName, heatOrchestrationTemplate, entry.getKey(), context); - return resourceTranslatedId.isPresent() - && resourceTranslatedId.get().equals(translatedResourceId); + Optional resourceTranslatedId = getResourceTranslatedId(heatFileName, heatOrchestrationTemplate, entry.getKey(), context); + return resourceTranslatedId.isPresent() && resourceTranslatedId.get().equals(translatedResourceId); }); return list; } @@ -329,5 +263,4 @@ public abstract class ResourceTranslationBase { boolean isUnsupportedResourceType(Resource resource, List supportedTypes) { return !Objects.nonNull(resource) || !supportedTypes.contains(resource.getType()); } - }