)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"82ced795ad25d9d5a307d122c80a70aab1f2f2b3","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: Lei Zhang\u003czhang.lei.fly@gmail.com\u003e"},{"line_number":17,"context_line":"Change-Id: I0c043def9c025c18b4cd034640a467586f8cbcfa"},{"line_number":18,"context_line":"Fixes-Bug: #1149987"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAATn%2F%2FUlA%3D","line":18,"updated":"2013-11-11 00:21:50.000000000","message":"Should be Closes-Bug","commit_id":"e950fde05fe86a0c4f5cd434e238bc5dd7da30d1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"192a12d91423272ff7af549ae6f926691175d089","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: Lei Zhang\u003czhang.lei.fly@gmail.com\u003e"},{"line_number":17,"context_line":"Change-Id: I0c043def9c025c18b4cd034640a467586f8cbcfa"},{"line_number":18,"context_line":"Fixes-Bug: #1149987"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAATn%2F%2FI7w%3D","line":18,"updated":"2013-11-13 22:53:34.000000000","message":"Should be Closes-Bug , see https://wiki.openstack.org/wiki/GitCommitMessages#Including_external_references","commit_id":"ad205b1fe5684580417440b6c30550bcac415044"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"3cd57c57335a398d0f94a5ddf8ffbed57fd2c0d6","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: Lei Zhang\u003czhang.lei.fly@gmail.com\u003e"},{"line_number":17,"context_line":"Change-Id: I0c043def9c025c18b4cd034640a467586f8cbcfa"},{"line_number":18,"context_line":"Fixes-Bug: #1149987"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAATn%2F%2FBf0%3D","line":18,"in_reply_to":"AAAATn%2F%2FI7w%3D","updated":"2013-11-15 22:03:53.000000000","message":"Done","commit_id":"ad205b1fe5684580417440b6c30550bcac415044"}],"keystone/common/wsgi.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"82ced795ad25d9d5a307d122c80a70aab1f2f2b3","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        if \u0027self\u0027 in required_args:  # provided by Python"},{"line_number":281,"context_line":"            required_args.remove(\u0027self\u0027)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        if params \u003d\u003d required_args:"},{"line_number":284,"context_line":"            return"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        err_args \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FUkk%3D","line":283,"updated":"2013-11-11 00:21:50.000000000","message":"add a comment why can return here.","commit_id":"e950fde05fe86a0c4f5cd434e238bc5dd7da30d1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"192a12d91423272ff7af549ae6f926691175d089","unresolved":false,"context_lines":[{"line_number":299,"context_line":"            if extra_params:"},{"line_number":300,"context_line":"                err_args[\u0027extra_params\u0027] \u003d extra_params"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        missing_required_params \u003d required_args - params"},{"line_number":303,"context_line":"        if missing_required_params:"},{"line_number":304,"context_line":"            err_args[\u0027missing_required_params\u0027] \u003d missing_required_params"},{"line_number":305,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2FI5I%3D","line":302,"updated":"2013-11-13 22:53:34.000000000","message":"suggest move this up to just after 292 since this is related to required_args same as 290-292.","commit_id":"ad205b1fe5684580417440b6c30550bcac415044"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"192a12d91423272ff7af549ae6f926691175d089","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        if missing_required_params:"},{"line_number":304,"context_line":"            err_args[\u0027missing_required_params\u0027] \u003d missing_required_params"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        if err_args:"},{"line_number":307,"context_line":"            raise exception.ControllerArgsError(**err_args)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def _get_response_code(self, req):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2FI54%3D","line":306,"updated":"2013-11-13 22:53:34.000000000","message":"shouldn\u0027t err_args always be true here? The check for if the call was ok was at line 294, so shouldn\u0027t this always raise?","commit_id":"ad205b1fe5684580417440b6c30550bcac415044"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"3cd57c57335a398d0f94a5ddf8ffbed57fd2c0d6","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        if missing_required_params:"},{"line_number":304,"context_line":"            err_args[\u0027missing_required_params\u0027] \u003d missing_required_params"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        if err_args:"},{"line_number":307,"context_line":"            raise exception.ControllerArgsError(**err_args)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def _get_response_code(self, req):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2FBes%3D","line":306,"in_reply_to":"AAAATn%2F%2FI54%3D","updated":"2013-11-15 22:03:53.000000000","message":"No.  On 290 it checks to see if the provided parameters exactly match the required arguments.  There are two additional checks that need to happen if they don\u0027t match.  First is to look to see if required arguments are missing and the second is to see if too many parameters were provided.","commit_id":"ad205b1fe5684580417440b6c30550bcac415044"}],"keystone/exception.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"235a0781e0888d2629c281c89eb0661ece672e7a","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    def _build_message(self, message, **kwargs):"},{"line_number":75,"context_line":"        message \u003d \u0027\u0027"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        extra_params \u003d kwargs.pop(\u0027extra_params\u0027, None)"},{"line_number":78,"context_line":"        if extra_params:"},{"line_number":79,"context_line":"            message +\u003d _(\u0027%s is redundant.\u0027) % list(extra_params)"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2F0TY%3D","line":77,"updated":"2013-10-09 13:27:12.000000000","message":"can\u0027t you just do extra_params and missing_required_params as optional kwargs of _build_message() defaulting to None?","commit_id":"c248a6b0d40828b987464eb3efca47f7d452cf6c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c696ed35fb06b5dc1f09a084296c7d53e30c379f","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    def _build_message(self, message, **kwargs):"},{"line_number":75,"context_line":"        message \u003d \u0027\u0027"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        extra_params \u003d kwargs.pop(\u0027extra_params\u0027, None)"},{"line_number":78,"context_line":"        if extra_params:"},{"line_number":79,"context_line":"            message +\u003d _(\u0027%s is redundant.\u0027) % list(extra_params)"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FzYM%3D","line":77,"in_reply_to":"AAAATH%2F%2F0TY%3D","updated":"2013-10-09 16:18:04.000000000","message":"Thats a good point.  I just copied the original method signature and didn\u0027t think twice about it.","commit_id":"c248a6b0d40828b987464eb3efca47f7d452cf6c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"82ced795ad25d9d5a307d122c80a70aab1f2f2b3","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    title \u003d \u0027Bad Request\u0027"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"class ControllerArgsError(ValidationError):"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _build_message(self, message, extra_params\u003dNone,"},{"line_number":75,"context_line":"                       missing_required_params\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FUkg%3D","line":72,"updated":"2013-11-11 00:21:50.000000000","message":"add a docstring for when this should be raised.","commit_id":"e950fde05fe86a0c4f5cd434e238bc5dd7da30d1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"82ced795ad25d9d5a307d122c80a70aab1f2f2b3","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        errors \u003d []"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        if extra_params:"},{"line_number":79,"context_line":"            errors.append(_(\u0027%s is redundant.\u0027) % list(extra_params))"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        if missing_required_params:"},{"line_number":82,"context_line":"            errors.append(_(\u0027%s is required.\u0027) % list(missing_required_params))"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FUkc%3D","line":79,"updated":"2013-11-11 00:21:50.000000000","message":"change \"redundant\" to \"not allowed\"? (redudant means it\u0027s already given?)","commit_id":"e950fde05fe86a0c4f5cd434e238bc5dd7da30d1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"192a12d91423272ff7af549ae6f926691175d089","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        for param in sorted(missing_required_params or []):"},{"line_number":85,"context_line":"            errors.append(_(\u0027%s is required.\u0027) % param)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        return \u0027 \u0027.join(str(e) for e in errors)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"class StringLengthExceeded(ValidationError):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2FI5A%3D","line":87,"updated":"2013-11-13 22:53:34.000000000","message":"suggest have some extra text here... \"Incorrect query parameters\" (or whatever input was incorrect... I assume it\u0027s the query string.)","commit_id":"ad205b1fe5684580417440b6c30550bcac415044"}],"keystone/tests/test_wsgi.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"235a0781e0888d2629c281c89eb0661ece672e7a","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        resp \u003d req.get_response(FakeApp())"},{"line_number":147,"context_line":"        expected \u003d {"},{"line_number":148,"context_line":"            \"error\": {"},{"line_number":149,"context_line":"                \"message\": \"[\u0027arg3\u0027] is redundant.[\u0027arg0\u0027, \u0027arg1\u0027] is \""},{"line_number":150,"context_line":"                \"required.\","},{"line_number":151,"context_line":"                \"code\": 400,"},{"line_number":152,"context_line":"                \"title\": \"Bad Request\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2F0Rs%3D","line":149,"updated":"2013-10-09 13:27:12.000000000","message":"a space would be nice between the sentences :)","commit_id":"c248a6b0d40828b987464eb3efca47f7d452cf6c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c696ed35fb06b5dc1f09a084296c7d53e30c379f","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        resp \u003d req.get_response(FakeApp())"},{"line_number":147,"context_line":"        expected \u003d {"},{"line_number":148,"context_line":"            \"error\": {"},{"line_number":149,"context_line":"                \"message\": \"[\u0027arg3\u0027] is redundant.[\u0027arg0\u0027, \u0027arg1\u0027] is \""},{"line_number":150,"context_line":"                \"required.\","},{"line_number":151,"context_line":"                \"code\": 400,"},{"line_number":152,"context_line":"                \"title\": \"Bad Request\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FzSc%3D","line":149,"in_reply_to":"AAAATH%2F%2F0Rs%3D","updated":"2013-10-09 16:18:04.000000000","message":"Done","commit_id":"c248a6b0d40828b987464eb3efca47f7d452cf6c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"82ced795ad25d9d5a307d122c80a70aab1f2f2b3","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                return arg0, arg1"},{"line_number":160,"context_line":"        req \u003d self._make_request()"},{"line_number":161,"context_line":"        req.environ[\u0027openstack.params\u0027] \u003d {\u0027arg0\u0027: \u00270\u0027}"},{"line_number":162,"context_line":"        resp \u003d req.get_response(FakeApp())"},{"line_number":163,"context_line":"        self.assertEqual([\u00270\u0027, \u00271\u0027], jsonutils.loads(resp.body))"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FUkM%3D","line":162,"updated":"2013-11-11 00:21:50.000000000","message":"Remove duplication in these different parts by using a function.\n\nAlso, suggest split up into different test functions.","commit_id":"e950fde05fe86a0c4f5cd434e238bc5dd7da30d1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"82ced795ad25d9d5a307d122c80a70aab1f2f2b3","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        self.assertRaises(exception.ControllerArgsError,"},{"line_number":378,"context_line":"                          self.inspect,"},{"line_number":379,"context_line":"                          func_user_test,"},{"line_number":380,"context_line":"                          params)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def test_all_required_parameters_provided(self):"},{"line_number":383,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FUkE%3D","line":380,"updated":"2013-11-11 00:21:50.000000000","message":"should also be able to check that extra_params and missing_required_params are being set correctly.","commit_id":"e950fde05fe86a0c4f5cd434e238bc5dd7da30d1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d646ff46d9342e87eacd2ea74d8331ba0c6826e0","unresolved":false,"context_lines":[{"line_number":334,"context_line":"        # manager. This would make the code much cleaner."},{"line_number":335,"context_line":"        try:"},{"line_number":336,"context_line":"            self.inspect(func_user_test, params)"},{"line_number":337,"context_line":"        except exception.ControllerArgsError as e:"},{"line_number":338,"context_line":"            message \u003d str(e)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"            for param in expected_extra or []:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2B4V4%3D","line":337,"updated":"2013-11-19 01:16:37.000000000","message":"I think you can use \n\n e \u003d self.assertRaises(exception.ControllerArgsError , self.inspect, func_user_test, params)","commit_id":"6512c71a49c14e1a2f7a857a37b96883def57788"}]}
