diff --git a/ceilosca/ceilometer/storage/impl_monasca.py b/ceilosca/ceilometer/storage/impl_monasca.py index 6738a83..af8d565 100644 --- a/ceilosca/ceilometer/storage/impl_monasca.py +++ b/ceilosca/ceilometer/storage/impl_monasca.py @@ -209,17 +209,20 @@ class Connection(base.Connection): _search_args = dict( start_time=start_timestamp, - end_time=end_timestamp, - limit=1) + end_time=end_timestamp + ) _search_args = {k: v for k, v in _search_args.items() if v is not None} result_count = 0 + _search_args_metric = _search_args + _search_args_metric['dimensions'] = dims_filter for metric in self.mc.metrics_list( - **dict(dimensions=dims_filter)): + **_search_args_metric): _search_args['name'] = metric['name'] _search_args['dimensions'] = metric['dimensions'] + _search_args['limit'] = 1 try: for sample in self.mc.measurements_list(**_search_args): d = sample['dimensions'] @@ -369,9 +372,6 @@ class Connection(base.Connection): _dimensions = {k: v for k, v in _dimensions.items() if v is not None} - _metric_args = dict(name=sample_filter.meter, - dimensions=_dimensions) - start_ts = timeutils.isotime(sample_filter.start_timestamp) end_ts = timeutils.isotime(sample_filter.end_timestamp) @@ -380,14 +380,17 @@ class Connection(base.Connection): start_timestamp_op=sample_filter.start_timestamp_op, end_time=end_ts, end_timestamp_op=sample_filter.end_timestamp_op, - merge_metrics=False ) result_count = 0 + _search_args_metrics = _search_args + _search_args_metrics['dimensions'] = _dimensions + _search_args_metrics['name'] = sample_filter.meter for metric in self.mc.metrics_list( - **_metric_args): + **_search_args_metrics): _search_args['name'] = metric['name'] _search_args['dimensions'] = metric['dimensions'] + _search_args['merge_metrics'] = False _search_args = {k: v for k, v in _search_args.items() if v is not None} diff --git a/ceilosca/ceilometer/tests/unit/storage/test_impl_monasca.py b/ceilosca/ceilometer/tests/unit/storage/test_impl_monasca.py index 0711b12..8d48101 100644 --- a/ceilosca/ceilometer/tests/unit/storage/test_impl_monasca.py +++ b/ceilosca/ceilometer/tests/unit/storage/test_impl_monasca.py @@ -58,6 +58,7 @@ class TestGetResources(base.BaseTestCase): def test_dims_filter(self, mdf_patch): with mock.patch("ceilometer.monasca_client.Client") as mock_client: conn = impl_monasca.Connection("127.0.0.1:8080") + start_timestamp = timeutils.isotime(datetime.datetime(1970, 1, 1)) mnl_mock = mock_client().metrics_list mnl_mock.return_value = [ { @@ -68,7 +69,8 @@ class TestGetResources(base.BaseTestCase): kwargs = dict(project='proj1') list(conn.get_resources(**kwargs)) self.assertEqual(True, mnl_mock.called) - self.assertEqual(dict(dimensions=dict(project_id='proj1')), + self.assertEqual(dict(dimensions=dict( + project_id='proj1'), start_time=start_timestamp), mnl_mock.call_args[1]) self.assertEqual(1, mnl_mock.call_count)