Merge "Calculate the requires list in check_resource"
This commit is contained in:
commit
99eb84d3a3
|
@ -162,8 +162,10 @@ class CheckResource(object):
|
||||||
prev_template_id = rsrc.current_template_id
|
prev_template_id = rsrc.current_template_id
|
||||||
try:
|
try:
|
||||||
if is_update:
|
if is_update:
|
||||||
|
requires = set(d.primary_key for d in resource_data.values()
|
||||||
|
if d is not None)
|
||||||
try:
|
try:
|
||||||
check_resource_update(rsrc, tmpl.id, resource_data,
|
check_resource_update(rsrc, tmpl.id, requires,
|
||||||
self.engine_id,
|
self.engine_id,
|
||||||
stack, self.msg_queue)
|
stack, self.msg_queue)
|
||||||
except resource.UpdateReplace:
|
except resource.UpdateReplace:
|
||||||
|
@ -406,15 +408,15 @@ def _check_for_message(msg_queue):
|
||||||
LOG.error('Unknown message "%s" received', message)
|
LOG.error('Unknown message "%s" received', message)
|
||||||
|
|
||||||
|
|
||||||
def check_resource_update(rsrc, template_id, resource_data, engine_id,
|
def check_resource_update(rsrc, template_id, requires, engine_id,
|
||||||
stack, msg_queue):
|
stack, msg_queue):
|
||||||
"""Create or update the Resource if appropriate."""
|
"""Create or update the Resource if appropriate."""
|
||||||
check_message = functools.partial(_check_for_message, msg_queue)
|
check_message = functools.partial(_check_for_message, msg_queue)
|
||||||
if rsrc.action == resource.Resource.INIT:
|
if rsrc.action == resource.Resource.INIT:
|
||||||
rsrc.create_convergence(template_id, resource_data, engine_id,
|
rsrc.create_convergence(template_id, requires, engine_id,
|
||||||
stack.time_remaining(), check_message)
|
stack.time_remaining(), check_message)
|
||||||
else:
|
else:
|
||||||
rsrc.update_convergence(template_id, resource_data, engine_id,
|
rsrc.update_convergence(template_id, requires, engine_id,
|
||||||
stack.time_remaining(), stack,
|
stack.time_remaining(), stack,
|
||||||
check_message)
|
check_message)
|
||||||
|
|
||||||
|
|
|
@ -1154,14 +1154,11 @@ class Resource(status.ResourceStatus):
|
||||||
"""
|
"""
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def create_convergence(self, template_id, resource_data, engine_id,
|
def create_convergence(self, template_id, requires, engine_id,
|
||||||
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(
|
self.requires = list(requires)
|
||||||
set(data.primary_key for data in resource_data.values()
|
|
||||||
if data is not None)
|
|
||||||
)
|
|
||||||
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)
|
||||||
|
@ -1412,7 +1409,7 @@ class Resource(status.ResourceStatus):
|
||||||
else:
|
else:
|
||||||
raise UpdateReplace(self.name)
|
raise UpdateReplace(self.name)
|
||||||
|
|
||||||
def update_convergence(self, template_id, resource_data, engine_id,
|
def update_convergence(self, template_id, new_requires, engine_id,
|
||||||
timeout, new_stack, progress_callback=None):
|
timeout, new_stack, progress_callback=None):
|
||||||
"""Update the resource synchronously.
|
"""Update the resource synchronously.
|
||||||
|
|
||||||
|
@ -1422,8 +1419,6 @@ class Resource(status.ResourceStatus):
|
||||||
resource by invoking the scheduler TaskRunner.
|
resource by invoking the scheduler TaskRunner.
|
||||||
"""
|
"""
|
||||||
self._calling_engine_id = engine_id
|
self._calling_engine_id = engine_id
|
||||||
new_requires = set(data.primary_key for data in resource_data.values()
|
|
||||||
if data is not None)
|
|
||||||
|
|
||||||
# Check that the resource type matches. If the type has changed by a
|
# Check that the resource type matches. If the type has changed by a
|
||||||
# legitimate substitution, the load()ed resource will already be of
|
# legitimate substitution, the load()ed resource will already be of
|
||||||
|
|
|
@ -91,7 +91,7 @@ class CheckWorkflowUpdateTest(common.HeatTestCase):
|
||||||
self.is_update, None)
|
self.is_update, None)
|
||||||
mock_cru.assert_called_once_with(self.resource,
|
mock_cru.assert_called_once_with(self.resource,
|
||||||
self.resource.stack.t.id,
|
self.resource.stack.t.id,
|
||||||
{}, self.worker.engine_id,
|
set(), self.worker.engine_id,
|
||||||
mock.ANY, mock.ANY)
|
mock.ANY, mock.ANY)
|
||||||
self.assertFalse(mock_crc.called)
|
self.assertFalse(mock_crc.called)
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ class CheckWorkflowUpdateTest(common.HeatTestCase):
|
||||||
self.is_update, None)
|
self.is_update, None)
|
||||||
mock_cru.assert_called_once_with(self.resource,
|
mock_cru.assert_called_once_with(self.resource,
|
||||||
self.resource.stack.t.id,
|
self.resource.stack.t.id,
|
||||||
{}, self.worker.engine_id,
|
set(), self.worker.engine_id,
|
||||||
mock.ANY, mock.ANY)
|
mock.ANY, mock.ANY)
|
||||||
self.assertTrue(mock_mr.called)
|
self.assertTrue(mock_mr.called)
|
||||||
self.assertFalse(mock_crc.called)
|
self.assertFalse(mock_crc.called)
|
||||||
|
@ -144,7 +144,7 @@ class CheckWorkflowUpdateTest(common.HeatTestCase):
|
||||||
self.is_update, None)
|
self.is_update, None)
|
||||||
mock_cru.assert_called_once_with(self.resource,
|
mock_cru.assert_called_once_with(self.resource,
|
||||||
self.resource.stack.t.id,
|
self.resource.stack.t.id,
|
||||||
{}, self.worker.engine_id,
|
set(), self.worker.engine_id,
|
||||||
mock.ANY, mock.ANY)
|
mock.ANY, mock.ANY)
|
||||||
self.assertFalse(mock_crc.called)
|
self.assertFalse(mock_crc.called)
|
||||||
self.assertFalse(mock_pcr.called)
|
self.assertFalse(mock_pcr.called)
|
||||||
|
@ -545,6 +545,20 @@ class CheckWorkflowUpdateTest(common.HeatTestCase):
|
||||||
self.assertFalse(mock_pcr.called)
|
self.assertFalse(mock_pcr.called)
|
||||||
self.assertFalse(mock_csc.called)
|
self.assertFalse(mock_csc.called)
|
||||||
|
|
||||||
|
@mock.patch.object(resource.Resource, 'load')
|
||||||
|
def test_requires(self, mock_load, mock_cru, mock_crc, mock_pcr, mock_csc):
|
||||||
|
mock_load.return_value = self.resource, self.stack, self.stack
|
||||||
|
res_data = {(1, True): {u'id': 5, u'name': 'A', 'attrs': {}},
|
||||||
|
(2, True): {u'id': 3, u'name': 'B', 'attrs': {}}}
|
||||||
|
self.worker.check_resource(self.ctx, self.resource.id,
|
||||||
|
self.stack.current_traversal,
|
||||||
|
sync_point.serialize_input_data(res_data),
|
||||||
|
self.is_update, {})
|
||||||
|
mock_cru.assert_called_once_with(
|
||||||
|
self.resource, self.resource.stack.t.id,
|
||||||
|
{5, 3}, self.worker.engine_id,
|
||||||
|
self.stack, mock.ANY)
|
||||||
|
|
||||||
|
|
||||||
@mock.patch.object(check_resource, 'check_stack_complete')
|
@mock.patch.object(check_resource, 'check_stack_complete')
|
||||||
@mock.patch.object(check_resource, 'propagate_check_resource')
|
@mock.patch.object(check_resource, 'propagate_check_resource')
|
||||||
|
@ -699,7 +713,7 @@ class MiscMethodsTest(common.HeatTestCase):
|
||||||
def test_check_resource_update_init_action(self, mock_update, mock_create):
|
def test_check_resource_update_init_action(self, mock_update, mock_create):
|
||||||
self.resource.action = 'INIT'
|
self.resource.action = 'INIT'
|
||||||
check_resource.check_resource_update(
|
check_resource.check_resource_update(
|
||||||
self.resource, self.resource.stack.t.id, {}, 'engine-id',
|
self.resource, self.resource.stack.t.id, set(), 'engine-id',
|
||||||
self.stack, None)
|
self.stack, None)
|
||||||
self.assertTrue(mock_create.called)
|
self.assertTrue(mock_create.called)
|
||||||
self.assertFalse(mock_update.called)
|
self.assertFalse(mock_update.called)
|
||||||
|
@ -710,7 +724,7 @@ class MiscMethodsTest(common.HeatTestCase):
|
||||||
self, mock_update, mock_create):
|
self, mock_update, mock_create):
|
||||||
self.resource.action = 'CREATE'
|
self.resource.action = 'CREATE'
|
||||||
check_resource.check_resource_update(
|
check_resource.check_resource_update(
|
||||||
self.resource, self.resource.stack.t.id, {}, 'engine-id',
|
self.resource, self.resource.stack.t.id, set(), 'engine-id',
|
||||||
self.stack, None)
|
self.stack, None)
|
||||||
self.assertFalse(mock_create.called)
|
self.assertFalse(mock_create.called)
|
||||||
self.assertTrue(mock_update.called)
|
self.assertTrue(mock_update.called)
|
||||||
|
@ -721,7 +735,7 @@ class MiscMethodsTest(common.HeatTestCase):
|
||||||
self, mock_update, mock_create):
|
self, mock_update, mock_create):
|
||||||
self.resource.action = 'UPDATE'
|
self.resource.action = 'UPDATE'
|
||||||
check_resource.check_resource_update(
|
check_resource.check_resource_update(
|
||||||
self.resource, self.resource.stack.t.id, {}, 'engine-id',
|
self.resource, self.resource.stack.t.id, set(), 'engine-id',
|
||||||
self.stack, None)
|
self.stack, None)
|
||||||
self.assertFalse(mock_create.called)
|
self.assertFalse(mock_create.called)
|
||||||
self.assertTrue(mock_update.called)
|
self.assertTrue(mock_update.called)
|
||||||
|
|
|
@ -2046,13 +2046,10 @@ class ResourceTest(common.HeatTestCase):
|
||||||
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)
|
||||||
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()
|
pcb = mock.Mock()
|
||||||
|
|
||||||
with mock.patch.object(resource.Resource, 'create') as mock_create:
|
with mock.patch.object(resource.Resource, 'create') as mock_create:
|
||||||
res.create_convergence(self.stack.t.id, res_data, 'engine-007',
|
res.create_convergence(self.stack.t.id, {1, 3}, 'engine-007',
|
||||||
-1, pcb)
|
-1, pcb)
|
||||||
self.assertTrue(mock_create.called)
|
self.assertTrue(mock_create.called)
|
||||||
|
|
||||||
|
@ -2064,13 +2061,10 @@ class ResourceTest(common.HeatTestCase):
|
||||||
res = generic_rsrc.GenericResource('test_res', tmpl, self.stack)
|
res = generic_rsrc.GenericResource('test_res', tmpl, self.stack)
|
||||||
res.action = res.CREATE
|
res.action = res.CREATE
|
||||||
res.store()
|
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()
|
pcb = mock.Mock()
|
||||||
self.assertRaises(scheduler.Timeout, res.create_convergence,
|
self.assertRaises(scheduler.Timeout, res.create_convergence,
|
||||||
self.stack.t.id, res_data, 'engine-007', -1, pcb)
|
self.stack.t.id, {1, 3}, 'engine-007', -1, pcb)
|
||||||
|
|
||||||
def test_create_convergence_sets_requires_for_failure(self):
|
def test_create_convergence_sets_requires_for_failure(self):
|
||||||
"""Ensure that requires are computed correctly.
|
"""Ensure that requires are computed correctly.
|
||||||
|
@ -2084,11 +2078,8 @@ class ResourceTest(common.HeatTestCase):
|
||||||
dummy_ex = exception.ResourceNotAvailable(resource_name=res.name)
|
dummy_ex = exception.ResourceNotAvailable(resource_name=res.name)
|
||||||
res.create = mock.Mock(side_effect=dummy_ex)
|
res.create = mock.Mock(side_effect=dummy_ex)
|
||||||
self._assert_resource_lock(res.id, None, None)
|
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,
|
self.assertRaises(exception.ResourceNotAvailable,
|
||||||
res.create_convergence, self.stack.t.id, res_data,
|
res.create_convergence, self.stack.t.id, {5, 3},
|
||||||
'engine-007', self.dummy_timeout, self.dummy_event)
|
'engine-007', self.dummy_timeout, self.dummy_event)
|
||||||
self.assertItemsEqual([5, 3], res.requires)
|
self.assertItemsEqual([5, 3], res.requires)
|
||||||
# The locking happens in create which we mocked out
|
# The locking happens in create which we mocked out
|
||||||
|
@ -2103,11 +2094,8 @@ class ResourceTest(common.HeatTestCase):
|
||||||
self.stack.adopt_stack_data = {'resources': {'test_res': {
|
self.stack.adopt_stack_data = {'resources': {'test_res': {
|
||||||
'resource_id': 'fluffy'}}}
|
'resource_id': 'fluffy'}}}
|
||||||
self._assert_resource_lock(res.id, None, None)
|
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,
|
tr = scheduler.TaskRunner(res.create_convergence, self.stack.t.id,
|
||||||
res_data, 'engine-007', self.dummy_timeout,
|
{5, 3}, 'engine-007', self.dummy_timeout,
|
||||||
self.dummy_event)
|
self.dummy_event)
|
||||||
tr()
|
tr()
|
||||||
mock_adopt.assert_called_once_with(
|
mock_adopt.assert_called_once_with(
|
||||||
|
@ -2122,11 +2110,8 @@ class ResourceTest(common.HeatTestCase):
|
||||||
res.store()
|
res.store()
|
||||||
self.stack.adopt_stack_data = {'resources': {}}
|
self.stack.adopt_stack_data = {'resources': {}}
|
||||||
self._assert_resource_lock(res.id, None, None)
|
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,
|
tr = scheduler.TaskRunner(res.create_convergence, self.stack.t.id,
|
||||||
res_data, 'engine-007', self.dummy_timeout,
|
{5, 3}, 'engine-007', self.dummy_timeout,
|
||||||
self.dummy_event)
|
self.dummy_event)
|
||||||
exc = self.assertRaises(exception.ResourceFailure, tr)
|
exc = self.assertRaises(exception.ResourceFailure, tr)
|
||||||
self.assertIn('Resource ID was not provided', six.text_type(exc))
|
self.assertIn('Resource ID was not provided', six.text_type(exc))
|
||||||
|
@ -2160,11 +2145,8 @@ class ResourceTest(common.HeatTestCase):
|
||||||
new_temp, stack_id=self.stack.id)
|
new_temp, stack_id=self.stack.id)
|
||||||
res.stack.convergence = True
|
res.stack.convergence = True
|
||||||
|
|
||||||
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, new_temp.id,
|
tr = scheduler.TaskRunner(res.update_convergence, new_temp.id,
|
||||||
res_data, 'engine-007', 120, new_stack)
|
{4, 3}, 'engine-007', 120, new_stack)
|
||||||
tr()
|
tr()
|
||||||
|
|
||||||
self.assertItemsEqual([3, 4], res.requires)
|
self.assertItemsEqual([3, 4], res.requires)
|
||||||
|
@ -2195,9 +2177,8 @@ class ResourceTest(common.HeatTestCase):
|
||||||
new_stack = parser.Stack(utils.dummy_context(), 'test_stack',
|
new_stack = parser.Stack(utils.dummy_context(), 'test_stack',
|
||||||
new_temp, stack_id=self.stack.id)
|
new_temp, stack_id=self.stack.id)
|
||||||
|
|
||||||
res_data = {}
|
|
||||||
tr = scheduler.TaskRunner(res.update_convergence, new_temp.id,
|
tr = scheduler.TaskRunner(res.update_convergence, new_temp.id,
|
||||||
res_data, 'engine-007', -1, new_stack,
|
set(), 'engine-007', -1, new_stack,
|
||||||
self.dummy_event)
|
self.dummy_event)
|
||||||
self.assertRaises(scheduler.Timeout, tr)
|
self.assertRaises(scheduler.Timeout, tr)
|
||||||
|
|
||||||
|
@ -2217,9 +2198,8 @@ class ResourceTest(common.HeatTestCase):
|
||||||
new_stack = parser.Stack(utils.dummy_context(), 'test_stack',
|
new_stack = parser.Stack(utils.dummy_context(), 'test_stack',
|
||||||
new_temp, stack_id=self.stack.id)
|
new_temp, stack_id=self.stack.id)
|
||||||
|
|
||||||
res_data = {}
|
|
||||||
self.assertRaises(resource.UpdateReplace, res.update_convergence,
|
self.assertRaises(resource.UpdateReplace, res.update_convergence,
|
||||||
new_temp.id, res_data, 'engine-007',
|
new_temp.id, set(), 'engine-007',
|
||||||
-1, new_stack)
|
-1, new_stack)
|
||||||
|
|
||||||
def test_update_convergence_checks_resource_class(self):
|
def test_update_convergence_checks_resource_class(self):
|
||||||
|
@ -2239,9 +2219,8 @@ class ResourceTest(common.HeatTestCase):
|
||||||
new_stack = parser.Stack(ctx, 'test_stack',
|
new_stack = parser.Stack(ctx, 'test_stack',
|
||||||
new_temp, stack_id=self.stack.id)
|
new_temp, stack_id=self.stack.id)
|
||||||
|
|
||||||
res_data = {}
|
|
||||||
tr = scheduler.TaskRunner(res.update_convergence, new_temp.id,
|
tr = scheduler.TaskRunner(res.update_convergence, new_temp.id,
|
||||||
res_data, 'engine-007', -1, new_stack,
|
set(), 'engine-007', -1, new_stack,
|
||||||
self.dummy_event)
|
self.dummy_event)
|
||||||
self.assertRaises(resource.UpdateReplace, tr)
|
self.assertRaises(resource.UpdateReplace, tr)
|
||||||
|
|
||||||
|
@ -2258,9 +2237,6 @@ class ResourceTest(common.HeatTestCase):
|
||||||
|
|
||||||
res.stack.convergence = True
|
res.stack.convergence = True
|
||||||
|
|
||||||
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)
|
|
||||||
tmpl = template.Template({
|
tmpl = template.Template({
|
||||||
'HeatTemplateFormatVersion': '2012-12-12',
|
'HeatTemplateFormatVersion': '2012-12-12',
|
||||||
'Resources': {
|
'Resources': {
|
||||||
|
@ -2269,7 +2245,7 @@ class ResourceTest(common.HeatTestCase):
|
||||||
new_stack = parser.Stack(utils.dummy_context(), 'test_stack',
|
new_stack = parser.Stack(utils.dummy_context(), 'test_stack',
|
||||||
tmpl, stack_id=self.stack.id)
|
tmpl, stack_id=self.stack.id)
|
||||||
tr = scheduler.TaskRunner(res.update_convergence, 'template_key',
|
tr = scheduler.TaskRunner(res.update_convergence, 'template_key',
|
||||||
res_data, 'engine-007', self.dummy_timeout,
|
{4, 3}, 'engine-007', self.dummy_timeout,
|
||||||
new_stack)
|
new_stack)
|
||||||
ex = self.assertRaises(exception.UpdateInProgress, tr)
|
ex = self.assertRaises(exception.UpdateInProgress, tr)
|
||||||
msg = ("The resource %s is already being updated." %
|
msg = ("The resource %s is already being updated." %
|
||||||
|
@ -2306,9 +2282,6 @@ class ResourceTest(common.HeatTestCase):
|
||||||
}}, env=self.env)
|
}}, env=self.env)
|
||||||
new_temp.store(stack.context)
|
new_temp.store(stack.context)
|
||||||
|
|
||||||
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)
|
|
||||||
new_stack = parser.Stack(utils.dummy_context(), 'test_stack',
|
new_stack = parser.Stack(utils.dummy_context(), 'test_stack',
|
||||||
new_temp, stack_id=self.stack.id)
|
new_temp, stack_id=self.stack.id)
|
||||||
|
|
||||||
|
@ -2316,7 +2289,7 @@ class ResourceTest(common.HeatTestCase):
|
||||||
res._calling_engine_id = 'engine-9'
|
res._calling_engine_id = 'engine-9'
|
||||||
|
|
||||||
tr = scheduler.TaskRunner(res.update_convergence, new_temp.id,
|
tr = scheduler.TaskRunner(res.update_convergence, new_temp.id,
|
||||||
res_data, 'engine-007', 120, new_stack,
|
{4, 3}, 'engine-007', 120, new_stack,
|
||||||
self.dummy_event)
|
self.dummy_event)
|
||||||
self.assertRaises(exception.ResourceFailure, tr)
|
self.assertRaises(exception.ResourceFailure, tr)
|
||||||
|
|
||||||
|
@ -2352,13 +2325,10 @@ class ResourceTest(common.HeatTestCase):
|
||||||
|
|
||||||
res.stack.convergence = True
|
res.stack.convergence = True
|
||||||
|
|
||||||
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)
|
|
||||||
new_stack = parser.Stack(utils.dummy_context(), 'test_stack',
|
new_stack = parser.Stack(utils.dummy_context(), 'test_stack',
|
||||||
new_temp, stack_id=self.stack.id)
|
new_temp, stack_id=self.stack.id)
|
||||||
tr = scheduler.TaskRunner(res.update_convergence, new_temp.id,
|
tr = scheduler.TaskRunner(res.update_convergence, new_temp.id,
|
||||||
res_data, 'engine-007', 120, new_stack,
|
{4, 3}, 'engine-007', 120, new_stack,
|
||||||
self.dummy_event)
|
self.dummy_event)
|
||||||
self.assertRaises(resource.UpdateReplace, tr)
|
self.assertRaises(resource.UpdateReplace, tr)
|
||||||
|
|
||||||
|
@ -2386,7 +2356,7 @@ class ResourceTest(common.HeatTestCase):
|
||||||
self.stack.state_set(self.stack.ROLLBACK, self.stack.IN_PROGRESS,
|
self.stack.state_set(self.stack.ROLLBACK, self.stack.IN_PROGRESS,
|
||||||
'Simulate rollback')
|
'Simulate rollback')
|
||||||
res.restore_prev_rsrc = mock.Mock()
|
res.restore_prev_rsrc = mock.Mock()
|
||||||
tr = scheduler.TaskRunner(res.update_convergence, 'new_tmpl_id', {},
|
tr = scheduler.TaskRunner(res.update_convergence, 'new_tmpl_id', set(),
|
||||||
'engine-007', self.dummy_timeout,
|
'engine-007', self.dummy_timeout,
|
||||||
new_stack, self.dummy_event)
|
new_stack, self.dummy_event)
|
||||||
self.assertRaises(resource.UpdateReplace, tr)
|
self.assertRaises(resource.UpdateReplace, tr)
|
||||||
|
@ -2410,7 +2380,7 @@ class ResourceTest(common.HeatTestCase):
|
||||||
self.stack.state_set(self.stack.ROLLBACK, self.stack.IN_PROGRESS,
|
self.stack.state_set(self.stack.ROLLBACK, self.stack.IN_PROGRESS,
|
||||||
'Simulate rollback')
|
'Simulate rollback')
|
||||||
res.restore_prev_rsrc = mock.Mock(side_effect=Exception)
|
res.restore_prev_rsrc = mock.Mock(side_effect=Exception)
|
||||||
tr = scheduler.TaskRunner(res.update_convergence, 'new_tmpl_id', {},
|
tr = scheduler.TaskRunner(res.update_convergence, 'new_tmpl_id', set(),
|
||||||
'engine-007', self.dummy_timeout, new_stack,
|
'engine-007', self.dummy_timeout, new_stack,
|
||||||
self.dummy_event)
|
self.dummy_event)
|
||||||
self.assertRaises(exception.ResourceFailure, tr)
|
self.assertRaises(exception.ResourceFailure, tr)
|
||||||
|
@ -4273,11 +4243,10 @@ class ResourceUpdateRestrictionTest(common.HeatTestCase):
|
||||||
self.stack = parser.Stack(utils.dummy_context(), 'test_stack',
|
self.stack = parser.Stack(utils.dummy_context(), 'test_stack',
|
||||||
template.Template(self.tmpl, env=self.env),
|
template.Template(self.tmpl, env=self.env),
|
||||||
stack_id=str(uuid.uuid4()))
|
stack_id=str(uuid.uuid4()))
|
||||||
res_data = {}
|
|
||||||
res = self.stack['bar']
|
res = self.stack['bar']
|
||||||
pcb = mock.Mock()
|
pcb = mock.Mock()
|
||||||
self.patchobject(res, 'lock')
|
self.patchobject(res, 'lock')
|
||||||
res.create_convergence(self.stack.t.id, res_data, 'engine-007',
|
res.create_convergence(self.stack.t.id, set(), 'engine-007',
|
||||||
self.dummy_timeout, pcb)
|
self.dummy_timeout, pcb)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
@ -4399,7 +4368,7 @@ class ResourceUpdateRestrictionTest(common.HeatTestCase):
|
||||||
error = self.assertRaises(exception.ResourceFailure,
|
error = self.assertRaises(exception.ResourceFailure,
|
||||||
scheduler.TaskRunner(res.update_convergence,
|
scheduler.TaskRunner(res.update_convergence,
|
||||||
self.stack.t.id,
|
self.stack.t.id,
|
||||||
{},
|
set(),
|
||||||
'engine-007',
|
'engine-007',
|
||||||
self.dummy_timeout,
|
self.dummy_timeout,
|
||||||
self.new_stack,
|
self.new_stack,
|
||||||
|
@ -4431,7 +4400,7 @@ class ResourceUpdateRestrictionTest(common.HeatTestCase):
|
||||||
error = self.assertRaises(resource.UpdateReplace,
|
error = self.assertRaises(resource.UpdateReplace,
|
||||||
scheduler.TaskRunner(res.update_convergence,
|
scheduler.TaskRunner(res.update_convergence,
|
||||||
self.stack.t.id,
|
self.stack.t.id,
|
||||||
{},
|
set(),
|
||||||
'engine-007',
|
'engine-007',
|
||||||
self.dummy_timeout,
|
self.dummy_timeout,
|
||||||
self.new_stack,
|
self.new_stack,
|
||||||
|
|
Loading…
Reference in New Issue