Merge "Add id and name properties for flavor resource"
This commit is contained in:
commit
5685273daa
@ -40,11 +40,11 @@ class NovaFlavor(resource.Resource):
|
||||
entity = 'flavors'
|
||||
|
||||
PROPERTIES = (
|
||||
RAM, VCPUS, DISK, SWAP, EPHEMERAL,
|
||||
RXTX_FACTOR, EXTRA_SPECS, IS_PUBLIC
|
||||
ID, NAME, RAM, VCPUS, DISK, SWAP,
|
||||
EPHEMERAL, RXTX_FACTOR, EXTRA_SPECS, IS_PUBLIC
|
||||
) = (
|
||||
'ram', 'vcpus', 'disk', 'swap', 'ephemeral',
|
||||
'rxtx_factor', 'extra_specs', 'is_public',
|
||||
'flavorid', 'name', 'ram', 'vcpus', 'disk', 'swap',
|
||||
'ephemeral', 'rxtx_factor', 'extra_specs', 'is_public',
|
||||
)
|
||||
|
||||
ATTRIBUTES = (
|
||||
@ -54,6 +54,17 @@ class NovaFlavor(resource.Resource):
|
||||
)
|
||||
|
||||
properties_schema = {
|
||||
ID: properties.Schema(
|
||||
properties.Schema.STRING,
|
||||
_('Unique ID of the flavor. If not specified, '
|
||||
'an UUID will be auto generated and used.'),
|
||||
support_status=support.SupportStatus(version='7.0.0')
|
||||
),
|
||||
NAME: properties.Schema(
|
||||
properties.Schema.STRING,
|
||||
_('Name of the flavor.'),
|
||||
support_status=support.SupportStatus(version='7.0.0'),
|
||||
),
|
||||
RAM: properties.Schema(
|
||||
properties.Schema.INTEGER,
|
||||
_('Memory in MB for the flavor.'),
|
||||
@ -112,10 +123,11 @@ class NovaFlavor(resource.Resource):
|
||||
|
||||
def handle_create(self):
|
||||
args = dict(self.properties)
|
||||
args['flavorid'] = 'auto'
|
||||
args['name'] = self.physical_resource_name()
|
||||
if not args['flavorid']:
|
||||
args['flavorid'] = 'auto'
|
||||
if not args['name']:
|
||||
args['name'] = self.physical_resource_name()
|
||||
flavor_keys = args.pop(self.EXTRA_SPECS)
|
||||
|
||||
flavor = self.client().flavors.create(**args)
|
||||
self.resource_id_set(flavor.id)
|
||||
if flavor_keys:
|
||||
|
@ -45,11 +45,15 @@ class NovaFlavorTest(common.HeatTestCase):
|
||||
return_value=True)
|
||||
self.ctx = utils.dummy_context()
|
||||
|
||||
def create_flavor(self, with_name_id=False):
|
||||
if with_name_id:
|
||||
props = flavor_template['resources']['my_flavor']['properties']
|
||||
props['name'] = 'test_flavor'
|
||||
props['flavorid'] = '1234'
|
||||
self.stack = stack.Stack(
|
||||
self.ctx, 'nova_flavor_test_stack',
|
||||
template.Template(flavor_template)
|
||||
)
|
||||
|
||||
self.my_flavor = self.stack['my_flavor']
|
||||
nova = mock.MagicMock()
|
||||
self.novaclient = mock.MagicMock()
|
||||
@ -57,7 +61,16 @@ class NovaFlavorTest(common.HeatTestCase):
|
||||
nova.return_value = self.novaclient
|
||||
self.flavors = self.novaclient.flavors
|
||||
|
||||
def test_flavor_handle_create(self):
|
||||
def test_flavor_handle_create_no_id_name(self):
|
||||
self.create_flavor()
|
||||
kwargs = {
|
||||
'vcpus': 2, 'disk': 20, 'swap': 2,
|
||||
'flavorid': 'auto', 'is_public': True,
|
||||
'rxtx_factor': 1.0, 'ram': 1024,
|
||||
'ephemeral': 0, 'name': 'm1.xxx'
|
||||
}
|
||||
self.patchobject(self.my_flavor, 'physical_resource_name',
|
||||
return_value='m1.xxx')
|
||||
value = mock.MagicMock()
|
||||
flavor_id = '927202df-1afb-497f-8368-9c2d2f26e5db'
|
||||
value.id = flavor_id
|
||||
@ -65,11 +78,35 @@ class NovaFlavorTest(common.HeatTestCase):
|
||||
self.flavors.create.return_value = value
|
||||
self.flavors.get.return_value = value
|
||||
self.my_flavor.handle_create()
|
||||
self.flavors.create.assert_called_once_with(**kwargs)
|
||||
value.set_keys.assert_called_once_with({"foo": "bar"})
|
||||
self.assertEqual(flavor_id, self.my_flavor.resource_id)
|
||||
self.assertTrue(self.my_flavor.FnGetAtt('is_public'))
|
||||
|
||||
def test_flavor_handle_create_with_id_name(self):
|
||||
self.create_flavor(with_name_id=True)
|
||||
kwargs = {
|
||||
'vcpus': 2, 'disk': 20, 'swap': 2,
|
||||
'flavorid': '1234', 'is_public': True,
|
||||
'rxtx_factor': 1.0, 'ram': 1024,
|
||||
'ephemeral': 0, 'name': 'test_flavor'
|
||||
}
|
||||
self.patchobject(self.my_flavor, 'physical_resource_name',
|
||||
return_value='m1.xxx')
|
||||
value = mock.MagicMock()
|
||||
flavor_id = '927202df-1afb-497f-8368-9c2d2f26e5db'
|
||||
value.id = flavor_id
|
||||
value.is_public = True
|
||||
self.flavors.create.return_value = value
|
||||
self.flavors.get.return_value = value
|
||||
self.my_flavor.handle_create()
|
||||
self.flavors.create.assert_called_once_with(**kwargs)
|
||||
value.set_keys.assert_called_once_with({"foo": "bar"})
|
||||
self.assertEqual(flavor_id, self.my_flavor.resource_id)
|
||||
self.assertTrue(self.my_flavor.FnGetAtt('is_public'))
|
||||
|
||||
def test_private_flavor_handle_create(self):
|
||||
self.create_flavor()
|
||||
value = mock.MagicMock()
|
||||
flavor_id = '927202df-1afb-497f-8368-9c2d2f26e5db'
|
||||
value.id = flavor_id
|
||||
@ -82,6 +119,7 @@ class NovaFlavorTest(common.HeatTestCase):
|
||||
self.assertFalse(self.my_flavor.FnGetAtt('is_public'))
|
||||
|
||||
def test_flavor_handle_update_keys(self):
|
||||
self.create_flavor()
|
||||
value = mock.MagicMock()
|
||||
self.flavors.get.return_value = value
|
||||
value.get_keys.return_value = {}
|
||||
@ -94,6 +132,7 @@ class NovaFlavorTest(common.HeatTestCase):
|
||||
value.set_keys.assert_called_once_with(new_keys)
|
||||
|
||||
def test_flavor_show_resource(self):
|
||||
self.create_flavor()
|
||||
self.my_flavor.resource_id = 'flavor_test_id'
|
||||
self.my_flavor.client = mock.MagicMock()
|
||||
flavors = mock.MagicMock()
|
||||
|
Loading…
Reference in New Issue
Block a user