From 52b81f8bffb09fa9a4134a5f55ad2d676d24ef3f Mon Sep 17 00:00:00 2001 From: Likitha Shetty Date: Mon, 11 Feb 2013 15:25:30 -0800 Subject: [PATCH] CLOUDSTACK-1127: [EC2 Query API] DescribeSecurityGroups, support for additional filters Add support for filters ip-permission.group-name and ip-permission.user-id --- .../service/core/ec2/EC2GroupFilterSet.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) 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 149d25f6151..dbc367c109d 100644 --- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2GroupFilterSet.java +++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2GroupFilterSet.java @@ -41,6 +41,8 @@ public class EC2GroupFilterSet { filterTypes.put( "ip-permission.from-port", "string" ); filterTypes.put( "ip-permission.to-port", "string" ); filterTypes.put( "ip-permission.protocol", "string" ); + filterTypes.put( "ip-permission.group-name","string" ); + filterTypes.put( "ip-permission.user-id", "string" ); filterTypes.put( "owner-id", "string" ); } @@ -126,7 +128,7 @@ public class EC2GroupFilterSet { EC2IpPermission[] permissionSet = sg.getIpPermissionSet(); for (EC2IpPermission perm : permissionSet) { - boolean matched = true; + boolean matched = false; for (EC2Filter filter : ipPermissionFilterSet) { String filterName = filter.getName(); String[] valueSet = filter.getValueSet(); @@ -144,6 +146,24 @@ public class EC2GroupFilterSet { matched = containsString( perm.getToPort().toString(), valueSet ); } else if (filterName.equalsIgnoreCase( "ip-permission.protocol" )) matched = containsString( perm.getProtocol(), valueSet ); + else if (filterName.equalsIgnoreCase( "ip-permission.group-name" )) { + EC2SecurityGroup[] userSet = perm.getUserSet(); + for (EC2SecurityGroup user : userSet) { + if (containsString(user.getName(), valueSet)) { + matched = true; + break; + } + } + } + else if (filterName.equalsIgnoreCase( "ip-permission.user-id" )){ + EC2SecurityGroup[] userSet = perm.getUserSet(); + for (EC2SecurityGroup user : userSet) { + if (containsString(user.getAccountName(), valueSet)) { + matched = true; + break; + } + } + } if (!matched) break; } if (matched) return true;