cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sate...@apache.org
Subject [29/50] [abbrv] CLOUDSTACK-2623. Provide appropriate AWS EC2 error codes in error thrown by CS AWSAPI. Since CS has very few generic errorcode groups, in AWSAPI parse the response message and translate the CS error to AWS EC2 error code. Provide support
Date Thu, 23 May 2013 07:25:34 GMT
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);
         }


Mime
View raw message