summaryrefslogtreecommitdiffstats
path: root/nova/exception.py
diff options
context:
space:
mode:
authorNaveed Massjouni <naveedm9@gmail.com>2011-05-25 03:18:00 -0400
committerNaveed Massjouni <naveedm9@gmail.com>2011-05-25 03:18:00 -0400
commitc5278be5e8e77e6af14e2ba8005ab1874194b77a (patch)
treeefec4edae95e9a4725d7402b5097e2f48570c854 /nova/exception.py
parent65595766706631a5c65193cfc0fa2ac9de1aeffc (diff)
parente1795bd73c71a20290bc988c410e0cc30afe6bd8 (diff)
downloadnova-c5278be5e8e77e6af14e2ba8005ab1874194b77a.tar.gz
nova-c5278be5e8e77e6af14e2ba8005ab1874194b77a.tar.xz
nova-c5278be5e8e77e6af14e2ba8005ab1874194b77a.zip
Merge from trunk.
Diffstat (limited to 'nova/exception.py')
-rw-r--r--nova/exception.py514
1 files changed, 470 insertions, 44 deletions
diff --git a/nova/exception.py b/nova/exception.py
index 3123b2f1f..56c20d111 100644
--- a/nova/exception.py
+++ b/nova/exception.py
@@ -49,53 +49,17 @@ class Error(Exception):
class ApiError(Error):
- def __init__(self, message='Unknown', code='ApiError'):
- self.message = message
+ def __init__(self, message='Unknown', code=None):
+ self.msg = message
self.code = code
- super(ApiError, self).__init__('%s: %s' % (code, message))
+ if code:
+ outstr = '%s: %s' % (code, message)
+ else:
+ outstr = '%s' % message
+ super(ApiError, self).__init__(outstr)
-class NotFound(Error):
- pass
-
-
-class InstanceNotFound(NotFound):
- def __init__(self, message, instance_id):
- self.instance_id = instance_id
- super(InstanceNotFound, self).__init__(message)
-
-
-class VolumeNotFound(NotFound):
- def __init__(self, message, volume_id):
- self.volume_id = volume_id
- super(VolumeNotFound, self).__init__(message)
-
-
-class Duplicate(Error):
- pass
-
-
-class NotAuthorized(Error):
- pass
-
-
-class NotEmpty(Error):
- pass
-
-
-class Invalid(Error):
- pass
-
-
-class InvalidInputException(Error):
- pass
-
-
-class InvalidContentType(Error):
- pass
-
-
-class TimeoutException(Error):
+class BuildInProgress(Error):
pass
@@ -130,3 +94,465 @@ def wrap_exception(f):
raise
_wrap.func_name = f.func_name
return _wrap
+
+
+class NovaException(Exception):
+ """Base Nova Exception
+
+ To correctly use this class, inherit from it and define
+ a 'message' property. That message will get printf'd
+ with the keyword arguments provided to the constructor.
+
+ """
+ message = _("An unknown exception occurred.")
+
+ def __init__(self, **kwargs):
+ try:
+ self._error_string = self.message % kwargs
+
+ except Exception:
+ # at least get the core message out if something happened
+ self._error_string = self.message
+
+ def __str__(self):
+ return self._error_string
+
+
+class NotAuthorized(NovaException):
+ message = _("Not authorized.")
+
+ def __init__(self, *args, **kwargs):
+ super(NotFound, self).__init__(**kwargs)
+
+
+class AdminRequired(NotAuthorized):
+ message = _("User does not have admin privileges")
+
+
+class Invalid(NovaException):
+ message = _("Unacceptable parameters.")
+
+
+class InvalidSignature(Invalid):
+ message = _("Invalid signature %(signature)s for user %(user)s.")
+
+
+class InvalidInput(Invalid):
+ message = _("Invalid input received") + ": %(reason)s"
+
+
+class InvalidInstanceType(Invalid):
+ message = _("Invalid instance type %(instance_type)s.")
+
+
+class InvalidPortRange(Invalid):
+ message = _("Invalid port range %(from_port)s:%(to_port)s.")
+
+
+class InvalidIpProtocol(Invalid):
+ message = _("Invalid IP protocol %(protocol)s.")
+
+
+class InvalidContentType(Invalid):
+ message = _("Invalid content type %(content_type)s.")
+
+
+class InstanceNotRunning(Invalid):
+ message = _("Instance %(instance_id)s is not running.")
+
+
+class InstanceNotSuspended(Invalid):
+ message = _("Instance %(instance_id)s is not suspended.")
+
+
+class InstanceNotInRescueMode(Invalid):
+ message = _("Instance %(instance_id)s is not in rescue mode")
+
+
+class InstanceSuspendFailure(Invalid):
+ message = _("Failed to suspend instance") + ": %(reason)s"
+
+
+class InstanceResumeFailure(Invalid):
+ message = _("Failed to resume server") + ": %(reason)s."
+
+
+class InstanceRebootFailure(Invalid):
+ message = _("Failed to reboot instance") + ": %(reason)s"
+
+
+class ServiceUnavailable(Invalid):
+ message = _("Service is unavailable at this time.")
+
+
+class VolumeServiceUnavailable(ServiceUnavailable):
+ message = _("Volume service is unavailable at this time.")
+
+
+class ComputeServiceUnavailable(ServiceUnavailable):
+ message = _("Compute service is unavailable at this time.")
+
+
+class UnableToMigrateToSelf(Invalid):
+ message = _("Unable to migrate instance (%(instance_id)s) "
+ "to current host (%(host)s).")
+
+
+class SourceHostUnavailable(Invalid):
+ message = _("Original compute host is unavailable at this time.")
+
+
+class InvalidHypervisorType(Invalid):
+ message = _("The supplied hypervisor type of is invalid.")
+
+
+class DestinationHypervisorTooOld(Invalid):
+ message = _("The instance requires a newer hypervisor version than "
+ "has been provided.")
+
+
+class InvalidDevicePath(Invalid):
+ message = _("The supplied device path (%(path)s) is invalid.")
+
+
+class InvalidCPUInfo(Invalid):
+ message = _("Unacceptable CPU info") + ": %(reason)s"
+
+
+class InvalidVLANTag(Invalid):
+ message = _("VLAN tag is not appropriate for the port group "
+ "%(bridge)s. Expected VLAN tag is %(tag)s, "
+ "but the one associated with the port group is %(pgroup)s.")
+
+
+class InvalidVLANPortGroup(Invalid):
+ message = _("vSwitch which contains the port group %(bridge)s is "
+ "not associated with the desired physical adapter. "
+ "Expected vSwitch is %(expected)s, but the one associated "
+ "is %(actual)s.")
+
+
+class InvalidDiskFormat(Invalid):
+ message = _("Disk format %(disk_format)s is not acceptable")
+
+
+class ImageUnacceptable(Invalid):
+ message = _("Image %(image_id)s is unacceptable") + ": %(reason)s"
+
+
+class InstanceUnacceptable(Invalid):
+ message = _("Instance %(instance_id)s is unacceptable") + ": %(reason)s"
+
+
+class InvalidEc2Id(Invalid):
+ message = _("Ec2 id %(ec2_id)s is unacceptable.")
+
+
+class NotFound(NovaException):
+ message = _("Resource could not be found.")
+
+ def __init__(self, *args, **kwargs):
+ super(NotFound, self).__init__(**kwargs)
+
+
+class FlagNotSet(NotFound):
+ message = _("Required flag %(flag)s not set.")
+
+
+class InstanceNotFound(NotFound):
+ message = _("Instance %(instance_id)s could not be found.")
+
+
+class VolumeNotFound(NotFound):
+ message = _("Volume %(volume_id)s could not be found.")
+
+
+class VolumeNotFoundForInstance(VolumeNotFound):
+ message = _("Volume not found for instance %(instance_id)s.")
+
+
+class ExportDeviceNotFoundForVolume(NotFound):
+ message = _("No export device found for volume %(volume_id)s.")
+
+
+class ISCSITargetNotFoundForVolume(NotFound):
+ message = _("No target id found for volume %(volume_id)s.")
+
+
+class DiskNotFound(NotFound):
+ message = _("No disk at %(location)s")
+
+
+class ImageNotFound(NotFound):
+ message = _("Image %(image_id)s could not be found.")
+
+
+class KernelNotFoundForImage(ImageNotFound):
+ message = _("Kernel not found for image %(image_id)s.")
+
+
+class RamdiskNotFoundForImage(ImageNotFound):
+ message = _("Ramdisk not found for image %(image_id)s.")
+
+
+class UserNotFound(NotFound):
+ message = _("User %(user_id)s could not be found.")
+
+
+class ProjectNotFound(NotFound):
+ message = _("Project %(project_id)s could not be found.")
+
+
+class ProjectMembershipNotFound(NotFound):
+ message = _("User %(user_id)s is not a member of project %(project_id)s.")
+
+
+class UserRoleNotFound(NotFound):
+ message = _("Role %(role_id)s could not be found.")
+
+
+class StorageRepositoryNotFound(NotFound):
+ message = _("Cannot find SR to read/write VDI.")
+
+
+class NetworkNotFound(NotFound):
+ message = _("Network %(network_id)s could not be found.")
+
+
+class NetworkNotFoundForBridge(NetworkNotFound):
+ message = _("Network could not be found for bridge %(bridge)s")
+
+
+class NetworkNotFoundForCidr(NetworkNotFound):
+ message = _("Network could not be found with cidr %(cidr)s.")
+
+
+class NetworkNotFoundForInstance(NetworkNotFound):
+ message = _("Network could not be found for instance %(instance_id)s.")
+
+
+class NoNetworksFound(NotFound):
+ message = _("No networks defined.")
+
+
+class DatastoreNotFound(NotFound):
+ message = _("Could not find the datastore reference(s) which the VM uses.")
+
+
+class NoFixedIpsFoundForInstance(NotFound):
+ message = _("Instance %(instance_id)s has zero fixed ips.")
+
+
+class FloatingIpNotFound(NotFound):
+ message = _("Floating ip not found for fixed address %(fixed_ip)s.")
+
+
+class NoFloatingIpsDefined(NotFound):
+ message = _("Zero floating ips could be found.")
+
+
+class NoFloatingIpsDefinedForHost(NoFloatingIpsDefined):
+ message = _("Zero floating ips defined for host %(host)s.")
+
+
+class NoFloatingIpsDefinedForInstance(NoFloatingIpsDefined):
+ message = _("Zero floating ips defined for instance %(instance_id)s.")
+
+
+class KeypairNotFound(NotFound):
+ message = _("Keypair %(keypair_name)s not found for user %(user_id)s")
+
+
+class CertificateNotFound(NotFound):
+ message = _("Certificate %(certificate_id)s not found.")
+
+
+class ServiceNotFound(NotFound):
+ message = _("Service %(service_id)s could not be found.")
+
+
+class HostNotFound(NotFound):
+ message = _("Host %(host)s could not be found.")
+
+
+class ComputeHostNotFound(HostNotFound):
+ message = _("Compute host %(host)s could not be found.")
+
+
+class HostBinaryNotFound(NotFound):
+ message = _("Could not find binary %(binary)s on host %(host)s.")
+
+
+class AuthTokenNotFound(NotFound):
+ message = _("Auth token %(token)s could not be found.")
+
+
+class AccessKeyNotFound(NotFound):
+ message = _("Access Key %(access_key)s could not be found.")
+
+
+class QuotaNotFound(NotFound):
+ message = _("Quota could not be found")
+
+
+class ProjectQuotaNotFound(QuotaNotFound):
+ message = _("Quota for project %(project_id)s could not be found.")
+
+
+class SecurityGroupNotFound(NotFound):
+ message = _("Security group %(security_group_id)s not found.")
+
+
+class SecurityGroupNotFoundForProject(SecurityGroupNotFound):
+ message = _("Security group %(security_group_id)s not found "
+ "for project %(project_id)s.")
+
+
+class SecurityGroupNotFoundForRule(SecurityGroupNotFound):
+ message = _("Security group with rule %(rule_id)s not found.")
+
+
+class MigrationNotFound(NotFound):
+ message = _("Migration %(migration_id)s could not be found.")
+
+
+class MigrationNotFoundByStatus(MigrationNotFound):
+ message = _("Migration not found for instance %(instance_id)s "
+ "with status %(status)s.")
+
+
+class ConsolePoolNotFound(NotFound):
+ message = _("Console pool %(pool_id)s could not be found.")
+
+
+class ConsolePoolNotFoundForHostType(NotFound):
+ message = _("Console pool of type %(console_type)s "
+ "for compute host %(compute_host)s "
+ "on proxy host %(host)s not found.")
+
+
+class ConsoleNotFound(NotFound):
+ message = _("Console %(console_id)s could not be found.")
+
+
+class ConsoleNotFoundForInstance(ConsoleNotFound):
+ message = _("Console for instance %(instance_id)s could not be found.")
+
+
+class ConsoleNotFoundInPoolForInstance(ConsoleNotFound):
+ message = _("Console for instance %(instance_id)s "
+ "in pool %(pool_id)s could not be found.")
+
+
+class NoInstanceTypesFound(NotFound):
+ message = _("Zero instance types found.")
+
+
+class InstanceTypeNotFound(NotFound):
+ message = _("Instance type %(instance_type_id)s could not be found.")
+
+
+class InstanceTypeNotFoundByName(InstanceTypeNotFound):
+ message = _("Instance type with name %(instance_type_name)s "
+ "could not be found.")
+
+
+class FlavorNotFound(NotFound):
+ message = _("Flavor %(flavor_id)s could not be found.")
+
+
+class ZoneNotFound(NotFound):
+ message = _("Zone %(zone_id)s could not be found.")
+
+
+class SchedulerHostFilterDriverNotFound(NotFound):
+ message = _("Scheduler Host Filter Driver %(driver_name)s could"
+ " not be found.")
+
+
+class InstanceMetadataNotFound(NotFound):
+ message = _("Instance %(instance_id)s has no metadata with "
+ "key %(metadata_key)s.")
+
+
+class LDAPObjectNotFound(NotFound):
+ message = _("LDAP object could not be found")
+
+
+class LDAPUserNotFound(LDAPObjectNotFound):
+ message = _("LDAP user %(user_id)s could not be found.")
+
+
+class LDAPGroupNotFound(LDAPObjectNotFound):
+ message = _("LDAP group %(group_id)s could not be found.")
+
+
+class LDAPGroupMembershipNotFound(NotFound):
+ message = _("LDAP user %(user_id)s is not a member of group %(group_id)s.")
+
+
+class FileNotFound(NotFound):
+ message = _("File %(file_path)s could not be found.")
+
+
+class NoFilesFound(NotFound):
+ message = _("Zero files could be found.")
+
+
+class SwitchNotFoundForNetworkAdapter(NotFound):
+ message = _("Virtual switch associated with the "
+ "network adapter %(adapter)s not found.")
+
+
+class NetworkAdapterNotFound(NotFound):
+ message = _("Network adapter %(adapter)s could not be found.")
+
+
+class ClassNotFound(NotFound):
+ message = _("Class %(class_name)s could not be found")
+
+
+class NotAllowed(NovaException):
+ message = _("Action not allowed.")
+
+
+class GlobalRoleNotAllowed(NotAllowed):
+ message = _("Unable to use global role %(role_id)s")
+
+
+#TODO(bcwaldon): EOL this exception!
+class Duplicate(NovaException):
+ pass
+
+
+class KeyPairExists(Duplicate):
+ message = _("Key pair %(key_name)s already exists.")
+
+
+class UserExists(Duplicate):
+ message = _("User %(user)s already exists.")
+
+
+class LDAPUserExists(UserExists):
+ message = _("LDAP user %(user)s already exists.")
+
+
+class LDAPGroupExists(Duplicate):
+ message = _("LDAP group %(group)s already exists.")
+
+
+class LDAPMembershipExists(Duplicate):
+ message = _("User %(uid)s is already a member of "
+ "the group %(group_dn)s")
+
+
+class ProjectExists(Duplicate):
+ message = _("Project %(project)s already exists.")
+
+
+class InstanceExists(Duplicate):
+ message = _("Instance %(name)s already exists.")
+
+
+class MigrationError(NovaException):
+ message = _("Migration error") + ": %(reason)s"