)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"27c6046cf0b8b2716bbb422752860340eec428fa","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Remove db layer hard-code permission checks for quota_create/update"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patches remove the hard-code permission checks for db call"},{"line_number":10,"context_line":"quota_update/create. Also add correct and add related unittest."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partially implements bp nova-api-policy-final-part"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7ad32947_bda3404f","line":10,"updated":"2015-04-27 16:22:41.000000000","message":"nit: \nadd correct is not a good word","commit_id":"f2da0c75080b5bbb949723553ecbb3bf021e7aeb"}],"nova/api/openstack/compute/contrib/quotas.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"27c6046cf0b8b2716bbb422752860340eec428fa","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            # permission checks."},{"line_number":142,"context_line":"            nova.context.require_admin_context(context)"},{"line_number":143,"context_line":"        except exception.AdminRequired:"},{"line_number":144,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        try:"},{"line_number":147,"context_line":"            settable_quotas \u003d QUOTAS.get_settable_quotas(context, project_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ad32947_80101750","line":144,"updated":"2015-04-27 16:22:41.000000000","message":"I think you can move to above , maybe line 118","commit_id":"f2da0c75080b5bbb949723553ecbb3bf021e7aeb"}],"nova/api/openstack/compute/plugins/v3/quota_sets.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"27c6046cf0b8b2716bbb422752860340eec428fa","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    @extensions.expected_errors((400, 403))"},{"line_number":103,"context_line":"    @validation.schema(quota_sets.update)"},{"line_number":104,"context_line":"    def update(self, req, id, body):"},{"line_number":105,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":106,"context_line":"        authorize(context, action\u003d\u0027update\u0027)"},{"line_number":107,"context_line":"        project_id \u003d id"},{"line_number":108,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ad32947_bda900e2","line":105,"updated":"2015-04-27 16:22:41.000000000","message":"do you need set target as id here?","commit_id":"f2da0c75080b5bbb949723553ecbb3bf021e7aeb"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"de3628feac7efa6799ca1d71519347ae2049efbb","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                                                           user_id\u003duser_id,"},{"line_number":100,"context_line":"                                                           usages\u003dTrue))"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @extensions.expected_errors(400)"},{"line_number":103,"context_line":"    @validation.schema(quota_sets.update)"},{"line_number":104,"context_line":"    def update(self, req, id, body):"},{"line_number":105,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba3cc151_3ff6ead7","line":102,"updated":"2015-07-06 19:59:59.000000000","message":"Perhaps I\u0027m misunderstanding here, but wouldn\u0027t 403 still be an expected error if authorize(...) failed?","commit_id":"583359aaae61907b0929fa292485b3bbcd2b6c7f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"68ab22b2e807a0de8815b64ed1815790eb42e0d4","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                                                           user_id\u003duser_id,"},{"line_number":100,"context_line":"                                                           usages\u003dTrue))"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @extensions.expected_errors(400)"},{"line_number":103,"context_line":"    @validation.schema(quota_sets.update)"},{"line_number":104,"context_line":"    def update(self, req, id, body):"},{"line_number":105,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba3cc151_d5779339","line":102,"in_reply_to":"ba3cc151_3ff6ead7","updated":"2015-07-07 03:12:07.000000000","message":"The policy exception is handled in the decorator https://github.com/openstack/nova/blob/master/nova/api/openstack/extensions.py#L480","commit_id":"583359aaae61907b0929fa292485b3bbcd2b6c7f"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"5fd2bce4527736592167e261edb57e678a699328","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                                                           user_id\u003duser_id,"},{"line_number":100,"context_line":"                                                           usages\u003dTrue))"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @extensions.expected_errors(400)"},{"line_number":103,"context_line":"    @validation.schema(quota_sets.update)"},{"line_number":104,"context_line":"    def update(self, req, id, body):"},{"line_number":105,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba3cc151_2873ef16","line":102,"in_reply_to":"ba3cc151_d5779339","updated":"2015-07-07 13:52:35.000000000","message":"Thanks!  It makes sense to handle it there, but it isn\u0027t obivous from this change.","commit_id":"583359aaae61907b0929fa292485b3bbcd2b6c7f"}],"nova/tests/unit/api/openstack/compute/contrib/test_quotas.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"1d3357c04c33fc27a66b1e660478322faffe85dd","unresolved":false,"context_lines":[{"line_number":619,"context_line":"        self.controller \u003d self.plugin.QuotaSetsController(self.ext_mgr)"},{"line_number":620,"context_line":"        self.mox.ResetAll()"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"    def _get_http_request(self, url\u003d\u0027\u0027):"},{"line_number":623,"context_line":"        return fakes.HTTPRequest.blank(url, use_admin_context\u003dTrue)"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_712778b6","line":622,"updated":"2015-05-29 18:31:03.000000000","message":"OK, I see, this is overriding the _get_http_request() from ExtendedQuotasTestV21.  All this test class extending is quite confusing; I\u0027ll be looking forward to when we can drop V2 and go to straight up V21 so we can at least get a handle on all of this :)","commit_id":"583359aaae61907b0929fa292485b3bbcd2b6c7f"}]}
