/*
* Copyright (C) 2011 Citrix Systems, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.cloud.bridge.service.exception;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
public class EC2ServiceException extends RuntimeException {
private static final long serialVersionUID = 8857313467757867680L;
// 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);
private String errorString;
private int httpErrorCode;
private ServerError(String errorString, int errorCode) {
this.errorString = errorString;
this.httpErrorCode = errorCode;
}
public String getErrorString() { return errorString; }
public int getHttpErrorCode() {return httpErrorCode; }
}
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),
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);
private String errorString;
private int httpErrorCode;
private ClientError(String errorString, int errorCode) {
this.errorString = errorString;
this.httpErrorCode = errorCode;
}
public String getErrorString() { return errorString; }
public int getHttpErrorCode() {return httpErrorCode; }
}
private int httpErrorCode = 0;
public EC2ServiceException() {
}
public EC2ServiceException(String message) {
super(message);
}
public EC2ServiceException(Throwable e) {
super(e);
}
public EC2ServiceException(String message, Throwable e) {
super(message, e);
}
public EC2ServiceException(String message, int errorCode) {
super(message, new AxisFault(message, new QName("Error")));
this.httpErrorCode = errorCode;
}
public EC2ServiceException(String message, Throwable e, int errorCode) {
super(message, e);
this.httpErrorCode = errorCode;
}
public EC2ServiceException(ServerError errorCode, String message) {
super(message, new AxisFault(message, new QName(errorCode.getErrorString())));
this.httpErrorCode = errorCode.getHttpErrorCode();
}
public EC2ServiceException(ClientError errorCode, String message) {
super(message, new AxisFault(message, new QName(errorCode.getErrorString())));
this.httpErrorCode = errorCode.getHttpErrorCode();
}
public int getErrorCode() {
return this.httpErrorCode;
}
}