diff options
author | eleonorali <eleonoral@amdocs.com> | 2018-04-10 15:19:51 +0300 |
---|---|---|
committer | Avi Gaffa <avi.gaffa@amdocs.com> | 2018-04-10 14:32:37 +0000 |
commit | 7a9073719da3db83024e66a1da9ba14546cfd175 (patch) | |
tree | 3d2b8e442fe7837c4ab041ac147ffe7a192bbbb0 /openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main | |
parent | 14f12f45bb7a41513d82b73f4c72b14c2e5584e3 (diff) |
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 <eleonoral@amdocs.com>
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main')
1 files changed, 88 insertions, 56 deletions
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<String, Object> properties) { - properties.putAll(createDefaultRequirments()); - populateFixedIpCount(properties); - populateFloatingIpCount(properties); - populateMacCount(properties); + properties.putAll(initRequirments()); + populateIpRequirments(properties); + populateMacRequirments(properties); populateNetworkRoleTag(properties); + } + private void populateIpRequirments(Map<String, Object> properties) { + populateFixedIpCount(properties); + populateFloatingIpCount(properties); + createDefaultIpRequirment(properties); } - private Map<String, Object> createDefaultRequirments() { + private Map<String, Object> initRequirments() { Map<String, Object> properties = new HashMap(); List<Map<String, Object>> 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<String, Object> createIPRequirment(Object version) { - Map<String, Object> ipRequirements = new HashMap(); - Map<String, Object> isRequired = new HashMap(); - Map<String, Object> 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<String, Object> createMacRequirment() { Map<String, Object> macRequirements = new HashMap(); Map<String, Object> macIsRequired = new HashMap(); @@ -71,16 +64,20 @@ public class ResourceTranslationNeutronPortHelper { return macRequirements; } - private void populateMacCount(Map<String, Object> properties) { + private void populateMacRequirments(Map<String, Object> properties) { if (properties.containsKey(MAC_ADDRESS)) { - Map<String, Object> macRequirements = (Map<String, Object>) properties.get(MAC_REQUIREMENTS); - Map<String, Object> 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<String, Object> properties) { + Map<String, Object> macRequirements = (Map<String, Object>) properties.get(MAC_REQUIREMENTS); + Map<String, Object> macIsRequired = new HashMap(); + macIsRequired.put(IS_REQUIRED, Boolean.TRUE); + macRequirements.put(MAC_COUNT_REQUIRED, macIsRequired); + properties.put(MAC_REQUIREMENTS, macRequirements); + } + private void populateFloatingIpCount(Map<String, Object> 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<String, Object> properties) { + List<Map<String, Object>> ipRequirmentsList = ((List<Map<String, Object>>) properties.get(IP_REQUIREMENTS)); + + if(CollectionUtils.isEmpty(ipRequirmentsList)) { + ipRequirmentsList.add(createIPRequirment(DEFAULT_IP_VERSION)); + } + } + + private Map<String, Object> createIPRequirment(Object version) { + Map<String, Object> ipRequirements = new HashMap(); + Map<String, Object> isRequired = new HashMap(); + Map<String, Object> 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<String, Object> properties, String ipType, String ipCountRequired ){ - HashMap <Object, Map<String, Object>> 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<String, Object>) ((Map) propertyValue).entrySet().iterator().next()); + handleMapProperty(ipType, ipCountRequired, properties, (Map.Entry<String, Object>) ((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<Object, Map<String, Object>> ipRequirmentsMap, List propertyValue) { + private void handleListProperty(String ipType, String ipCountRequired, Map<String, Object> 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<Object, Map<String, Object>> ipRequirmentsMap, Map.Entry<String, Object> mapEntry) { - updateIpCountRequired(ipType, ipCountRequired, ipRequirmentsMap, mapEntry.getValue()); + private void handleMapProperty(String ipType, String ipCountRequired, Map<String, Object> properties, Map.Entry<String, Object> mapEntry) { + updateIpCountRequired(ipType, ipCountRequired, properties, mapEntry.getValue()); } - private void handleIpAddress(String ipType, String ipCountRequired, HashMap<Object, Map<String, Object>> ipRequirmentsMap, Object ipMap) { + private void handleIpAddress(String ipType, String ipCountRequired, Map<String, Object> 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<Object, Map<String, Object>> 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<Object, Map<String, Object>> ipRequirmentsMap, Object ipList) { - Object ipVersion = getVersion(ipList, ipType); - updateIpCountRequiredForVersion(ipCountRequired, ipRequirmentsMap, ipVersion); + private void updateIpCountRequired(String ipType, String ipCountRequired, Map<String, Object> properties, Object ipInput) { + Object ipVersion = getVersion(ipInput, ipType); + updateIpCountRequiredForVersion(ipCountRequired, properties, ipVersion); } - private void updateIpCountRequiredForVersion(String ipCountRequired, HashMap<Object, Map<String, Object>> ipRequirmentsMap, Object ipVersion) { - Map<String, Object> ipRequirement; + private void updateIpCountRequiredForVersion(String ipCountRequired, Map<String, Object> properties, Object ipVersion) { if (ipVersion != null) { - ipRequirement = ipRequirmentsMap.get(ipVersion); - if (ipRequirement != null) { - Map<String, Object> isIPCountRequired = (Map<String, Object>)ipRequirement.get(ipCountRequired); - isIPCountRequired.put(IS_REQUIRED, Boolean.TRUE); + HashMap<Object, Map<String, Object>> ipRequirmentsMap = getIPRequirments(properties); + Map<String, Object> ipRequirement = ipRequirmentsMap.get(ipVersion); + if (ipRequirement == null){ + ipRequirement = addIPRequirment(properties, ipVersion); } + updateIpCountRequired(ipCountRequired, ipRequirement); } } - private HashMap <Object, Map<String, Object>> getIPRequirments (Map<String, Object> properties) { + private Map<String, Object> addIPRequirment(Map<String, Object> properties, Object ipVersion) { + List<Map<String, Object>> ipRequirmentsList = ((List<Map<String,Object>>) properties.get(IP_REQUIREMENTS)); + Map<String, Object> newIpRequirment = createIPRequirment(ipVersion); + ipRequirmentsList.add(newIpRequirment); + return newIpRequirment; + } + + private void updateIpCountRequired(String ipCountRequired, Map<String, Object> ipRequirement) { + Map<String, Object> isIPCountRequired = (Map<String, Object>)ipRequirement.get(ipCountRequired); + isIPCountRequired.put(IS_REQUIRED, Boolean.TRUE); + } + private HashMap <Object, Map<String, Object>> getIPRequirments (Map<String, Object> properties) { HashMap<Object, Map<String, Object>> ipRequirmentsMap = new HashMap(); List<Map<String, Object>> ipRequirmentsList = ((List<Map<String,Object>>) 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 |