)]}'
{"ceilometer/storage/impl_mongodb.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"535175a2a9eebfc314e55f9de892bb254accb137","unresolved":false,"context_lines":[{"line_number":447,"context_line":"                    models.ResourceMeter("},{"line_number":448,"context_line":"                        counter_name\u003dmeter_name,"},{"line_number":449,"context_line":"                        counter_type\u003dresult[\u0027meters_type\u0027][i],"},{"line_number":450,"context_line":"                        counter_unit\u003dresult[\u0027meters_unit\u0027][i],"},{"line_number":451,"context_line":"                    )"},{"line_number":452,"context_line":"                    for i, meter_name in enumerate(result[\u0027meters_name\u0027])"},{"line_number":453,"context_line":"                ],"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAP3%2F%2FpSY%3D","line":450,"updated":"2013-07-15 13:04:43.000000000","message":"do we not need to default the counter_unit type anymore? https://review.openstack.org/#/c/36081/","commit_id":"9be4323177cd3ac8705823fe475c0d07c60c8569"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1a66be9825eb16fb93b4c047689aa67c7d663868","unresolved":false,"context_lines":[{"line_number":447,"context_line":"                    models.ResourceMeter("},{"line_number":448,"context_line":"                        counter_name\u003dmeter_name,"},{"line_number":449,"context_line":"                        counter_type\u003dresult[\u0027meters_type\u0027][i],"},{"line_number":450,"context_line":"                        counter_unit\u003dresult[\u0027meters_unit\u0027][i],"},{"line_number":451,"context_line":"                    )"},{"line_number":452,"context_line":"                    for i, meter_name in enumerate(result[\u0027meters_name\u0027])"},{"line_number":453,"context_line":"                ],"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAP3%2F%2FpIk%3D","line":450,"in_reply_to":"AAAAP3%2F%2FpSY%3D","updated":"2013-07-15 13:55:27.000000000","message":"The $push above will push an empty value anyway.","commit_id":"9be4323177cd3ac8705823fe475c0d07c60c8569"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"8856d2f28ccd6d6b08b09c6fbc80e412f2dff690","unresolved":false,"context_lines":[{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        # Require MongoDB 2.2 to use aggregate()"},{"line_number":292,"context_line":"        if not (version[0] \u003e\u003d 2 and version[1] \u003e\u003d 2):"},{"line_number":293,"context_line":"            raise MongoDBBadVersion(\"Need at least MongoDB 2.2\")"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        self.db \u003d getattr(self.conn, opts[\u0027dbname\u0027])"},{"line_number":296,"context_line":"        if \u0027username\u0027 in opts:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2FvKo%3D","line":293,"updated":"2013-07-24 06:33:44.000000000","message":"this logic would be wrong if version is 3.1.","commit_id":"cc8ab23a477a9b830d278258375b49b192526cf6"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"f92b1c2215c35e068235cc73d6f81c4427838eac","unresolved":false,"context_lines":[{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        # Require MongoDB 2.2 to use aggregate()"},{"line_number":292,"context_line":"        if not (version[0] \u003e\u003d 2 and version[1] \u003e\u003d 2):"},{"line_number":293,"context_line":"            raise MongoDBBadVersion(\"Need at least MongoDB 2.2\")"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        self.db \u003d getattr(self.conn, opts[\u0027dbname\u0027])"},{"line_number":296,"context_line":"        if \u0027username\u0027 in opts:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAQn%2F%2FunU%3D","line":293,"in_reply_to":"AAAAQn%2F%2FvKo%3D","updated":"2013-07-24 10:18:04.000000000","message":"Haha :(","commit_id":"cc8ab23a477a9b830d278258375b49b192526cf6"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"77668e3c34e1212ef2f01973a33d0af04f92f343","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        version \u003d self.conn.server_info()[\u0027versionArray\u0027]"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        # Require MongoDB 2.2 to use aggregate()"},{"line_number":292,"context_line":"        if version[0] \u003c 2 or (version[0] \u003d\u003d 2 and version[1] \u003c 2):"},{"line_number":293,"context_line":"            raise MongoDBBadVersion(\"Need at least MongoDB 2.2\")"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        self.db \u003d getattr(self.conn, opts[\u0027dbname\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2Fro4%3D","line":292,"updated":"2013-07-25 05:56:43.000000000","message":"version \u003e\u003d [2, 2] is more readable.\n\nthe _is_natively_ttl_supported method do the same (checking the mongodb version), and the no native ttl code can be removed if only mongodb \u003e\u003d 2.2 is supported.","commit_id":"d649912f06ef4a26c2478ecca41f00cd25a0a4f6"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"d4452f0c7e656cb7c66ef430c3ef790dc2653814","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        version \u003d self.conn.server_info()[\u0027versionArray\u0027]"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        # Require MongoDB 2.2 to use aggregate()"},{"line_number":292,"context_line":"        if version[0] \u003c 2 or (version[0] \u003d\u003d 2 and version[1] \u003c 2):"},{"line_number":293,"context_line":"            raise MongoDBBadVersion(\"Need at least MongoDB 2.2\")"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        self.db \u003d getattr(self.conn, opts[\u0027dbname\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2Fq0w%3D","line":292,"in_reply_to":"AAAAQn%2F%2Fro4%3D","updated":"2013-07-25 13:04:35.000000000","message":"Thanks for the tip, didn\u0027t think of that… even if it\u0027s already in the code :-)\n\nI\u0027ll build a later patch to remove the TTL stuff then!","commit_id":"d649912f06ef4a26c2478ecca41f00cd25a0a4f6"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"20a374703af1a8ee02d52eb8418f383e79d7b72f","unresolved":false,"context_lines":[{"line_number":538,"context_line":"                        counter_type\u003dresult[\u0027meters_type\u0027][i],"},{"line_number":539,"context_line":"                        counter_unit\u003dresult[\u0027meters_unit\u0027][i],"},{"line_number":540,"context_line":"                    )"},{"line_number":541,"context_line":"                    for i, meter_name in enumerate(result[\u0027meters_name\u0027])"},{"line_number":542,"context_line":"                ],"},{"line_number":543,"context_line":"            )"},{"line_number":544,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2Ft4M%3D","line":541,"updated":"2013-07-24 14:58:49.000000000","message":"You can zip those lists together instead of using an index.\n\n  for m_n, m_u, m_t in zip(result[\u0027meters_name\u0027], \n                           result[\u0027meters_unit\u0027], \n                           result[\u0027meters_type\u0027])","commit_id":"d649912f06ef4a26c2478ecca41f00cd25a0a4f6"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"d4452f0c7e656cb7c66ef430c3ef790dc2653814","unresolved":false,"context_lines":[{"line_number":538,"context_line":"                        counter_type\u003dresult[\u0027meters_type\u0027][i],"},{"line_number":539,"context_line":"                        counter_unit\u003dresult[\u0027meters_unit\u0027][i],"},{"line_number":540,"context_line":"                    )"},{"line_number":541,"context_line":"                    for i, meter_name in enumerate(result[\u0027meters_name\u0027])"},{"line_number":542,"context_line":"                ],"},{"line_number":543,"context_line":"            )"},{"line_number":544,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2Fq1E%3D","line":541,"in_reply_to":"AAAAQn%2F%2Ft4M%3D","updated":"2013-07-25 13:04:35.000000000","message":"Done","commit_id":"d649912f06ef4a26c2478ecca41f00cd25a0a4f6"}],"ceilometer/tests/db.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"20a374703af1a8ee02d52eb8418f383e79d7b72f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                              group\u003d\u0027database\u0027)"},{"line_number":35,"context_line":"        try:"},{"line_number":36,"context_line":"            self.conn \u003d storage.get_connection(cfg.CONF)"},{"line_number":37,"context_line":"        except impl_mongodb.MongoDBBadVersion as e:"},{"line_number":38,"context_line":"            self.skipTest(str(e))"},{"line_number":39,"context_line":"        self.conn.upgrade()"},{"line_number":40,"context_line":"        self.conn.clear()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2Ft3c%3D","line":37,"updated":"2013-07-24 14:58:49.000000000","message":"It smells, just a little, to have a base class checking for an exception from the driver like this. Do we care what versions of the other databases we use? Should the version exception be defined in ceilometer.storage.base instead of in the driver?","commit_id":"d649912f06ef4a26c2478ecca41f00cd25a0a4f6"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"d4452f0c7e656cb7c66ef430c3ef790dc2653814","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                              group\u003d\u0027database\u0027)"},{"line_number":35,"context_line":"        try:"},{"line_number":36,"context_line":"            self.conn \u003d storage.get_connection(cfg.CONF)"},{"line_number":37,"context_line":"        except impl_mongodb.MongoDBBadVersion as e:"},{"line_number":38,"context_line":"            self.skipTest(str(e))"},{"line_number":39,"context_line":"        self.conn.upgrade()"},{"line_number":40,"context_line":"        self.conn.clear()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2Fq0g%3D","line":37,"in_reply_to":"AAAAQn%2F%2Ft3c%3D","updated":"2013-07-25 13:04:35.000000000","message":"Totally agree. I didn\u0027t abstracted it more because I had some hope somebody will whisper me how to do this correctly…\nI\u0027ll abtract it to a more generic exception for the sake of it.","commit_id":"d649912f06ef4a26c2478ecca41f00cd25a0a4f6"}],"tests/storage/base.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"30d3b4303485f223e6286a497660c5a34c3f6e95","unresolved":false,"context_lines":[{"line_number":338,"context_line":"                          [i.user_id for i in results])"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        marker_pairs \u003d {\u0027user_id\u0027: \u0027user-id-4\u0027}"},{"line_number":341,"context_line":"        results \u003d list(self.conn.get_meters(limit\u003d2,"},{"line_number":342,"context_line":"                                            marker_pairs\u003dmarker_pairs,"},{"line_number":343,"context_line":"                                            sort_key\u003d\u0027user_id\u0027,"},{"line_number":344,"context_line":"                                            sort_dir\u003d\u0027desc\u0027))"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAQn%2F%2FFjk%3D","line":341,"updated":"2013-08-07 16:46:05.000000000","message":"out of curiosity... why the switch?","commit_id":"0c326d7d675620cfb7da1ab8427404afa407ac2a"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"94366c089ea0b881bc4802ff6af0ffb987f91308","unresolved":false,"context_lines":[{"line_number":338,"context_line":"                          [i.user_id for i in results])"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        marker_pairs \u003d {\u0027user_id\u0027: \u0027user-id-4\u0027}"},{"line_number":341,"context_line":"        results \u003d list(self.conn.get_meters(limit\u003d2,"},{"line_number":342,"context_line":"                                            marker_pairs\u003dmarker_pairs,"},{"line_number":343,"context_line":"                                            sort_key\u003d\u0027user_id\u0027,"},{"line_number":344,"context_line":"                                            sort_dir\u003d\u0027desc\u0027))"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAQn%2F%2FBmo%3D","line":341,"in_reply_to":"AAAAQn%2F%2FFjk%3D","updated":"2013-08-08 09:23:39.000000000","message":"Damn, artefact of rebase I guess.","commit_id":"0c326d7d675620cfb7da1ab8427404afa407ac2a"}],"tests/storage/test_impl_mongodb.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"dceeb6edfc98c05223b6e67395955e32e920dc4e","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"class ResourceTestPagination(base.ResourceTestPagination,"},{"line_number":168,"context_line":"                             MongoDBEngineTestBase):"},{"line_number":169,"context_line":"    pass"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAQn%2F%2FA%2Bo%3D","side":"PARENT","line":168,"updated":"2013-08-08 13:14:52.000000000","message":"does pagination not work properly for this one test set or is this missed in rebase","commit_id":"fee311c138075308d7f06197d4aeebd0eac64e16"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"0e1f7a30bef11989c235f1b14f164ba18375b0f2","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"class ResourceTestPagination(base.ResourceTestPagination,"},{"line_number":168,"context_line":"                             MongoDBEngineTestBase):"},{"line_number":169,"context_line":"    pass"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAQn%2F%2FA7U%3D","side":"PARENT","line":168,"in_reply_to":"AAAAQn%2F%2FA%2Bo%3D","updated":"2013-08-08 13:28:13.000000000","message":"Unfortunately no, that changes breaks the pagination since it doesn\u0027t rely on an existing table. We can use marker pairs to go back where we where :(","commit_id":"fee311c138075308d7f06197d4aeebd0eac64e16"}]}
