Merge "Make resource requires a set instead of a list"

This commit is contained in:
Zuul 2018-05-14 19:55:56 +00:00 committed by Gerrit Code Review
commit f30900e11f
3 changed files with 14 additions and 14 deletions

View File

@ -243,7 +243,7 @@ class Resource(status.ResourceStatus):
self.updated_time = stack.updated_time self.updated_time = stack.updated_time
self._rpc_client = None self._rpc_client = None
self.needed_by = [] self.needed_by = []
self.requires = [] self.requires = set()
self.replaces = None self.replaces = None
self.replaced_by = None self.replaced_by = None
self.current_template_id = None self.current_template_id = None
@ -291,7 +291,7 @@ class Resource(status.ResourceStatus):
self.created_time = resource.created_at self.created_time = resource.created_at
self.updated_time = resource.updated_at self.updated_time = resource.updated_at
self.needed_by = resource.needed_by self.needed_by = resource.needed_by
self.requires = resource.requires self.requires = set(resource.requires)
self.replaces = resource.replaces self.replaces = resource.replaces
self.replaced_by = resource.replaced_by self.replaced_by = resource.replaced_by
self.current_template_id = resource.current_template_id self.current_template_id = resource.current_template_id
@ -392,7 +392,7 @@ class Resource(status.ResourceStatus):
'name': self.name, 'name': self.name,
'rsrc_prop_data_id': None, 'rsrc_prop_data_id': None,
'needed_by': self.needed_by, 'needed_by': self.needed_by,
'requires': list(requires), 'requires': sorted(requires, reverse=True),
'replaces': self.id, 'replaces': self.id,
'action': self.INIT, 'action': self.INIT,
'status': self.COMPLETE, 'status': self.COMPLETE,
@ -1158,7 +1158,7 @@ class Resource(status.ResourceStatus):
timeout, progress_callback=None): timeout, progress_callback=None):
"""Creates the resource by invoking the scheduler TaskRunner.""" """Creates the resource by invoking the scheduler TaskRunner."""
self._calling_engine_id = engine_id self._calling_engine_id = engine_id
self.requires = list(requires) self.requires = requires
self.current_template_id = template_id self.current_template_id = template_id
if self.stack.adopt_stack_data is None: if self.stack.adopt_stack_data is None:
runner = scheduler.TaskRunner(self.create) runner = scheduler.TaskRunner(self.create)
@ -1648,7 +1648,7 @@ class Resource(status.ResourceStatus):
self.updated_time = datetime.utcnow() self.updated_time = datetime.utcnow()
if new_requires is not None: if new_requires is not None:
self.requires = list(set(self.requires) | new_requires) self.requires = self.requires | new_requires
with self._action_recorder(action, UpdateReplace): with self._action_recorder(action, UpdateReplace):
after_props.validate() after_props.validate()
@ -1678,7 +1678,7 @@ class Resource(status.ResourceStatus):
self.reparse() self.reparse()
self._update_stored_properties() self._update_stored_properties()
if new_requires is not None: if new_requires is not None:
self.requires = list(new_requires) self.requires = new_requires
yield self._break_if_required( yield self._break_if_required(
self.UPDATE, environment.HOOK_POST_UPDATE) self.UPDATE, environment.HOOK_POST_UPDATE)
@ -2071,7 +2071,7 @@ class Resource(status.ResourceStatus):
'rsrc_prop_data_id': 'rsrc_prop_data_id':
self._create_or_replace_rsrc_prop_data(), self._create_or_replace_rsrc_prop_data(),
'needed_by': self.needed_by, 'needed_by': self.needed_by,
'requires': self.requires, 'requires': sorted(self.requires, reverse=True),
'replaces': self.replaces, 'replaces': self.replaces,
'replaced_by': self.replaced_by, 'replaced_by': self.replaced_by,
'current_template_id': self.current_template_id, 'current_template_id': self.current_template_id,

View File

@ -800,7 +800,7 @@ class TestConvgComputeDependencies(common.HeatTestCase):
res = mock.MagicMock() res = mock.MagicMock()
res.id = 6 res.id = 6
res.name = 'E' res.name = 'E'
res.requires = [3] res.requires = {3}
res.replaces = 1 res.replaces = 1
res.current_template_id = 2 res.current_template_id = 2
db_resources[6] = res db_resources[6] = res

View File

@ -720,7 +720,7 @@ class ResourceTest(common.HeatTestCase):
self.assertEqual(res.id, new_res.replaces) self.assertEqual(res.id, new_res.replaces)
self.assertIsNone(new_res.physical_resource_id) self.assertIsNone(new_res.physical_resource_id)
self.assertEqual(new_tmpl_id, new_res.current_template_id) self.assertEqual(new_tmpl_id, new_res.current_template_id)
self.assertItemsEqual(list(new_requires), new_res.requires) self.assertEqual([4, 2, 1], new_res.requires)
def test_metadata_default(self): def test_metadata_default(self):
tmpl = rsrc_defn.ResourceDefinition('test_resource', 'Foo') tmpl = rsrc_defn.ResourceDefinition('test_resource', 'Foo')
@ -2131,7 +2131,7 @@ class ResourceTest(common.HeatTestCase):
stack.thread_group_mgr = tools.DummyThreadGroupManager() stack.thread_group_mgr = tools.DummyThreadGroupManager()
stack.converge_stack(stack.t, action=stack.CREATE) stack.converge_stack(stack.t, action=stack.CREATE)
res = stack.resources['test_res'] res = stack.resources['test_res']
res.requires = [2] res.requires = {2}
res.action = res.CREATE res.action = res.CREATE
res.store() res.store()
self._assert_resource_lock(res.id, None, None) self._assert_resource_lock(res.id, None, None)
@ -2231,7 +2231,7 @@ class ResourceTest(common.HeatTestCase):
def test_update_in_progress_convergence(self, mock_cfcr, mock_nu): def test_update_in_progress_convergence(self, mock_cfcr, mock_nu):
tmpl = rsrc_defn.ResourceDefinition('test_res', 'Foo') tmpl = rsrc_defn.ResourceDefinition('test_res', 'Foo')
res = generic_rsrc.GenericResource('test_res', tmpl, self.stack) res = generic_rsrc.GenericResource('test_res', tmpl, self.stack)
res.requires = [1, 2] res.requires = {1, 2}
res.store() res.store()
rs = resource_objects.Resource.get_obj(self.stack.context, res.id) rs = resource_objects.Resource.get_obj(self.stack.context, res.id)
rs.update_and_save({'engine_id': 'not-this'}) rs.update_and_save({'engine_id': 'not-this'})
@ -2255,7 +2255,7 @@ class ResourceTest(common.HeatTestCase):
self.assertEqual(msg, six.text_type(ex)) self.assertEqual(msg, six.text_type(ex))
# ensure requirements are not updated for failed resource # ensure requirements are not updated for failed resource
rs = resource_objects.Resource.get_obj(self.stack.context, res.id) rs = resource_objects.Resource.get_obj(self.stack.context, res.id)
self.assertEqual([1, 2], rs.requires) self.assertEqual([2, 1], rs.requires)
@mock.patch.object(resource.Resource, 'update_template_diff_properties') @mock.patch.object(resource.Resource, 'update_template_diff_properties')
@mock.patch.object(resource.Resource, '_needs_update') @mock.patch.object(resource.Resource, '_needs_update')
@ -2272,7 +2272,7 @@ class ResourceTest(common.HeatTestCase):
stack.thread_group_mgr = tools.DummyThreadGroupManager() stack.thread_group_mgr = tools.DummyThreadGroupManager()
stack.converge_stack(stack.t, action=stack.CREATE) stack.converge_stack(stack.t, action=stack.CREATE)
res = stack.resources['test_res'] res = stack.resources['test_res']
res.requires = [2] res.requires = {2}
res.store() res.store()
self._assert_resource_lock(res.id, None, None) self._assert_resource_lock(res.id, None, None)
@ -2313,7 +2313,7 @@ class ResourceTest(common.HeatTestCase):
stack.thread_group_mgr = tools.DummyThreadGroupManager() stack.thread_group_mgr = tools.DummyThreadGroupManager()
stack.converge_stack(stack.t, action=stack.CREATE) stack.converge_stack(stack.t, action=stack.CREATE)
res = stack.resources['test_res'] res = stack.resources['test_res']
res.requires = [2] res.requires = {2}
res.store() res.store()
self._assert_resource_lock(res.id, None, None) self._assert_resource_lock(res.id, None, None)