No need to check if resource not created
Check fail directly if resource not created. Change-Id: I315fa5f2acc7780156df27ec40ea701672ef65d1 Closes-Bug: #1652902
This commit is contained in:
parent
e33070d846
commit
a2430e8e97
@ -1401,6 +1401,13 @@ class Resource(object):
|
|||||||
LOG.info(_LI('Checking %s'), self)
|
LOG.info(_LI('Checking %s'), self)
|
||||||
|
|
||||||
if hasattr(self, 'handle_%s' % action.lower()):
|
if hasattr(self, 'handle_%s' % action.lower()):
|
||||||
|
if self.state == (self.INIT, self.COMPLETE):
|
||||||
|
reason = _('Can not check %s, resource not '
|
||||||
|
'created yet.') % self.name
|
||||||
|
self.state_set(action, self.FAILED, reason)
|
||||||
|
exc = Exception(_('Resource %s not created yet.') % self.name)
|
||||||
|
failure = exception.ResourceFailure(exc, self, action)
|
||||||
|
raise failure
|
||||||
return self._do_action(action)
|
return self._do_action(action)
|
||||||
else:
|
else:
|
||||||
reason = '%s not supported for %s' % (action, self.type())
|
reason = '%s not supported for %s' % (action, self.type())
|
||||||
|
@ -517,6 +517,7 @@ class VolumeTest(vt_base.BaseVolumeTest):
|
|||||||
def test_volume_check(self):
|
def test_volume_check(self):
|
||||||
stack = utils.parse_stack(self.t, stack_name='volume_check')
|
stack = utils.parse_stack(self.t, stack_name='volume_check')
|
||||||
res = stack['DataVolume']
|
res = stack['DataVolume']
|
||||||
|
res.state_set(res.CREATE, res.COMPLETE)
|
||||||
fake_volume = vt_base.FakeVolume('available')
|
fake_volume = vt_base.FakeVolume('available')
|
||||||
cinder = mock.Mock()
|
cinder = mock.Mock()
|
||||||
cinder.volumes.get.return_value = fake_volume
|
cinder.volumes.get.return_value = fake_volume
|
||||||
@ -533,6 +534,7 @@ class VolumeTest(vt_base.BaseVolumeTest):
|
|||||||
def test_volume_check_not_available(self):
|
def test_volume_check_not_available(self):
|
||||||
stack = utils.parse_stack(self.t, stack_name='volume_check_na')
|
stack = utils.parse_stack(self.t, stack_name='volume_check_na')
|
||||||
res = stack['DataVolume']
|
res = stack['DataVolume']
|
||||||
|
res.state_set(res.CREATE, res.COMPLETE)
|
||||||
cinder = mock.Mock()
|
cinder = mock.Mock()
|
||||||
fake_volume = vt_base.FakeVolume('foobar')
|
fake_volume = vt_base.FakeVolume('foobar')
|
||||||
cinder.volumes.get.return_value = fake_volume
|
cinder.volumes.get.return_value = fake_volume
|
||||||
@ -546,6 +548,7 @@ class VolumeTest(vt_base.BaseVolumeTest):
|
|||||||
def test_volume_check_fail(self):
|
def test_volume_check_fail(self):
|
||||||
stack = utils.parse_stack(self.t, stack_name='volume_check_fail')
|
stack = utils.parse_stack(self.t, stack_name='volume_check_fail')
|
||||||
res = stack['DataVolume']
|
res = stack['DataVolume']
|
||||||
|
res.state_set(res.CREATE, res.COMPLETE)
|
||||||
cinder = mock.Mock()
|
cinder = mock.Mock()
|
||||||
cinder.volumes.get.side_effect = Exception('boom')
|
cinder.volumes.get.side_effect = Exception('boom')
|
||||||
self.patchobject(res, 'client', return_value=cinder)
|
self.patchobject(res, 'client', return_value=cinder)
|
||||||
|
@ -472,10 +472,12 @@ class AodhAlarmTest(common.HeatTestCase):
|
|||||||
# check that super method has been called and execute deleting
|
# check that super method has been called and execute deleting
|
||||||
self.assertEqual(1, self.fa.alarm.delete.call_count)
|
self.assertEqual(1, self.fa.alarm.delete.call_count)
|
||||||
|
|
||||||
def _prepare_check_resource(self):
|
def _prepare_resource(self, for_check=True):
|
||||||
snippet = template_format.parse(not_string_alarm_template)
|
snippet = template_format.parse(not_string_alarm_template)
|
||||||
self.stack = utils.parse_stack(snippet)
|
self.stack = utils.parse_stack(snippet)
|
||||||
res = self.stack['MEMAlarmHigh']
|
res = self.stack['MEMAlarmHigh']
|
||||||
|
if for_check:
|
||||||
|
res.state_set(res.CREATE, res.COMPLETE)
|
||||||
res.client = mock.Mock()
|
res.client = mock.Mock()
|
||||||
mock_alarm = mock.Mock(enabled=True, state='ok')
|
mock_alarm = mock.Mock(enabled=True, state='ok')
|
||||||
res.client().alarm.get.return_value = mock_alarm
|
res.client().alarm.get.return_value = mock_alarm
|
||||||
@ -483,13 +485,13 @@ class AodhAlarmTest(common.HeatTestCase):
|
|||||||
|
|
||||||
@mock.patch.object(alarm.watchrule.WatchRule, 'load')
|
@mock.patch.object(alarm.watchrule.WatchRule, 'load')
|
||||||
def test_check(self, mock_load):
|
def test_check(self, mock_load):
|
||||||
res = self._prepare_check_resource()
|
res = self._prepare_resource()
|
||||||
scheduler.TaskRunner(res.check)()
|
scheduler.TaskRunner(res.check)()
|
||||||
self.assertEqual((res.CHECK, res.COMPLETE), res.state)
|
self.assertEqual((res.CHECK, res.COMPLETE), res.state)
|
||||||
|
|
||||||
@mock.patch.object(alarm.watchrule.WatchRule, 'load')
|
@mock.patch.object(alarm.watchrule.WatchRule, 'load')
|
||||||
def test_check_watchrule_failure(self, mock_load):
|
def test_check_watchrule_failure(self, mock_load):
|
||||||
res = self._prepare_check_resource()
|
res = self._prepare_resource()
|
||||||
exc = alarm.exception.EntityNotFound(entity='Watch Rule', name='Boom')
|
exc = alarm.exception.EntityNotFound(entity='Watch Rule', name='Boom')
|
||||||
mock_load.side_effect = exc
|
mock_load.side_effect = exc
|
||||||
|
|
||||||
@ -500,7 +502,7 @@ class AodhAlarmTest(common.HeatTestCase):
|
|||||||
|
|
||||||
@mock.patch.object(alarm.watchrule.WatchRule, 'load')
|
@mock.patch.object(alarm.watchrule.WatchRule, 'load')
|
||||||
def test_check_alarm_failure(self, mock_load):
|
def test_check_alarm_failure(self, mock_load):
|
||||||
res = self._prepare_check_resource()
|
res = self._prepare_resource()
|
||||||
res.client().alarm.get.side_effect = Exception('Boom')
|
res.client().alarm.get.side_effect = Exception('Boom')
|
||||||
|
|
||||||
self.assertRaises(exception.ResourceFailure,
|
self.assertRaises(exception.ResourceFailure,
|
||||||
@ -509,7 +511,7 @@ class AodhAlarmTest(common.HeatTestCase):
|
|||||||
self.assertIn('Boom', res.status_reason)
|
self.assertIn('Boom', res.status_reason)
|
||||||
|
|
||||||
def test_show_resource(self):
|
def test_show_resource(self):
|
||||||
res = self._prepare_check_resource()
|
res = self._prepare_resource(for_check=False)
|
||||||
res.client().alarm.create.return_value = FakeAodhAlarm
|
res.client().alarm.create.return_value = FakeAodhAlarm
|
||||||
res.client().alarm.get.return_value = FakeAodhAlarm
|
res.client().alarm.get.return_value = FakeAodhAlarm
|
||||||
scheduler.TaskRunner(res.create)()
|
scheduler.TaskRunner(res.create)()
|
||||||
@ -804,22 +806,24 @@ class CombinationAlarmTest(common.HeatTestCase):
|
|||||||
|
|
||||||
self.m.VerifyAll()
|
self.m.VerifyAll()
|
||||||
|
|
||||||
def _prepare_check_resource(self):
|
def _prepare_resource(self, for_check=True):
|
||||||
snippet = template_format.parse(combination_alarm_template)
|
snippet = template_format.parse(combination_alarm_template)
|
||||||
self.stack = utils.parse_stack(snippet)
|
self.stack = utils.parse_stack(snippet)
|
||||||
res = self.stack['CombinAlarm']
|
res = self.stack['CombinAlarm']
|
||||||
|
if for_check:
|
||||||
|
res.state_set(res.CREATE, res.COMPLETE)
|
||||||
res.client = mock.Mock()
|
res.client = mock.Mock()
|
||||||
mock_alarm = mock.Mock(enabled=True, state='ok')
|
mock_alarm = mock.Mock(enabled=True, state='ok')
|
||||||
res.client().alarms.get.return_value = mock_alarm
|
res.client().alarms.get.return_value = mock_alarm
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def test_check(self):
|
def test_check(self):
|
||||||
res = self._prepare_check_resource()
|
res = self._prepare_resource()
|
||||||
scheduler.TaskRunner(res.check)()
|
scheduler.TaskRunner(res.check)()
|
||||||
self.assertEqual((res.CHECK, res.COMPLETE), res.state)
|
self.assertEqual((res.CHECK, res.COMPLETE), res.state)
|
||||||
|
|
||||||
def test_check_failure(self):
|
def test_check_failure(self):
|
||||||
res = self._prepare_check_resource()
|
res = self._prepare_resource()
|
||||||
res.client().alarms.get.side_effect = Exception('Boom')
|
res.client().alarms.get.side_effect = Exception('Boom')
|
||||||
|
|
||||||
self.assertRaises(exception.ResourceFailure,
|
self.assertRaises(exception.ResourceFailure,
|
||||||
@ -828,7 +832,7 @@ class CombinationAlarmTest(common.HeatTestCase):
|
|||||||
self.assertIn('Boom', res.status_reason)
|
self.assertIn('Boom', res.status_reason)
|
||||||
|
|
||||||
def test_show_resource(self):
|
def test_show_resource(self):
|
||||||
res = self._prepare_check_resource()
|
res = self._prepare_resource(for_check=False)
|
||||||
res.client().alarms.create.return_value = mock.MagicMock(
|
res.client().alarms.create.return_value = mock.MagicMock(
|
||||||
alarm_id='2')
|
alarm_id='2')
|
||||||
res.client().alarms.get.return_value = FakeCombinationAlarm()
|
res.client().alarms.get.return_value = FakeCombinationAlarm()
|
||||||
@ -898,22 +902,24 @@ class EventAlarmTest(common.HeatTestCase):
|
|||||||
self.assertEqual('12345', rsrc.handle_delete())
|
self.assertEqual('12345', rsrc.handle_delete())
|
||||||
self.assertEqual(1, self.fa.alarm.delete.call_count)
|
self.assertEqual(1, self.fa.alarm.delete.call_count)
|
||||||
|
|
||||||
def _prepare_check_resource(self):
|
def _prepare_resource(self, for_check=True):
|
||||||
snippet = template_format.parse(event_alarm_template)
|
snippet = template_format.parse(event_alarm_template)
|
||||||
self.stack = utils.parse_stack(snippet)
|
self.stack = utils.parse_stack(snippet)
|
||||||
res = self.stack['test_event_alarm']
|
res = self.stack['test_event_alarm']
|
||||||
|
if for_check:
|
||||||
|
res.state_set(res.CREATE, res.COMPLETE)
|
||||||
res.client = mock.Mock()
|
res.client = mock.Mock()
|
||||||
mock_alarm = mock.Mock(enabled=True, state='ok')
|
mock_alarm = mock.Mock(enabled=True, state='ok')
|
||||||
res.client().alarm.get.return_value = mock_alarm
|
res.client().alarm.get.return_value = mock_alarm
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def test_check(self):
|
def test_check(self):
|
||||||
res = self._prepare_check_resource()
|
res = self._prepare_resource()
|
||||||
scheduler.TaskRunner(res.check)()
|
scheduler.TaskRunner(res.check)()
|
||||||
self.assertEqual((res.CHECK, res.COMPLETE), res.state)
|
self.assertEqual((res.CHECK, res.COMPLETE), res.state)
|
||||||
|
|
||||||
def test_check_alarm_failure(self):
|
def test_check_alarm_failure(self):
|
||||||
res = self._prepare_check_resource()
|
res = self._prepare_resource()
|
||||||
res.client().alarm.get.side_effect = Exception('Boom')
|
res.client().alarm.get.side_effect = Exception('Boom')
|
||||||
|
|
||||||
self.assertRaises(exception.ResourceFailure,
|
self.assertRaises(exception.ResourceFailure,
|
||||||
@ -922,7 +928,7 @@ class EventAlarmTest(common.HeatTestCase):
|
|||||||
self.assertIn('Boom', res.status_reason)
|
self.assertIn('Boom', res.status_reason)
|
||||||
|
|
||||||
def test_show_resource(self):
|
def test_show_resource(self):
|
||||||
res = self._prepare_check_resource()
|
res = self._prepare_resource(for_check=False)
|
||||||
res.client().alarm.create.return_value = FakeAodhAlarm
|
res.client().alarm.create.return_value = FakeAodhAlarm
|
||||||
res.client().alarm.get.return_value = FakeAodhAlarm
|
res.client().alarm.get.return_value = FakeAodhAlarm
|
||||||
scheduler.TaskRunner(res.create)()
|
scheduler.TaskRunner(res.create)()
|
||||||
|
@ -160,10 +160,12 @@ class GnocchiResourcesAlarmTest(common.HeatTestCase):
|
|||||||
|
|
||||||
self.m.VerifyAll()
|
self.m.VerifyAll()
|
||||||
|
|
||||||
def _prepare_check_resource(self):
|
def _prepare_resource(self, for_check=True):
|
||||||
snippet = template_format.parse(gnocchi_resources_alarm_template)
|
snippet = template_format.parse(gnocchi_resources_alarm_template)
|
||||||
self.stack = utils.parse_stack(snippet)
|
self.stack = utils.parse_stack(snippet)
|
||||||
res = self.stack['GnoResAlarm']
|
res = self.stack['GnoResAlarm']
|
||||||
|
if for_check:
|
||||||
|
res.state_set(res.CREATE, res.COMPLETE)
|
||||||
res.client = mock.Mock()
|
res.client = mock.Mock()
|
||||||
mock_alarm = mock.Mock(enabled=True, state='ok')
|
mock_alarm = mock.Mock(enabled=True, state='ok')
|
||||||
res.client().alarm.get.return_value = mock_alarm
|
res.client().alarm.get.return_value = mock_alarm
|
||||||
@ -206,12 +208,12 @@ class GnocchiResourcesAlarmTest(common.HeatTestCase):
|
|||||||
self.m.VerifyAll()
|
self.m.VerifyAll()
|
||||||
|
|
||||||
def test_check(self):
|
def test_check(self):
|
||||||
res = self._prepare_check_resource()
|
res = self._prepare_resource()
|
||||||
scheduler.TaskRunner(res.check)()
|
scheduler.TaskRunner(res.check)()
|
||||||
self.assertEqual((res.CHECK, res.COMPLETE), res.state)
|
self.assertEqual((res.CHECK, res.COMPLETE), res.state)
|
||||||
|
|
||||||
def test_check_failure(self):
|
def test_check_failure(self):
|
||||||
res = self._prepare_check_resource()
|
res = self._prepare_resource()
|
||||||
res.client().alarm.get.side_effect = Exception('Boom')
|
res.client().alarm.get.side_effect = Exception('Boom')
|
||||||
|
|
||||||
self.assertRaises(exception.ResourceFailure,
|
self.assertRaises(exception.ResourceFailure,
|
||||||
@ -220,7 +222,7 @@ class GnocchiResourcesAlarmTest(common.HeatTestCase):
|
|||||||
self.assertIn('Boom', res.status_reason)
|
self.assertIn('Boom', res.status_reason)
|
||||||
|
|
||||||
def test_show_resource(self):
|
def test_show_resource(self):
|
||||||
res = self._prepare_check_resource()
|
res = self._prepare_resource(for_check=False)
|
||||||
res.client().alarm.create.return_value = FakeAodhAlarm
|
res.client().alarm.create.return_value = FakeAodhAlarm
|
||||||
res.client().alarm.get.return_value = FakeAodhAlarm
|
res.client().alarm.get.return_value = FakeAodhAlarm
|
||||||
scheduler.TaskRunner(res.create)()
|
scheduler.TaskRunner(res.create)()
|
||||||
@ -350,18 +352,20 @@ class GnocchiAggregationByMetricsAlarmTest(GnocchiResourcesAlarmTest):
|
|||||||
|
|
||||||
self.m.VerifyAll()
|
self.m.VerifyAll()
|
||||||
|
|
||||||
def _prepare_check_resource(self):
|
def _prepare_resource(self, for_check=True):
|
||||||
snippet = template_format.parse(
|
snippet = template_format.parse(
|
||||||
gnocchi_aggregation_by_metrics_alarm_template)
|
gnocchi_aggregation_by_metrics_alarm_template)
|
||||||
self.stack = utils.parse_stack(snippet)
|
self.stack = utils.parse_stack(snippet)
|
||||||
res = self.stack['GnoAggregationByMetricsAlarm']
|
res = self.stack['GnoAggregationByMetricsAlarm']
|
||||||
|
if for_check:
|
||||||
|
res.state_set(res.CREATE, res.COMPLETE)
|
||||||
res.client = mock.Mock()
|
res.client = mock.Mock()
|
||||||
mock_alarm = mock.Mock(enabled=True, state='ok')
|
mock_alarm = mock.Mock(enabled=True, state='ok')
|
||||||
res.client().alarm.get.return_value = mock_alarm
|
res.client().alarm.get.return_value = mock_alarm
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def test_show_resource(self):
|
def test_show_resource(self):
|
||||||
res = self._prepare_check_resource()
|
res = self._prepare_resource(for_check=False)
|
||||||
res.client().alarm.create.return_value = FakeAodhAlarm
|
res.client().alarm.create.return_value = FakeAodhAlarm
|
||||||
res.client().alarm.get.return_value = FakeAodhAlarm
|
res.client().alarm.get.return_value = FakeAodhAlarm
|
||||||
scheduler.TaskRunner(res.create)()
|
scheduler.TaskRunner(res.create)()
|
||||||
@ -492,18 +496,20 @@ class GnocchiAggregationByResourcesAlarmTest(GnocchiResourcesAlarmTest):
|
|||||||
|
|
||||||
self.m.VerifyAll()
|
self.m.VerifyAll()
|
||||||
|
|
||||||
def _prepare_check_resource(self):
|
def _prepare_resource(self, for_check=True):
|
||||||
snippet = template_format.parse(
|
snippet = template_format.parse(
|
||||||
gnocchi_aggregation_by_resources_alarm_template)
|
gnocchi_aggregation_by_resources_alarm_template)
|
||||||
self.stack = utils.parse_stack(snippet)
|
self.stack = utils.parse_stack(snippet)
|
||||||
res = self.stack['GnoAggregationByResourcesAlarm']
|
res = self.stack['GnoAggregationByResourcesAlarm']
|
||||||
|
if for_check:
|
||||||
|
res.state_set(res.CREATE, res.COMPLETE)
|
||||||
res.client = mock.Mock()
|
res.client = mock.Mock()
|
||||||
mock_alarm = mock.Mock(enabled=True, state='ok')
|
mock_alarm = mock.Mock(enabled=True, state='ok')
|
||||||
res.client().alarm.get.return_value = mock_alarm
|
res.client().alarm.get.return_value = mock_alarm
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def test_show_resource(self):
|
def test_show_resource(self):
|
||||||
res = self._prepare_check_resource()
|
res = self._prepare_resource(for_check=False)
|
||||||
res.client().alarm.create.return_value = FakeAodhAlarm
|
res.client().alarm.create.return_value = FakeAodhAlarm
|
||||||
res.client().alarm.get.return_value = FakeAodhAlarm
|
res.client().alarm.get.return_value = FakeAodhAlarm
|
||||||
scheduler.TaskRunner(res.create)()
|
scheduler.TaskRunner(res.create)()
|
||||||
|
@ -96,7 +96,9 @@ class CloudWatchAlarmTest(common.HeatTestCase):
|
|||||||
|
|
||||||
def _get_watch_rule(self):
|
def _get_watch_rule(self):
|
||||||
stack = self.parse_stack()
|
stack = self.parse_stack()
|
||||||
return stack['test_me']
|
res = stack['test_me']
|
||||||
|
res.state_set(res.CREATE, res.COMPLETE)
|
||||||
|
return res
|
||||||
|
|
||||||
@mock.patch.object(cloud_watch.watchrule.WatchRule, 'load')
|
@mock.patch.object(cloud_watch.watchrule.WatchRule, 'load')
|
||||||
def test_check(self, mock_lock):
|
def test_check(self, mock_lock):
|
||||||
|
@ -162,12 +162,14 @@ class NovaKeyPairTest(common.HeatTestCase):
|
|||||||
|
|
||||||
def test_check_key(self):
|
def test_check_key(self):
|
||||||
res = self._get_test_resource(self.kp_template)
|
res = self._get_test_resource(self.kp_template)
|
||||||
|
res.state_set(res.CREATE, res.COMPLETE, 'for test')
|
||||||
res.client = mock.Mock()
|
res.client = mock.Mock()
|
||||||
scheduler.TaskRunner(res.check)()
|
scheduler.TaskRunner(res.check)()
|
||||||
self.assertEqual((res.CHECK, res.COMPLETE), res.state)
|
self.assertEqual((res.CHECK, res.COMPLETE), res.state)
|
||||||
|
|
||||||
def test_check_key_fail(self):
|
def test_check_key_fail(self):
|
||||||
res = self._get_test_resource(self.kp_template)
|
res = self._get_test_resource(self.kp_template)
|
||||||
|
res.state_set(res.CREATE, res.COMPLETE, 'for test')
|
||||||
res.client = mock.Mock()
|
res.client = mock.Mock()
|
||||||
res.client().keypairs.get.side_effect = Exception("boom")
|
res.client().keypairs.get.side_effect = Exception("boom")
|
||||||
exc = self.assertRaises(exception.ResourceFailure,
|
exc = self.assertRaises(exception.ResourceFailure,
|
||||||
|
@ -267,6 +267,7 @@ class ServersTest(common.HeatTestCase):
|
|||||||
server = self.fc.servers.list()[1]
|
server = self.fc.servers.list()[1]
|
||||||
server.status = status
|
server.status = status
|
||||||
res = self.stack['WebServer']
|
res = self.stack['WebServer']
|
||||||
|
res.state_set(res.CREATE, res.COMPLETE)
|
||||||
res.client = mock.Mock()
|
res.client = mock.Mock()
|
||||||
res.client().servers.get.return_value = server
|
res.client().servers.get.return_value = server
|
||||||
return res
|
return res
|
||||||
|
@ -274,6 +274,7 @@ class InstanceTest(common.HeatTestCase):
|
|||||||
def _get_db_instance(self):
|
def _get_db_instance(self):
|
||||||
t = template_format.parse(db_template)
|
t = template_format.parse(db_template)
|
||||||
res = self._setup_test_instance('trove_check', t)
|
res = self._setup_test_instance('trove_check', t)
|
||||||
|
res.state_set(res.CREATE, res.COMPLETE)
|
||||||
res.flavor = 'Foo Flavor'
|
res.flavor = 'Foo Flavor'
|
||||||
res.volume = 'Foo Volume'
|
res.volume = 'Foo Volume'
|
||||||
res.datastore_type = 'Foo Type'
|
res.datastore_type = 'Foo Type'
|
||||||
|
@ -1320,10 +1320,18 @@ class ResourceTest(common.HeatTestCase):
|
|||||||
|
|
||||||
self.m.VerifyAll()
|
self.m.VerifyAll()
|
||||||
|
|
||||||
def test_check_supported(self):
|
def _mock_check_res(self, mock_check=True):
|
||||||
tmpl = rsrc_defn.ResourceDefinition('test_res', 'GenericResourceType')
|
tmpl = rsrc_defn.ResourceDefinition('test_res', 'GenericResourceType')
|
||||||
res = generic_rsrc.ResourceWithProps('test_res', tmpl, self.stack)
|
res = generic_rsrc.ResourceWithProps('test_res', tmpl, self.stack)
|
||||||
res.handle_check = mock.Mock()
|
res.state_set(res.CREATE, res.COMPLETE)
|
||||||
|
if mock_check:
|
||||||
|
res.handle_check = mock.Mock()
|
||||||
|
|
||||||
|
return res
|
||||||
|
|
||||||
|
def test_check_supported(self):
|
||||||
|
res = self._mock_check_res()
|
||||||
|
|
||||||
scheduler.TaskRunner(res.check)()
|
scheduler.TaskRunner(res.check)()
|
||||||
|
|
||||||
self.assertTrue(res.handle_check.called)
|
self.assertTrue(res.handle_check.called)
|
||||||
@ -1332,8 +1340,7 @@ class ResourceTest(common.HeatTestCase):
|
|||||||
self.assertNotIn('not supported', res.status_reason)
|
self.assertNotIn('not supported', res.status_reason)
|
||||||
|
|
||||||
def test_check_not_supported(self):
|
def test_check_not_supported(self):
|
||||||
tmpl = rsrc_defn.ResourceDefinition('test_res', 'GenericResourceType')
|
res = self._mock_check_res(mock_check=False)
|
||||||
res = generic_rsrc.ResourceWithProps('test_res', tmpl, self.stack)
|
|
||||||
scheduler.TaskRunner(res.check)()
|
scheduler.TaskRunner(res.check)()
|
||||||
|
|
||||||
self.assertIn('not supported', res.status_reason)
|
self.assertIn('not supported', res.status_reason)
|
||||||
@ -1341,9 +1348,7 @@ class ResourceTest(common.HeatTestCase):
|
|||||||
self.assertEqual(res.COMPLETE, res.status)
|
self.assertEqual(res.COMPLETE, res.status)
|
||||||
|
|
||||||
def test_check_failed(self):
|
def test_check_failed(self):
|
||||||
tmpl = rsrc_defn.ResourceDefinition('test_res', 'GenericResourceType')
|
res = self._mock_check_res()
|
||||||
res = generic_rsrc.ResourceWithProps('test_res', tmpl, self.stack)
|
|
||||||
res.handle_check = mock.Mock()
|
|
||||||
res.handle_check.side_effect = Exception('boom')
|
res.handle_check.side_effect = Exception('boom')
|
||||||
|
|
||||||
self.assertRaises(exception.ResourceFailure,
|
self.assertRaises(exception.ResourceFailure,
|
||||||
|
@ -922,6 +922,8 @@ class StackTest(common.HeatTestCase):
|
|||||||
|
|
||||||
def test_check_supported(self):
|
def test_check_supported(self):
|
||||||
stack1 = self._get_stack_to_check('check-supported')
|
stack1 = self._get_stack_to_check('check-supported')
|
||||||
|
stack1['A'].state_set(stack1['A'].CREATE, stack1['A'].COMPLETE)
|
||||||
|
stack1['B'].state_set(stack1['B'].CREATE, stack1['B'].COMPLETE)
|
||||||
stack1.check()
|
stack1.check()
|
||||||
|
|
||||||
self.assertEqual(stack1.COMPLETE, stack1.status)
|
self.assertEqual(stack1.COMPLETE, stack1.status)
|
||||||
@ -933,6 +935,7 @@ class StackTest(common.HeatTestCase):
|
|||||||
def test_check_not_supported(self):
|
def test_check_not_supported(self):
|
||||||
stack1 = self._get_stack_to_check('check-not-supported')
|
stack1 = self._get_stack_to_check('check-not-supported')
|
||||||
del stack1['B'].handle_check
|
del stack1['B'].handle_check
|
||||||
|
stack1['A'].state_set(stack1['A'].CREATE, stack1['A'].COMPLETE)
|
||||||
stack1.check()
|
stack1.check()
|
||||||
|
|
||||||
self.assertEqual(stack1.COMPLETE, stack1.status)
|
self.assertEqual(stack1.COMPLETE, stack1.status)
|
||||||
@ -942,8 +945,21 @@ class StackTest(common.HeatTestCase):
|
|||||||
|
|
||||||
def test_check_fail(self):
|
def test_check_fail(self):
|
||||||
stk = self._get_stack_to_check('check-fail')
|
stk = self._get_stack_to_check('check-fail')
|
||||||
|
# if resource not created, check fail
|
||||||
|
stk.check()
|
||||||
|
self.assertEqual(stk.FAILED, stk.status)
|
||||||
|
self.assertEqual(stk.CHECK, stk.action)
|
||||||
|
self.assertFalse(stk['A'].handle_check.called)
|
||||||
|
self.assertFalse(stk['B'].handle_check.called)
|
||||||
|
self.assertIn('Resource A not created yet',
|
||||||
|
stk.status_reason)
|
||||||
|
self.assertIn('Resource B not created yet',
|
||||||
|
stk.status_reason)
|
||||||
|
# check if resource created
|
||||||
stk['A'].handle_check.side_effect = Exception('fail-A')
|
stk['A'].handle_check.side_effect = Exception('fail-A')
|
||||||
stk['B'].handle_check.side_effect = Exception('fail-B')
|
stk['B'].handle_check.side_effect = Exception('fail-B')
|
||||||
|
stk['A'].state_set(stk['A'].CREATE, stk['A'].COMPLETE)
|
||||||
|
stk['B'].state_set(stk['B'].CREATE, stk['B'].COMPLETE)
|
||||||
stk.check()
|
stk.check()
|
||||||
|
|
||||||
self.assertEqual(stk.FAILED, stk.status)
|
self.assertEqual(stk.FAILED, stk.status)
|
||||||
|
Loading…
Reference in New Issue
Block a user