From 3b2a4a9f36d21c0d5519e83551fde633945eb3a7 Mon Sep 17 00:00:00 2001 From: Pavel Aharoni Date: Mon, 17 Jul 2017 16:45:26 +0300 Subject: [PATCH] [SDC-137] update port properties function Change-Id: I1e2de708ca8fc327941cbb04290d52f07e243ecd Signed-off-by: Pavel Aharoni --- .../sdc/tosca/parser/api/ISdcCsarHelper.java | 12 +++++ .../sdc/tosca/parser/impl/SdcCsarHelperImpl.java | 37 +++++++++++++++ .../sdc/impl/SdcToscaParserBasicTest.java | 4 +- .../sdc/impl/ToscaParserNodeTemplateTest.java | 50 ++++++++++----------- .../csars/service-Ipassignservice-csar.csar | Bin 0 -> 49975 bytes 5 files changed, 75 insertions(+), 28 deletions(-) create mode 100644 src/test/resources/csars/service-Ipassignservice-csar.csar diff --git a/src/main/java/org/openecomp/sdc/tosca/parser/api/ISdcCsarHelper.java b/src/main/java/org/openecomp/sdc/tosca/parser/api/ISdcCsarHelper.java index 6c8f5df..bb5bd25 100644 --- a/src/main/java/org/openecomp/sdc/tosca/parser/api/ISdcCsarHelper.java +++ b/src/main/java/org/openecomp/sdc/tosca/parser/api/ISdcCsarHelper.java @@ -326,9 +326,21 @@ public interface ISdcCsarHelper { * port_fe_oam={ip_requirements#ip_count_required#count=2, ip_requirements#dhcp_enabled=true, ip_requirements#ip_version=4, subnetpoolid="subnet_2", network_role_tag="Mobility_OAM_protected"}}

* @param vfc - VFC node template to look for CP-related props. * @return map CP node template name to a map of full path to a property on this CP - value of this property on this CP. + * @deprecated This function is deprecated since its flattened form doesn't provide solution for cp properties of type List. */ + @Deprecated public Map> getCpPropertiesFromVfc(NodeTemplate vfc); + /** + * Get the map of CP-related props from a VFC node template.
+ * Let's say there are 2 CPs (ports) related to this VFC. Then the output will look like this:

+ * {port_fe_sigtran={ip_requirements={ip_count_required: {count: 1}, dhcp_enabled: true, ip_version: 4}, subnetpoolid: "subnet_1", network_role_tag: "SIGNET_vrf_B1_direct"}
+ * port_fe_cluster={ip_requirements={ip_count_required: {count: 2}, dhcp_enabled: true, ip_version: 4}}
+ * @param vfc - VFC node template to look for CP-related props. + * @return map CP node template name to a map of property name - property value as object. + */ + public Map> getCpPropertiesFromVfcAsObject(NodeTemplate vfc); + /** * Get customization UUID of a node template * @param nt - node template diff --git a/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java b/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java index 7b901ec..c927817 100644 --- a/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java +++ b/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcCsarHelperImpl.java @@ -90,6 +90,43 @@ public class SdcCsarHelperImpl implements ISdcCsarHelper { LinkedHashMap properties = nodeTemplate.getProperties(); return processProperties(split, properties); } + + public Map> getCpPropertiesFromVfcAsObject(NodeTemplate vfc) { + if (vfc == null) { + log.error("getCpPropertiesFromVfc - vfc is null"); + return new HashMap<>(); + } + + String presetProperty = "_ip_requirements"; + Map> cps = new HashMap<>(); + + Map props = vfc.getProperties(); + if (props != null) { + // find all port names by pre-set property (ip_requirements) + for (Map.Entry entry : props.entrySet()) { + if (entry.getKey().endsWith(presetProperty)) { + String portName = entry.getKey().replaceAll(presetProperty, ""); + cps.put(portName, new HashMap<>()); + } + } + + if (cps.size() > 0) { + // ports found - find all their properties + for (String portName : cps.keySet()) { + for (Map.Entry property: props.entrySet()) { + if (property.getKey().startsWith(portName)) { + String portProperty = property.getKey().replaceFirst(portName + "_", ""); + if (property.getValue() != null) { + cps.get(portName).put(portProperty, property.getValue().getValue()); + } + } + } + } + } + } + + return cps; + } public Map> getCpPropertiesFromVfc(NodeTemplate vfc) { diff --git a/src/test/java/org/openecomp/sdc/impl/SdcToscaParserBasicTest.java b/src/test/java/org/openecomp/sdc/impl/SdcToscaParserBasicTest.java index 471fbc0..817ac92 100644 --- a/src/test/java/org/openecomp/sdc/impl/SdcToscaParserBasicTest.java +++ b/src/test/java/org/openecomp/sdc/impl/SdcToscaParserBasicTest.java @@ -27,7 +27,8 @@ public abstract class SdcToscaParserBasicTest { static ISdcCsarHelper complexCps; static ISdcCsarHelper fdntCsarHelperWithInputs; static ISdcCsarHelper nfodCsarHlper; - static ISdcCsarHelper nestedVfcCsarHlper; + static ISdcCsarHelper ipAssignCsarHelper; + static ISdcCsarHelper nestedVfcCsarHlper; static Map>> fdntCsarHelper_Data; @BeforeClass @@ -40,6 +41,7 @@ public abstract class SdcToscaParserBasicTest { complexCps = getCsarHelper("csars/service-consolidated-props-csar.csar"); fdntCsarHelperWithInputs = getCsarHelper("csars/service-ServiceFdnt-with-get-input.csar"); nfodCsarHlper = getCsarHelper("csars/service-NfodService-csar.csar"); + ipAssignCsarHelper = getCsarHelper("csars/service-Ipassignservice-csar.csar"); nestedVfcCsarHlper = getCsarHelper("csars/service-nested-vfc-csar.csar"); fdntCsarHelper_Data = new HashMap>>(){ { diff --git a/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java b/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java index d8e065b..9818a89 100644 --- a/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java +++ b/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java @@ -331,45 +331,41 @@ public class ToscaParserNodeTemplateTest extends SdcToscaParserBasicTest { //region getCpPropertiesFromVfc @Test public void testGetCpPropertiesFromVfc() { - List vfcs = complexCps.getVfcListByVf("f999e2ca-72c0-42d3-9b11-13f2122fb8ef"); + List vfcs = ipAssignCsarHelper.getVfcListByVf("b5190df2-7880-4d6f-836f-56ab17e1b85b"); boolean isChecked = false; - boolean isChecked1 = false; - for (int i = 0; i < vfcs.size(); i++) { - - if(vfcs.get(i).getName().equalsIgnoreCase("abstract_ddc")) - { - isChecked = true; - Map> cps = complexCps.getCpPropertiesFromVfc(vfcs.get(i)); - - assertEquals(3,cps.size()); - assertEquals(new Integer(1), cps.get("port_ddc_int_imbl__port").get("ip_requirements#ip_count_required#count")); - assertEquals(new Boolean(true), cps.get("port_ddc_int_imbl__port").get("ip_requirements#dhcp_enabled")); - assertEquals(new Integer(6), cps.get("port_ddc_int_imbl__port").get("ip_requirements#ip_version")); - assertEquals("subnetpoolid_test", cps.get("port_ddc_int_imbl__port").get("subnetpoolid")); - assertEquals("int_imbl", cps.get("port_ddc_int_imbl__port").get("network_role_tag")); + for (NodeTemplate vfc: vfcs) { - } - - if(vfcs.get(i).getName().equalsIgnoreCase("abstract_mda")) + if(vfc.getName().equalsIgnoreCase("abstract_pd_server")) { - isChecked1 = true; - Map> cps1 = complexCps.getCpPropertiesFromVfc(vfcs.get(i)); - - assertEquals(new Integer(4), cps1.get("port_mda_int_imsp__port").get("ip_requirements#ip_version")); - assertEquals(null, cps1.get("port_mda_int_imsp__port").get("ip_requirements#ip_count_required#count")); - - } + isChecked = true; + Map> cps = ipAssignCsarHelper.getCpPropertiesFromVfcAsObject(vfc); + + assertEquals(2,cps.size()); + Map pd01 = cps.get("port_pd01_port"); + assertEquals(5, pd01.size()); + + Map firstIpRequirements = (Map) ((List)pd01.get("ip_requirements")).get(0); + Map secondIpRequirements = (Map) ((List)pd01.get("ip_requirements")).get(1); + + assertEquals("subnet_role_4", firstIpRequirements.get("subnet_role")); + assertEquals(4, firstIpRequirements.get("ip_version")); + assertEquals(true, ((Map) firstIpRequirements.get("ip_count_required")).get("is_required")); + assertEquals(4, ((Map) firstIpRequirements.get("ip_count_required")).get("count")); + assertEquals(false, ((Map)((Map)pd01.get("mac_requirements")).get("mac_count_required")).get("is_required")); + assertEquals("test_subnetpoolid", pd01.get("subnetpoolid")); + assertEquals("oam", pd01.get("network_role_tag")); + assertEquals(6, secondIpRequirements.get("ip_version")); + } } assertTrue(isChecked); - assertTrue(isChecked1); } @Test public void testGetCpPropertiesFromVfcForNullVFC() { - Map> cps = complexCps.getCpPropertiesFromVfc(null); + Map> cps = ipAssignCsarHelper.getCpPropertiesFromVfcAsObject(null); assertNotNull(cps); assertEquals(0, cps.size()); } diff --git a/src/test/resources/csars/service-Ipassignservice-csar.csar b/src/test/resources/csars/service-Ipassignservice-csar.csar new file mode 100644 index 0000000000000000000000000000000000000000..050745737ec7855863b85fe96914eb3768dafca8 GIT binary patch literal 49975 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 literal 0 HcmV?d00001 -- 2.16.6