)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"change_message_id":"cb1e7edc80341ef9a302964c3b9d1cb2f50f8e24","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Julia Varlamova \u003cjvarlamova@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-09-17 18:06:09 +0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update glance/opensatck/common from oslo Part 1"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Update glance/openstack/common files from oslo"},{"line_number":10,"context_line":"except glance/openstack/common/rpc and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAS3%2F%2FhF0%3D","line":7,"updated":"2013-09-25 11:34:31.000000000","message":"typo in summary. glance/opensatck/common should be changed to glance/openstack/common","commit_id":"75ee0c78ba8d99c818a7e806f6a30744c821ba74"}],"glance/api/policy.py":[{"author":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"change_message_id":"e7577732a83176dc09d0c80776802d1ffa8b5a3d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"           :raises: `glance.common.exception.Forbidden`"},{"line_number":62,"context_line":"           :returns: A non-False value if access is allowed."},{"line_number":63,"context_line":"        \"\"\""},{"line_number":64,"context_line":"        do_raise \u003d False if not exc else True"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        credentials \u003d {"},{"line_number":67,"context_line":"            \u0027roles\u0027: context.roles,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FFCk%3D","line":64,"updated":"2013-09-12 12:59:22.000000000","message":"could you tell me why was self.load_rules() ommited?","commit_id":"742e8177fdd8abd1fb8969fd224f4b4d9817def7"},{"author":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"change_message_id":"efc6507947771a52f236d3f6bc45154a109295fa","unresolved":false,"context_lines":[{"line_number":61,"context_line":"           :raises: `glance.common.exception.Forbidden`"},{"line_number":62,"context_line":"           :returns: A non-False value if access is allowed."},{"line_number":63,"context_line":"        \"\"\""},{"line_number":64,"context_line":"        do_raise \u003d False if not exc else True"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        credentials \u003d {"},{"line_number":67,"context_line":"            \u0027roles\u0027: context.roles,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FBxA%3D","line":64,"in_reply_to":"AAAASn%2F%2FByI%3D","updated":"2013-09-13 08:14:12.000000000","message":"not sure about this. self.load_rules will be called from self.enforce.enforce but from policy.Enforcer object, not actual Enforcer. Am i wrong?","commit_id":"742e8177fdd8abd1fb8969fd224f4b4d9817def7"},{"author":{"_account_id":7331,"name":"Julia Varlamova","email":"jvarlamova@mirantis.com","username":"jvarlamova"},"change_message_id":"9533813c99d2c24c96a41635d1f136838537984f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"           :raises: `glance.common.exception.Forbidden`"},{"line_number":62,"context_line":"           :returns: A non-False value if access is allowed."},{"line_number":63,"context_line":"        \"\"\""},{"line_number":64,"context_line":"        do_raise \u003d False if not exc else True"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        credentials \u003d {"},{"line_number":67,"context_line":"            \u0027roles\u0027: context.roles,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FByI%3D","line":64,"in_reply_to":"AAAASn%2F%2FFCk%3D","updated":"2013-09-13 08:07:53.000000000","message":"Anyway load_rules() will be called from self.enforcer.enforce","commit_id":"742e8177fdd8abd1fb8969fd224f4b4d9817def7"}],"glance/tests/unit/v1/test_api.py":[{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"101b545e4b5768608cd1eccdd645e2257fe29ef4","unresolved":false,"context_lines":[{"line_number":487,"context_line":"        self.assertEquals(res.status_int, 201)"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"    def _add_check_no_url_info(self):"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"        fixture_headers \u003d {\u0027x-image-meta-disk-format\u0027: \u0027ami\u0027,"},{"line_number":492,"context_line":"                           \u0027x-image-meta-container-format\u0027: \u0027ami\u0027,"},{"line_number":493,"context_line":"                           \u0027x-image-meta-size\u0027: \u00270\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FFuE%3D","side":"PARENT","line":490,"updated":"2013-09-12 06:52:21.000000000","message":"Could you return back plank lines.","commit_id":"08987b12eb5ba5e1e15977af26362180d72650c5"}],"glance/tests/unit/v2/test_images_resource.py":[{"author":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"change_message_id":"e7577732a83176dc09d0c80776802d1ffa8b5a3d","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                                                                self.store)"},{"line_number":122,"context_line":"        glance.store.create_stores()"},{"line_number":123,"context_line":"        self.config(policy_file\u003d"},{"line_number":124,"context_line":"                    os.path.abspath(\u0027glance/tests/etc/policy.json\u0027))"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def _create_images(self):"},{"line_number":127,"context_line":"        self.db.reset()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FE88%3D","line":124,"updated":"2013-09-12 12:59:22.000000000","message":"have you tried to move this line into BaseTestCase from glance/tests/utils.py ?\nI think it should reduce the amount of copied-n-pasted code\n\njust curios to know will it brake anything else or not","commit_id":"742e8177fdd8abd1fb8969fd224f4b4d9817def7"},{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"352e0af77a3ca5b429c9f2945cdf4e7d223638c6","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                                                                self.store)"},{"line_number":122,"context_line":"        glance.store.create_stores()"},{"line_number":123,"context_line":"        self.config(policy_file\u003d"},{"line_number":124,"context_line":"                    os.path.abspath(\u0027glance/tests/etc/policy.json\u0027))"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def _create_images(self):"},{"line_number":127,"context_line":"        self.db.reset()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FEFo%3D","line":124,"in_reply_to":"AAAASn%2F%2FE88%3D","updated":"2013-09-12 17:13:36.000000000","message":"Aleksander, I agree with you that it\u0027s copied-n-pasted code.\n\nIn other side we cann\u0027t move this line to BaseTestCase, because it can bring some errors in tests (where policy file must not be found).\n\nIf you can offer other way, it will be great)","commit_id":"742e8177fdd8abd1fb8969fd224f4b4d9817def7"},{"author":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"change_message_id":"9828febf84329fa70885dd672aef915ce8219af4","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                                                                self.store)"},{"line_number":122,"context_line":"        glance.store.create_stores()"},{"line_number":123,"context_line":"        self.config(policy_file\u003d"},{"line_number":124,"context_line":"                    os.path.abspath(\u0027glance/tests/etc/policy.json\u0027))"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def _create_images(self):"},{"line_number":127,"context_line":"        self.db.reset()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2FBz0%3D","line":124,"in_reply_to":"AAAASn%2F%2FEFo%3D","updated":"2013-09-13 07:54:17.000000000","message":"the another approach is to use Mixin class which only contains setup() with this line of code, then just apply the inheritance when it\u0027s needed. I hope that helps :)","commit_id":"742e8177fdd8abd1fb8969fd224f4b4d9817def7"}]}
