diff --git a/heat/engine/watchrule.py b/heat/engine/watchrule.py index d7745a19c..b4db6ead4 100644 --- a/heat/engine/watchrule.py +++ b/heat/engine/watchrule.py @@ -280,14 +280,14 @@ class WatchRule(object): def _to_ceilometer(self, data): clients = self.context.clients sample = {} - sample['meter_type'] = 'gauge' + sample['counter_type'] = 'gauge' for k, d in iter(data.items()): if k == 'Namespace': continue - sample['meter_name'] = k - sample['sample_volume'] = d['Value'] - sample['meter_unit'] = d['Unit'] + sample['counter_name'] = k + sample['counter_volume'] = d['Value'] + sample['counter_unit'] = d['Unit'] dims = d.get('Dimensions', {}) if isinstance(dims, list): dims = dims[0] diff --git a/heat/tests/test_watch.py b/heat/tests/test_watch.py index 57ee8121c..9ddf416a2 100644 --- a/heat/tests/test_watch.py +++ b/heat/tests/test_watch.py @@ -605,6 +605,52 @@ class WatchRuleTest(common.HeatTestCase): self.assertEqual(['DummyAction'], actions) self.m.VerifyAll() + def test_to_ceilometer(self): + + rule = {u'EvaluationPeriods': u'1', + u'AlarmDescription': u'test alarm', + u'Period': u'300', + u'ComparisonOperator': u'GreaterThanThreshold', + u'Statistic': u'SampleCount', + u'Threshold': u'2', + u'MetricName': u'CreateDataMetric'} + testdata = {u'CreateDataMetric': {"Unit": "Counter", "Value": "1"}} + sample = dict() + sample['counter_type'] = 'gauge' + + for k, d in iter(testdata.items()): + if k == 'Namespace': + continue + sample['counter_name'] = k + sample['counter_volume'] = d['Value'] + sample['counter_unit'] = d['Unit'] + dims = d.get('Dimensions', {}) + if isinstance(dims, list): + dims = dims[0] + sample['resource_metadata'] = dims + sample['resource_id'] = dims.get('InstanceId') + + self.wr = watchrule.WatchRule(context=self.ctx, + watch_name='create_data_test', + stack_id=self.stack_id, rule=rule) + self.wr.store() + + self.m.StubOutWithMock(self.wr.context.clients.client('ceilometer'). + samples, 'create', True) + + # fake samples.create callback + def fake_create(counter_type, counter_name, counter_volume, + counter_unit, resource_metadata, resource_id): + pass + + self.wr.context.clients.client('ceilometer').samples.\ + create(**sample).MultipleTimes().WithSideEffects(fake_create) + self.m.ReplayAll() + try: + self.wr._to_ceilometer(testdata) + except mox.UnexpectedMethodCallError: + raise KeyError("Error input parameter") + def test_create_watch_data(self): rule = {u'EvaluationPeriods': u'1', u'AlarmDescription': u'test alarm',