)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"dcc6a99e2ba478a8aaf0a96dafb3e2d3c512ca9d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"to filter on the resource db, which only contains the most recent up to date"},{"line_number":14,"context_line":"version of some fields, and returns wrong results."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This also fixes bug #1093625"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I7441a8f2839c7db198c80de75f5c39f0dd219813"},{"line_number":19,"context_line":"Signed-off-by: Julien Danjou \u003cjulien@danjou.info\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAOH%2F%2F4xQ%3D","line":16,"updated":"2013-03-22 02:20:16.000000000","message":"How this fixes bug #1093625?","commit_id":"3cb99dc98f525138d8d9347c00cee92360c8b6cb"}],"ceilometer/storage/impl_mongodb.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"2fde47f2a0a7967cf327d5ca2e5859eebfc13929","unresolved":false,"context_lines":[{"line_number":401,"context_line":"        if resource is not None:"},{"line_number":402,"context_line":"            q[\u0027resource_id\u0027] \u003d resource"},{"line_number":403,"context_line":"        # Add resource_ prefix so it matches the field in the db"},{"line_number":404,"context_line":"        q.update(dict(map(lambda k: (\u0027resource_\u0027 + k[0], k[1]),"},{"line_number":405,"context_line":"                          metaquery.iteritems())))"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"        # FIXME(dhellmann): This may not perform very well,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2F9Cc%3D","line":404,"updated":"2013-03-05 13:30:59.000000000","message":"You can just use a generator expression here:\n\n  q.update(dict((\u0027resource_\u0027 + k, v)\n                for (k, v) in metaquery.iteritems()))","commit_id":"dd854a3d5feb64c62ba1191452e88d83fdedcf91"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"839f8859c7a2335f3c327d572b4ab94f23c389c2","unresolved":false,"context_lines":[{"line_number":401,"context_line":"        if resource is not None:"},{"line_number":402,"context_line":"            q[\u0027resource_id\u0027] \u003d resource"},{"line_number":403,"context_line":"        # Add resource_ prefix so it matches the field in the db"},{"line_number":404,"context_line":"        q.update(dict(map(lambda k: (\u0027resource_\u0027 + k[0], k[1]),"},{"line_number":405,"context_line":"                          metaquery.iteritems())))"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"        # FIXME(dhellmann): This may not perform very well,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2F88w%3D","line":404,"in_reply_to":"AAAAN3%2F%2F9Cc%3D","updated":"2013-03-05 14:12:14.000000000","message":"Done","commit_id":"dd854a3d5feb64c62ba1191452e88d83fdedcf91"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"05827e0e95064886ec7d8b03d0460439a670d206","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            q[\u0027resource_id\u0027] \u003d resource"},{"line_number":398,"context_line":"        # Add resource_ prefix so it matches the field in the db"},{"line_number":399,"context_line":"        q.update(dict((\u0027resource_\u0027 + k, v)"},{"line_number":400,"context_line":"                      for (k, v) in metaquery.iteritems()))"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        # FIXME(dhellmann): This may not perform very well,"},{"line_number":403,"context_line":"        # but doing any better will require changing the database"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOH%2F%2F4YU%3D","line":400,"updated":"2013-03-22 11:25:05.000000000","message":"If you need this here, we will need it in get_meters() below.\nthe query is also on the resource object.","commit_id":"0a11dee978eb00fc45626b477d5f5bff9351f4e7"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"d073c84a9989fe336a72af2eca1778f4d8f1158a","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            q[\u0027resource_id\u0027] \u003d resource"},{"line_number":398,"context_line":"        # Add resource_ prefix so it matches the field in the db"},{"line_number":399,"context_line":"        q.update(dict((\u0027resource_\u0027 + k, v)"},{"line_number":400,"context_line":"                      for (k, v) in metaquery.iteritems()))"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        # FIXME(dhellmann): This may not perform very well,"},{"line_number":403,"context_line":"        # but doing any better will require changing the database"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOH%2F%2F4PM%3D","line":400,"in_reply_to":"AAAAOH%2F%2F4YU%3D","updated":"2013-03-22 13:43:59.000000000","message":"Actually no, this is for a request on meter, not on resource.","commit_id":"0a11dee978eb00fc45626b477d5f5bff9351f4e7"}],"ceilometer/storage/impl_sqlalchemy.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"c8c03627ae29fc64db8e8cb1cd546b906653560d","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            # Replace the \u0027resource_metadata\u0027 with \u0027metadata\u0027"},{"line_number":269,"context_line":"            r[\u0027metadata\u0027] \u003d r[\u0027resource_metadata\u0027]"},{"line_number":270,"context_line":"            del r[\u0027resource_metadata\u0027]"},{"line_number":271,"context_line":"            # Replace the \u0027meters\u0027 with \u0027meter\u0027"},{"line_number":272,"context_line":"            r[\u0027meter\u0027] \u003d ["},{"line_number":273,"context_line":"                {"},{"line_number":274,"context_line":"                    \u0027counter_name\u0027: meter.counter_name,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOH%2F%2F3ao%3D","line":271,"updated":"2013-03-22 20:56:56.000000000","message":"(nit) comment isn\u0027t really necessary anymore","commit_id":"c479163e9eb23d79677c0fbc7b87e99470e00c1f"}],"ceilometer/storage/sqlalchemy/migrate_repo/versions/005_remove_resource_timestamp.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"2fde47f2a0a7967cf327d5ca2e5859eebfc13929","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":26,"context_line":"    resource \u003d Table(\u0027resource\u0027, meta, autoload\u003dTrue)"},{"line_number":27,"context_line":"    timestamp \u003d Column(\u0027timestamp\u0027, DateTime)"},{"line_number":28,"context_line":"    resource.drop_column(timestamp)"},{"line_number":29,"context_line":"    received_timestamp \u003d Column(\u0027received_timestamp\u0027, DateTime)"},{"line_number":30,"context_line":"    resource.drop_column(received_timestamp)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2F9BM%3D","line":28,"updated":"2013-03-05 13:30:59.000000000","message":"Is this column totally useless, or is it just being dropped so that row2dict() returns a dictionary with the expected keys? Because if it\u0027s the latter, I would rather keep the column for debugging and tracing purposes and fix the code that builds the dictionary (those dicts are going to be replaced with models soon anyway).","commit_id":"dd854a3d5feb64c62ba1191452e88d83fdedcf91"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"839f8859c7a2335f3c327d572b4ab94f23c389c2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":26,"context_line":"    resource \u003d Table(\u0027resource\u0027, meta, autoload\u003dTrue)"},{"line_number":27,"context_line":"    timestamp \u003d Column(\u0027timestamp\u0027, DateTime)"},{"line_number":28,"context_line":"    resource.drop_column(timestamp)"},{"line_number":29,"context_line":"    received_timestamp \u003d Column(\u0027received_timestamp\u0027, DateTime)"},{"line_number":30,"context_line":"    resource.drop_column(received_timestamp)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2F88s%3D","line":28,"in_reply_to":"AAAAN3%2F%2F9BM%3D","updated":"2013-03-05 14:12:14.000000000","message":"It\u0027s totally useless as discussed on IRC.","commit_id":"dd854a3d5feb64c62ba1191452e88d83fdedcf91"}],"tests/api/v1/list_resources.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"dcc6a99e2ba478a8aaf0a96dafb3e2d3c512ca9d","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        self.assertEquals(data[\u0027resources\u0027], [])"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"class TestListResourcesMetaquery(TestListResources):"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def test_metaquery1(self):"},{"line_number":262,"context_line":"        q \u003d \u0027/sources/test_list_resources/resources\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2F4xM%3D","line":259,"updated":"2013-03-22 02:20:16.000000000","message":"Maybe we could put TestListResources.setUp() into a base class, and have both TestListResourcesMetaquery and TestListResources inherit from that new base class, because I think there is no need for TestListResourcesMetaquery to repeat all those test cases in TestListResources.","commit_id":"3cb99dc98f525138d8d9347c00cee92360c8b6cb"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e4b600c6e6a510de9d813b9c67711062c4447a45","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        self.assertEquals(data[\u0027resources\u0027], [])"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"class TestListResourcesMetaquery(TestListResources):"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def test_metaquery1(self):"},{"line_number":262,"context_line":"        q \u003d \u0027/sources/test_list_resources/resources\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2F4b8%3D","line":259,"in_reply_to":"AAAAOH%2F%2F4xM%3D","updated":"2013-03-22 10:02:35.000000000","message":"Done","commit_id":"3cb99dc98f525138d8d9347c00cee92360c8b6cb"}],"tests/storage/test_impl_hbase.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"c8c03627ae29fc64db8e8cb1cd546b906653560d","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    def row(self, key):"},{"line_number":193,"context_line":"        return self._rows[key] if key in self._rows else {}"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def rows(self, keys):"},{"line_number":196,"context_line":"        return ((k, v) for k, v in self._rows.iteritems() if k in keys)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def put(self, key, data):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOH%2F%2F3Zc%3D","line":195,"updated":"2013-03-22 20:56:56.000000000","message":"i might have missed it but this method doesn\u0027t seem to be used anywhere. is this for future use?","commit_id":"c479163e9eb23d79677c0fbc7b87e99470e00c1f"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"52f878855a24a2d1cbd16bb4874cdd924440172c","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    def row(self, key):"},{"line_number":193,"context_line":"        return self._rows[key] if key in self._rows else {}"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def rows(self, keys):"},{"line_number":196,"context_line":"        return ((k, v) for k, v in self._rows.iteritems() if k in keys)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def put(self, key, data):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOH%2F%2F13g%3D","line":195,"in_reply_to":"AAAAOH%2F%2F2RI%3D","updated":"2013-03-25 14:26:22.000000000","message":"i should\u0027ve given that a try myself. seems like its used indirectly by other python code. :)","commit_id":"c479163e9eb23d79677c0fbc7b87e99470e00c1f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"dabc88a619dae8b0f59cc9e1a07d533e83e9a079","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    def row(self, key):"},{"line_number":193,"context_line":"        return self._rows[key] if key in self._rows else {}"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def rows(self, keys):"},{"line_number":196,"context_line":"        return ((k, v) for k, v in self._rows.iteritems() if k in keys)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def put(self, key, data):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOH%2F%2F2RI%3D","line":195,"in_reply_to":"AAAAOH%2F%2F3Zc%3D","updated":"2013-03-25 08:14:06.000000000","message":"Nice catch but… Actually it\u0027s used somewhere, since removing it makes the tests fail :)","commit_id":"c479163e9eb23d79677c0fbc7b87e99470e00c1f"}]}
