You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ki...@apache.org on 2013/02/01 07:11:34 UTC
[33/48] git commit: refs/heads/regions - [EC2 Query API]
DescribeAddresses fails with Null Pointer Exception.
[EC2 Query API] DescribeAddresses fails with Null Pointer Exception.
https://reviews.apache.org/r/8492/
As a part of EC2 Query API support, resolve the NPE obtained when DescribeAddresses is called
In EC2Engine modify DescribeAddresses implementation to be consistent with the other Describe* API implementation
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/d738c81a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/d738c81a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/d738c81a
Branch: refs/heads/regions
Commit: d738c81a4613f70783676a2d9657b9467c4e16a8
Parents: de517d9
Author: Likitha Shetty <Li...@citrix.com>
Authored: Thu Jan 31 11:45:38 2013 -0800
Committer: Prachi Damle <pr...@cloud.com>
Committed: Thu Jan 31 12:00:32 2013 -0800
----------------------------------------------------------------------
.../service/core/ec2/EC2AddressFilterSet.java | 17 ++---
.../cloud/bridge/service/core/ec2/EC2Engine.java | 56 ++++++++++-----
2 files changed, 47 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d738c81a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2AddressFilterSet.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2AddressFilterSet.java b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2AddressFilterSet.java
index cb21fb2..1823b26 100644
--- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2AddressFilterSet.java
+++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2AddressFilterSet.java
@@ -63,22 +63,21 @@ public class EC2AddressFilterSet {
}
- public EC2DescribeAddressesResponse evaluate( List<EC2Address> addresses) throws ParseException {
+ public EC2DescribeAddressesResponse evaluate( EC2DescribeAddressesResponse response) throws ParseException {
EC2DescribeAddressesResponse resultList = new EC2DescribeAddressesResponse();
boolean matched;
+ EC2Address[] addresses = response.getAddressSet();
EC2Filter[] filterSet = getFilterSet();
for ( EC2Address address : addresses ) {
matched = true;
- if (filterSet != null) {
- for (EC2Filter filter : filterSet) {
- if (!filterMatched(address, filter)) {
- matched = false;
- break;
- }
- }
- }
+ for (EC2Filter filter : filterSet) {
+ if (!filterMatched(address, filter)) {
+ matched = false;
+ break;
+ }
+ }
if (matched == true)
resultList.addAddress(address);
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d738c81a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
index 6f54d38..17752af 100644
--- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
+++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
@@ -812,24 +812,13 @@ public class EC2Engine {
*/
public EC2DescribeAddressesResponse describeAddresses( EC2DescribeAddresses request ) {
try {
- List<CloudStackIpAddress> addrList = getApi().listPublicIpAddresses(null, null, null, null, null, null, null, null, null);
-
- EC2AddressFilterSet filterSet = request.getFilterSet();
- List<EC2Address> addressList = new ArrayList<EC2Address>();
- if (addrList != null && addrList.size() > 0) {
- for (CloudStackIpAddress addr: addrList) {
- // remember, if no filters are set, request.inPublicIpSet always returns true
- if (request.inPublicIpSet(addr.getIpAddress())) {
- EC2Address ec2Address = new EC2Address();
- ec2Address.setIpAddress(addr.getIpAddress());
- if (addr.getVirtualMachineId() != null)
- ec2Address.setAssociatedInstanceId(addr.getVirtualMachineId().toString());
- addressList.add(ec2Address);
- }
- }
- }
+ EC2DescribeAddressesResponse response = listAddresses(request.getPublicIpsSet());
+ EC2AddressFilterSet afs = request.getFilterSet();
- return filterSet.evaluate(addressList);
+ if (afs ==null)
+ return response;
+ else
+ return afs.evaluate(response);
} catch(Exception e) {
logger.error("EC2 DescribeAddresses - ", e);
throw new EC2ServiceException(ServerError.InternalError, e.getMessage());
@@ -2079,6 +2068,39 @@ public class EC2Engine {
}
}
+ private EC2DescribeAddressesResponse listAddresses(String[] addressNames) throws Exception {
+ try {
+ EC2DescribeAddressesResponse addressSet = new EC2DescribeAddressesResponse();
+
+ List<CloudStackIpAddress> addresses = getApi().listPublicIpAddresses(null, null, null, null, null, null, null, null, null);
+ if (addresses != null && addresses.size() > 0) {
+ for (CloudStackIpAddress address : addresses) {
+ boolean matched = false;
+ if ( addressNames.length > 0) {
+ for (String addressName : addressNames) {
+ if (address.getIpAddress().equalsIgnoreCase(addressName)) {
+ matched = true;
+ break;
+ }
+ }
+ } else matched = true;
+
+ if (!matched) continue ;
+
+ EC2Address ec2Address = new EC2Address();
+ ec2Address.setIpAddress(address.getIpAddress());
+ if (address.getVirtualMachineId() != null)
+ ec2Address.setAssociatedInstanceId(address.getVirtualMachineId().toString());
+ addressSet.addAddress(ec2Address);
+ }
+ }
+ return addressSet;
+ } catch(Exception e) {
+ logger.error( "List Addresses - ", e);
+ throw new EC2ServiceException(ServerError.InternalError, e.getMessage());
+ }
+ }
+
/**
* Convert ingress rule to EC2IpPermission records
*