From c6026a2cb223e500e5b522efbba7ecf5bf63c50a Mon Sep 17 00:00:00 2001 From: Patrick East Date: Thu, 23 Jul 2015 16:02:43 -0700 Subject: [PATCH] Implement retype for Pure drivers Currently retyping on the same backend requires a migration to occur due to using the default implementation of retype on the base volume driver. Volumes on the Pure arrays do not have any differentiation between volume types Cinder may be using. Because of this we can implement a retype method that will be used whenever changing types on the same backend that essentially does nothing except return. Change-Id: Ibf4c57166fe5742cc7e079c4422f7efd2b6dce79 Closes-Bug: 1477780 --- cinder/tests/unit/test_pure.py | 6 ++++++ cinder/volume/drivers/pure.py | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/cinder/tests/unit/test_pure.py b/cinder/tests/unit/test_pure.py index e9ec65261ba..dce80fe8de7 100644 --- a/cinder/tests/unit/test_pure.py +++ b/cinder/tests/unit/test_pure.py @@ -1028,6 +1028,12 @@ class PureBaseVolumeDriverTestCase(PureDriverTestCase): self.array.rename_volume.assert_called_with(vol_name, unmanaged_vol_name) + def test_retype(self): + # Ensure that we return true no matter what the inputs are + retyped, update = self.driver.retype(None, None, None, None, None) + self.assertTrue(retyped) + self.assertIsNone(update) + class PureISCSIDriverTestCase(PureDriverTestCase): diff --git a/cinder/volume/drivers/pure.py b/cinder/volume/drivers/pure.py index 7aad3dd3f84..5fec7965d7f 100644 --- a/cinder/volume/drivers/pure.py +++ b/cinder/volume/drivers/pure.py @@ -605,6 +605,15 @@ class PureBaseVolumeDriver(san.SanDriver): return connection + def retype(self, context, volume, new_type, diff, host): + """Retype from one volume type to another on the same backend. + + For a Pure Array there is currently no differentiation between types + of volumes. This means that changing from one type to another on the + same array should be a no-op. + """ + return True, None + class PureISCSIDriver(PureBaseVolumeDriver, san.SanISCSIDriver):