Add 'is_public' property for cinder volume type

Add property 'is_public' for OS::Cinder::VolumeType
resource to allow specify whether the volume type
is accessible to the public.

Change-Id: Ie4b07fc9f3c97ecb808c9d4e0fc04a6d6f4846e8
Closes-Bug: #1459895
This commit is contained in:
huangtianhua 2015-06-08 10:45:05 +08:00
parent edf972224d
commit 65a45d2b63
2 changed files with 25 additions and 6 deletions

View File

@ -44,9 +44,9 @@ class CinderVolumeType(resource.Resource):
support_status = support.SupportStatus(version='2015.1')
PROPERTIES = (
NAME, METADATA,
NAME, METADATA, IS_PUBLIC,
) = (
'name', 'metadata',
'name', 'metadata', 'is_public',
)
properties_schema = {
@ -60,13 +60,23 @@ class CinderVolumeType(resource.Resource):
_('The extra specs key and value pairs of the volume type.'),
update_allowed=True
),
IS_PUBLIC: properties.Schema(
properties.Schema.BOOLEAN,
_('Whether the volume type is accessible to the public.'),
default=True,
support_status=support.SupportStatus(version='2015.2'),
),
}
def handle_create(self):
vtype_name = self.properties.get(self.NAME)
volume_type = self.cinder().volume_types.create(vtype_name)
args = {
'name': self.properties[self.NAME],
'is_public': self.properties[self.IS_PUBLIC]
}
volume_type = self.cinder().volume_types.create(**args)
self.resource_id_set(volume_type.id)
vtype_metadata = self.properties.get(self.METADATA)
vtype_metadata = self.properties[self.METADATA]
if vtype_metadata:
volume_type.set_keys(vtype_metadata)

View File

@ -59,16 +59,25 @@ class CinderVolumeTypeTest(common.HeatTestCase):
self.assertIsInstance(self.my_volume_type,
cinder_volume_type.CinderVolumeType)
def test_volume_type_handle_create(self):
def _test_handle_create(self, is_public=True):
value = mock.MagicMock()
volume_type_id = '927202df-1afb-497f-8368-9c2d2f26e5db'
value.id = volume_type_id
self.volume_types.create.return_value = value
self.my_volume_type.t['Properties']['is_public'] = is_public
self.my_volume_type.handle_create()
self.volume_types.create.assert_called_once_with(
name='volumeBackend', is_public=is_public)
value.set_keys.assert_called_once_with(
{'volume_backend_name': 'lvmdriver'})
self.assertEqual(volume_type_id, self.my_volume_type.resource_id)
def test_volume_type_handle_create_public(self):
self._test_handle_create()
def test_volume_type_handle_create_not_public(self):
self._test_handle_create(is_public=False)
def test_volume_type_handle_update_matadata(self):
value = mock.MagicMock()
self.volume_types.get.return_value = value