Add show_resource function to Nova resources (1)
AWS resources will not be changed due to they do not support additional attributes. So 'show' attribute will be presented in their shemas, but will return always None. This patch adds entity attribute for heat (nova) resources: - keypair - floating ip - server group - flavor Change-Id: Icaf0efb33707895d5407cdded552f95deeed6347
This commit is contained in:
@@ -49,6 +49,8 @@ class NovaFlavor(resource.Resource):
|
||||
|
||||
default_client_name = 'nova'
|
||||
|
||||
entity = 'flavors'
|
||||
|
||||
PROPERTIES = (
|
||||
RAM, VCPUS, DISK, SWAP, EPHEMERAL,
|
||||
RXTX_FACTOR, EXTRA_SPECS,
|
||||
|
||||
@@ -58,6 +58,8 @@ class NovaFloatingIp(resource.Resource):
|
||||
|
||||
default_client_name = 'nova'
|
||||
|
||||
entity = 'floating_ips'
|
||||
|
||||
def __init__(self, name, json_snippet, stack):
|
||||
super(NovaFloatingIp, self).__init__(name, json_snippet, stack)
|
||||
self._floating_ip = None
|
||||
|
||||
@@ -85,6 +85,8 @@ class KeyPair(resource.Resource):
|
||||
|
||||
default_client_name = 'nova'
|
||||
|
||||
entity = 'keypairs'
|
||||
|
||||
def __init__(self, name, json_snippet, stack):
|
||||
super(KeyPair, self).__init__(name, json_snippet, stack)
|
||||
self._public_key = None
|
||||
|
||||
@@ -26,6 +26,8 @@ class ServerGroup(resource.Resource):
|
||||
|
||||
default_client_name = 'nova'
|
||||
|
||||
entity = 'server_groups'
|
||||
|
||||
PROPERTIES = (
|
||||
NAME, POLICIES
|
||||
) = (
|
||||
|
||||
@@ -93,3 +93,14 @@ class NovaFlavorTest(common.HeatTestCase):
|
||||
self.assertIsNone(self.my_flavor.handle_delete())
|
||||
self.flavors.delete.side_effect = fakes.fake_exception()
|
||||
self.assertIsNone(self.my_flavor.handle_delete())
|
||||
|
||||
def test_flavor_show_resourse(self):
|
||||
self.my_flavor.resource_id = 'flavor_test_id'
|
||||
self.my_flavor.client = mock.MagicMock()
|
||||
flavors = mock.MagicMock()
|
||||
flavor = mock.MagicMock()
|
||||
flavor.to_dict.return_value = {'flavor': 'info'}
|
||||
flavors.get.return_value = flavor
|
||||
self.my_flavor.client().flavors = flavors
|
||||
self.assertEqual({'flavor': 'info'}, self.my_flavor.FnGetAtt('show'))
|
||||
flavors.get.assert_called_once_with('flavor_test_id')
|
||||
|
||||
@@ -118,6 +118,10 @@ class NovaFloatingIPTest(common.HeatTestCase):
|
||||
|
||||
def test_floating_ip_create(self):
|
||||
rsrc = self.prepare_floating_ip()
|
||||
|
||||
fip = mock.MagicMock()
|
||||
fip.to_dict.return_value = {'fip': 'info'}
|
||||
self.novaclient.floating_ips.get('1').AndReturn(fip)
|
||||
self.m.ReplayAll()
|
||||
|
||||
rsrc.validate()
|
||||
@@ -128,6 +132,8 @@ class NovaFloatingIPTest(common.HeatTestCase):
|
||||
self.assertEqual('11.0.0.1', rsrc.FnGetAtt('ip'))
|
||||
self.assertEqual('public', rsrc.FnGetAtt('pool'))
|
||||
|
||||
self.assertEqual({'fip': 'info'}, rsrc.FnGetAtt('show'))
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_floating_ip_delete(self):
|
||||
|
||||
@@ -84,12 +84,14 @@ class NovaKeyPairTest(common.HeatTestCase):
|
||||
"""Test basic create."""
|
||||
key_name = "generate_no_save"
|
||||
tp_test, created_key = self._get_mock_kp_for_create(key_name)
|
||||
self.fake_keypairs.get(key_name).AndReturn(created_key)
|
||||
self.fake_keypairs.get(key_name).MultipleTimes().AndReturn(created_key)
|
||||
created_key.to_dict().AndReturn({'key_pair': 'info'})
|
||||
self.m.ReplayAll()
|
||||
scheduler.TaskRunner(tp_test.create)()
|
||||
self.assertEqual("", tp_test.FnGetAtt('private_key'))
|
||||
self.assertEqual("generated test public key",
|
||||
tp_test.FnGetAtt('public_key'))
|
||||
self.assertEqual({'key_pair': 'info'}, tp_test.FnGetAtt('show'))
|
||||
self.assertEqual((tp_test.CREATE, tp_test.COMPLETE), tp_test.state)
|
||||
self.assertEqual(tp_test.resource_id, created_key.name)
|
||||
self.m.VerifyAll()
|
||||
|
||||
@@ -105,3 +105,14 @@ class NovaServerGroupTest(common.HeatTestCase):
|
||||
self.sg_mgr.delete.assert_called_once_with('test')
|
||||
self.assertEqual((self.sg.DELETE, self.sg.COMPLETE),
|
||||
self.sg.state)
|
||||
|
||||
def test_sg_show_resourse(self):
|
||||
self._create_sg('test')
|
||||
self.sg.client = mock.MagicMock()
|
||||
s_groups = mock.MagicMock()
|
||||
sg = mock.MagicMock()
|
||||
sg.to_dict.return_value = {'server_gr': 'info'}
|
||||
s_groups.get.return_value = sg
|
||||
self.sg.client().server_groups = s_groups
|
||||
self.assertEqual({'server_gr': 'info'}, self.sg.FnGetAtt('show'))
|
||||
s_groups.get.assert_called_once_with('test')
|
||||
|
||||
Reference in New Issue
Block a user