From 52351b14a00dd25a6622887105d11685611ed7dd Mon Sep 17 00:00:00 2001 From: Likitha Shetty Date: Fri, 18 May 2012 15:18:18 +0530 Subject: [PATCH] CS-14970. "java.lang.NumberFormatException" seen when ec2-describe-groups used to list ingress rules and if any of the icmp rules has a type or code of value '-1'. Update EC2GroupFilterSet to match the filter values with a regular expression and not an integer. --- .../service/core/ec2/EC2GroupFilterSet.java | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2GroupFilterSet.java b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2GroupFilterSet.java index 19a161dd22c..7d291d35336 100644 --- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2GroupFilterSet.java +++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2GroupFilterSet.java @@ -133,14 +133,14 @@ public class EC2GroupFilterSet { matched = containsString(perm.getCIDR(), valueSet); else if (filterName.equalsIgnoreCase( "ip-permission.from-port" )) { if (perm.getProtocol().equalsIgnoreCase("icmp")) - matched = containsInteger(Integer.parseInt(perm.getIcmpType()), valueSet); + matched = containsString(perm.getIcmpType(), valueSet); else - matched = containsInteger(perm.getFromPort(), valueSet); + matched = containsString(perm.getFromPort().toString(), valueSet); } else if (filterName.equalsIgnoreCase( "ip-permission.to-port" )) { if (perm.getProtocol().equalsIgnoreCase("icmp")) - matched = containsInteger(Integer.parseInt(perm.getIcmpCode()), valueSet); + matched = containsString(perm.getIcmpCode(), valueSet); else - matched = containsInteger( perm.getToPort(), valueSet ); + matched = containsString( perm.getToPort().toString(), valueSet ); } else if (filterName.equalsIgnoreCase( "ip-permission.protocol" )) matched = containsString( perm.getProtocol(), valueSet ); if (!matched) break; @@ -162,14 +162,4 @@ public class EC2GroupFilterSet { return false; } - - private boolean containsInteger( int lookingFor, String[] set ) - { - for (String s : set) { - //System.out.println( "contsinsInteger: " + lookingFor + " " + set[i] ); - int temp = Integer.parseInt( s ); - if (lookingFor == temp) return true; - } - return false; - } }