From b735c44c24b691dfaae35cafc429433458e56759 Mon Sep 17 00:00:00 2001 From: whoami-rajat Date: Fri, 28 Sep 2018 01:14:14 +0530 Subject: [PATCH] Add tests for multiattach check in cinder.objects There doesn't exists a test for multiattach check in the cinder.tests.unit.objects.test_volume_types.TestVolumeType class. This patch adds the respective tests. Change-Id: Ic6c19414738367aa794522aaa0c1a963abcac723 --- cinder/objects/volume.py | 3 +++ cinder/objects/volume_type.py | 3 +++ cinder/tests/unit/objects/test_volume_type.py | 12 ++++++++++++ cinder/volume/utils.py | 5 +++++ 4 files changed, 23 insertions(+) diff --git a/cinder/objects/volume.py b/cinder/objects/volume.py index 4314aba688e..31ec010c407 100644 --- a/cinder/objects/volume.py +++ b/cinder/objects/volume.py @@ -567,6 +567,9 @@ class Volume(cleanable.CinderCleanableObject, base.CinderObject, def is_replicated(self): return self.volume_type and self.volume_type.is_replicated() + def is_multiattach(self): + return self.volume_type and self.volume_type.is_multiattach() + @base.CinderObjectRegistry.register class VolumeList(base.ObjectListBase, base.CinderObject): diff --git a/cinder/objects/volume_type.py b/cinder/objects/volume_type.py index 73d366a080c..09d63f51e29 100644 --- a/cinder/objects/volume_type.py +++ b/cinder/objects/volume_type.py @@ -165,6 +165,9 @@ class VolumeType(base.CinderPersistentObject, base.CinderObject, def is_replicated(self): return utils.is_replicated_spec(self.extra_specs) + def is_multiattach(self): + return utils.is_multiattach_spec(self.extra_specs) + @base.CinderObjectRegistry.register class VolumeTypeList(base.ObjectListBase, base.CinderObject): diff --git a/cinder/tests/unit/objects/test_volume_type.py b/cinder/tests/unit/objects/test_volume_type.py index 2371a5ca08d..0b3fbf9fa9b 100644 --- a/cinder/tests/unit/objects/test_volume_type.py +++ b/cinder/tests/unit/objects/test_volume_type.py @@ -227,6 +227,18 @@ class TestVolumeType(test_objects.BaseObjectsTestCase): self.context, extra_specs={'replication_enabled': not_enabled}) self.assertFalse(volume_type.is_replicated()) + @ddt.data(' False', ' false', ' f') + def test_is_multiattach_specs_false(self, false): + volume_type = fake_volume.fake_volume_type_obj( + self.context, extra_specs={'multiattach': false}) + self.assertFalse(volume_type.is_multiattach()) + + @ddt.data(' True', ' True') + def test_is_multiattach_specs_true(self, true): + volume_type = fake_volume.fake_volume_type_obj( + self.context, extra_specs={'multiattach': true}) + self.assertTrue(volume_type.is_multiattach()) + class TestVolumeTypeList(test_objects.BaseObjectsTestCase): @mock.patch('cinder.volume.volume_types.get_all_types') diff --git a/cinder/volume/utils.py b/cinder/volume/utils.py index db5aef628bf..1f8da94e202 100644 --- a/cinder/volume/utils.py +++ b/cinder/volume/utils.py @@ -966,6 +966,11 @@ def is_replicated_spec(extra_specs): is_replicated_str(extra_specs.get('replication_enabled'))) +def is_multiattach_spec(extra_specs): + return (extra_specs and + is_replicated_str(extra_specs.get('multiattach'))) + + def group_get_by_id(group_id): ctxt = context.get_admin_context() group = db.group_get(ctxt, group_id)