From 7a9073719da3db83024e66a1da9ba14546cfd175 Mon Sep 17 00:00:00 2001 From: eleonorali Date: Tue, 10 Apr 2018 15:19:51 +0300 Subject: Defect 451622: Fix for defect 430981 not correct Only one default ipVersion - version4 should be created Change-Id: I27aad6acdacf66cf48f71f0a17cdd414aa510f93 Issue-ID: SDC-1203 Signed-off-by: eleonorali --- .../ResourceTranslationNeutronPortHelper.java | 144 +++++++++++++-------- 1 file changed, 88 insertions(+), 56 deletions(-) (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp') diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/helper/ResourceTranslationNeutronPortHelper.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/helper/ResourceTranslationNeutronPortHelper.java index c6d59ff1fd..40a20d659f 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/helper/ResourceTranslationNeutronPortHelper.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/helper/ResourceTranslationNeutronPortHelper.java @@ -1,5 +1,7 @@ package org.openecomp.sdc.translator.services.heattotosca.helper; +import org.apache.commons.collections4.CollectionUtils; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -30,39 +32,30 @@ public class ResourceTranslationNeutronPortHelper { public static final String IS_REQUIRED = "is_required"; public static final String IP_REQUIREMENTS = "ip_requirements"; public static final String MAC_REQUIREMENTS = "mac_requirements"; + public static final int DEFAULT_IP_VERSION = 4; public void setAdditionalProperties(Map properties) { - properties.putAll(createDefaultRequirments()); - populateFixedIpCount(properties); - populateFloatingIpCount(properties); - populateMacCount(properties); + properties.putAll(initRequirments()); + populateIpRequirments(properties); + populateMacRequirments(properties); populateNetworkRoleTag(properties); + } + private void populateIpRequirments(Map properties) { + populateFixedIpCount(properties); + populateFloatingIpCount(properties); + createDefaultIpRequirment(properties); } - private Map createDefaultRequirments() { + private Map initRequirments() { Map properties = new HashMap(); List> ipRequirementsList = new ArrayList<>(); - ipRequirementsList.add(createIPRequirment(4)); - ipRequirementsList.add(createIPRequirment(6)); properties.put(IP_REQUIREMENTS, ipRequirementsList); properties.put(MAC_REQUIREMENTS, createMacRequirment()); return properties; } - private Map createIPRequirment(Object version) { - Map ipRequirements = new HashMap(); - Map isRequired = new HashMap(); - Map floatingIsRequired = new HashMap(); - isRequired.put(IS_REQUIRED, Boolean.FALSE); - floatingIsRequired.put(IS_REQUIRED, Boolean.FALSE); - ipRequirements.put(IP_COUNT_REQUIRED, isRequired); - ipRequirements.put(FLOATING_IP_COUNT_REQUIRED, floatingIsRequired); - ipRequirements.put(IP_VERSION, version); - return ipRequirements; - } - private Map createMacRequirment() { Map macRequirements = new HashMap(); Map macIsRequired = new HashMap(); @@ -71,16 +64,20 @@ public class ResourceTranslationNeutronPortHelper { return macRequirements; } - private void populateMacCount(Map properties) { + private void populateMacRequirments(Map properties) { if (properties.containsKey(MAC_ADDRESS)) { - Map macRequirements = (Map) properties.get(MAC_REQUIREMENTS); - Map macIsRequired = new HashMap(); - macIsRequired.put(IS_REQUIRED, Boolean.TRUE); - macRequirements.put(MAC_COUNT_REQUIRED, macIsRequired); - properties.put(MAC_REQUIREMENTS, macRequirements); + populateMacCount(properties); } } + private void populateMacCount(Map properties) { + Map macRequirements = (Map) properties.get(MAC_REQUIREMENTS); + Map macIsRequired = new HashMap(); + macIsRequired.put(IS_REQUIRED, Boolean.TRUE); + macRequirements.put(MAC_COUNT_REQUIRED, macIsRequired); + properties.put(MAC_REQUIREMENTS, macRequirements); + } + private void populateFloatingIpCount(Map properties) { populateIpCountRequired(properties, ALLOWED_ADDRESS_PAIRS, FLOATING_IP_COUNT_REQUIRED ); } @@ -89,65 +86,92 @@ public class ResourceTranslationNeutronPortHelper { populateIpCountRequired(properties, FIXED_IPS, IP_COUNT_REQUIRED ); } + + private void createDefaultIpRequirment(Map properties) { + List> ipRequirmentsList = ((List>) properties.get(IP_REQUIREMENTS)); + + if(CollectionUtils.isEmpty(ipRequirmentsList)) { + ipRequirmentsList.add(createIPRequirment(DEFAULT_IP_VERSION)); + } + } + + private Map createIPRequirment(Object version) { + Map ipRequirements = new HashMap(); + Map isRequired = new HashMap(); + Map floatingIsRequired = new HashMap(); + isRequired.put(IS_REQUIRED, Boolean.FALSE); + floatingIsRequired.put(IS_REQUIRED, Boolean.FALSE); + ipRequirements.put(IP_COUNT_REQUIRED, isRequired); + ipRequirements.put(FLOATING_IP_COUNT_REQUIRED, floatingIsRequired); + ipRequirements.put(IP_VERSION, version); + return ipRequirements; + } + private void populateIpCountRequired(Map properties, String ipType, String ipCountRequired ){ - HashMap > ipRequirmentsMap = getIPRequirments(properties); Object propertyValue = properties.get(ipType); + if(propertyValue == null){ + return; + } + if (propertyValue instanceof Map && !((Map) propertyValue).isEmpty()) { - handleMapProperty(ipType, ipCountRequired, ipRequirmentsMap, (Map.Entry) ((Map) propertyValue).entrySet().iterator().next()); + handleMapProperty(ipType, ipCountRequired, properties, (Map.Entry) ((Map) propertyValue).entrySet().iterator().next()); } else if (propertyValue instanceof List && !((List) propertyValue).isEmpty()) { - handleListProperty(ipType, ipCountRequired, ipRequirmentsMap, (List) propertyValue); + handleListProperty(ipType, ipCountRequired, properties, (List) propertyValue); } + } - private void handleListProperty(String ipType, String ipCountRequired, HashMap> ipRequirmentsMap, List propertyValue) { + private void handleListProperty(String ipType, String ipCountRequired, Map properties, List propertyValue) { for (int i = 0; i < propertyValue.size(); i++) { - handleIpAddress(ipType, ipCountRequired, ipRequirmentsMap, propertyValue.get(i)); + handleIpAddress(ipType, ipCountRequired, properties, propertyValue.get(i)); } } - private void handleMapProperty(String ipType, String ipCountRequired, HashMap> ipRequirmentsMap, Map.Entry mapEntry) { - updateIpCountRequired(ipType, ipCountRequired, ipRequirmentsMap, mapEntry.getValue()); + private void handleMapProperty(String ipType, String ipCountRequired, Map properties, Map.Entry mapEntry) { + updateIpCountRequired(ipType, ipCountRequired, properties, mapEntry.getValue()); } - private void handleIpAddress(String ipType, String ipCountRequired, HashMap> ipRequirmentsMap, Object ipMap) { + private void handleIpAddress(String ipType, String ipCountRequired, Map properties, Object ipMap) { if(ipMap instanceof Map && !((Map) ipMap).isEmpty()) { Object ipAddressMap = ((Map) ipMap).get(IP_ADDRESS); if (ipAddressMap instanceof Map && !((Map) ipAddressMap).isEmpty()) { - Object ipList = ((Map) ipAddressMap).get(GET_INPUT); - handleIpCountRequired(ipType, ipCountRequired, ipRequirmentsMap, ipList); + Object ipInput = ((Map) ipAddressMap).get(GET_INPUT); + updateIpCountRequired(ipType, ipCountRequired, properties, ipInput); } } } - private void handleIpCountRequired(String ipType, String ipCountRequired, HashMap> ipRequirmentsMap, Object ipList) { - if (ipList instanceof List && !((List) ipList).isEmpty()) { - updateIpCountRequired(ipType, ipCountRequired, ipRequirmentsMap, ((List) ipList).get(0)); - } - else if (ipList instanceof String && !((String) ipList).isEmpty()) { - updateIpCountRequired(ipType, ipCountRequired, ipRequirmentsMap, ipList); - } - } - - private void updateIpCountRequired(String ipType, String ipCountRequired, HashMap> ipRequirmentsMap, Object ipList) { - Object ipVersion = getVersion(ipList, ipType); - updateIpCountRequiredForVersion(ipCountRequired, ipRequirmentsMap, ipVersion); + private void updateIpCountRequired(String ipType, String ipCountRequired, Map properties, Object ipInput) { + Object ipVersion = getVersion(ipInput, ipType); + updateIpCountRequiredForVersion(ipCountRequired, properties, ipVersion); } - private void updateIpCountRequiredForVersion(String ipCountRequired, HashMap> ipRequirmentsMap, Object ipVersion) { - Map ipRequirement; + private void updateIpCountRequiredForVersion(String ipCountRequired, Map properties, Object ipVersion) { if (ipVersion != null) { - ipRequirement = ipRequirmentsMap.get(ipVersion); - if (ipRequirement != null) { - Map isIPCountRequired = (Map)ipRequirement.get(ipCountRequired); - isIPCountRequired.put(IS_REQUIRED, Boolean.TRUE); + HashMap> ipRequirmentsMap = getIPRequirments(properties); + Map ipRequirement = ipRequirmentsMap.get(ipVersion); + if (ipRequirement == null){ + ipRequirement = addIPRequirment(properties, ipVersion); } + updateIpCountRequired(ipCountRequired, ipRequirement); } } - private HashMap > getIPRequirments (Map properties) { + private Map addIPRequirment(Map properties, Object ipVersion) { + List> ipRequirmentsList = ((List>) properties.get(IP_REQUIREMENTS)); + Map newIpRequirment = createIPRequirment(ipVersion); + ipRequirmentsList.add(newIpRequirment); + return newIpRequirment; + } + + private void updateIpCountRequired(String ipCountRequired, Map ipRequirement) { + Map isIPCountRequired = (Map)ipRequirement.get(ipCountRequired); + isIPCountRequired.put(IS_REQUIRED, Boolean.TRUE); + } + private HashMap > getIPRequirments (Map properties) { HashMap> ipRequirmentsMap = new HashMap(); List> ipRequirmentsList = ((List>) properties.get(IP_REQUIREMENTS)); ipRequirmentsList.stream().forEach(e->ipRequirmentsMap.put(e.get(IP_VERSION),e)); @@ -179,11 +203,13 @@ public class ResourceTranslationNeutronPortHelper { private Object getFloatingIpVersion(Object value) { Object ipVersion = null; + + // Allowed ONLY String parameter if(value instanceof String) { if (((String) value).endsWith(FLOATING_V6_IP)) { ipVersion = 6; } - else { + else if (((String) value).endsWith(FLOATING_IP)){ ipVersion = 4; } } @@ -191,7 +217,13 @@ public class ResourceTranslationNeutronPortHelper { } private Object getIpVersion(Object value) { + + // Allowed List or String parameter Object ipVersion = null; + if (value instanceof List && !((List) value).isEmpty()){ + value = ((List) value).get(0); + } + if(value instanceof String) { if (((String) value).endsWith(V6_IPS) || ((String) value).matches(IPV6_REGEX)) { ipVersion = 6; @@ -216,4 +248,4 @@ public class ResourceTranslationNeutronPortHelper { } return networkRole; } -} +} \ No newline at end of file -- cgit 1.2.3-korg