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
This commit is contained in:
Patrick East 2015-07-23 16:02:43 -07:00
parent b8921e8e52
commit c6026a2cb2
2 changed files with 15 additions and 0 deletions

View File

@ -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):

View File

@ -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):