from heat.openstack.common import log as logging
from heat.common import exception
+from heat.engine import clients
from heat.engine import resource
logger = logging.getLogger(__name__)
def handle_delete(self):
if self.resource_id is not None:
- vol = self.cinder().volumes.get(self.resource_id)
+ try:
+ vol = self.cinder().volumes.get(self.resource_id)
- if vol.status == 'in-use':
- logger.warn('cant delete volume when in-use')
- raise exception.Error("Volume in use")
+ if vol.status == 'in-use':
+ logger.warn('cant delete volume when in-use')
+ raise exception.Error("Volume in use")
- self.cinder().volumes.delete(self.resource_id)
+ self.cinder().volumes.delete(self.resource_id)
+ except clients.cinder_exceptions.NotFound:
+ pass
class VolumeAttachment(resource.Resource):
self.fc.volumes.get('vol-123').AndReturn(fv)
self.fc.volumes.delete('vol-123').AndReturn(None)
+ self.fc.volumes.get('vol-123').AndRaise(
+ clients.cinder_exceptions.NotFound('Not found'))
self.m.ReplayAll()
t = self.load_template()
self.assertEqual(resource.handle_update({}), vol.Volume.UPDATE_REPLACE)
fv.status = 'in-use'
+ resource.state = 'CREATE_COMPLETE'
self.assertEqual(resource.delete(), 'Volume in use')
fv.status = 'available'
+ resource.state = 'CREATE_COMPLETE'
+ self.assertEqual(resource.delete(), None)
+ fv.status = 'available'
+ resource.state = 'CREATE_COMPLETE'
self.assertEqual(resource.delete(), None)
self.m.VerifyAll()