diff --git a/cinderclient/tests/v1/fakes.py b/cinderclient/tests/v1/fakes.py index 6520da651..16b725a13 100644 --- a/cinderclient/tests/v1/fakes.py +++ b/cinderclient/tests/v1/fakes.py @@ -321,6 +321,7 @@ class FakeHTTPClient(base_client.HTTPClient): action = list(body)[0] if action == 'os-attach': assert sorted(list(body[action])) == ['instance_uuid', + 'mode', 'mountpoint'] elif action == 'os-detach': assert body[action] is None diff --git a/cinderclient/tests/v1/test_volumes.py b/cinderclient/tests/v1/test_volumes.py index f38fbe6fb..33c62e313 100644 --- a/cinderclient/tests/v1/test_volumes.py +++ b/cinderclient/tests/v1/test_volumes.py @@ -35,7 +35,7 @@ class VolumesTest(utils.TestCase): def test_attach(self): v = cs.volumes.get('1234') - cs.volumes.attach(v, 1, '/dev/vdc') + cs.volumes.attach(v, 1, '/dev/vdc', mode='rw') cs.assert_called('POST', '/volumes/1234/action') def test_detach(self): diff --git a/cinderclient/tests/v2/fakes.py b/cinderclient/tests/v2/fakes.py index 53bb35890..891787f1f 100644 --- a/cinderclient/tests/v2/fakes.py +++ b/cinderclient/tests/v2/fakes.py @@ -328,6 +328,7 @@ class FakeHTTPClient(base_client.HTTPClient): action = list(body)[0] if action == 'os-attach': assert sorted(list(body[action])) == ['instance_uuid', + 'mode', 'mountpoint'] elif action == 'os-detach': assert body[action] is None diff --git a/cinderclient/tests/v2/test_volumes.py b/cinderclient/tests/v2/test_volumes.py index 7e44f840b..4e3a8afd4 100644 --- a/cinderclient/tests/v2/test_volumes.py +++ b/cinderclient/tests/v2/test_volumes.py @@ -38,7 +38,7 @@ class VolumesTest(utils.TestCase): def test_attach(self): v = cs.volumes.get('1234') - cs.volumes.attach(v, 1, '/dev/vdc') + cs.volumes.attach(v, 1, '/dev/vdc', mode='ro') cs.assert_called('POST', '/volumes/1234/action') def test_detach(self): diff --git a/cinderclient/v1/volumes.py b/cinderclient/v1/volumes.py index 36758c7b0..dbff995ac 100644 --- a/cinderclient/v1/volumes.py +++ b/cinderclient/v1/volumes.py @@ -38,13 +38,14 @@ class Volume(base.Resource): """Update the display_name or display_description for this volume.""" self.manager.update(self, **kwargs) - def attach(self, instance_uuid, mountpoint): + def attach(self, instance_uuid, mountpoint, mode='rw'): """Set attachment metadata. :param instance_uuid: uuid of the attaching instance. :param mountpoint: mountpoint on the attaching instance. + :param mode: the access mode """ - return self.manager.attach(self, instance_uuid, mountpoint) + return self.manager.attach(self, instance_uuid, mountpoint, mode) def detach(self): """Clear attachment metadata.""" @@ -240,7 +241,7 @@ class VolumeManager(base.ManagerWithFind): url = '/volumes/%s/action' % base.getid(volume) return self.api.client.post(url, body=body) - def attach(self, volume, instance_uuid, mountpoint): + def attach(self, volume, instance_uuid, mountpoint, mode='rw'): """ Set attachment metadata. @@ -248,11 +249,13 @@ class VolumeManager(base.ManagerWithFind): you would like to attach. :param instance_uuid: uuid of the attaching instance. :param mountpoint: mountpoint on the attaching instance. + :param mode: the access mode. """ return self._action('os-attach', volume, {'instance_uuid': instance_uuid, - 'mountpoint': mountpoint}) + 'mountpoint': mountpoint, + 'mode': mode}) def detach(self, volume): """ diff --git a/cinderclient/v2/volumes.py b/cinderclient/v2/volumes.py index e6dae9704..bd5c2680c 100644 --- a/cinderclient/v2/volumes.py +++ b/cinderclient/v2/volumes.py @@ -37,13 +37,14 @@ class Volume(base.Resource): """Update the name or description for this volume.""" self.manager.update(self, **kwargs) - def attach(self, instance_uuid, mountpoint): + def attach(self, instance_uuid, mountpoint, mode='rw'): """Set attachment metadata. :param instance_uuid: uuid of the attaching instance. :param mountpoint: mountpoint on the attaching instance. + :param mode: the access mode. """ - return self.manager.attach(self, instance_uuid, mountpoint) + return self.manager.attach(self, instance_uuid, mountpoint, mode) def detach(self): """Clear attachment metadata.""" @@ -233,18 +234,20 @@ class VolumeManager(base.ManagerWithFind): url = '/volumes/%s/action' % base.getid(volume) return self.api.client.post(url, body=body) - def attach(self, volume, instance_uuid, mountpoint): + def attach(self, volume, instance_uuid, mountpoint, mode='rw'): """Set attachment metadata. :param volume: The :class:`Volume` (or its ID) you would like to attach. :param instance_uuid: uuid of the attaching instance. :param mountpoint: mountpoint on the attaching instance. + :param mode: the access mode. """ return self._action('os-attach', volume, {'instance_uuid': instance_uuid, - 'mountpoint': mountpoint}) + 'mountpoint': mountpoint, + 'mode': mode}) def detach(self, volume): """Clear attachment metadata.