)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3125be0bbfb7ef280cce8a4195e3a23a48dc1342","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     David Stanek \u003cdstanek@dstanek.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-28 20:28:48 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update region with a null description should 400"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This should raise a validation error back to the client. Right now we"},{"line_number":10,"context_line":"return an internal server error."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1abeadc6_8d95e734","line":7,"updated":"2014-08-28 20:40:31.000000000","message":"this should be 403 Forbidden. 400 means the request was in a format that the server didn\u0027t understand (e.g., an invalid header, or the body wasn\u0027t valid JSON).","commit_id":"f56b761660486aa3717e437bd5bbcd1015723909"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a6c9a1bebff35304dd1f9d8d5a66f59118618071","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     David Stanek \u003cdstanek@dstanek.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-28 20:28:48 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update region with a null description should 400"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This should raise a validation error back to the client. Right now we"},{"line_number":10,"context_line":"return an internal server error."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1abeadc6_efdc65e6","line":7,"in_reply_to":"1abeadc6_2bdd72e0","updated":"2014-08-29 15:21:36.000000000","message":"The use of 400 for ValidationError is a bug because it doesn\u0027t follow the HTTP 1.1 standard.","commit_id":"f56b761660486aa3717e437bd5bbcd1015723909"},{"author":{"_account_id":6282,"name":"Wu Wenxiang","email":"wu.wenxiang@algoblu.com","username":"wu-wenxiang"},"change_message_id":"352ad86c301c7804f3543f47fd83cf64e0ce3450","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     David Stanek \u003cdstanek@dstanek.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-28 20:28:48 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update region with a null description should 400"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This should raise a validation error back to the client. Right now we"},{"line_number":10,"context_line":"return an internal server error."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1abeadc6_cab7ae1f","line":7,"in_reply_to":"1abeadc6_8d95e734","updated":"2014-08-29 06:32:11.000000000","message":"Agree, 400 should be sent from httpd.exe or http.sys rather than application logic","commit_id":"f56b761660486aa3717e437bd5bbcd1015723909"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"bc08367cf815b08872ed61501f924f2050e809c6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     David Stanek \u003cdstanek@dstanek.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-28 20:28:48 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update region with a null description should 400"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This should raise a validation error back to the client. Right now we"},{"line_number":10,"context_line":"return an internal server error."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1abeadc6_2bdd72e0","line":7,"in_reply_to":"1abeadc6_cab7ae1f","updated":"2014-08-29 15:00:06.000000000","message":"A 400 is for a validation error: http://git.openstack.org/cgit/openstack/keystone/tree/keystone/exception.py#n78\n\nThere is nothing to say that a user has to run Keystone behind a webserver so we can\u0027t/don\u0027t rely on one.","commit_id":"f56b761660486aa3717e437bd5bbcd1015723909"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"a3cfff56429c8fbccc1f77b664125ef50cb5fd2b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     David Stanek \u003cdstanek@dstanek.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-28 20:28:48 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update region with a null description should 400"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This should raise a validation error back to the client. Right now we"},{"line_number":10,"context_line":"return an internal server error."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1abeadc6_52b7be20","line":7,"in_reply_to":"1abeadc6_efdc65e6","updated":"2014-08-29 15:32:02.000000000","message":"While I agree with you, that\u0027s a different issue. We currently use 400 so when I thought this should be a client error I believe that would have been the correct error code based on our current implementation.","commit_id":"f56b761660486aa3717e437bd5bbcd1015723909"}],"keystone/catalog/core.py":[{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"f11ed5d6b116b4fa2891a5a7e5dc87f3c131e1c2","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        # database can not be null. So if the user doesn\u0027t pass in a"},{"line_number":133,"context_line":"        # description or passes in a null description then set it to an"},{"line_number":134,"context_line":"        # empty string."},{"line_number":135,"context_line":"        if region_ref.get(\u0027description\u0027) is None:"},{"line_number":136,"context_line":"            region_ref[\u0027description\u0027] \u003d \u0027\u0027"},{"line_number":137,"context_line":"        return self.driver.update_region(region_id, region_ref)"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_74cb0072","line":135,"updated":"2014-12-22 14:19:29.000000000","message":"I think this would lead to a bug. The description would be updated to empty string when updating other properties.","commit_id":"a1c9ab0ec8d1555e133fb371e90e507e3ed734c3"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"77fefd324c070f13240461da94cd40c6e526161c","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        # database can not be null. So if the user doesn\u0027t pass in a"},{"line_number":133,"context_line":"        # description or passes in a null description then set it to an"},{"line_number":134,"context_line":"        # empty string."},{"line_number":135,"context_line":"        if region_ref.get(\u0027description\u0027) is None:"},{"line_number":136,"context_line":"            region_ref[\u0027description\u0027] \u003d \u0027\u0027"},{"line_number":137,"context_line":"        return self.driver.update_region(region_id, region_ref)"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_99634eb0","line":135,"in_reply_to":"3a961159_74cb0072","updated":"2015-01-07 09:12:52.000000000","message":"wanghong++.\nIf authors are sure this will not lead to a bug, can you add relevant note?\nOtherwise, how about changing the if clause to something like:\n\nif \u0027description\u0027 in region_ref and region_ref.get(\u0027description\u0027) is None:\n    region_ref[\u0027description\u0027] \u003d \u0027\u0027","commit_id":"a1c9ab0ec8d1555e133fb371e90e507e3ed734c3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"da327d5db2d14eda7694830b2028d5b1a2b5331a","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        # database can not be null. So if the user doesn\u0027t pass in a"},{"line_number":133,"context_line":"        # description or passes in a null description then set it to an"},{"line_number":134,"context_line":"        # empty string."},{"line_number":135,"context_line":"        if region_ref.get(\u0027description\u0027) is None:"},{"line_number":136,"context_line":"            region_ref[\u0027description\u0027] \u003d \u0027\u0027"},{"line_number":137,"context_line":"        return self.driver.update_region(region_id, region_ref)"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_33e8a1b2","line":135,"in_reply_to":"3a961159_99634eb0","updated":"2015-03-20 15:06:25.000000000","message":"++ that\u0027s a good point.","commit_id":"a1c9ab0ec8d1555e133fb371e90e507e3ed734c3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5495e500d196f66fd4666e89f6e70d1063368806","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def update_region(self, region_id, region_ref, initiator\u003dNone):"},{"line_number":129,"context_line":"        # NOTE(lbragstad,dstanek): The description column of the region"},{"line_number":130,"context_line":"        # database can not be null. So if the user passes in a null"},{"line_number":131,"context_line":"        # description set it to an empty string."},{"line_number":132,"context_line":"        if \u0027description\u0027 in region_ref and region_ref[\u0027description\u0027] is None:"},{"line_number":133,"context_line":"            region_ref[\u0027description\u0027] \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6ced46_1d75f997","line":130,"updated":"2015-03-24 12:40:54.000000000","message":"cannot*","commit_id":"db0217cf7aa86473b1e1bdb7f185dbc940a588f2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0208864a13ba2dac0eb7eeff71f36adbc3dcc68e","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def update_region(self, region_id, region_ref, initiator\u003dNone):"},{"line_number":129,"context_line":"        # NOTE(lbragstad,dstanek): The description column of the region"},{"line_number":130,"context_line":"        # database can not be null. So if the user passes in a null"},{"line_number":131,"context_line":"        # description set it to an empty string."},{"line_number":132,"context_line":"        if \u0027description\u0027 in region_ref and region_ref[\u0027description\u0027] is None:"},{"line_number":133,"context_line":"            region_ref[\u0027description\u0027] \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6ced46_ff67ed4a","line":130,"in_reply_to":"1a6ced46_1d75f997","updated":"2015-03-25 19:04:41.000000000","message":"Done","commit_id":"db0217cf7aa86473b1e1bdb7f185dbc940a588f2"}],"keystone/tests/test_v3_catalog.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"be50249f2c877f49399a24cfd2de13a29c4d6929","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        \"\"\"Call ``PATCH /regions/{region_id}``.\"\"\""},{"line_number":234,"context_line":"        region \u003d self.new_region_ref()"},{"line_number":235,"context_line":"        del region[\u0027id\u0027]"},{"line_number":236,"context_line":"        region[\u0027description\u0027]\u003d None"},{"line_number":237,"context_line":"        r \u003d self.patch(\u0027/regions/%(region_id)s\u0027 % {"},{"line_number":238,"context_line":"            \u0027region_id\u0027: self.region_id},"},{"line_number":239,"context_line":"            body\u003d{\u0027region\u0027: region})"}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_ada8e38c","line":236,"updated":"2014-08-28 20:40:53.000000000","message":"watch yo pep","commit_id":"f56b761660486aa3717e437bd5bbcd1015723909"},{"author":{"_account_id":6282,"name":"Wu Wenxiang","email":"wu.wenxiang@algoblu.com","username":"wu-wenxiang"},"change_message_id":"352ad86c301c7804f3543f47fd83cf64e0ce3450","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        \"\"\"Call ``PATCH /regions/{region_id}``.\"\"\""},{"line_number":234,"context_line":"        region \u003d self.new_region_ref()"},{"line_number":235,"context_line":"        del region[\u0027id\u0027]"},{"line_number":236,"context_line":"        region[\u0027description\u0027]\u003d None"},{"line_number":237,"context_line":"        r \u003d self.patch(\u0027/regions/%(region_id)s\u0027 % {"},{"line_number":238,"context_line":"            \u0027region_id\u0027: self.region_id},"},{"line_number":239,"context_line":"            body\u003d{\u0027region\u0027: region})"}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_8a6f7691","line":236,"in_reply_to":"1abeadc6_ada8e38c","updated":"2014-08-29 06:32:11.000000000","message":":)","commit_id":"f56b761660486aa3717e437bd5bbcd1015723909"}],"keystone/tests/unit/test_v3_catalog.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5495e500d196f66fd4666e89f6e70d1063368806","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                         expected_status\u003d201)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        region_updates \u003d {"},{"line_number":235,"context_line":"            # just something up update that\u0027s not the description"},{"line_number":236,"context_line":"            \u0027parent_region_id\u0027: self.region_id,"},{"line_number":237,"context_line":"        }"},{"line_number":238,"context_line":"        resp \u003d self.patch(\u0027/regions/%s\u0027 % region_ref[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6ced46_1d9c19c0","line":235,"updated":"2015-03-24 12:40:54.000000000","message":"remove \u0027up\u0027?","commit_id":"db0217cf7aa86473b1e1bdb7f185dbc940a588f2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0208864a13ba2dac0eb7eeff71f36adbc3dcc68e","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                         expected_status\u003d201)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        region_updates \u003d {"},{"line_number":235,"context_line":"            # just something up update that\u0027s not the description"},{"line_number":236,"context_line":"            \u0027parent_region_id\u0027: self.region_id,"},{"line_number":237,"context_line":"        }"},{"line_number":238,"context_line":"        resp \u003d self.patch(\u0027/regions/%s\u0027 % region_ref[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6ced46_5f6f212b","line":235,"in_reply_to":"1a6ced46_1d9c19c0","updated":"2015-03-25 19:04:41.000000000","message":"Done","commit_id":"db0217cf7aa86473b1e1bdb7f185dbc940a588f2"}]}
