]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Continue to delete volumes that DNE in rbd backend
authorMike Perez <thingee@gmail.com>
Sat, 23 Nov 2013 18:50:15 +0000 (10:50 -0800)
committerMike Perez <thingee@gmail.com>
Sat, 23 Nov 2013 18:52:53 +0000 (10:52 -0800)
If a volume has already been deleted in the RBD backend, catch the
exception and let Cinder continue removing it in the database.

Closes-Bug: #1254318
Change-Id: I99b591ce78d82c6eaabff0459d9c523e85c8e65f

cinder/volume/drivers/rbd.py

index ea75f74a81689d788ebd29dd9e649594afc5e6d1..a6445d63a5eef71f28903bbdb57e3ff9b7ac081b 100644 (file)
@@ -587,14 +587,21 @@ class RBDDriver(driver.VolumeDriver):
         """Deletes a logical volume."""
         volume_name = str(volume['name'])
         with RADOSClient(self) as client:
-            # Ensure any backup snapshots are deleted
-            self._delete_backup_snaps(client, volume_name)
-
             # If the volume has non-clone snapshots this delete is expected to
             # raise VolumeIsBusy so do so straight away.
-            rbd_image = self.rbd.Image(client.ioctx, volume_name)
+            try:
+                rbd_image = self.rbd.Image(client.ioctx, volume_name)
+            except self.rbd.ImageNotFound:
+                LOG.debug(_("volume %s no longer exists in backend")
+                          % (volume_name))
+                return
+
             clone_snap = None
             parent = None
+
+            # Ensure any backup snapshots are deleted
+            self._delete_backup_snaps(client, volume_name)
+
             try:
                 snaps = rbd_image.list_snaps()
                 for snap in snaps: