From 28e1a54e6074f50dcc06f7ea4eb3943ad873b448 Mon Sep 17 00:00:00 2001 From: vasraz Date: Fri, 1 Sep 2023 14:31:28 +0100 Subject: Create plugin point for csar generation Issue-ID: SDC-4578 Signed-off-by: franciscovila Change-Id: I3bb280ce4e442780598464216145abc130765539 Signed-off-by: Vasyl Razinkov --- .../nsd/generator/NsDescriptorGeneratorImpl.java | 58 ++++++++++++---------- .../generator/NsDescriptorGeneratorImplTest.java | 2 +- 2 files changed, 32 insertions(+), 28 deletions(-) (limited to 'catalog-be-plugins') diff --git a/catalog-be-plugins/etsi-nfv-nsd-csar-plugin/src/main/java/org/openecomp/sdc/be/plugins/etsi/nfv/nsd/generator/NsDescriptorGeneratorImpl.java b/catalog-be-plugins/etsi-nfv-nsd-csar-plugin/src/main/java/org/openecomp/sdc/be/plugins/etsi/nfv/nsd/generator/NsDescriptorGeneratorImpl.java index eb601d836d..5398c36f72 100644 --- a/catalog-be-plugins/etsi-nfv-nsd-csar-plugin/src/main/java/org/openecomp/sdc/be/plugins/etsi/nfv/nsd/generator/NsDescriptorGeneratorImpl.java +++ b/catalog-be-plugins/etsi-nfv-nsd-csar-plugin/src/main/java/org/openecomp/sdc/be/plugins/etsi/nfv/nsd/generator/NsDescriptorGeneratorImpl.java @@ -1,4 +1,3 @@ - /* * ============LICENSE_START======================================================= * Copyright (C) 2020 Nordix Foundation @@ -21,7 +20,6 @@ package org.openecomp.sdc.be.plugins.etsi.nfv.nsd.generator; import com.google.common.collect.ImmutableMap; import fj.data.Either; -import groovy.util.MapEntry; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -36,8 +34,8 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.openecomp.sdc.be.config.ConfigurationManager; import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum; -import org.openecomp.sdc.be.model.Component; import org.openecomp.sdc.be.datatypes.enums.ConstraintType; +import org.openecomp.sdc.be.model.Component; import org.openecomp.sdc.be.plugins.etsi.nfv.nsd.exception.NsdException; import org.openecomp.sdc.be.plugins.etsi.nfv.nsd.model.Nsd; import org.openecomp.sdc.be.plugins.etsi.nfv.nsd.model.VnfDescriptor; @@ -72,7 +70,7 @@ public class NsDescriptorGeneratorImpl implements NsDescriptorGenerator { private static final List PROPERTIES_TO_EXCLUDE_FROM_ETSI_SOL_NSD_NS_NODE_TYPE = Arrays .asList("cds_model_name", "cds_model_version", "skip_post_instantiation_configuration", "controller_actor"); private static final List ETSI_SOL_NSD_NS_NODE_TYPE_PROPERTIES = Arrays - .asList("descriptor_id", "designer", "version", "name", "invariant_id", "flavour_id", "ns_profile", "service_availability_level"); + .asList("descriptor_id", "designer", "version", "name", "invariant_id", "flavour_id", "ns_profile", "service_availability_level"); private static final List PROPERTIES_TO_EXCLUDE_FROM_ETSI_SOL_NSD_NS_NODE_TEMPLATE = Arrays .asList("nf_function", "nf_role", "nf_naming_code", "nf_type", "nf_naming", "availability_zone_max_count", "min_instances", "max_instances", "multi_stage_design", "sdnc_model_name", "sdnc_model_version", "sdnc_artifact_name", "skip_post_instantiation_configuration", @@ -202,7 +200,7 @@ public class NsDescriptorGeneratorImpl implements NsDescriptorGenerator { } componentToscaTemplate.getTopology_template().setSubstitution_mappings(substitutionMapping); } - + private Map adjustRequirementNamesToMatchVnfd(final Map requirements) { for (final Map.Entry entry : requirements.entrySet()) { try { @@ -239,7 +237,7 @@ public class NsDescriptorGeneratorImpl implements NsDescriptorGenerator { removeCapabilitiesFromNodeTemplate(nodeTemplate); } } - + private void setPropertiesForNodeTemplate(final Entry nodeTemplate) { final Map propertyMap = nodeTemplate.getValue().getProperties(); if (MapUtils.isEmpty(propertyMap)) { @@ -261,12 +259,13 @@ public class NsDescriptorGeneratorImpl implements NsDescriptorGenerator { } private void setRequirementsForNodeTemplate(final Entry nodeTemplateMap) { - final List> requirementAssignments = nodeTemplateMap.getValue().getRequirements(); - if (requirementAssignments != null) { - final List> requirementAssignmentsMatchingVnfdRequirements = new ArrayList<>(); - for (final Map requirementAssignment: requirementAssignments) { - final Map requirementAssignmentMatchingVnfd = - requirementAssignment.entrySet().stream().collect(Collectors.toMap(entry -> entry.getKey().substring(entry.getKey().lastIndexOf('.') + 1), Map.Entry::getValue)); + final List> requirementAssignments = nodeTemplateMap.getValue().getRequirements(); + if (requirementAssignments != null) { + final List> requirementAssignmentsMatchingVnfdRequirements = new ArrayList<>(); + for (final Map requirementAssignment : requirementAssignments) { + final Map requirementAssignmentMatchingVnfd = + requirementAssignment.entrySet().stream() + .collect(Collectors.toMap(entry -> entry.getKey().substring(entry.getKey().lastIndexOf('.') + 1), Map.Entry::getValue)); requirementAssignmentsMatchingVnfdRequirements.add(requirementAssignmentMatchingVnfd); } nodeTemplateMap.getValue().setRequirements(requirementAssignmentsMatchingVnfdRequirements); @@ -281,10 +280,10 @@ public class NsDescriptorGeneratorImpl implements NsDescriptorGenerator { private void removeOnapAndEtsiNsdPropertiesFromInputs(final ToscaTemplate template) { final ToscaTopolgyTemplate topologyTemplate = template.getTopology_template(); final Map inputMap = topologyTemplate.getInputs(); - - + if (MapUtils.isNotEmpty(inputMap)) { - inputMap.entrySet().removeIf(entry -> PROPERTIES_TO_EXCLUDE_FROM_ETSI_SOL_NSD_NS_NODE_TYPE.contains(entry.getKey()) || ETSI_SOL_NSD_NS_NODE_TYPE_PROPERTIES.contains(entry.getKey())); + inputMap.entrySet().removeIf(entry -> PROPERTIES_TO_EXCLUDE_FROM_ETSI_SOL_NSD_NS_NODE_TYPE.contains(entry.getKey()) + || ETSI_SOL_NSD_NS_NODE_TYPE_PROPERTIES.contains(entry.getKey())); } if (MapUtils.isEmpty(inputMap)) { topologyTemplate.setInputs(null); @@ -319,7 +318,7 @@ public class NsDescriptorGeneratorImpl implements NsDescriptorGenerator { } private Map> generateDefaultImportEntry() { - return ImmutableMap.of("etsi_nfv_sol001_nsd_types", ImmutableMap.of("file", "etsi_nfv_sol001_nsd_types.yaml")); + return Map.of("etsi_nfv_sol001_nsd_types", Map.of("file", "etsi_nfv_sol001_nsd_types.yaml")); } private ToscaNodeType createEtsiSolNsNodeType(final ToscaNodeType nsNodeType, final ToscaTemplate componentToscaTemplate) { @@ -336,29 +335,34 @@ public class NsDescriptorGeneratorImpl implements NsDescriptorGenerator { } propertiesInNsNodeType.entrySet().removeIf(entry -> PROPERTIES_TO_EXCLUDE_FROM_ETSI_SOL_NSD_NS_NODE_TYPE.contains(entry.getKey())); toscaNodeType.setProperties(propertiesInNsNodeType); - - final List> requirementsInNsNodeType = getRequirementsForNsNodeType(nsNodeType.getRequirements(), componentToscaTemplate); + + final List> requirementsInNsNodeType = getRequirementsForNsNodeType(nsNodeType.getRequirements(), + componentToscaTemplate); if (!requirementsInNsNodeType.isEmpty()) { - toscaNodeType.setRequirements(requirementsInNsNodeType); + toscaNodeType.setRequirements(requirementsInNsNodeType); } return toscaNodeType; } - - private List> getRequirementsForNsNodeType(final List> requirements, final ToscaTemplate componentToscaTemplate) { - final Map requirementsInSubstitutionMapping = componentToscaTemplate.getTopology_template().getSubstitution_mappings().getRequirements(); + + private List> getRequirementsForNsNodeType(final List> requirements, + final ToscaTemplate componentToscaTemplate) { + final Map requirementsInSubstitutionMapping = componentToscaTemplate.getTopology_template().getSubstitution_mappings() + .getRequirements(); if (requirements == null || MapUtils.isEmpty(requirementsInSubstitutionMapping)) { return Collections.emptyList(); } - final List> requirementsToAdd = new ArrayList<>(); - for (final Map requirementMap : requirements) { - final Map neededRequirements = requirementMap.entrySet().stream().filter(entry -> requirementsInSubstitutionMapping.containsKey(entry.getKey())).collect(Collectors.toMap(Entry::getKey, Entry::getValue)); + final List> requirementsToAdd = new ArrayList<>(); + for (final Map requirementMap : requirements) { + final Map neededRequirements = requirementMap.entrySet().stream() + .filter(entry -> requirementsInSubstitutionMapping.containsKey(entry.getKey())) + .collect(Collectors.toMap(Entry::getKey, Entry::getValue)); if (!neededRequirements.isEmpty()) { requirementsToAdd.add(neededRequirements); } } return requirementsToAdd; - + } private boolean propertyIsDefinedInNodeType(final String propertyName) { @@ -394,7 +398,7 @@ public class NsDescriptorGeneratorImpl implements NsDescriptorGenerator { } private ToscaTemplate parseToToscaTemplate(final Component component) throws NsdException { - final Either toscaTemplateRes = toscaExportHandler.convertToToscaTemplate(component); + final Either toscaTemplateRes = toscaExportHandler.convertToToscaTemplate(component, false); if (toscaTemplateRes.isRight()) { String errorMsg = String .format("Could not parse component '%s' to tosca template. Error '%s'", component.getName(), toscaTemplateRes.right().value().name()); diff --git a/catalog-be-plugins/etsi-nfv-nsd-csar-plugin/src/test/java/org/openecomp/sdc/be/plugins/etsi/nfv/nsd/generator/NsDescriptorGeneratorImplTest.java b/catalog-be-plugins/etsi-nfv-nsd-csar-plugin/src/test/java/org/openecomp/sdc/be/plugins/etsi/nfv/nsd/generator/NsDescriptorGeneratorImplTest.java index 4c2c0a9a51..7ad43db45b 100644 --- a/catalog-be-plugins/etsi-nfv-nsd-csar-plugin/src/test/java/org/openecomp/sdc/be/plugins/etsi/nfv/nsd/generator/NsDescriptorGeneratorImplTest.java +++ b/catalog-be-plugins/etsi-nfv-nsd-csar-plugin/src/test/java/org/openecomp/sdc/be/plugins/etsi/nfv/nsd/generator/NsDescriptorGeneratorImplTest.java @@ -181,7 +181,7 @@ class NsDescriptorGeneratorImplTest { interfaceToscaNodeType.setRequirements(interfaceNodeTypeRequirements); final String nsNodeTypeName = "nsNodeTypeName"; componentInterfaceToscaTemplate.setNode_types(ImmutableMap.of(nsNodeTypeName, interfaceToscaNodeType)); - when(toscaExportHandler.convertToToscaTemplate(component)).thenReturn(Either.left(componentToscaTemplate)); + when(toscaExportHandler.convertToToscaTemplate(component, false)).thenReturn(Either.left(componentToscaTemplate)); when(toscaExportHandler.convertInterfaceNodeType(any(), any(), any(), any(), anyBoolean())) .thenReturn(Either.left(componentInterfaceToscaTemplate)); final List vnfDescriptorList = new ArrayList<>(); -- cgit 1.2.3-korg