From 5f217aa13254c27bc52f43088fefd2116f77fb3c Mon Sep 17 00:00:00 2001 From: Chuck Short Date: Thu, 8 Mar 2012 11:42:53 -0500 Subject: 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 --- nova/api/ec2/cloud.py | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'nova') 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']), -- cgit