From 863d3456c6a4667d68f27ebb759f1adbf8f6f3ea Mon Sep 17 00:00:00 2001
From: Patrick East <patrick.east@purestorage.com>
Date: Tue, 11 Aug 2015 14:48:51 -0700
Subject: [PATCH] Switch Pure volume drivers to use Snapshot Objects

Some consistency group operations require looking up snapshot objects
and returning them. Now that we have Snapshot objects we should be using
those.

Change-Id: Ib4ff7fa3f7d768abb33e3b9436f7e64a3cd81f4c
Closes-Bug: #1458126
---
 cinder/tests/unit/test_pure.py | 16 +++++++---------
 cinder/volume/drivers/pure.py  |  5 +++--
 2 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/cinder/tests/unit/test_pure.py b/cinder/tests/unit/test_pure.py
index 68704fdc8..9bfd469a4 100644
--- a/cinder/tests/unit/test_pure.py
+++ b/cinder/tests/unit/test_pure.py
@@ -826,17 +826,16 @@ class PureBaseVolumeDriverTestCase(PureDriverTestCase):
             remvollist=[]
         )
 
-    def test_create_cgsnapshot(self):
+    @mock.patch('cinder.objects.snapshot.SnapshotList.get_all_for_cgsnapshot')
+    def test_create_cgsnapshot(self, mock_snap_list):
         mock_cgsnap = mock.Mock()
         mock_cgsnap.id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074"
         mock_cgsnap.consistencygroup_id = \
             "4a2f7e3a-312a-40c5-96a8-536b8a0fe075"
         mock_context = mock.Mock()
-        self.driver.db = mock.Mock()
         mock_snap = mock.MagicMock()
         expected_snaps = [mock_snap]
-        self.driver.db.snapshot_get_all_for_cgsnapshot.return_value = \
-            expected_snaps
+        mock_snap_list.return_value = expected_snaps
 
         model_update, snapshots = \
             self.driver.create_cgsnapshot(mock_context, mock_cgsnap)
@@ -857,18 +856,17 @@ class PureBaseVolumeDriverTestCase(PureDriverTestCase):
 
     @mock.patch(BASE_DRIVER_OBJ + "._get_pgroup_snap_name",
                 spec=pure.PureBaseVolumeDriver._get_pgroup_snap_name)
-    def test_delete_cgsnapshot(self, mock_get_snap_name):
+    @mock.patch('cinder.objects.snapshot.SnapshotList.get_all_for_cgsnapshot')
+    def test_delete_cgsnapshot(self, mock_snap_list, mock_get_snap_name):
         snap_name = "consisgroup-4a2f7e3a-312a-40c5-96a8-536b8a0f" \
                     "e074-cinder.4a2f7e3a-312a-40c5-96a8-536b8a0fe075"
         mock_get_snap_name.return_value = snap_name
         mock_cgsnap = mock.Mock()
         mock_cgsnap.status = 'deleted'
         mock_context = mock.Mock()
-        mock_snap = mock.MagicMock()
+        mock_snap = mock.Mock()
         expected_snaps = [mock_snap]
-        self.driver.db = mock.Mock()
-        self.driver.db.snapshot_get_all_for_cgsnapshot.return_value = \
-            expected_snaps
+        mock_snap_list.return_value = expected_snaps
 
         model_update, snapshots = \
             self.driver.delete_cgsnapshot(mock_context, mock_cgsnap)
diff --git a/cinder/volume/drivers/pure.py b/cinder/volume/drivers/pure.py
index 9227f0e06..967b228c6 100644
--- a/cinder/volume/drivers/pure.py
+++ b/cinder/volume/drivers/pure.py
@@ -30,6 +30,7 @@ from oslo_utils import units
 
 from cinder import exception
 from cinder.i18n import _, _LE, _LI, _LW
+from cinder import objects
 from cinder import utils
 from cinder.volume import driver
 from cinder.volume.drivers.san import san
@@ -406,7 +407,7 @@ class PureBaseVolumeDriver(san.SanDriver):
         pgsnap_suffix = self._get_pgroup_snap_suffix(cgsnapshot)
         self._array.create_pgroup_snapshot(pgroup_name, suffix=pgsnap_suffix)
 
-        snapshots = self.db.snapshot_get_all_for_cgsnapshot(
+        snapshots = objects.SnapshotList().get_all_for_cgsnapshot(
             context, cgsnapshot.id)
 
         for snapshot in snapshots:
@@ -437,7 +438,7 @@ class PureBaseVolumeDriver(san.SanDriver):
                     LOG.warning(_LW("Unable to delete Protection Group "
                                     "Snapshot: %s"), err.text)
 
-        snapshots = self.db.snapshot_get_all_for_cgsnapshot(
+        snapshots = objects.SnapshotList.get_all_for_cgsnapshot(
             context, cgsnapshot.id)
 
         for snapshot in snapshots:
-- 
2.45.2