18
18
from oslo_utils import timeutils
20
20
from heat.common import exception
21
from heat.engine import parser
21
from heat.engine import stack
22
22
from heat.engine import template
23
23
from heat.engine import watchrule
24
24
from heat.objects import watch_rule
50
50
empty_tmpl = {'HeatTemplateFormatVersion': '2012-12-12'}
51
51
tmpl = template.Template(empty_tmpl)
52
52
stack_name = 'dummystack'
53
dummy_stack = parser.Stack(ctx, stack_name, tmpl)
53
dummy_stack = stack.Stack(ctx, stack_name, tmpl)
54
54
dummy_stack.state_set(dummy_stack.CREATE, dummy_stack.COMPLETE,
56
56
dummy_stack.store()
75
75
if action_expected:
76
76
dummy_action = DummyAction()
77
self.m.StubOutWithMock(parser.Stack, 'resource_by_refid')
78
parser.Stack.resource_by_refid(
77
self.m.StubOutWithMock(stack.Stack, 'resource_by_refid')
78
stack.Stack.resource_by_refid(
79
79
mox.IgnoreArg()).MultipleTimes().AndReturn(dummy_action)
605
605
self.assertEqual(['DummyAction'], actions)
606
606
self.m.VerifyAll()
608
def test_to_ceilometer(self):
610
rule = {u'EvaluationPeriods': u'1',
611
u'AlarmDescription': u'test alarm',
613
u'ComparisonOperator': u'GreaterThanThreshold',
614
u'Statistic': u'SampleCount',
616
u'MetricName': u'CreateDataMetric'}
617
testdata = {u'CreateDataMetric': {"Unit": "Counter", "Value": "1"}}
619
sample['counter_type'] = 'gauge'
621
for k, d in iter(testdata.items()):
624
sample['counter_name'] = k
625
sample['counter_volume'] = d['Value']
626
sample['counter_unit'] = d['Unit']
627
dims = d.get('Dimensions', {})
628
if isinstance(dims, list):
630
sample['resource_metadata'] = dims
631
sample['resource_id'] = dims.get('InstanceId')
633
self.wr = watchrule.WatchRule(context=self.ctx,
634
watch_name='create_data_test',
635
stack_id=self.stack_id, rule=rule)
638
self.m.StubOutWithMock(self.wr.context.clients.client('ceilometer').
639
samples, 'create', True)
641
# fake samples.create callback
642
def fake_create(counter_type, counter_name, counter_volume,
643
counter_unit, resource_metadata, resource_id):
646
self.wr.context.clients.client('ceilometer').samples.\
647
create(**sample).MultipleTimes().WithSideEffects(fake_create)
650
self.wr._to_ceilometer(testdata)
651
except mox.UnexpectedMethodCallError:
652
raise KeyError("Error input parameter")
608
654
def test_create_watch_data(self):
609
655
rule = {u'EvaluationPeriods': u'1',
610
656
u'AlarmDescription': u'test alarm',