diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-09-30 13:43:35 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-09-30 13:43:35 +0000 |
commit | 37869c4be41db1de4f3fef5d70342ea66bf5954d (patch) | |
tree | 1309afcedbd6b13a14f1323b352e1cf9103f76c4 | |
parent | 10305c0eeba67c0605857d426aedde883996d408 (diff) | |
parent | 850ce95a2dea5cab9dd9f9bb68f68794fb5db600 (diff) | |
download | ceilometer-37869c4be41db1de4f3fef5d70342ea66bf5954d.tar.gz |
Merge "fix command ceilometer event-list -q error" into stable/kilo
-rw-r--r-- | ceilometer/storage/mongo/utils.py | 22 | ||||
-rw-r--r-- | ceilometer/tests/storage/test_storage_scenarios.py | 3 |
2 files changed, 11 insertions, 14 deletions
diff --git a/ceilometer/storage/mongo/utils.py b/ceilometer/storage/mongo/utils.py index efc09064..cbd8af95 100644 --- a/ceilometer/storage/mongo/utils.py +++ b/ceilometer/storage/mongo/utils.py @@ -73,18 +73,18 @@ def make_events_query_from_filter(event_filter): :param event_filter: storage.EventFilter object. """ - q = {} + query = {} + q_list = [] ts_range = make_timestamp_range(event_filter.start_timestamp, event_filter.end_timestamp) if ts_range: - q['timestamp'] = ts_range + q_list.append({'timestamp': ts_range}) if event_filter.event_type: - q['event_type'] = event_filter.event_type + q_list.append({'event_type': event_filter.event_type}) if event_filter.message_id: - q['_id'] = event_filter.message_id + q_list.append({'_id': event_filter.message_id}) if event_filter.traits_filter: - q.setdefault('traits') for trait_filter in event_filter.traits_filter: op = trait_filter.pop('op', 'eq') dict_query = {} @@ -101,14 +101,10 @@ def make_events_query_from_filter(event_filter): v if op == 'eq' else {OP_SIGN[op]: v}) dict_query = {'$elemMatch': dict_query} - if q['traits'] is None: - q['traits'] = dict_query - elif q.get('$and') is None: - q.setdefault('$and', [{'traits': q.pop('traits')}, - {'traits': dict_query}]) - else: - q['$and'].append({'traits': dict_query}) - return q + q_list.append({'traits': dict_query}) + if q_list: + query = {'$and': q_list} + return query def make_query_from_filter(sample_filter, require_meter=True): diff --git a/ceilometer/tests/storage/test_storage_scenarios.py b/ceilometer/tests/storage/test_storage_scenarios.py index b7cae213..0ce75770 100644 --- a/ceilometer/tests/storage/test_storage_scenarios.py +++ b/ceilometer/tests/storage/test_storage_scenarios.py @@ -3522,7 +3522,8 @@ class GetEventTest(EventTestBase): def test_get_event_multiple_trait_filter(self): trait_filters = [{'key': 'trait_B', 'integer': 1}, - {'key': 'trait_A', 'string': 'my_Foo_text'}] + {'key': 'trait_A', 'string': 'my_Foo_text'}, + {'key': 'trait_C', 'float': 0.123456}] event_filter = storage.EventFilter(self.start, self.end, traits_filter=trait_filters) events = [event for event in self.event_conn.get_events(event_filter)] |