aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichaelMorris <michael.morris@est.tech>2021-03-31 21:53:05 +0100
committerChristophe Closset <christophe.closset@intl.att.com>2021-04-12 08:36:21 +0000
commit49e74d3a9d5f77af3e2aa321a863fd83a1ca6f73 (patch)
treea7f9f2eb62e28419d44f8b428a50bd6c99f77b6d
parent597e80af47aeec1d8306f23d32b8c114192f94d8 (diff)
Fix NSD properties
Signed-off-by: MichaelMorris <michael.morris@est.tech> Issue-ID: SDC-3545 Change-Id: I090bdcc85e85f1ec86851de3f957ad2ccd148ed5
-rw-r--r--catalog-be-plugins/etsi-nfv-nsd-csar-plugin/src/main/java/org/openecomp/sdc/be/plugins/etsi/nfv/nsd/generator/NsDescriptorGeneratorImpl.java18
-rw-r--r--catalog-be-plugins/etsi-nfv-nsd-csar-plugin/src/test/java/org/openecomp/sdc/be/plugins/etsi/nfv/nsd/generator/NsDescriptorGeneratorImplTest.java41
-rw-r--r--integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/EtsiNetworkServiceUiTests.java1
3 files changed, 47 insertions, 13 deletions
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 f024d8f52a..fc3dac2e31 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
@@ -71,6 +71,8 @@ public class NsDescriptorGeneratorImpl implements NsDescriptorGenerator {
.getDefaultImports();
private static final List<String> 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<String> ETSI_SOL_NSD_NS_NODE_TYPE_PROPERTIES = Arrays
+ .asList("descriptor_id", "designer", "version", "name", "invariant_id", "flavour_id", "ns_profile", "service_availability_level");
private static final List<String> 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",
@@ -175,7 +177,7 @@ public class NsDescriptorGeneratorImpl implements NsDescriptorGenerator {
componentToscaTemplate.getNode_types().putAll(nodeTypeMap);
}
handleNodeTemplates(componentToscaTemplate);
- removeOnapPropertiesFromInputs(componentToscaTemplate);
+ removeOnapAndEtsiNsdPropertiesFromInputs(componentToscaTemplate);
handleSubstitutionMappings(componentToscaTemplate, nsNodeTypeName);
final Map<String, ToscaNodeTemplate> nodeTemplates = new HashMap<>();
nodeTemplates.put(nsNodeTypeName,
@@ -248,7 +250,7 @@ public class NsDescriptorGeneratorImpl implements NsDescriptorGenerator {
for (final Entry<String, Object> property : propertyMap.entrySet()) {
if (!PROPERTIES_TO_EXCLUDE_FROM_ETSI_SOL_NSD_NS_NODE_TEMPLATE.contains(property.getKey()) && propertyIsDefinedInNodeType(
property.getKey())) {
- editedPropertyMap.put(property.getKey().substring(property.getKey().indexOf('_') + 1), property.getValue());
+ editedPropertyMap.put(property.getKey(), property.getValue());
}
}
if (editedPropertyMap.isEmpty()) {
@@ -276,11 +278,13 @@ public class NsDescriptorGeneratorImpl implements NsDescriptorGenerator {
nodeTemplate.getValue().setCapabilities(null);
}
- private void removeOnapPropertiesFromInputs(final ToscaTemplate template) {
+ private void removeOnapAndEtsiNsdPropertiesFromInputs(final ToscaTemplate template) {
final ToscaTopolgyTemplate topologyTemplate = template.getTopology_template();
final Map<String, ToscaProperty> inputMap = topologyTemplate.getInputs();
+
+
if (MapUtils.isNotEmpty(inputMap)) {
- inputMap.entrySet().removeIf(entry -> PROPERTIES_TO_EXCLUDE_FROM_ETSI_SOL_NSD_NS_NODE_TYPE.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);
@@ -324,7 +328,7 @@ public class NsDescriptorGeneratorImpl implements NsDescriptorGenerator {
final Map<String, ToscaProperty> propertiesInNsNodeType = nsNodeType.getProperties();
for (final Entry<String, ToscaProperty> property : propertiesInNsNodeType.entrySet()) {
final ToscaProperty toscaProperty = property.getValue();
- if (toscaProperty.getDefaultp() != null) {
+ if (toscaProperty.getDefaultp() != null && ETSI_SOL_NSD_NS_NODE_TYPE_PROPERTIES.contains(property.getKey())) {
final ToscaPropertyConstraintValidValues constraint = new ToscaPropertyConstraintValidValues(
Collections.singletonList(toscaProperty.getDefaultp().toString()));
toscaProperty.setConstraints(Collections.singletonList(constraint));
@@ -370,7 +374,9 @@ public class NsDescriptorGeneratorImpl implements NsDescriptorGenerator {
final Map<String, ToscaProperty> properties = toscaNodeType.getProperties();
final Map<String, Object> nodeTemplateProperties = new HashMap<>();
for (final Entry<String, ToscaProperty> property : properties.entrySet()) {
- nodeTemplateProperties.put(property.getKey(), property.getValue().getDefaultp());
+ if (property.getValue().getDefaultp() != null) {
+ nodeTemplateProperties.put(property.getKey(), property.getValue().getDefaultp());
+ }
}
if (!nodeTemplateProperties.isEmpty()) {
nodeTemplate.setProperties(nodeTemplateProperties);
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 cfd0ef7b90..516c2ec7bf 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
@@ -44,6 +44,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
@@ -127,6 +128,7 @@ class NsDescriptorGeneratorImplTest {
}
@Test
+ @SuppressWarnings("unchecked")
void testGenerate() throws IOException, NsdException {
//given
final Component component = mock(Component.class);
@@ -158,13 +160,19 @@ class NsDescriptorGeneratorImplTest {
capabilities.put("capability", capabilitiesAssignment);
when(substitutionMapping.getCapabilities()).thenReturn(capabilities);
componentToscaTopologyTemplate.setSubstitution_mappings(substitutionMapping);
+
+ Map<String, ToscaProperty> inputs = new HashMap<>();
+ inputs.put("invariant_id", new ToscaProperty());
+ inputs.put("other_property", new ToscaProperty());
+ componentToscaTopologyTemplate.setInputs(inputs );
final ToscaTemplate componentInterfaceToscaTemplate = new ToscaTemplate("");
final String designerPropertyValue = "designerValue";
final String versionPropertyValue = "versionValue";
final String namePropertyValue = "nameValue";
final String invariantIdPropertyValue = "invariantIdValue";
+ final String otherPropertyValue = "otherValue";
final ToscaNodeType interfaceToscaNodeType = createDefaultInterfaceToscaNodeType(designerPropertyValue, versionPropertyValue,
- namePropertyValue, invariantIdPropertyValue);
+ namePropertyValue, invariantIdPropertyValue, otherPropertyValue);
List<Map<String, ToscaRequirement>> interfaceNodeTypeRequirements = new ArrayList<>();
Map<String, ToscaRequirement> interfaceNodeTypeRequirementMap = new HashMap<>();
interfaceNodeTypeRequirementMap.put("VNF1" + DOT + VIRTUAL_LINK_REQUIREMENT_NAME, mock(ToscaRequirement.class));
@@ -191,9 +199,9 @@ class NsDescriptorGeneratorImplTest {
assertThat("Nsd name should be as expected", nsd.getName(), is(namePropertyValue));
assertThat("Nsd invariantId should be as expected", nsd.getInvariantId(), is(invariantIdPropertyValue));
final Map<String, Object> toscaTemplateYaml = readYamlAsMap(nsd.getContents());
- @SuppressWarnings("unchecked") final Map<String, Object> topologyTemplate = (Map<String, Object>) toscaTemplateYaml.get("topology_template");
+ final Map<String, Object> topologyTemplate = (Map<String, Object>) toscaTemplateYaml.get("topology_template");
assertThat("topology_template should not be empty", topologyTemplate, is(not(anEmptyMap())));
- @SuppressWarnings("unchecked") final Map<String, Object> substitutionMappings = (Map<String, Object>) topologyTemplate
+ final Map<String, Object> substitutionMappings = (Map<String, Object>) topologyTemplate
.get("substitution_mappings");
assertThat("substitution_mappings should not be empty", substitutionMappings, is(not(anEmptyMap())));
assertThat("substitution_mappings->node_type should not be null", substitutionMappings.get("node_type"), is(notNullValue()));
@@ -205,19 +213,39 @@ class NsDescriptorGeneratorImplTest {
final Map<String, List<String>> subMappingCapabilities = (Map<String, List<String>>) substitutionMappings.get("capabilities");
assertNull(subMappingCapabilities);
- @SuppressWarnings("unchecked") final Map<String, Object> nodeType = (Map<String, Object>) ((Map<String, Object>) toscaTemplateYaml.get("node_types")).get(nsNodeTypeName);
+ final Map<String, Object> topologyInputs = (Map<String, Object>) topologyTemplate.get("inputs");
+ assertTrue(topologyInputs.containsKey("other_property"));
+ assertEquals(1, topologyInputs.size());
+
+ final Map<String, Object> nodeTemplates = (Map<String, Object>) ((Map<String, Object>) topologyTemplate.get("node_templates"));
+ final Map<String, Object> nodeTemplateVnfd = (Map<String, Object>) ((Map<String, Object>) nodeTemplates.get(VNFD_AMF_NODE_NAME));
+ final Map<String, Object> nodeTemplateProperties = (Map<String, Object>) ((Map<String, Object>) nodeTemplateVnfd.get("properties"));
+ assertTrue(nodeTemplateProperties.containsKey("will_not_be_excluded"));
+
+ final Map<String, Object> nodeType = (Map<String, Object>) ((Map<String, Object>) toscaTemplateYaml.get("node_types")).get(nsNodeTypeName);
assertTrue(((List<Map<String, Map>>)nodeType.get("requirements")).get(0).containsKey("VNF1" + DOT + VIRTUAL_LINK_REQUIREMENT_NAME));
assertFalse(((List<Map<String, Map>>)nodeType.get("requirements")).get(0).containsKey("VNF1" + DOT + VIRTUAL_BINDING_REQUIREMENT_NAME));
+
+ assertEquals(5, ((Map<String, Map>)nodeType.get("properties")).size());
+ for (final Entry<String, Map> property: ((Map<String, Map>)nodeType.get("properties")).entrySet()) {
+ if (property.getKey().equals("other_property")) {
+ assertNull(property.getValue().get("constraints"));
+ } else {
+ assertEquals(1, ((List<Map>)property.getValue().get("constraints")).size());
+ }
+ }
+
}
private ToscaNodeType createDefaultInterfaceToscaNodeType(final String designerPropertyValue, final String versionPropertyValue,
- final String namePropertyValue, final String invariantIdPropertyValue) {
+ final String namePropertyValue, final String invariantIdPropertyValue, String otherPropertyValue) {
final ToscaNodeType interfaceToscaNodeType = new ToscaNodeType();
final Map<String, ToscaProperty> propertyMap = new HashMap<>();
propertyMap.put("designer", createToscaProperty(designerPropertyValue));
propertyMap.put("version", createToscaProperty(versionPropertyValue));
propertyMap.put("name", createToscaProperty(namePropertyValue));
propertyMap.put("invariant_id", createToscaProperty(invariantIdPropertyValue));
+ propertyMap.put("other_property", createToscaProperty(otherPropertyValue));
interfaceToscaNodeType.setProperties(propertyMap);
return interfaceToscaNodeType;
}
@@ -230,8 +258,7 @@ class NsDescriptorGeneratorImplTest {
private ToscaProperty createToscaProperty(final String value) {
final ToscaProperty toscaProperty = new ToscaProperty();
- final ToscaPropertyConstraint toscaPropertyConstraint = new ToscaPropertyConstraintValidValues(ImmutableList.of(value));
- toscaProperty.setConstraints(ImmutableList.of(toscaPropertyConstraint));
+ toscaProperty.setDefaultp(value);
return toscaProperty;
}
diff --git a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/EtsiNetworkServiceUiTests.java b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/EtsiNetworkServiceUiTests.java
index feb56416cb..08261134d8 100644
--- a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/EtsiNetworkServiceUiTests.java
+++ b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/EtsiNetworkServiceUiTests.java
@@ -79,6 +79,7 @@ public class EtsiNetworkServiceUiTests extends SetupCDTest {
assertThat("No artifact download was found", toscaArtifactsPage.getDownloadedArtifactList(), not(empty()));
final String downloadedCsarName = toscaArtifactsPage.getDownloadedArtifactList().get(0);
+ propertyMap.entrySet().removeIf(e -> e.getValue() == null);
checkEtsiNsPackage(createServiceFlow.getServiceCreateData().getName(), downloadedCsarName, propertyMap);
}