diff --git a/openstack/block_storage/v3/volume.py b/openstack/block_storage/v3/volume.py index e735fa066..15128f818 100644 --- a/openstack/block_storage/v3/volume.py +++ b/openstack/block_storage/v3/volume.py @@ -62,6 +62,8 @@ class Volume(resource.Resource, metadata.MetadataMixin): #: ``True`` if this volume is encrypted, ``False`` if not. #: *Type: bool* is_encrypted = resource.Body("encrypted", type=format.BoolStr) + #: Whether volume will be sharable or not. + is_multiattach = resource.Body("multiattach", type=bool) #: The volume ID that this volume's name on the back-end is based on. migration_id = resource.Body("os-vol-mig-status-attr:name_id") #: The status of this volume's migration (None means that a migration diff --git a/openstack/tests/unit/block_storage/v3/test_volume.py b/openstack/tests/unit/block_storage/v3/test_volume.py index f7acfe55b..9b2a76892 100644 --- a/openstack/tests/unit/block_storage/v3/test_volume.py +++ b/openstack/tests/unit/block_storage/v3/test_volume.py @@ -42,6 +42,7 @@ VOLUME = { "source_volid": None, "imageRef": "some_image", "metadata": {}, + "multiattach": False, "volume_image_metadata": IMAGE_METADATA, "id": FAKE_ID, "size": 10, @@ -101,6 +102,7 @@ class TestVolume(base.TestCase): self.assertEqual(VOLUME["snapshot_id"], sot.snapshot_id) self.assertEqual(VOLUME["source_volid"], sot.source_volume_id) self.assertEqual(VOLUME["metadata"], sot.metadata) + self.assertEqual(VOLUME["multiattach"], sot.is_multiattach) self.assertEqual(VOLUME["volume_image_metadata"], sot.volume_image_metadata) self.assertEqual(VOLUME["size"], sot.size)