From bc4fde4dce1b82c9c310ad4dbe7a79ae051a2595 Mon Sep 17 00:00:00 2001 From: Zane Bitter Date: Fri, 24 Feb 2017 10:10:26 -0500 Subject: Add a NodeData class to roll up resource data Formalise the format for the output data from a node in the convergence graph (i.e. resource reference ID, attributes, &c.) by creating an object with an API rather than ad-hoc dicts. Change-Id: I7a705b41046bfbf81777e233e56aba24f3166510 Partially-Implements: blueprint stack-definition --- heat/tests/test_resource.py | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) (limited to 'heat/tests/test_resource.py') diff --git a/heat/tests/test_resource.py b/heat/tests/test_resource.py index 9b7cab90b..515bbe876 100644 --- a/heat/tests/test_resource.py +++ b/heat/tests/test_resource.py @@ -36,6 +36,7 @@ from heat.engine import clients from heat.engine import constraints from heat.engine import dependencies from heat.engine import environment +from heat.engine import node_data from heat.engine import plugin_manager from heat.engine import properties from heat.engine import resource @@ -1811,12 +1812,13 @@ class ResourceTest(common.HeatTestCase): }) stack = parser.Stack(utils.dummy_context(), 'test', tmpl, cache_data={ - 'res': {'attrs': {'Foo': 'Res', - 'foo': 'res'}, - 'uuid': mock.ANY, - 'id': mock.ANY, - 'action': 'CREATE', - 'status': 'COMPLETE'}}) + 'res': node_data.NodeData.from_dict({ + 'attrs': {'Foo': 'Res', + 'foo': 'res'}, + 'uuid': mock.ANY, + 'id': mock.ANY, + 'action': 'CREATE', + 'status': 'COMPLETE'})}) res = stack['res'] self.assertEqual('Res', res.FnGetAtt('Foo')) @@ -1833,12 +1835,12 @@ class ResourceTest(common.HeatTestCase): }) stack = parser.Stack(utils.dummy_context(), 'test', tmpl, cache_data={ - 'res': { + 'res': node_data.NodeData.from_dict({ 'attrs': {('nested', 'string'): 'abc'}, 'uuid': mock.ANY, 'id': mock.ANY, 'action': 'CREATE', - 'status': 'COMPLETE'}}) + 'status': 'COMPLETE'})}) res = stack['res'] self.assertEqual('abc', res.FnGetAtt('nested', 'string')) @@ -1874,12 +1876,13 @@ class ResourceTest(common.HeatTestCase): }) stack = parser.Stack(utils.dummy_context(), 'test', tmpl, cache_data={ - 'res': {'attrs': {'Foo': 'res', - 'foo': 'res'}, - 'uuid': mock.ANY, - 'id': mock.ANY, - 'action': 'CREATE', - 'status': 'COMPLETE'}}) + 'res': node_data.NodeData.from_dict({ + 'attrs': {'Foo': 'res', + 'foo': 'res'}, + 'uuid': mock.ANY, + 'id': mock.ANY, + 'action': 'CREATE', + 'status': 'COMPLETE'})}) res = stack['res'] self.assertEqual({'foo': 'res', 'Foo': 'res'}, res.FnGetAtts()) @@ -1994,6 +1997,7 @@ class ResourceTest(common.HeatTestCase): self._assert_resource_lock(res.id, None, None) res_data = {(1, True): {u'id': 1, u'name': 'A', 'attrs': {}}, (2, True): {u'id': 3, u'name': 'B', 'attrs': {}}} + res_data = node_data.load_resources_data(res_data) pcb = mock.Mock() with mock.patch.object(resource.Resource, 'create') as mock_create: @@ -2011,6 +2015,7 @@ class ResourceTest(common.HeatTestCase): res.store() res_data = {(1, True): {u'id': 1, u'name': 'A', 'attrs': {}}, (2, True): {u'id': 3, u'name': 'B', 'attrs': {}}} + res_data = node_data.load_resources_data(res_data) pcb = mock.Mock() self.assertRaises(scheduler.Timeout, res.create_convergence, @@ -2030,6 +2035,7 @@ class ResourceTest(common.HeatTestCase): self._assert_resource_lock(res.id, None, None) res_data = {(1, True): {u'id': 5, u'name': 'A', 'attrs': {}}, (2, True): {u'id': 3, u'name': 'B', 'attrs': {}}} + res_data = node_data.load_resources_data(res_data) self.assertRaises(exception.ResourceNotAvailable, res.create_convergence, self.stack.t.id, res_data, 'engine-007', self.dummy_timeout, self.dummy_event) @@ -2047,6 +2053,7 @@ class ResourceTest(common.HeatTestCase): self._assert_resource_lock(res.id, None, None) res_data = {(1, True): {u'id': 5, u'name': 'A', 'attrs': {}}, (2, True): {u'id': 3, u'name': 'B', 'attrs': {}}} + res_data = node_data.load_resources_data(res_data) tr = scheduler.TaskRunner(res.create_convergence, self.stack.t.id, res_data, 'engine-007', self.dummy_timeout, self.dummy_event) @@ -2065,6 +2072,7 @@ class ResourceTest(common.HeatTestCase): self._assert_resource_lock(res.id, None, None) res_data = {(1, True): {u'id': 5, u'name': 'A', 'attrs': {}}, (2, True): {u'id': 3, u'name': 'B', 'attrs': {}}} + res_data = node_data.load_resources_data(res_data) tr = scheduler.TaskRunner(res.create_convergence, self.stack.t.id, res_data, 'engine-007', self.dummy_timeout, self.dummy_event) @@ -2098,6 +2106,7 @@ class ResourceTest(common.HeatTestCase): res_data = {(1, True): {u'id': 4, u'name': 'A', 'attrs': {}}, (2, True): {u'id': 3, u'name': 'B', 'attrs': {}}} + res_data = node_data.load_resources_data(res_data) pcb = mock.Mock() with mock.patch.object(resource.Resource, 'update') as mock_update: tr = scheduler.TaskRunner(res.update_convergence, new_temp.id, @@ -2192,6 +2201,7 @@ class ResourceTest(common.HeatTestCase): res_data = {(1, True): {u'id': 4, u'name': 'A', 'attrs': {}}, (2, True): {u'id': 3, u'name': 'B', 'attrs': {}}} + res_data = node_data.load_resources_data(res_data) tr = scheduler.TaskRunner(res.update_convergence, 'template_key', res_data, 'engine-007', self.dummy_timeout, mock.ANY, self.dummy_event) @@ -2227,6 +2237,7 @@ class ResourceTest(common.HeatTestCase): res_data = {(1, True): {u'id': 4, u'name': 'A', 'attrs': {}}, (2, True): {u'id': 3, u'name': 'B', 'attrs': {}}} + res_data = node_data.load_resources_data(res_data) exc = Exception(_('Resource update failed')) new_stack = parser.Stack(utils.dummy_context(), 'test_stack', new_temp, stack_id=self.stack.id) @@ -2270,6 +2281,7 @@ class ResourceTest(common.HeatTestCase): res_data = {(1, True): {u'id': 4, u'name': 'A', 'attrs': {}}, (2, True): {u'id': 3, u'name': 'B', 'attrs': {}}} + res_data = node_data.load_resources_data(res_data) mock_update.side_effect = resource.UpdateReplace new_stack = parser.Stack(utils.dummy_context(), 'test_stack', new_temp, stack_id=self.stack.id) -- cgit v1.2.1