)]}'
{"keystone/api/limits.py":[{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"5f89caf201e73a7e17391d4a92527e12352e21d2","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        return self._list_limits()"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def post(self):"},{"line_number":73,"context_line":"        ENFORCER.enforce_call(action\u003d\u0027identity:create_limit\u0027)"},{"line_number":74,"context_line":"        limits_b \u003d (flask.request.get_json(silent\u003dTrue, force\u003dTrue) or {}).get("},{"line_number":75,"context_line":"            \u0027limits\u0027, {})"},{"line_number":76,"context_line":"        validation.lazy_validate(schema.limit_create, limits_b)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_8c746d9b","line":73,"range":{"start_line":73,"start_character":47,"end_line":73,"end_character":59},"updated":"2018-08-06 02:38:35.000000000","message":"we support batch create, so it\u0027s create_limits","commit_id":"afc964feb20c7eec3c1ba7b04fb6c85c8abc6d6d"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"8a0de4184f916d4f0c6cba30232e03e406a36d7c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        return self._list_limits()"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def post(self):"},{"line_number":73,"context_line":"        ENFORCER.enforce_call(action\u003d\u0027identity:create_limit\u0027)"},{"line_number":74,"context_line":"        limits_b \u003d (flask.request.get_json(silent\u003dTrue, force\u003dTrue) or {}).get("},{"line_number":75,"context_line":"            \u0027limits\u0027, {})"},{"line_number":76,"context_line":"        validation.lazy_validate(schema.limit_create, limits_b)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_d73501f9","line":73,"range":{"start_line":73,"start_character":47,"end_line":73,"end_character":59},"in_reply_to":"3f79a3b5_8c746d9b","updated":"2018-08-06 15:25:01.000000000","message":"Yep, local change has this, will post today.","commit_id":"afc964feb20c7eec3c1ba7b04fb6c85c8abc6d6d"}],"keystone/api/registered_limits.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4e45b5ff9efd3e367cb297e93e6bc98a118b6c1b","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def post(self):"},{"line_number":55,"context_line":"        ENFORCER.enforce_call(action\u003d\u0027identity:create_registered_limits\u0027)"},{"line_number":56,"context_line":"        reg_limits \u003d (flask.request.get_json("},{"line_number":57,"context_line":"            silent\u003dTrue, force\u003dTrue) or {}).get(\u0027registered_limits\u0027, {})"},{"line_number":58,"context_line":"        validation.lazy_validate(schema.registered_limit_create, reg_limits)"},{"line_number":59,"context_line":"        registered_limits \u003d [self._assign_unique_id(self._normalize_dict(r))"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_3ff8fd7b","line":56,"range":{"start_line":56,"start_character":36,"end_line":56,"end_character":44},"updated":"2018-08-01 21:30:18.000000000","message":"Some other parts of keystone.api use flask.request.json.get(). Is there is significant difference?","commit_id":"1089c52855c048b356e8881368cccd4d057777ab"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"676ef15fb25cd0c40261b2f0a8f1f117327522c0","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def post(self):"},{"line_number":55,"context_line":"        ENFORCER.enforce_call(action\u003d\u0027identity:create_registered_limits\u0027)"},{"line_number":56,"context_line":"        reg_limits \u003d (flask.request.get_json("},{"line_number":57,"context_line":"            silent\u003dTrue, force\u003dTrue) or {}).get(\u0027registered_limits\u0027, {})"},{"line_number":58,"context_line":"        validation.lazy_validate(schema.registered_limit_create, reg_limits)"},{"line_number":59,"context_line":"        registered_limits \u003d [self._assign_unique_id(self._normalize_dict(r))"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_cef595ca","line":56,"range":{"start_line":56,"start_character":36,"end_line":56,"end_character":44},"in_reply_to":"5f7c97a3_3ff8fd7b","updated":"2018-08-02 03:52:28.000000000","message":"This form allows for a None of it doesn\u0027t decide Json, which is generally better, other places probably should be converted.\n\nForce means decide to join even if content-type and/or accepts is not app/Json, and silent means return a None if it fails.\n\n.Json doesn\u0027t pass force or silent. Some of our tests are bad and require it. I simply figure handling this in code is way better for 400 errors when invalid body is sent.","commit_id":"1089c52855c048b356e8881368cccd4d057777ab"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"5f89caf201e73a7e17391d4a92527e12352e21d2","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            registered_limit_id, registered_limit)"},{"line_number":76,"context_line":"        return self.wrap_member(ref)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def delete_registered_limit(self, registered_limit_id):"},{"line_number":79,"context_line":"        ENFORCER.enforce_call(action\u003d\u0027identity:delete_registered_limit\u0027)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ec62c1d8","line":78,"range":{"start_line":78,"start_character":8,"end_line":78,"end_character":31},"updated":"2018-08-06 02:38:35.000000000","message":"delete","commit_id":"afc964feb20c7eec3c1ba7b04fb6c85c8abc6d6d"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"8a0de4184f916d4f0c6cba30232e03e406a36d7c","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            registered_limit_id, registered_limit)"},{"line_number":76,"context_line":"        return self.wrap_member(ref)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def delete_registered_limit(self, registered_limit_id):"},{"line_number":79,"context_line":"        ENFORCER.enforce_call(action\u003d\u0027identity:delete_registered_limit\u0027)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_773aede7","line":78,"range":{"start_line":78,"start_character":8,"end_line":78,"end_character":31},"in_reply_to":"3f79a3b5_ec62c1d8","updated":"2018-08-06 15:25:01.000000000","message":"Local change has this, will be posted today.","commit_id":"afc964feb20c7eec3c1ba7b04fb6c85c8abc6d6d"}],"keystone/limit/controllers.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4e45b5ff9efd3e367cb297e93e6bc98a118b6c1b","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    @controller.protected()"},{"line_number":123,"context_line":"    def get_limit(self, request, limit_id):"},{"line_number":124,"context_line":"        ref \u003d PROVIDERS.unified_limit_api.get_limit(limit_id)"},{"line_number":125,"context_line":"        # TODO(wxy): Add system-scope check. If the request is system-scoped,"},{"line_number":126,"context_line":"        # it can get any limits."},{"line_number":127,"context_line":"        context \u003d request.context"},{"line_number":128,"context_line":"        if not context.is_admin and not (\u0027admin\u0027 in context.roles):"},{"line_number":129,"context_line":"            project_id \u003d context.project_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_dfbc69d6","side":"PARENT","line":126,"range":{"start_line":125,"start_character":8,"end_line":126,"end_character":32},"updated":"2018-08-01 21:30:18.000000000","message":"nit: we should try and maintain this TODO.","commit_id":"216adb57bfbed9e6ccddd279e22dd616a681f88e"}],"keystone/limit/routers.py":[{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"5f89caf201e73a7e17391d4a92527e12352e21d2","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            patch_action\u003d\u0027update_registered_limit\u0027,"},{"line_number":39,"context_line":"            delete_action\u003d\u0027delete_registered_limit\u0027,"},{"line_number":40,"context_line":"            status\u003djson_home.Status.EXPERIMENTAL,"},{"line_number":41,"context_line":"            rel\u003djson_home.build_v3_resource_relation(\u0027registered_limits\u0027),"},{"line_number":42,"context_line":"            path_vars\u003d{"},{"line_number":43,"context_line":"                \u0027registered_limit_id\u0027:"},{"line_number":44,"context_line":"                    json_home.Parameters.REGISTERED_LIMIT_ID}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_cc3b459a","side":"PARENT","line":41,"range":{"start_line":41,"start_character":54,"end_line":41,"end_character":71},"updated":"2018-08-06 02:38:35.000000000","message":"it should be \"registered_limit\". It\u0027s a bug for json home in unified limit.","commit_id":"6f07b4c1ff69c49d8b0f8411896d12aa893b3abb"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"8a0de4184f916d4f0c6cba30232e03e406a36d7c","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            patch_action\u003d\u0027update_registered_limit\u0027,"},{"line_number":39,"context_line":"            delete_action\u003d\u0027delete_registered_limit\u0027,"},{"line_number":40,"context_line":"            status\u003djson_home.Status.EXPERIMENTAL,"},{"line_number":41,"context_line":"            rel\u003djson_home.build_v3_resource_relation(\u0027registered_limits\u0027),"},{"line_number":42,"context_line":"            path_vars\u003d{"},{"line_number":43,"context_line":"                \u0027registered_limit_id\u0027:"},{"line_number":44,"context_line":"                    json_home.Parameters.REGISTERED_LIMIT_ID}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_973f89d5","side":"PARENT","line":41,"range":{"start_line":41,"start_character":54,"end_line":41,"end_character":71},"in_reply_to":"3f79a3b5_cc3b459a","updated":"2018-08-06 15:25:01.000000000","message":"Working on the fix with a local change. same for below, all posted today.","commit_id":"6f07b4c1ff69c49d8b0f8411896d12aa893b3abb"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"5f89caf201e73a7e17391d4a92527e12352e21d2","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            patch_action\u003d\u0027update_limit\u0027,"},{"line_number":69,"context_line":"            delete_action\u003d\u0027delete_limit\u0027,"},{"line_number":70,"context_line":"            status\u003djson_home.Status.EXPERIMENTAL,"},{"line_number":71,"context_line":"            rel\u003djson_home.build_v3_resource_relation(\u0027limits\u0027),"},{"line_number":72,"context_line":"            path_vars\u003d{"},{"line_number":73,"context_line":"                \u0027limit_id\u0027:"},{"line_number":74,"context_line":"                    json_home.Parameters.LIMIT_ID}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_6c40f108","side":"PARENT","line":71,"range":{"start_line":71,"start_character":54,"end_line":71,"end_character":60},"updated":"2018-08-06 02:38:35.000000000","message":"ditto","commit_id":"6f07b4c1ff69c49d8b0f8411896d12aa893b3abb"}],"keystone/tests/unit/test_versions.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"c9bd41f018a87f2ec1c342e2037c69decee0bfaf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3f79a3b5_12e38735","updated":"2018-08-06 15:35:04.000000000","message":"Note to reviewer(s), Changes to this file are due to fixes needed to JSON Home for limits (a known bug). See wxy\u0027s comment on the previous patchset.","commit_id":"6a79c30debb78de54f52bb8016bd0a6ff8200fcd"}]}
