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:
parent
edf972224d
commit
65a45d2b63
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue