blob: c21e6e9574ff4a09329d4d3837ce4395239a505a [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you 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),
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;
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;
}
}