)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"7337fc3a9494e2a48e4267b749f5a30fd82c5538","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a \"reset_on\" query parameter that forces statistics to be computed every"},{"line_number":10,"context_line":"time the value of a given field changes."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I2d9abb41b4293c9c3eba506f307a76e2ecaa4cc6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAASn%2F%2F5rQ%3D","line":11,"updated":"2013-08-28 07:53:54.000000000","message":"blueprint is missing","commit_id":"874dff77479e61793e2f925c173a84f21bc34773"}],"ceilometer/api/controllers/v2.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b1050db87c7b8aeac7d1426212f886965cd1e0e3","unresolved":false,"context_lines":[{"line_number":407,"context_line":"    period_end \u003d datetime.datetime"},{"line_number":408,"context_line":"    \"UTC date and time of the period end\""},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    watched_field_value \u003d str"},{"line_number":411,"context_line":"    \"The value of the metadata field specified in the query by the \u0027reset_on\u0027\""},{"line_number":412,"context_line":"    \"parameter\""},{"line_number":413,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAARH%2F%2F%2BIA%3D","line":410,"updated":"2013-08-14 12:34:34.000000000","message":"Would be better to keep the same field name I think?","commit_id":"19a99aa5412c6850a88d091ed95ff5ba002b9c40"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"7c890f61be53242016e1790075f598f6fb7ee6dc","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                metaquery[i.field] \u003d i._get_value_as_type()"},{"line_number":260,"context_line":"            elif i.field.startswith(\u0027resource_metadata.\u0027):"},{"line_number":261,"context_line":"                metaquery[i.field[9:]] \u003d i._get_value_as_type()"},{"line_number":262,"context_line":"            elif i.field \u003d\u003d \u0027reset_on\u0027 and i.value.startswith(\u0027metadata.\u0027):"},{"line_number":263,"context_line":"                reset_on \u003d i.value[9:]"},{"line_number":264,"context_line":"            else:"},{"line_number":265,"context_line":"                trans[translation.get(i.field, i.field)] \u003d i.value"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2F%2Fyk%3D","line":262,"updated":"2013-08-27 02:23:57.000000000","message":"might want to accept resource_metadata as value as well","commit_id":"8cfb4a4b3ab59e0053ea061211e8a05e3326686e"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"1e29193e23dffb1148e5f723d44fe6f27ce68126","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                metaquery[i.field] \u003d i._get_value_as_type()"},{"line_number":260,"context_line":"            elif i.field.startswith(\u0027resource_metadata.\u0027):"},{"line_number":261,"context_line":"                metaquery[i.field[9:]] \u003d i._get_value_as_type()"},{"line_number":262,"context_line":"            elif i.field \u003d\u003d \u0027reset_on\u0027 and i.value.startswith(\u0027metadata.\u0027):"},{"line_number":263,"context_line":"                reset_on \u003d i.value[9:]"},{"line_number":264,"context_line":"            else:"},{"line_number":265,"context_line":"                trans[translation.get(i.field, i.field)] \u003d i.value"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2F8XE%3D","line":262,"in_reply_to":"AAAASn%2F%2F%2Fyk%3D","updated":"2013-08-27 20:47:49.000000000","message":"I\u0027m not sure. You can use \"metadata.field\u003dvalue\" to add a filter to your requests, but not \"resource_metadata.field\u003dvalue\". That\u0027s why I decided to use \"metadata\" instead of \"resource_metadata\" here: it makes the API more consistent, I think.","commit_id":"8cfb4a4b3ab59e0053ea061211e8a05e3326686e"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"55c2fe363cde9e8986c5b60af8f51caf15bc7a34","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                metaquery[i.field] \u003d i._get_value_as_type()"},{"line_number":260,"context_line":"            elif i.field.startswith(\u0027resource_metadata.\u0027):"},{"line_number":261,"context_line":"                metaquery[i.field[9:]] \u003d i._get_value_as_type()"},{"line_number":262,"context_line":"            elif i.field \u003d\u003d \u0027reset_on\u0027 and i.value.startswith(\u0027metadata.\u0027):"},{"line_number":263,"context_line":"                reset_on \u003d i.value[9:]"},{"line_number":264,"context_line":"            else:"},{"line_number":265,"context_line":"                trans[translation.get(i.field, i.field)] \u003d i.value"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2F7fc%3D","line":262,"updated":"2013-08-27 21:14:13.000000000","message":"we actually added supported for resource_metadata.xyz query recently. see the elif condition right above :)","commit_id":"79c24c5c8bcbbe061b7fbc2203a7299f40154a82"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"815e7b34116bfa76b3fd2cf6ebe8579811097a67","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                metaquery[i.field] \u003d i._get_value_as_type()"},{"line_number":260,"context_line":"            elif i.field.startswith(\u0027resource_metadata.\u0027):"},{"line_number":261,"context_line":"                metaquery[i.field[9:]] \u003d i._get_value_as_type()"},{"line_number":262,"context_line":"            elif i.field \u003d\u003d \u0027reset_on\u0027 and i.value.startswith(\u0027metadata.\u0027):"},{"line_number":263,"context_line":"                reset_on \u003d i.value[9:]"},{"line_number":264,"context_line":"            else:"},{"line_number":265,"context_line":"                trans[translation.get(i.field, i.field)] \u003d i.value"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2F7BY%3D","line":262,"in_reply_to":"AAAASn%2F%2F7fc%3D","updated":"2013-08-27 23:59:28.000000000","message":"Done","commit_id":"79c24c5c8bcbbe061b7fbc2203a7299f40154a82"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"51913e4e1701d1b6949f45e7cdef255dc941b8d6","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                metaquery[i.field] \u003d i._get_value_as_type()"},{"line_number":260,"context_line":"            elif i.field.startswith(\u0027resource_metadata.\u0027):"},{"line_number":261,"context_line":"                metaquery[i.field[9:]] \u003d i._get_value_as_type()"},{"line_number":262,"context_line":"            elif i.field \u003d\u003d \u0027reset_on\u0027:"},{"line_number":263,"context_line":"                if i.value.startswith(\u0027metadata.\u0027):"},{"line_number":264,"context_line":"                    reset_on \u003d i.value[9:]"},{"line_number":265,"context_line":"                elif i.value.startswith(\u0027resource_metadata.\u0027):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAASn%2F%2FwSA%3D","line":262,"updated":"2013-08-30 00:44:56.000000000","message":"Why use a special field name here instead of adding a parameter to the API? It seems opaque. The query parameter \"limits\" the data in the result set, this new value controls how that data is processed. The group_by and reset_on values should be separate arguments from the query.","commit_id":"874dff77479e61793e2f925c173a84f21bc34773"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"51913e4e1701d1b6949f45e7cdef255dc941b8d6","unresolved":false,"context_lines":[{"line_number":481,"context_line":"    period_end \u003d datetime.datetime"},{"line_number":482,"context_line":"    \"UTC date and time of the period end\""},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    watched_field_value \u003d str"},{"line_number":485,"context_line":"    \"The value of the metadata field specified in the query by the \u0027reset_on\u0027\""},{"line_number":486,"context_line":"    \"parameter\""},{"line_number":487,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAASn%2F%2FwPo%3D","line":484,"updated":"2013-08-30 00:44:56.000000000","message":"The type should be wtypes.text.","commit_id":"874dff77479e61793e2f925c173a84f21bc34773"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"51913e4e1701d1b6949f45e7cdef255dc941b8d6","unresolved":false,"context_lines":[{"line_number":534,"context_line":"                   period\u003d7200,"},{"line_number":535,"context_line":"                   period_start\u003ddatetime.datetime(2013, 1, 4, 16, 00),"},{"line_number":536,"context_line":"                   period_end\u003ddatetime.datetime(2013, 1, 4, 18, 00),"},{"line_number":537,"context_line":"                   watched_field_value\u003dNone,"},{"line_number":538,"context_line":"                   )"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAASn%2F%2FwPs%3D","line":537,"updated":"2013-08-30 00:44:56.000000000","message":"None is the wrong type for the value. It should be an empty string.","commit_id":"874dff77479e61793e2f925c173a84f21bc34773"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"971753f94fa225ede427f0b2332caaa1c3b82497","unresolved":false,"context_lines":[{"line_number":628,"context_line":""},{"line_number":629,"context_line":"        :param q: Filter rules for the data to be returned."},{"line_number":630,"context_line":"        :param period: Returned result will be an array of statistics for a"},{"line_number":631,"context_line":"                       period long of that number of seconds."},{"line_number":632,"context_line":"        \"\"\""},{"line_number":633,"context_line":"        if period and period \u003c 0:"},{"line_number":634,"context_line":"            error \u003d _(\"Period must be positive.\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2FoUQ%3D","line":631,"updated":"2013-09-02 07:41:17.000000000","message":"please add comment of the new parameter here. So sphinx can automatically generate the correct documentation.","commit_id":"51baf955b59ef8a997adbfc8782708e206f04710"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"0505e5d53fe7aab0edeac35cfd327af3fcea1b0c","unresolved":false,"context_lines":[{"line_number":628,"context_line":""},{"line_number":629,"context_line":"        :param q: Filter rules for the data to be returned."},{"line_number":630,"context_line":"        :param period: Returned result will be an array of statistics for a"},{"line_number":631,"context_line":"                       period long of that number of seconds."},{"line_number":632,"context_line":"        \"\"\""},{"line_number":633,"context_line":"        if period and period \u003c 0:"},{"line_number":634,"context_line":"            error \u003d _(\"Period must be positive.\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAASn%2F%2Fn6Q%3D","line":631,"in_reply_to":"AAAASn%2F%2FoUQ%3D","updated":"2013-09-02 10:10:21.000000000","message":"Done","commit_id":"51baf955b59ef8a997adbfc8782708e206f04710"}],"ceilometer/storage/__init__.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b1050db87c7b8aeac7d1426212f886965cd1e0e3","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    :param meter: Optional filter for meter type using the meter name."},{"line_number":95,"context_line":"    :param source: Optional source filter."},{"line_number":96,"context_line":"    :param metaquery: Optional filter on the metadata"},{"line_number":97,"context_line":"    :param reset_on: Optional field to group results by."},{"line_number":98,"context_line":"    \"\"\""},{"line_number":99,"context_line":"    def __init__(self, user\u003dNone, project\u003dNone,"},{"line_number":100,"context_line":"                 start\u003dNone, start_timestamp_op\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAARH%2F%2F%2BH0%3D","line":97,"updated":"2013-08-14 12:34:34.000000000","message":"Don\u0027t use group by since we are going to introduce a real/different group by","commit_id":"19a99aa5412c6850a88d091ed95ff5ba002b9c40"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"7c890f61be53242016e1790075f598f6fb7ee6dc","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    :param metaquery: Optional filter on the metadata"},{"line_number":97,"context_line":"    :param reset_on: Optional. One of the metadata fields. If specified, one"},{"line_number":98,"context_line":"                     set of Statistics will be computed every time its value"},{"line_number":99,"context_line":"                     changes."},{"line_number":100,"context_line":"    \"\"\""},{"line_number":101,"context_line":"    def __init__(self, user\u003dNone, project\u003dNone,"},{"line_number":102,"context_line":"                 start\u003dNone, start_timestamp_op\u003dNone,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2F%2Fyc%3D","line":99,"updated":"2013-08-27 02:23:57.000000000","message":"if you need to do another edit to patch, this should be part of first patch","commit_id":"8cfb4a4b3ab59e0053ea061211e8a05e3326686e"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"1e29193e23dffb1148e5f723d44fe6f27ce68126","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    :param metaquery: Optional filter on the metadata"},{"line_number":97,"context_line":"    :param reset_on: Optional. One of the metadata fields. If specified, one"},{"line_number":98,"context_line":"                     set of Statistics will be computed every time its value"},{"line_number":99,"context_line":"                     changes."},{"line_number":100,"context_line":"    \"\"\""},{"line_number":101,"context_line":"    def __init__(self, user\u003dNone, project\u003dNone,"},{"line_number":102,"context_line":"                 start\u003dNone, start_timestamp_op\u003dNone,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2F8Hw%3D","line":99,"in_reply_to":"AAAASn%2F%2F%2Fyc%3D","updated":"2013-08-27 20:47:49.000000000","message":"Done","commit_id":"8cfb4a4b3ab59e0053ea061211e8a05e3326686e"}],"ceilometer/storage/impl_hbase.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"7c890f61be53242016e1790075f598f6fb7ee6dc","unresolved":false,"context_lines":[{"line_number":531,"context_line":""},{"line_number":532,"context_line":"        #TODO(cyril):take into account sample_filter.reset_on"},{"line_number":533,"context_line":"        if sample_filter.reset_on:"},{"line_number":534,"context_line":"            raise NotImplementedError(\u0027reset_on not implemented\u0027)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        meter_table \u003d self.conn.table(self.METER_TABLE)"},{"line_number":537,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2F%2FyU%3D","line":534,"updated":"2013-08-27 02:23:57.000000000","message":"just for nitpicking sake, missing period in message","commit_id":"8cfb4a4b3ab59e0053ea061211e8a05e3326686e"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"1e29193e23dffb1148e5f723d44fe6f27ce68126","unresolved":false,"context_lines":[{"line_number":531,"context_line":""},{"line_number":532,"context_line":"        #TODO(cyril):take into account sample_filter.reset_on"},{"line_number":533,"context_line":"        if sample_filter.reset_on:"},{"line_number":534,"context_line":"            raise NotImplementedError(\u0027reset_on not implemented\u0027)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        meter_table \u003d self.conn.table(self.METER_TABLE)"},{"line_number":537,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2F9h8%3D","line":534,"in_reply_to":"AAAASn%2F%2F%2FyU%3D","updated":"2013-08-27 20:47:49.000000000","message":"Done","commit_id":"8cfb4a4b3ab59e0053ea061211e8a05e3326686e"}],"ceilometer/storage/impl_sqlalchemy.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"7c890f61be53242016e1790075f598f6fb7ee6dc","unresolved":false,"context_lines":[{"line_number":514,"context_line":"                        \"Unable to group by these fields\")"},{"line_number":515,"context_line":"        #TODO(cyril):take into account sample_filter.reset_on"},{"line_number":516,"context_line":"        if sample_filter.reset_on:"},{"line_number":517,"context_line":"            raise NotImplementedError(\u0027reset_on not implemented\u0027)"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"        if not period:"},{"line_number":520,"context_line":"            for res in self._make_stats_query(sample_filter, groupby):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2F%2FyM%3D","line":517,"updated":"2013-08-27 02:23:57.000000000","message":"just for nitpicking sake, missing period in message","commit_id":"8cfb4a4b3ab59e0053ea061211e8a05e3326686e"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"1e29193e23dffb1148e5f723d44fe6f27ce68126","unresolved":false,"context_lines":[{"line_number":514,"context_line":"                        \"Unable to group by these fields\")"},{"line_number":515,"context_line":"        #TODO(cyril):take into account sample_filter.reset_on"},{"line_number":516,"context_line":"        if sample_filter.reset_on:"},{"line_number":517,"context_line":"            raise NotImplementedError(\u0027reset_on not implemented\u0027)"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"        if not period:"},{"line_number":520,"context_line":"            for res in self._make_stats_query(sample_filter, groupby):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2F9h4%3D","line":517,"in_reply_to":"AAAASn%2F%2F%2FyM%3D","updated":"2013-08-27 20:47:49.000000000","message":"Done","commit_id":"8cfb4a4b3ab59e0053ea061211e8a05e3326686e"}],"tests/api/v2/test_statistics_scenarios.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"22e77aa1eb193265ce0a80eba5d08565af95db0a","unresolved":false,"context_lines":[{"line_number":486,"context_line":"    PATH \u003d \u0027/meters/volume.size/statistics\u0027"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    def setUp(self):"},{"line_number":489,"context_line":"        super(TestResetOnNoSamplesVolume, self).setUp()"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"        self.counters \u003d []"},{"line_number":492,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2F%2BpI%3D","line":489,"updated":"2013-08-19 12:07:21.000000000","message":"Useless","commit_id":"beeea50543299a5ea180e01c0d85ee092577e052"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"22e77aa1eb193265ce0a80eba5d08565af95db0a","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        self.assertEqual(data, [])"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"class TestResetOnVolume(base.FunctionalTest,"},{"line_number":504,"context_line":"                        tests_db.MixinTestsWithBackendScenarios):"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    PATH \u003d \u0027/meters/volume.size/statistics\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2F%2FBU%3D","line":503,"updated":"2013-08-19 12:07:21.000000000","message":"Having both tests in only one class would be better.","commit_id":"beeea50543299a5ea180e01c0d85ee092577e052"}]}
