Merge "Implement volume update"

This commit is contained in:
Zuul
2018-09-22 15:30:27 +00:00
committed by Gerrit Code Review
2 changed files with 29 additions and 0 deletions

View File

@@ -5097,6 +5097,23 @@ class OpenStackCloud(_normalize.Normalizer):
return self._normalize_volume(volume)
def update_volume(self, name_or_id, **kwargs):
kwargs = self._get_volume_kwargs(kwargs)
volume = self.get_volume(name_or_id)
if not volume:
raise exc.OpenStackCloudException(
"Volume %s not found." % name_or_id)
data = self._volume_client.put(
'/volumes/{volume_id}'.format(volume_id=volume.id),
json=dict({'volume': kwargs}),
error_message='Error updating volume')
self.list_volumes.invalidate(self)
return self._normalize_volume(self._get_and_munchify('volume', data))
def set_volume_bootable(self, name_or_id, bootable=True):
"""Set a volume's bootable flag.

View File

@@ -149,3 +149,15 @@ class TestVolume(base.BaseFunctionalTest):
self.assertEqual(
sorted([i['id'] for i in volumes]),
sorted(result))
def test_update_volume(self):
name, desc = self.getUniqueString('name'), self.getUniqueString('desc')
self.addCleanup(self.cleanup, name)
volume = self.user_cloud.create_volume(1, name=name, description=desc)
self.assertEqual(volume.name, name)
self.assertEqual(volume.description, desc)
new_name = self.getUniqueString('name')
volume = self.user_cloud.update_volume(volume.id, name=new_name)
self.assertNotEqual(volume.name, name)
self.assertEqual(volume.name, new_name)
self.assertEqual(volume.description, desc)