summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-09-30 13:43:35 +0000
committerGerrit Code Review <review@openstack.org>2015-09-30 13:43:35 +0000
commit37869c4be41db1de4f3fef5d70342ea66bf5954d (patch)
tree1309afcedbd6b13a14f1323b352e1cf9103f76c4
parent10305c0eeba67c0605857d426aedde883996d408 (diff)
parent850ce95a2dea5cab9dd9f9bb68f68794fb5db600 (diff)
downloadceilometer-37869c4be41db1de4f3fef5d70342ea66bf5954d.tar.gz
Merge "fix command ceilometer event-list -q error" into stable/kilo
-rw-r--r--ceilometer/storage/mongo/utils.py22
-rw-r--r--ceilometer/tests/storage/test_storage_scenarios.py3
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)]