diff --git a/cinder/tests/unit/volume/test_volume.py b/cinder/tests/unit/volume/test_volume.py index 791cfd4cfb5..d54064f4e9f 100644 --- a/cinder/tests/unit/volume/test_volume.py +++ b/cinder/tests/unit/volume/test_volume.py @@ -1737,6 +1737,21 @@ class VolumeTestCase(base.BaseVolumeTestCase): volume) db.volume_destroy(self.context, volume.id) + def test_attachment_reserve_with_bootable_volume(self): + # test the private _attachment_reserve method with a bootable, + # in-use, multiattach volume. + instance_uuid = fake.UUID1 + volume = tests_utils.create_volume(self.context, status='in-use') + tests_utils.attach_volume(self.context, volume.id, instance_uuid, + 'attached_host', 'mountpoint', mode='rw') + volume.multiattach = True + volume.bootable = True + + attachment = self.volume_api._attachment_reserve( + self.context, volume, instance_uuid) + + self.assertEqual(attachment.attach_status, 'reserved') + def test_unreserve_volume_success_in_use(self): UUID = six.text_type(uuid.uuid4()) volume = tests_utils.create_volume(self.context, status='attaching') diff --git a/cinder/volume/api.py b/cinder/volume/api.py index 8c99e5c803d..04ea5c32c83 100644 --- a/cinder/volume/api.py +++ b/cinder/volume/api.py @@ -2060,7 +2060,7 @@ class API(base.Base): if (vref.get('multiattach', False) and vref.status == 'in-use' and vref.bootable): - context.authorize( + ctxt.authorize( attachment_policy.MULTIATTACH_BOOTABLE_VOLUME_POLICY) # FIXME(JDG): We want to be able to do things here like reserve a