]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Fix delete_snapshot error case in Pure driver
authorDaniel Wilson <daniel.wilson@purestorage.com>
Thu, 27 Aug 2015 22:10:26 +0000 (15:10 -0700)
committerPatrick East <patrick.east@purestorage.com>
Thu, 17 Dec 2015 23:35:32 +0000 (23:35 +0000)
Our previous error handling was incorrect for delete_snapshot. This
adds a check on repsonse and correctly logs only a warning if
required.

Change-Id: Ic73d92eaa5869efe1dc0e56d3156edd7dbcac2e8
Closes-Bug: #1489635

cinder/tests/unit/test_pure.py
cinder/volume/drivers/pure.py

index 83d385d624eaba3cee77af5db2e61ecc193bff7c..0b49ba68630e456d70d7400a9be0d0d3bf68c7e0 100644 (file)
@@ -396,9 +396,10 @@ class PureBaseVolumeDriverTestCase(PureDriverTestCase):
         self.driver.delete_volume(VOLUME)
         expected = [mock.call.destroy_volume(vol_name)]
         self.array.assert_has_calls(expected)
-        self.array.destroy_volume.side_effect = \
-            self.purestorage_module.PureHTTPError(code=400, text="reason")
-        self.driver.delete_snapshot(SNAPSHOT)
+        self.array.destroy_volume.side_effect = (
+            self.purestorage_module.PureHTTPError(code=400, text="does not "
+                                                                 "exist"))
+        self.driver.delete_volume(VOLUME)
         self.array.destroy_volume.side_effect = None
         self.assert_error_propagates([self.array.destroy_volume],
                                      self.driver.delete_volume, VOLUME)
@@ -441,8 +442,9 @@ class PureBaseVolumeDriverTestCase(PureDriverTestCase):
         self.driver.delete_snapshot(SNAPSHOT)
         expected = [mock.call.destroy_volume(snap_name)]
         self.array.assert_has_calls(expected)
-        self.array.destroy_volume.side_effect = \
-            self.purestorage_module.PureHTTPError(code=400, text="reason")
+        self.array.destroy_volume.side_effect = (
+            self.purestorage_module.PureHTTPError(code=400, text="does not "
+                                                                 "exist"))
         self.driver.delete_snapshot(SNAPSHOT)
         self.array.destroy_volume.side_effect = None
         self.assert_error_propagates([self.array.destroy_volume],
index 66c6c8214f7d34a39ce9a7b0ee8e931be30a9967..4616ad2eef61b499dd533736898260c79db95471 100644 (file)
@@ -204,11 +204,12 @@ class PureBaseVolumeDriver(san.SanDriver):
             self._array.destroy_volume(snap_name)
         except purestorage.PureHTTPError as err:
             with excutils.save_and_reraise_exception() as ctxt:
-                if err.code == 400:
+                if err.code == 400 and (
+                        ERR_MSG_NOT_EXIST in err.text):
                     # Happens if the snapshot does not exist.
                     ctxt.reraise = False
-                    LOG.error(_LE("Snapshot deletion failed with message:"
-                                  " %s"), err.text)
+                    LOG.warning(_LW("Snapshot deletion failed with "
+                                    "message: %s"), err.text)
 
     def ensure_export(self, context, volume):
         pass