http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9a33fd18/awsapi/src/com/cloud/bridge/service/core/ec2/EC2VolumeFilterSet.java
----------------------------------------------------------------------
diff --git 
a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2VolumeFilterSet.java 
b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2VolumeFilterSet.java
index b8021f3..af13242 100644
--- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2VolumeFilterSet.java
+++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2VolumeFilterSet.java
@@ -26,6 +26,7 @@ import java.util.TimeZone;
 import java.util.Date;
 
 import com.cloud.bridge.service.exception.EC2ServiceException;
+import com.cloud.bridge.service.exception.EC2ServiceException.ClientError;
 import com.cloud.bridge.util.EC2RestAuth;
 
 
@@ -61,11 +62,9 @@ public class EC2VolumeFilterSet {
                String filterName = param.getName();
         String value = (String) filterTypes.get( filterName );
 
-        if (null == value)
-            throw new EC2ServiceException( "Unsupported filter [" + filterName 
+ "] - 1", 501 );
-
-        if (null != value && value.equalsIgnoreCase( "null" ))
-            throw new EC2ServiceException( "Unsupported filter [" + filterName 
+ "] - 2", 501 );
+        if ( value == null || value.equalsIgnoreCase("null") ) {
+                throw new EC2ServiceException( ClientError.InvalidFilter, 
"Filter '" + filterName + "' is invalid");
+        }
                // ToDo we could add checks to make sure the type of a filters 
value is correct (e.g., an integer)
                filterSet.add( param );
        }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9a33fd18/awsapi/src/com/cloud/bridge/service/exception/EC2ServiceException.java
----------------------------------------------------------------------
diff --git 
a/awsapi/src/com/cloud/bridge/service/exception/EC2ServiceException.java 
b/awsapi/src/com/cloud/bridge/service/exception/EC2ServiceException.java
index e1f515a..c21e6e9 100644
--- a/awsapi/src/com/cloud/bridge/service/exception/EC2ServiceException.java
+++ b/awsapi/src/com/cloud/bridge/service/exception/EC2ServiceException.java
@@ -26,11 +26,11 @@ public class EC2ServiceException extends RuntimeException {
        // ServerError & ClientError are correct as of schema version 2010-08-31
        
        public static enum ServerError {
-               
InsufficientAddressCapacity("Server.InsufficientAddressCapacity", 500),
-               
InsufficientInstanceCapacity("Server.InsufficientInstanceCapacity", 500),
-               
InsufficientReservedInstanceCapacity("Server.InsufficientReservedInstanceCapacity",
 500),
-               InternalError("Server.InternalError", 500),
-               Unavailable("Server.Unavailable", 501);
+        InsufficientAddressCapacity("Server.InsufficientAddressCapacity", 500),
+        InsufficientInstanceCapacity("Server.InsufficientInstanceCapacity", 
500),
+        
InsufficientReservedInstanceCapacity("Server.InsufficientReservedInstanceCapacity",
 500),
+        InternalError("Server.InternalError", 500),
+        Unavailable("Server.Unavailable", 501);
                
                private String errorString;
                private int httpErrorCode;
@@ -45,58 +45,64 @@ public class EC2ServiceException extends RuntimeException {
        }
        
        public static enum ClientError {
-               AddressLimitExceeded("Client.AddressLimitExceeded", 400),
-               AttachmentLimitExceeded("Client.AttachmentLimitExceeded", 400),
-               AuthFailure("Client.AuthFailure", 400),
-               Blocked("Client.Blocked", 400),
-               FilterLimitExceeded("Client.FilterLimitExceeded", 400),
-               
IdempotentParameterMismatch("Client.IdempotentParameterMismatch", 400),
-               IncorrectState("Client.IncorrectState", 400),
-               InstanceLimitExceeded("Client.InstanceLimitExceeded", 400),
-               
InsufficientInstanceCapacity("Client.InsufficientInstanceCapacity", 400),
-               
InsufficientReservedInstancesCapacity("Client.InsufficientReservedInstancesCapacity",
 400),
-               
InvalidAMIAttributeItemValue("Client.InvalidAMIAttributeItemValue", 400),
-               InvalidAMIID_Malformed("Client.InvalidAMIID.Malformed", 400),
-               InvalidAMIID_NotFound("Client.InvalidAMIID.NotFound", 400),
-               InvalidAMIID_Unavailable("Client.InvalidAMIID.Unavailable", 
400),
-               InvalidAttachment_NotFound("Client.InvalidAttachment.NotFound", 
400),
-               InvalidDevice_InUse("Client.InvalidDevice.InUse", 400),
-               InvalidGroup_Duplicate("Client.InvalidGroup.Duplicate", 400),
-               InvalidGroup_InUse("Client.InvalidGroup.InUse", 400),
-               InvalidGroup_NotFound("Client.InvalidGroup.NotFound", 400),
-               InvalidGroup_Reserved("Client.InvalidGroup.Reserved", 400),
-               
InvalidInstanceID_Malformed("Client.InvalidInstanceID.Malformed", 400),
-               InvalidInstanceID_NotFound("Client.InvalidInstanceID.NotFound", 
400),
-               InvalidIPAddress_InUse("Client.InvalidIPAddress.InUse", 400),
-               InvalidKeyPair_Duplicate("Client.InvalidKeyPair.Duplicate", 
400),
-               InvalidKeyPair_Format("Client.InvalidKeyPair.Format", 400),
-               InvalidKeyPair_NotFound("Client.InvalidKeyPair.NotFound", 400),
-               InvalidManifest("Client.InvalidManifest", 400),
-               
InvalidParameterCombination("Client.InvalidParameterCombination", 400),
-               InvalidParameterValue("Client.InvalidParameterValue", 400),
-               
InvalidPermission_Duplicate("Client.InvalidPermission.Duplicate", 400),
-               
InvalidPermission_Malformed("Client.InvalidPermission.Malformed", 400),
-               
InvalidReservationID_Malformed("Client.InvalidReservationID.Malformed", 400),
-               
InvalidReservationID_NotFound("Client.InvalidReservationID.NotFound", 400),
-               InvalidResourceId_Format("Client.InvalidResourceId.Format", 
400),
-               
InvalidSnapshotID_Malformed("Client.InvalidSnapshotID.Malformed", 400),
-               InvalidSnapshot_NotFound("Client.InvalidSnapshot.NotFound", 
400),
-               InvalidUserID_Malformed("Client.InvalidUserID.Malformed", 400),
-               InvalidReservedInstancesId("Client.InvalidReservedInstancesId", 
400),
-               
InvalidReservedInstancesOfferingId("Client.InvalidReservedInstancesOfferingId", 
400),
-               InvalidVolumeID_Duplicate("Client.InvalidVolumeID.Duplicate", 
400),
-               InvalidVolumeID_Malformed("Client.InvalidVolumeID.Malformed", 
400),
-               InvalidVolume_NotFound("Client.InvalidVolume.NotFound", 400),
-               
InvalidVolumeID_ZoneMismatch("Client.InvalidVolumeID.ZoneMismatch", 400),
-               InvalidZone_NotFound("Client.InvalidZone.NotFound", 400),
-               NonEBSInstance("Client.NonEBSInstance", 400),
-               PendingVerification("Client.PendingVerification", 400),
-               
PendingSnapshotLimitExceeded("Client.PendingSnapshotLimitExceeded", 400),
-               
ReservedInstancesLimitExceeded("Client.ReservedInstancesLimitExceeded", 400),
-               SnapshotLimitExceeded("Client.SnapshotLimitExceeded", 400),
-               UnknownParameter("Client.UnknownParameter", 400),
-               Unsupported("Client.Unsupported", 400),
-               VolumeLimitExceeded("Client.VolumeLimitExceeded", 400);
+        AddressLimitExceeded("Client.AddressLimitExceeded", 400),
+        AttachmentLimitExceeded("Client.AttachmentLimitExceeded", 400),
+        AuthFailure("Client.AuthFailure", 400),
+        Blocked("Client.Blocked", 400),
+        DependencyViolation("Client.DependencyViolation", 400),
+        FilterLimitExceeded("Client.FilterLimitExceeded", 400),
+        IdempotentParameterMismatch("Client.IdempotentParameterMismatch", 400),
+        IncorrectState("Client.IncorrectState", 400),
+        IncorrectInstanceState("Client.IncorrectInstanceState", 400),
+        InstanceLimitExceeded("Client.InstanceLimitExceeded", 400),
+        InsufficientInstanceCapacity("Client.InsufficientInstanceCapacity", 
400),
+        
InsufficientReservedInstancesCapacity("Client.InsufficientReservedInstancesCapacity",
 400),
+        InvalidAMIAttributeItemValue("Client.InvalidAMIAttributeItemValue", 
400),
+        InvalidAMIID_Malformed("Client.InvalidAMIID.Malformed", 400),
+        InvalidAMIID_NotFound("Client.InvalidAMIID.NotFound", 400),
+        InvalidAMIID_Unavailable("Client.InvalidAMIID.Unavailable", 400),
+        InvalidAttachment_NotFound("Client.InvalidAttachment.NotFound", 400),
+        InvalidDevice_InUse("Client.InvalidDevice.InUse", 400),
+        InvalidFilter("Client.InvalidFilter", 400),
+        InvalidGroup_Duplicate("Client.InvalidGroup.Duplicate", 400),
+        InvalidGroup_InUse("Client.InvalidGroup.InUse", 400),
+        InvalidGroup_NotFound("Client.InvalidGroup.NotFound", 400),
+        InvalidGroup_Reserved("Client.InvalidGroup.Reserved", 400),
+        InvalidInstanceID_Malformed("Client.InvalidInstanceID.Malformed", 400),
+        InvalidInstanceID_NotFound("Client.InvalidInstanceID.NotFound", 400),
+        InvalidIPAddress_InUse("Client.InvalidIPAddress.InUse", 400),
+        InvalidKeyPair_Duplicate("Client.InvalidKeyPair.Duplicate", 400),
+        InvalidKeyPair_Format("Client.InvalidKeyPair.Format", 400),
+        InvalidKeyPair_NotFound("Client.InvalidKeyPair.NotFound", 400),
+        InvalidManifest("Client.InvalidManifest", 400),
+        InvalidParameterCombination("Client.InvalidParameterCombination", 400),
+        InvalidParameterValue("Client.InvalidParameterValue", 400),
+        InvalidPermission_Duplicate("Client.InvalidPermission.Duplicate", 400),
+        InvalidPermission_Malformed("Client.InvalidPermission.Malformed", 400),
+        
InvalidReservationID_Malformed("Client.InvalidReservationID.Malformed", 400),
+        InvalidReservationID_NotFound("Client.InvalidReservationID.NotFound", 
400),
+        
InvalidSecurity_RequestHasExpired("Client.InvalidSecurity.RequestHasExpired", 
400),    
+        InvalidSnapshotID_Malformed("Client.InvalidSnapshotID.Malformed", 400),
+        InvalidSnapshot_NotFound("Client.InvalidSnapshot.NotFound", 400),
+        InvalidUserID_Malformed("Client.InvalidUserID.Malformed", 400),
+        InvalidReservedInstancesId("Client.InvalidReservedInstancesId", 400),
+        
InvalidReservedInstancesOfferingId("Client.InvalidReservedInstancesOfferingId", 
400),
+        InvalidVolumeID_Duplicate("Client.InvalidVolumeID.Duplicate", 400),
+        InvalidVolumeID_Malformed("Client.InvalidVolumeID.Malformed", 400),
+        InvalidVolume_NotFound("Client.InvalidVolume.NotFound", 400),
+        InvalidVolumeID_ZoneMismatch("Client.InvalidVolumeID.ZoneMismatch", 
400),
+        InvalidZone_NotFound("Client.InvalidZone.NotFound", 400),
+        MissingParamter("Client.MissingParamter", 400),
+        NonEBSInstance("Client.NonEBSInstance", 400),
+        PendingVerification("Client.PendingVerification", 400),
+        PendingSnapshotLimitExceeded("Client.PendingSnapshotLimitExceeded", 
400),
+        SignatureDoesNotMatch("Client.SignatureDoesNotMatch", 400),
+        
ReservedInstancesLimitExceeded("Client.ReservedInstancesLimitExceeded", 400),
+        ResourceLimitExceeded("Client.ResourceLimitExceeded", 400),
+        SnapshotLimitExceeded("Client.SnapshotLimitExceeded", 400),
+        UnknownParameter("Client.UnknownParameter", 400),
+        Unsupported("Client.UnsupportedOperation", 400),
+        VolumeLimitExceeded("Client.VolumeLimitExceeded", 400);
 
                private String errorString;
                private int httpErrorCode;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9a33fd18/awsapi/src/com/cloud/stack/CloudStackClient.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/stack/CloudStackClient.java 
b/awsapi/src/com/cloud/stack/CloudStackClient.java
index 5017bd4..fa114f5 100644
--- a/awsapi/src/com/cloud/stack/CloudStackClient.java
+++ b/awsapi/src/com/cloud/stack/CloudStackClient.java
@@ -103,8 +103,8 @@ public class CloudStackClient {
                                int jobStatus = 
queryAsyncJobResponse.getAsInt("queryasyncjobresultresponse.jobstatus");
                                switch(jobStatus) {
                                case 2:
-                               throw new 
Exception(queryAsyncJobResponse.getAsString("queryasyncjobresultresponse.jobresult.errorcode")
 + " " + 
-                                       
queryAsyncJobResponse.getAsString("queryasyncjobresultresponse.jobresult.errortext"));
+                               throw new 
Exception(queryAsyncJobResponse.getAsString("queryasyncjobresultresponse.jobresult.errortext")
 + " Error Code - " + 
+                               
queryAsyncJobResponse.getAsString("queryasyncjobresultresponse.jobresult.errorcode")
 );
                                
                                case 0 :
                            try { 
@@ -179,6 +179,7 @@ public class CloudStackClient {
             if(errorMessage == null){
                 errorMessage = "CloudStack API call HTTP response error, HTTP 
status code: " + statusCode;
             }
+            errorMessage = errorMessage.concat(" Error Code - " + 
Integer.toString(statusCode));
 
                throw new IOException(errorMessage);
         }

Reply via email to