)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"cd8d52f91e40bdefb0e214d067e5a47526733074","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Support query \u0027counter_volume\u0027 field with comparison operators:[ge,"},{"line_number":10,"context_line":"gt, le, lt]."},{"line_number":11,"context_line":"It is implemented in sqlalchemy and mongodb driver."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I340eee5d601ea3df78d7e80f7eb490fe092eec84"},{"line_number":14,"context_line":"Closes-Bug: #1202569"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAUX%2F%2FcAU%3D","line":11,"updated":"2014-02-13 08:00:47.000000000","message":"nit: you have done the db2 driver too :)","commit_id":"8a92226db03b74b1a0de0306ff93857c50156f79"}],"ceilometer/api/controllers/v2.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"79c20aff09ef884d874eb56405ab3cff07a1d647","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                volume[\u0027start_volume_op\u0027] \u003d i.op"},{"line_number":430,"context_line":"            elif i.op in (\u0027eq\u0027, \u0027ne\u0027):"},{"line_number":431,"context_line":"                volume[\u0027exact_volume\u0027] \u003d i.value"},{"line_number":432,"context_line":"                volume[\u0027exact_volume_op\u0027] \u003d i.op"},{"line_number":433,"context_line":"        else:"},{"line_number":434,"context_line":"            if i.op \u003d\u003d \u0027eq\u0027:"},{"line_number":435,"context_line":"                if i.field \u003d\u003d \u0027search_offset\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2Bmok%3D","line":432,"updated":"2014-01-23 23:20:07.000000000","message":"do we need exact_volume attribute? can we use the fact that eq and ne are essentially just a \"vol \u003e\u003d x and vol \u003c\u003dx\" and \"vol \u003e x and vol \u003c x\"... maybe if we see a eq/ne just set the end/start values accordingly?","commit_id":"ae6b1fe6940cc79192c29e5ddf8d9620a866397d"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"4ea3a141169cf5a6c3fa5215a58cdf2e5cda7b2d","unresolved":false,"context_lines":[{"line_number":431,"context_line":"                volume[\u0027start_volume_op\u0027] \u003d i.op"},{"line_number":432,"context_line":"            elif i.op in (\u0027eq\u0027, \u0027ne\u0027):"},{"line_number":433,"context_line":"                volume[\u0027exact_volume\u0027] \u003d i.value"},{"line_number":434,"context_line":"                volume[\u0027exact_volume_op\u0027] \u003d i.op"},{"line_number":435,"context_line":"        else:"},{"line_number":436,"context_line":"            if i.op \u003d\u003d \u0027eq\u0027:"},{"line_number":437,"context_line":"                if i.field \u003d\u003d \u0027search_offset\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BYn0%3D","line":434,"updated":"2014-01-27 14:08:06.000000000","message":"reposting previous comment: do we need exact_volume attribute? can we use the fact that eq and ne are essentially just a \"vol \u003e\u003d x and vol \u003c\u003dx\" and \"vol \u003e x and vol \u003c x\"... maybe if we see a eq/ne just set the end/start values accordingly?","commit_id":"8aebea30e7f4ac9163248e0a07e75a6afdbf65a2"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"e1c5fbe2b39ff989f6c5c83d72c59aec9c298dd1","unresolved":false,"context_lines":[{"line_number":408,"context_line":"                f_config[\u0027_map\u0027][f_config[\u0027l_oper\u0027][\u0027op_key\u0027]] \u003d i.op"},{"line_number":409,"context_line":"            elif i.op in f_config[\u0027g_oper\u0027][\u0027keys\u0027]:"},{"line_number":410,"context_line":"                f_config[\u0027_map\u0027][f_config[\u0027g_oper\u0027][\u0027val_key\u0027]] \u003d i.value"},{"line_number":411,"context_line":"                f_config[\u0027_map\u0027][f_config[\u0027g_oper\u0027][\u0027op_key\u0027]] \u003d i.op"},{"line_number":412,"context_line":"        else:"},{"line_number":413,"context_line":"            if i.op \u003d\u003d \u0027eq\u0027:"},{"line_number":414,"context_line":"                if i.field \u003d\u003d \u0027search_offset\u0027:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUX%2F%2BjzI%3D","line":411,"updated":"2014-02-20 14:30:26.000000000","message":"this was confusing... but pretty clever after reading it.","commit_id":"5435f63bb7d19e2de3e95543c58669fb78a911e7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"0b0ae60e59274dcf7f7b37d6cf784e35a4c02315","unresolved":false,"context_lines":[{"line_number":462,"context_line":"            kwargs[\u0027start_volume_op\u0027] \u003d volume[\u0027start_volume_op\u0027]"},{"line_number":463,"context_line":"        if \u0027end_volume_op\u0027 in volume:"},{"line_number":464,"context_line":"            kwargs[\u0027end_volume\u0027] \u003d float(volume[\u0027end_volume\u0027])"},{"line_number":465,"context_line":"            kwargs[\u0027end_volume_op\u0027] \u003d volume[\u0027end_volume_op\u0027]"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    return kwargs"},{"line_number":468,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUX%2F%2BWaA%3D","line":465,"updated":"2014-02-21 17:40:02.000000000","message":"It wasn\u0027t immediately clear to me start the start_ and end_ prefixes were connoting.\n\nTo make it clearer that the intent is a bracketing effect, would lower_ and upper_ be better?\n\nWhereas start_ and end_ are more natural prefixes when related to time as opposed to volume.","commit_id":"69116f8c1fac60bd3de33b5508fa9c5abc2d385b"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"87522b68f133d5a256056a9c04131f9c153d53b5","unresolved":false,"context_lines":[{"line_number":345,"context_line":"    def _contain_valid_keys(key_set):"},{"line_number":346,"context_line":"        return set(valid_keys).intersection(key_set) is not None"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    is_volume_valid \u003d _contain_valid_keys(set([\u0027lower_volume\u0027]))"},{"line_number":349,"context_line":"    _validate_fields(query, \u0027counter_volume\u0027, (\u0027lt\u0027, \u0027le\u0027, \u0027gt\u0027, \u0027ge\u0027),"},{"line_number":350,"context_line":"                     is_volume_valid)"},{"line_number":351,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2Fdfg%3D","line":348,"updated":"2014-02-26 14:01:12.000000000","message":"i might have missed this originally... does this mean if we only specific a upper volume this won\u0027t work?","commit_id":"3cd8d2b958bc4b6da950c0f8288e287a2dd6f3ac"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"08c9f4e35813283ff4d7bda00f574acb77c5fb13","unresolved":false,"context_lines":[{"line_number":408,"context_line":"                                            i.field)"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"def _validate_fields(query, field_name, operator_list, is_valid):"},{"line_number":412,"context_line":"    for item in query:"},{"line_number":413,"context_line":"        if item.field \u003d\u003d field_name:"},{"line_number":414,"context_line":"            #If the field was specified in the query, but it is not supported"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2B6M4%3D","line":411,"updated":"2014-03-11 12:34:23.000000000","message":"Please modify the doc string instead of removing it.","commit_id":"d8932da030a5a08455183b534e0972feb6a73c83"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"08ef77f7a6c406292a5b82b68662a5cd12b576d5","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        raise wsme.exc.InvalidInput(\u0027field\u0027, \u0027search_offset\u0027,"},{"line_number":378,"context_line":"                                    \"search_offset cannot be used without \" +"},{"line_number":379,"context_line":"                                    \"timestamp\")"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    def _contain_valid_keys(key_set):"},{"line_number":382,"context_line":"        return set(valid_keys).intersection(key_set) is not None"},{"line_number":383,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAWH%2F%2Ftds%3D","line":380,"updated":"2014-03-14 10:10:59.000000000","message":"if valid_keys is {a,b,c} and key_set {c, d, e} their intersection is not None. I suspect it\u0027s wrong behaviour. Please correct me if I\u0027m wrong","commit_id":"5f4faf1fb284160c1937a26b593db5ac70e8593e"},{"author":{"_account_id":9684,"name":"Jia Dong","email":"joey5566@yeah.net","username":"joey5678"},"change_message_id":"0153cea835069428cf3c3baea6c62371e7165805","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        raise wsme.exc.InvalidInput(\u0027field\u0027, \u0027search_offset\u0027,"},{"line_number":378,"context_line":"                                    \"search_offset cannot be used without \" +"},{"line_number":379,"context_line":"                                    \"timestamp\")"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    def _contain_valid_keys(key_set):"},{"line_number":382,"context_line":"        return set(valid_keys).intersection(key_set) is not None"},{"line_number":383,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAWH%2F%2FnIc%3D","line":380,"in_reply_to":"AAAAWH%2F%2Ftds%3D","updated":"2014-03-15 04:13:42.000000000","message":"Nadya, you are right, I was confused in logic.","commit_id":"5f4faf1fb284160c1937a26b593db5ac70e8593e"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"08ef77f7a6c406292a5b82b68662a5cd12b576d5","unresolved":false,"context_lines":[{"line_number":408,"context_line":"                                            i.field)"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"def _validate_fields(query, field_name, operator_list, is_valid):"},{"line_number":412,"context_line":"    \"\"\"Validates the constraints of the field which be with some operator like"},{"line_number":413,"context_line":"    \u0027ge\u0027, \u0027gt\u0027, \u0027lt\u0027, \u0027le\u0027 in a query expression, if there are any."},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAWH%2F%2Ftmo%3D","line":411,"updated":"2014-03-14 10:10:59.000000000","message":"Please change the description, make it more simple like follows:\n\nValidates the constraints of the field which are defined by operator list (e.g. [\u0027ge\u0027, \u0027gt\u0027, \u0027lt\u0027, \u0027le\u0027]). Constrains may not exist in query.","commit_id":"5f4faf1fb284160c1937a26b593db5ac70e8593e"},{"author":{"_account_id":9684,"name":"Jia Dong","email":"joey5566@yeah.net","username":"joey5678"},"change_message_id":"0153cea835069428cf3c3baea6c62371e7165805","unresolved":false,"context_lines":[{"line_number":408,"context_line":"                                            i.field)"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"def _validate_fields(query, field_name, operator_list, is_valid):"},{"line_number":412,"context_line":"    \"\"\"Validates the constraints of the field which be with some operator like"},{"line_number":413,"context_line":"    \u0027ge\u0027, \u0027gt\u0027, \u0027lt\u0027, \u0027le\u0027 in a query expression, if there are any."},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAWH%2F%2FnIY%3D","line":411,"in_reply_to":"AAAAWH%2F%2Ftmo%3D","updated":"2014-03-15 04:13:42.000000000","message":"Done","commit_id":"5f4faf1fb284160c1937a26b593db5ac70e8593e"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"08ef77f7a6c406292a5b82b68662a5cd12b576d5","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        if \u0027start_timestamp_op\u0027 in stamp:"},{"line_number":516,"context_line":"            kwargs[\u0027start_timestamp_op\u0027] \u003d stamp[\u0027start_timestamp_op\u0027]"},{"line_number":517,"context_line":"        if \u0027end_timestamp_op\u0027 in stamp:"},{"line_number":518,"context_line":"            kwargs[\u0027end_timestamp_op\u0027] \u003d stamp[\u0027end_timestamp_op\u0027]"},{"line_number":519,"context_line":"    if volume and \"lower_volume\" in valid_keys:"},{"line_number":520,"context_line":"        if \u0027lower_volume_op\u0027 in volume:"},{"line_number":521,"context_line":"            kwargs[\u0027lower_volume\u0027] \u003d float(volume[\u0027lower_volume\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAWH%2F%2FtbU%3D","line":518,"updated":"2014-03-14 10:10:59.000000000","message":"So we cannot set \u0027upper_volume\u0027 without \u0027lower_volume\u0027? Gordon\u0027s question from previous patches :)","commit_id":"5f4faf1fb284160c1937a26b593db5ac70e8593e"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"f4ed74eb626f5abbb785e021636358f33ccbfb45","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        if \u0027start_timestamp_op\u0027 in stamp:"},{"line_number":516,"context_line":"            kwargs[\u0027start_timestamp_op\u0027] \u003d stamp[\u0027start_timestamp_op\u0027]"},{"line_number":517,"context_line":"        if \u0027end_timestamp_op\u0027 in stamp:"},{"line_number":518,"context_line":"            kwargs[\u0027end_timestamp_op\u0027] \u003d stamp[\u0027end_timestamp_op\u0027]"},{"line_number":519,"context_line":"    if volume and \"lower_volume\" in valid_keys:"},{"line_number":520,"context_line":"        if \u0027lower_volume_op\u0027 in volume:"},{"line_number":521,"context_line":"            kwargs[\u0027lower_volume\u0027] \u003d float(volume[\u0027lower_volume\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAWH%2F%2Fmq8%3D","line":518,"in_reply_to":"AAAAWH%2F%2FnH4%3D","updated":"2014-03-15 07:59:26.000000000","message":"I both are ok then this conditions need to be rewritten. the outer one will not be satisfied if we have only \u0027upper_volume\u0027 set.","commit_id":"5f4faf1fb284160c1937a26b593db5ac70e8593e"},{"author":{"_account_id":9684,"name":"Jia Dong","email":"joey5566@yeah.net","username":"joey5678"},"change_message_id":"0153cea835069428cf3c3baea6c62371e7165805","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        if \u0027start_timestamp_op\u0027 in stamp:"},{"line_number":516,"context_line":"            kwargs[\u0027start_timestamp_op\u0027] \u003d stamp[\u0027start_timestamp_op\u0027]"},{"line_number":517,"context_line":"        if \u0027end_timestamp_op\u0027 in stamp:"},{"line_number":518,"context_line":"            kwargs[\u0027end_timestamp_op\u0027] \u003d stamp[\u0027end_timestamp_op\u0027]"},{"line_number":519,"context_line":"    if volume and \"lower_volume\" in valid_keys:"},{"line_number":520,"context_line":"        if \u0027lower_volume_op\u0027 in volume:"},{"line_number":521,"context_line":"            kwargs[\u0027lower_volume\u0027] \u003d float(volume[\u0027lower_volume\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAWH%2F%2FnH4%3D","line":518,"in_reply_to":"AAAAWH%2F%2FtbU%3D","updated":"2014-03-15 04:13:42.000000000","message":"I thought both are OK. But I will think carefully about it.","commit_id":"5f4faf1fb284160c1937a26b593db5ac70e8593e"}],"ceilometer/storage/impl_db2.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"e131756bf2380604b65f70a54329a66ff3a8f2cb","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    return ts_range"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"def make_counter_volume_range(start, end,"},{"line_number":103,"context_line":"                              start_volume_op\u003dNone, end_volume_op\u003dNone):"},{"line_number":104,"context_line":"    \"\"\"Given two volumes and their operations, create the query document to"},{"line_number":105,"context_line":"    find counter_volumes within that range."}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2F%2BvY%3D","line":102,"updated":"2014-02-08 00:41:04.000000000","message":"apologies for not spotting this earlier but the code between this method and the above method are identical. maybe we can make it one common method.","commit_id":"9ca275444e070ecc8355e93f2215ec3e99d5acbf"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"0834f8b68980e7dd7bcd3de52d10698cb990415c","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                         start_timestamp_op\u003dNone, end_timestamp_op\u003dNone):"},{"line_number":103,"context_line":"    \"\"\"Given two possible datetimes and their operations, create the query"},{"line_number":104,"context_line":"    document to find timestamps within that range."},{"line_number":105,"context_line":"    \"\"\""},{"line_number":106,"context_line":"    ts_range \u003d _make_comparable_range(start, end, start_timestamp_op,"},{"line_number":107,"context_line":"                                      end_timestamp_op)"},{"line_number":108,"context_line":"    return ts_range"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2B%2Fow%3D","line":105,"updated":"2014-02-17 19:02:20.000000000","message":"i\u0027d prefer if we just called _make_comparable_range directly rather than have these two identical wrapper methods which don\u0027t do anything","commit_id":"7359493b219d3dada69b69c5fe6e50b7e2c23e01"},{"author":{"_account_id":9684,"name":"Jia Dong","email":"joey5566@yeah.net","username":"joey5678"},"change_message_id":"19763916f8ea47de9829e880deda1bae3e92e83c","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                         start_timestamp_op\u003dNone, end_timestamp_op\u003dNone):"},{"line_number":103,"context_line":"    \"\"\"Given two possible datetimes and their operations, create the query"},{"line_number":104,"context_line":"    document to find timestamps within that range."},{"line_number":105,"context_line":"    \"\"\""},{"line_number":106,"context_line":"    ts_range \u003d _make_comparable_range(start, end, start_timestamp_op,"},{"line_number":107,"context_line":"                                      end_timestamp_op)"},{"line_number":108,"context_line":"    return ts_range"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2B8%2Bc%3D","line":105,"in_reply_to":"AAAAUX%2F%2B%2Fow%3D","updated":"2014-02-18 01:38:22.000000000","message":"Done","commit_id":"7359493b219d3dada69b69c5fe6e50b7e2c23e01"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"7049eb13e7523e4c5d3825e70860982944e2fc8e","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    the query document to find the parameter within that range."},{"line_number":80,"context_line":"    By default, using $gte for the lower bound and $lt for the"},{"line_number":81,"context_line":"    upper bound."},{"line_number":82,"context_line":"    \"\"\""},{"line_number":83,"context_line":"    para_range \u003d {}"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    if start:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2B4SE%3D","line":82,"updated":"2014-02-18 13:25:46.000000000","message":"Please rename to param_range","commit_id":"41b5e5efa25d3690b9611383d546951dbd774308"},{"author":{"_account_id":9684,"name":"Jia Dong","email":"joey5566@yeah.net","username":"joey5678"},"change_message_id":"f56a73884eba16e9662089696429265016ecf0c7","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    the query document to find the parameter within that range."},{"line_number":80,"context_line":"    By default, using $gte for the lower bound and $lt for the"},{"line_number":81,"context_line":"    upper bound."},{"line_number":82,"context_line":"    \"\"\""},{"line_number":83,"context_line":"    para_range \u003d {}"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    if start:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2Byg0%3D","line":82,"in_reply_to":"AAAAUX%2F%2B4SE%3D","updated":"2014-02-19 02:31:02.000000000","message":"Done","commit_id":"41b5e5efa25d3690b9611383d546951dbd774308"}],"ceilometer/storage/impl_hbase.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"00ca13541af67cda335e9e634b35cbe2b6378dd6","unresolved":false,"context_lines":[{"line_number":794,"context_line":"    :param require_meter: If true and the filter does not have a meter,"},{"line_number":795,"context_line":"                          raise an error."},{"line_number":796,"context_line":"    \"\"\""},{"line_number":797,"context_line":"    if any((sample_filter.start_volume, sample_filter.end_volume)):"},{"line_number":798,"context_line":"        raise NotImplementedError(_(\u0027counter_volume query not implemented\u0027))"},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"    return make_query(sample_filter.user, sample_filter.project,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2Fhyc%3D","line":797,"updated":"2014-02-12 15:38:16.000000000","message":"I think you need to check start_volume_op and end_volume_op too ?","commit_id":"1e5c0ca659a7ef60c513923c30161b62acb3be15"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"0834f8b68980e7dd7bcd3de52d10698cb990415c","unresolved":false,"context_lines":[{"line_number":794,"context_line":"    :param require_meter: If true and the filter does not have a meter,"},{"line_number":795,"context_line":"                          raise an error."},{"line_number":796,"context_line":"    \"\"\""},{"line_number":797,"context_line":"    if any((sample_filter.start_volume, sample_filter.start_timestamp_op,"},{"line_number":798,"context_line":"            sample_filter.end_volume, sample_filter.end_timestamp_op)):"},{"line_number":799,"context_line":"        raise NotImplementedError(_(\u0027counter_volume query not implemented\u0027))"},{"line_number":800,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2B%2FrM%3D","line":797,"updated":"2014-02-17 19:02:20.000000000","message":"wrong variable check.. should be start_volume_op  and end_volume_op","commit_id":"7359493b219d3dada69b69c5fe6e50b7e2c23e01"},{"author":{"_account_id":9684,"name":"Jia Dong","email":"joey5566@yeah.net","username":"joey5678"},"change_message_id":"19763916f8ea47de9829e880deda1bae3e92e83c","unresolved":false,"context_lines":[{"line_number":794,"context_line":"    :param require_meter: If true and the filter does not have a meter,"},{"line_number":795,"context_line":"                          raise an error."},{"line_number":796,"context_line":"    \"\"\""},{"line_number":797,"context_line":"    if any((sample_filter.start_volume, sample_filter.start_timestamp_op,"},{"line_number":798,"context_line":"            sample_filter.end_volume, sample_filter.end_timestamp_op)):"},{"line_number":799,"context_line":"        raise NotImplementedError(_(\u0027counter_volume query not implemented\u0027))"},{"line_number":800,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2B9Co%3D","line":797,"in_reply_to":"AAAAUX%2F%2B%2FrM%3D","updated":"2014-02-18 01:38:22.000000000","message":"my mistake. Done.","commit_id":"7359493b219d3dada69b69c5fe6e50b7e2c23e01"}],"ceilometer/storage/impl_mongodb.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"e131756bf2380604b65f70a54329a66ff3a8f2cb","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    return ts_range"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"def make_counter_volume_range(start, end,"},{"line_number":106,"context_line":"                              start_volume_op\u003dNone, end_volume_op\u003dNone):"},{"line_number":107,"context_line":"    \"\"\"Given two volumes and their operations, create the query document to"},{"line_number":108,"context_line":"    find counter_volumes within that range."}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2F%2Bvg%3D","line":105,"updated":"2014-02-08 00:41:04.000000000","message":"apologies for not spotting this earlier but the code between this method and the above method are identical. maybe we can make it one common method.","commit_id":"9ca275444e070ecc8355e93f2215ec3e99d5acbf"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"0834f8b68980e7dd7bcd3de52d10698cb990415c","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    \"\"\"Given two possible datetimes and their operations, create the query"},{"line_number":107,"context_line":"    document to find timestamps within that range."},{"line_number":108,"context_line":"    \"\"\""},{"line_number":109,"context_line":"    ts_range \u003d _make_comparable_range(start, end, start_timestamp_op,"},{"line_number":110,"context_line":"                                      end_timestamp_op)"},{"line_number":111,"context_line":"    return ts_range"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2B%2Fo8%3D","line":109,"updated":"2014-02-17 19:02:20.000000000","message":"i\u0027d prefer if we just called _make_comparable_range directly rather than have these two identical wrapper methods which don\u0027t do anything","commit_id":"7359493b219d3dada69b69c5fe6e50b7e2c23e01"},{"author":{"_account_id":9684,"name":"Jia Dong","email":"joey5566@yeah.net","username":"joey5678"},"change_message_id":"19763916f8ea47de9829e880deda1bae3e92e83c","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    \"\"\"Given two possible datetimes and their operations, create the query"},{"line_number":107,"context_line":"    document to find timestamps within that range."},{"line_number":108,"context_line":"    \"\"\""},{"line_number":109,"context_line":"    ts_range \u003d _make_comparable_range(start, end, start_timestamp_op,"},{"line_number":110,"context_line":"                                      end_timestamp_op)"},{"line_number":111,"context_line":"    return ts_range"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2B8%2Bw%3D","line":109,"in_reply_to":"AAAAUX%2F%2B%2Fo8%3D","updated":"2014-02-18 01:38:22.000000000","message":"Done","commit_id":"7359493b219d3dada69b69c5fe6e50b7e2c23e01"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"7049eb13e7523e4c5d3825e70860982944e2fc8e","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    the query document to find the parameter within that range."},{"line_number":83,"context_line":"    By default, using $gte for the lower bound and $lt for the"},{"line_number":84,"context_line":"    upper bound."},{"line_number":85,"context_line":"    \"\"\""},{"line_number":86,"context_line":"    para_range \u003d {}"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    if start:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2B4QQ%3D","line":85,"updated":"2014-02-18 13:25:46.000000000","message":"Please rename to param_range","commit_id":"41b5e5efa25d3690b9611383d546951dbd774308"},{"author":{"_account_id":9684,"name":"Jia Dong","email":"joey5566@yeah.net","username":"joey5678"},"change_message_id":"f56a73884eba16e9662089696429265016ecf0c7","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    the query document to find the parameter within that range."},{"line_number":83,"context_line":"    By default, using $gte for the lower bound and $lt for the"},{"line_number":84,"context_line":"    upper bound."},{"line_number":85,"context_line":"    \"\"\""},{"line_number":86,"context_line":"    para_range \u003d {}"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    if start:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2ByhI%3D","line":85,"in_reply_to":"AAAAUX%2F%2B4QQ%3D","updated":"2014-02-19 02:31:02.000000000","message":"Done","commit_id":"41b5e5efa25d3690b9611383d546951dbd774308"}],"ceilometer/storage/impl_sqlalchemy.py":[{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"7049eb13e7523e4c5d3825e70860982944e2fc8e","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    if sample_filter.resource:"},{"line_number":161,"context_line":"        query \u003d query.filter_by(resource_id\u003dsample_filter.resource)"},{"line_number":162,"context_line":"    if sample_filter.message_id:"},{"line_number":163,"context_line":"        query \u003d query.filter_by(message_id\u003dsample_filter.message_id)"},{"line_number":164,"context_line":"    if sample_filter.start_volume_op:"},{"line_number":165,"context_line":"        cv_start \u003d sample_filter.start_volume"},{"line_number":166,"context_line":"        if sample_filter.start_volume_op \u003d\u003d \u0027gt\u0027:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2B4OI%3D","line":163,"updated":"2014-02-18 13:25:46.000000000","message":"I think it\u0027s better \"if sample_filter.start_volume\". But I thnk it\u0027s not very important. Am I right that there will be error in validation if start is in sample_filter but start_op is not?","commit_id":"41b5e5efa25d3690b9611383d546951dbd774308"},{"author":{"_account_id":9684,"name":"Jia Dong","email":"joey5566@yeah.net","username":"joey5678"},"change_message_id":"f56a73884eba16e9662089696429265016ecf0c7","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    if sample_filter.resource:"},{"line_number":161,"context_line":"        query \u003d query.filter_by(resource_id\u003dsample_filter.resource)"},{"line_number":162,"context_line":"    if sample_filter.message_id:"},{"line_number":163,"context_line":"        query \u003d query.filter_by(message_id\u003dsample_filter.message_id)"},{"line_number":164,"context_line":"    if sample_filter.start_volume_op:"},{"line_number":165,"context_line":"        cv_start \u003d sample_filter.start_volume"},{"line_number":166,"context_line":"        if sample_filter.start_volume_op \u003d\u003d \u0027gt\u0027:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2Byhc%3D","line":163,"in_reply_to":"AAAAUX%2F%2B4OI%3D","updated":"2014-02-19 02:31:02.000000000","message":"Nadya, thank you for review. i think whether \u0027start_volume\u0027 or \u0027start_volume_op\u0027  is ok, they apper togather, otherwise an error occurs.","commit_id":"41b5e5efa25d3690b9611383d546951dbd774308"}],"ceilometer/tests/api/v2/test_query.py":[{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"6ff053dd0e16294e452045032b4501a1b53b13a3","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        self.assertEqual(kwargs[\u0027start_volume\u0027], float(1))"},{"line_number":242,"context_line":"        self.assertEqual(kwargs[\u0027end_volume\u0027], float(100.5))"},{"line_number":243,"context_line":"        self.assertEqual(kwargs[\u0027start_volume_op\u0027], \u0027gt\u0027)"},{"line_number":244,"context_line":"        self.assertEqual(kwargs[\u0027end_volume_op\u0027], \u0027lt\u0027)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def test_sample_filter_meta(self):"},{"line_number":247,"context_line":"        q \u003d [api.Query(field\u003d\u0027metadata.size\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2F1hg%3D","line":244,"updated":"2014-02-10 14:09:36.000000000","message":"Please swap arguments of assertEqual. They are in wrong order. \nSignature of method assertEqual in testtools.testcase.TestCase is \ndef assertEqual(self, expected, observed, message\u003d\u0027\u0027):","commit_id":"324e1a09193e747667b1633508cafed0985de7ac"}],"ceilometer/tests/storage/test_storage_scenarios.py":[{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"6ff053dd0e16294e452045032b4501a1b53b13a3","unresolved":false,"context_lines":[{"line_number":660,"context_line":"        f.end_volume \u003d middle_volume"},{"line_number":661,"context_line":"        results \u003d list(self.conn.get_samples(f))"},{"line_number":662,"context_line":"        self.assertEqual(len(results), 1)"},{"line_number":663,"context_line":"        self.assertEqual(results[0].counter_volume, middle_volume)"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"    def test_get_samples_by_name(self):"},{"line_number":666,"context_line":"        f \u003d storage.SampleFilter(user\u003d\u0027user-id\u0027, meter\u003d\u0027no-such-meter\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2F1gY%3D","line":663,"updated":"2014-02-10 14:09:36.000000000","message":"same as in ceilometer/tests/api/v2/test_query.py","commit_id":"324e1a09193e747667b1633508cafed0985de7ac"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"6745df0525fa1251544e7168971052ab806c077a","unresolved":false,"context_lines":[{"line_number":614,"context_line":""},{"line_number":615,"context_line":"    def test_get_samples_by_volume(self):"},{"line_number":616,"context_line":"        if self.CONF.database.connection.startswith(\u0027hbase://\u0027):"},{"line_number":617,"context_line":"            return"},{"line_number":618,"context_line":""},{"line_number":619,"context_line":"        start_volume \u003d float(2)"},{"line_number":620,"context_line":"        middle_volume \u003d float(3)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2Fh08%3D","line":617,"updated":"2014-02-12 15:36:56.000000000","message":"Should be not necessary, this tests should be automatically skipped with hbase if get_samples raise NotImplemetedError when the SampleFilter have one volume fields set.","commit_id":"1e5c0ca659a7ef60c513923c30161b62acb3be15"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"7523a2df3bd617115bbdb97d608030aeae99a7e4","unresolved":false,"context_lines":[{"line_number":628,"context_line":"        self.assertEqual(results[0].timestamp, end_ts)"},{"line_number":629,"context_line":"        self.assertEqual(results[1].timestamp, start_ts)"},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"    def test_get_samples_by_volume(self):"},{"line_number":632,"context_line":"        lower_volume \u003d float(2)"},{"line_number":633,"context_line":"        middle_volume \u003d float(3)"},{"line_number":634,"context_line":"        upper_volume \u003d float(4)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAWH%2F%2FXTI%3D","line":631,"updated":"2014-03-18 11:24:54.000000000","message":"Could you please add two additional test cases for testing the query with only lower_volume and upper_volume separately?","commit_id":"f2bf4d332f90f7cc73ca73cb7b2c2062646723b1"}]}
