diff options
| author | Chuck Short <chuck.short@canonical.com> | 2012-03-08 11:42:53 -0500 |
|---|---|---|
| committer | Chuck Short <chuck.short@canonical.com> | 2012-03-08 11:45:04 -0500 |
| commit | 5f217aa13254c27bc52f43088fefd2116f77fb3c (patch) | |
| tree | 7f1472f76ea6d1f16ba838f0f9974ea7514a302d | |
| parent | 251a66b3e29d1e0542353d639dfcfea242b9c3d1 (diff) | |
Make EC2 API a bit more user friendly.
Inform users that volume operations have failed.
Fixes bug 950055.
Change-Id: Ia33965031495e03e539e3c7ce2fbbda8ef48b5e5
Signed-off-by: Chuck Short <chuck.short@canonical.com>
| -rw-r--r-- | nova/api/ec2/cloud.py | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py index 87c71bedf..25d6c1c81 100644 --- a/nova/api/ec2/cloud.py +++ b/nova/api/ec2/cloud.py @@ -888,8 +888,13 @@ class CloudController(object): def delete_volume(self, context, volume_id, **kwargs): validate_ec2_id(volume_id) volume_id = ec2utils.ec2_id_to_id(volume_id) - volume = self.volume_api.get(context, volume_id) - self.volume_api.delete(context, volume) + + try: + volume = self.volume_api.get(context, volume_id) + self.volume_api.delete(context, volume) + except exception.InvalidVolume: + raise exception.EC2APIError(_('Delete Failed')) + return True def attach_volume(self, context, volume_id, instance_id, device, **kwargs): @@ -901,7 +906,13 @@ class CloudController(object): msg = _("Attach volume %(volume_id)s to instance %(instance_id)s" " at %(device)s") % locals() LOG.audit(msg, context=context) - self.compute_api.attach_volume(context, instance, volume_id, device) + + try: + self.compute_api.attach_volume(context, instance, + volume_id, device) + except exception.InvalidVolume: + raise exception.EC2APIError(_('Attach Failed.')) + volume = self.volume_api.get(context, volume_id) return {'attachTime': volume['attach_time'], 'device': volume['mountpoint'], @@ -915,7 +926,13 @@ class CloudController(object): volume_id = ec2utils.ec2_id_to_id(volume_id) LOG.audit(_("Detach volume %s"), volume_id, context=context) volume = self.volume_api.get(context, volume_id) - instance = self.compute_api.detach_volume(context, volume_id=volume_id) + + try: + instance = self.compute_api.detach_volume(context, + volume_id=volume_id) + except exception.InvalidVolume: + raise exception.EC2APIError(_('Detach Volume Failed.')) + return {'attachTime': volume['attach_time'], 'device': volume['mountpoint'], 'instanceId': ec2utils.id_to_ec2_id(instance['id']), |
