Merge "Source gnocchi alarms resources in the right way"
This commit is contained in:
@@ -16,6 +16,7 @@ import copy
|
||||
from ceilometerclient import exc as ceilometerclient_exc
|
||||
import mock
|
||||
import mox
|
||||
import six
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
@@ -25,7 +26,7 @@ from heat.engine import scheduler
|
||||
from heat.tests import common
|
||||
from heat.tests import utils
|
||||
|
||||
from ..resources import gnocchi_alarm # noqa
|
||||
from ..resources import gnocchi_alarm as gnocchi # noqa
|
||||
|
||||
gnocchi_resources_alarm_template = '''
|
||||
heat_template_version: 2013-05-23
|
||||
@@ -70,31 +71,18 @@ class FakeCeilometerAlarm(object):
|
||||
alarm_id = 'foo'
|
||||
|
||||
|
||||
class FakeCeilometerAlarms(object):
|
||||
def create(self, **kwargs):
|
||||
pass
|
||||
|
||||
def update(self, **kwargs):
|
||||
pass
|
||||
|
||||
def delete(self, alarm_id):
|
||||
pass
|
||||
|
||||
|
||||
class FakeCeilometerClient(object):
|
||||
alarms = FakeCeilometerAlarms()
|
||||
|
||||
|
||||
class GnocchiResourcesAlarmTest(common.HeatTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(GnocchiResourcesAlarmTest, self).setUp()
|
||||
self.fc = FakeCeilometerClient()
|
||||
resource._register_class("OS::Ceilometer::GnocchiResourcesAlarm",
|
||||
gnocchi_alarm.CeilometerGnocchiResourcesAlarm)
|
||||
self.m.StubOutWithMock(ceilometer.CeilometerClientPlugin, '_create')
|
||||
self.fc = mock.Mock()
|
||||
self._register_resources()
|
||||
|
||||
def _register_resources(self):
|
||||
for res_name, res_class in six.iteritems(gnocchi.resource_mapping()):
|
||||
resource._register_class(res_name, res_class)
|
||||
|
||||
def create_alarm(self):
|
||||
self.m.StubOutWithMock(ceilometer.CeilometerClientPlugin, '_create')
|
||||
ceilometer.CeilometerClientPlugin._create().AndReturn(
|
||||
self.fc)
|
||||
self.m.StubOutWithMock(self.fc.alarms, 'create')
|
||||
@@ -120,18 +108,9 @@ class GnocchiResourcesAlarmTest(common.HeatTestCase):
|
||||
snippet = template_format.parse(gnocchi_resources_alarm_template)
|
||||
stack = utils.parse_stack(snippet)
|
||||
resource_defns = stack.t.resource_definitions(stack)
|
||||
return gnocchi_alarm.CeilometerGnocchiResourcesAlarm(
|
||||
return gnocchi.CeilometerGnocchiResourcesAlarm(
|
||||
'GnoResAlarm', resource_defns['GnoResAlarm'], stack)
|
||||
|
||||
def test_create(self):
|
||||
rsrc = self.create_alarm()
|
||||
|
||||
self.m.ReplayAll()
|
||||
scheduler.TaskRunner(rsrc.create)()
|
||||
self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state)
|
||||
self.assertEqual('foo', rsrc.resource_id)
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_update(self):
|
||||
rsrc = self.create_alarm()
|
||||
self.m.StubOutWithMock(self.fc.alarms, 'update')
|
||||
@@ -151,6 +130,24 @@ class GnocchiResourcesAlarmTest(common.HeatTestCase):
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
def _prepare_check_resource(self):
|
||||
snippet = template_format.parse(gnocchi_resources_alarm_template)
|
||||
stack = utils.parse_stack(snippet)
|
||||
res = stack['GnoResAlarm']
|
||||
res.ceilometer = mock.Mock()
|
||||
mock_alarm = mock.Mock(enabled=True, state='ok')
|
||||
res.ceilometer().alarms.get.return_value = mock_alarm
|
||||
return res
|
||||
|
||||
def test_create(self):
|
||||
rsrc = self.create_alarm()
|
||||
|
||||
self.m.ReplayAll()
|
||||
scheduler.TaskRunner(rsrc.create)()
|
||||
self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state)
|
||||
self.assertEqual('foo', rsrc.resource_id)
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_suspend(self):
|
||||
rsrc = self.create_alarm()
|
||||
self.m.StubOutWithMock(self.fc.alarms, 'update')
|
||||
@@ -201,15 +198,6 @@ class GnocchiResourcesAlarmTest(common.HeatTestCase):
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
def _prepare_check_resource(self):
|
||||
snippet = template_format.parse(gnocchi_resources_alarm_template)
|
||||
stack = utils.parse_stack(snippet)
|
||||
res = stack['GnoResAlarm']
|
||||
res.ceilometer = mock.Mock()
|
||||
mock_alarm = mock.Mock(enabled=True, state='ok')
|
||||
res.ceilometer().alarms.get.return_value = mock_alarm
|
||||
return res
|
||||
|
||||
def test_check(self):
|
||||
res = self._prepare_check_resource()
|
||||
scheduler.TaskRunner(res.check)()
|
||||
@@ -225,16 +213,10 @@ class GnocchiResourcesAlarmTest(common.HeatTestCase):
|
||||
self.assertIn('Boom', res.status_reason)
|
||||
|
||||
|
||||
class GnocchiMetricsAlarmTest(common.HeatTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(GnocchiMetricsAlarmTest, self).setUp()
|
||||
self.fc = FakeCeilometerClient()
|
||||
resource._register_class("OS::Ceilometer::GnocchiMetricsAlarm",
|
||||
gnocchi_alarm.CeilometerGnocchiMetricsAlarm)
|
||||
self.m.StubOutWithMock(ceilometer.CeilometerClientPlugin, '_create')
|
||||
class GnocchiMetricsAlarmTest(GnocchiResourcesAlarmTest):
|
||||
|
||||
def create_alarm(self):
|
||||
self.m.StubOutWithMock(ceilometer.CeilometerClientPlugin, '_create')
|
||||
ceilometer.CeilometerClientPlugin._create().AndReturn(
|
||||
self.fc)
|
||||
self.m.StubOutWithMock(self.fc.alarms, 'create')
|
||||
@@ -259,18 +241,9 @@ class GnocchiMetricsAlarmTest(common.HeatTestCase):
|
||||
snippet = template_format.parse(gnocchi_metrics_alarm_template)
|
||||
stack = utils.parse_stack(snippet)
|
||||
resource_defns = stack.t.resource_definitions(stack)
|
||||
return gnocchi_alarm.CeilometerGnocchiMetricsAlarm(
|
||||
return gnocchi.CeilometerGnocchiMetricsAlarm(
|
||||
'GnoMetricsAlarm', resource_defns['GnoMetricsAlarm'], stack)
|
||||
|
||||
def test_create(self):
|
||||
rsrc = self.create_alarm()
|
||||
|
||||
self.m.ReplayAll()
|
||||
scheduler.TaskRunner(rsrc.create)()
|
||||
self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state)
|
||||
self.assertEqual('foo', rsrc.resource_id)
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_update(self):
|
||||
rsrc = self.create_alarm()
|
||||
self.m.StubOutWithMock(self.fc.alarms, 'update')
|
||||
@@ -292,56 +265,6 @@ class GnocchiMetricsAlarmTest(common.HeatTestCase):
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_suspend(self):
|
||||
rsrc = self.create_alarm()
|
||||
self.m.StubOutWithMock(self.fc.alarms, 'update')
|
||||
self.fc.alarms.update(alarm_id='foo', enabled=False)
|
||||
|
||||
self.m.ReplayAll()
|
||||
scheduler.TaskRunner(rsrc.create)()
|
||||
|
||||
scheduler.TaskRunner(rsrc.suspend)()
|
||||
self.assertEqual((rsrc.SUSPEND, rsrc.COMPLETE), rsrc.state)
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_resume(self):
|
||||
rsrc = self.create_alarm()
|
||||
self.m.StubOutWithMock(self.fc.alarms, 'update')
|
||||
self.fc.alarms.update(alarm_id='foo', enabled=True)
|
||||
|
||||
self.m.ReplayAll()
|
||||
scheduler.TaskRunner(rsrc.create)()
|
||||
rsrc.state_set(rsrc.SUSPEND, rsrc.COMPLETE)
|
||||
|
||||
scheduler.TaskRunner(rsrc.resume)()
|
||||
self.assertEqual((rsrc.RESUME, rsrc.COMPLETE), rsrc.state)
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_delete(self):
|
||||
rsrc = self.create_alarm()
|
||||
self.m.StubOutWithMock(self.fc.alarms, 'delete')
|
||||
self.fc.alarms.delete('foo')
|
||||
self.m.ReplayAll()
|
||||
scheduler.TaskRunner(rsrc.create)()
|
||||
scheduler.TaskRunner(rsrc.delete)()
|
||||
self.assertEqual((rsrc.DELETE, rsrc.COMPLETE), rsrc.state)
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_delete_not_found(self):
|
||||
rsrc = self.create_alarm()
|
||||
self.m.StubOutWithMock(self.fc.alarms, 'delete')
|
||||
self.fc.alarms.delete('foo').AndRaise(
|
||||
ceilometerclient_exc.HTTPNotFound())
|
||||
self.m.ReplayAll()
|
||||
scheduler.TaskRunner(rsrc.create)()
|
||||
scheduler.TaskRunner(rsrc.delete)()
|
||||
self.assertEqual((rsrc.DELETE, rsrc.COMPLETE), rsrc.state)
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
def _prepare_check_resource(self):
|
||||
snippet = template_format.parse(gnocchi_metrics_alarm_template)
|
||||
stack = utils.parse_stack(snippet)
|
||||
@@ -350,17 +273,3 @@ class GnocchiMetricsAlarmTest(common.HeatTestCase):
|
||||
mock_alarm = mock.Mock(enabled=True, state='ok')
|
||||
res.ceilometer().alarms.get.return_value = mock_alarm
|
||||
return res
|
||||
|
||||
def test_check(self):
|
||||
res = self._prepare_check_resource()
|
||||
scheduler.TaskRunner(res.check)()
|
||||
self.assertEqual((res.CHECK, res.COMPLETE), res.state)
|
||||
|
||||
def test_check_failure(self):
|
||||
res = self._prepare_check_resource()
|
||||
res.ceilometer().alarms.get.side_effect = Exception('Boom')
|
||||
|
||||
self.assertRaises(exception.ResourceFailure,
|
||||
scheduler.TaskRunner(res.check))
|
||||
self.assertEqual((res.CHECK, res.FAILED), res.state)
|
||||
self.assertIn('Boom', res.status_reason)
|
||||
|
||||
@@ -111,21 +111,6 @@ class FakeCeilometerAlarm(object):
|
||||
alarm_id = 'foo'
|
||||
|
||||
|
||||
class FakeCeilometerAlarms(object):
|
||||
def create(self, **kwargs):
|
||||
pass
|
||||
|
||||
def update(self, **kwargs):
|
||||
pass
|
||||
|
||||
def delete(self, alarm_id):
|
||||
pass
|
||||
|
||||
|
||||
class FakeCeilometerClient(object):
|
||||
alarms = FakeCeilometerAlarms()
|
||||
|
||||
|
||||
class CeilometerAlarmTest(common.HeatTestCase):
|
||||
def setUp(self):
|
||||
super(CeilometerAlarmTest, self).setUp()
|
||||
@@ -137,7 +122,7 @@ class CeilometerAlarmTest(common.HeatTestCase):
|
||||
'http://server.test:8000/v1/waitcondition')
|
||||
|
||||
self.stub_keystoneclient()
|
||||
self.fa = FakeCeilometerClient()
|
||||
self.fa = mock.Mock()
|
||||
|
||||
def create_stack(self, template=None):
|
||||
if template is None:
|
||||
@@ -493,7 +478,7 @@ class CombinationAlarmTest(common.HeatTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(CombinationAlarmTest, self).setUp()
|
||||
self.fc = FakeCeilometerClient()
|
||||
self.fc = mock.Mock()
|
||||
self.m.StubOutWithMock(ceilometer.CeilometerClientPlugin, '_create')
|
||||
|
||||
def create_alarm(self):
|
||||
|
||||
Reference in New Issue
Block a user