)]}'
{"api-ref/source/v3/unified_limits.inc":[{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"17b774bf517e5de40c00a006c952a10fa0bb94f1","unresolved":false,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":".. rest_status_code:: error status.yaml"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"   - 401"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"Flat Enforcement Example"},{"line_number":343,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-c++src","patch_set":8,"id":"5f7c97a3_725043d6","line":340,"updated":"2018-06-11 03:24:44.000000000","message":"and 403","commit_id":"738a69c50e1494891988f2f4d1fea643391c5a79"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"fda1e87c096f7431f6e7ab8c94c0203719643472","unresolved":false,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":".. rest_status_code:: error status.yaml"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"   - 401"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"Flat Enforcement Example"},{"line_number":343,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-c++src","patch_set":8,"id":"5f7c97a3_a0de4f67","line":340,"in_reply_to":"5f7c97a3_725043d6","updated":"2018-06-12 20:47:04.000000000","message":"Done","commit_id":"738a69c50e1494891988f2f4d1fea643391c5a79"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"8628716974ccbde4eb7a56d59a08fcccb2d279ee","unresolved":false,"context_lines":[{"line_number":309,"context_line":"Get Enforcement Model"},{"line_number":310,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":".. rest_method::  GET /v3/limits/model"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"Return the configured limit enforcement model."},{"line_number":315,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":12,"id":"5f7c97a3_096390ac","line":312,"range":{"start_line":312,"start_character":18,"end_line":312,"end_character":38},"updated":"2018-07-10 07:40:03.000000000","message":"This is a little weird. /v3/limits is for project limits. I would have expected this to be under /v3/registered_limits/model or maybe it\u0027s own endpoint, like /v3/limits-model.","commit_id":"e8ca7846ffa1d5bdfd5f16a4d3b2fbe3033a5e70"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6cafccf62c4a3b517b17169399356597e2ee1c73","unresolved":false,"context_lines":[{"line_number":309,"context_line":"Get Enforcement Model"},{"line_number":310,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":".. rest_method::  GET /v3/limits/model"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"Return the configured limit enforcement model."},{"line_number":315,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":12,"id":"5f7c97a3_3757b9cb","line":312,"range":{"start_line":312,"start_character":18,"end_line":312,"end_character":38},"in_reply_to":"5f7c97a3_096390ac","updated":"2018-07-10 18:29:21.000000000","message":"Yeah - I remember having a little bit of discussion around this early on. The original implementation actually had it\u0027s own endpoint that wasn\u0027t under /v3/limits/ [0].\n\nThe reason for moving it under /v3/limits/ was that the enforcement model only applies to project limits. Registered limits don\u0027t behave differently depending on the enforcement model used by a deployment.\n\n[0] https://review.openstack.org/#/c/562716/1/keystone/limit/routers.py","commit_id":"e8ca7846ffa1d5bdfd5f16a4d3b2fbe3033a5e70"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"b16cb080532686f5956c354c0645b025abfe9d52","unresolved":false,"context_lines":[{"line_number":309,"context_line":"Get Enforcement Model"},{"line_number":310,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":".. rest_method::  GET /v3/limits/model"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"Return the configured limit enforcement model."},{"line_number":315,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":12,"id":"5f7c97a3_2a7d03e6","line":312,"range":{"start_line":312,"start_character":18,"end_line":312,"end_character":38},"in_reply_to":"5f7c97a3_3757b9cb","updated":"2018-07-11 03:49:59.000000000","message":"yes, because enforcement model only applies to project limits. @Collen, is that make sense?","commit_id":"e8ca7846ffa1d5bdfd5f16a4d3b2fbe3033a5e70"}],"keystone/limit/controllers.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"db7f78cfd15effcbf444130038295f8054a42d71","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @controller.protected()"},{"line_number":85,"context_line":"    def get_limit_model(self, request):"},{"line_number":86,"context_line":"        model_name \u003d PROVIDERS.unified_limit_api.get_model()"},{"line_number":87,"context_line":"        return {\u0027model\u0027: model_name}"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @controller.protected()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_e24700bc","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":18},"updated":"2018-04-30 15:44:05.000000000","message":"This should be renamed since now it is a dictionary of information and not a string.","commit_id":"116dbcece22e0e37817383fc655f8476f26df1fd"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1d9babb84ad815f0c79e0bb25837fae0a8fa05da","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @controller.protected()"},{"line_number":85,"context_line":"    def get_limit_model(self, request):"},{"line_number":86,"context_line":"        model_name \u003d PROVIDERS.unified_limit_api.get_model()"},{"line_number":87,"context_line":"        return {\u0027model\u0027: model_name}"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @controller.protected()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_42acac34","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":18},"in_reply_to":"9f6a8fd7_e24700bc","updated":"2018-04-30 16:10:22.000000000","message":"Done","commit_id":"116dbcece22e0e37817383fc655f8476f26df1fd"}],"keystone/limit/routers.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"db7f78cfd15effcbf444130038295f8054a42d71","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        self._add_resource("},{"line_number":69,"context_line":"            mapper, controllers.LimitV3(),"},{"line_number":70,"context_line":"            path\u003d\u0027/limit_model\u0027,"},{"line_number":71,"context_line":"            get_head_action\u003d\u0027get_limit_model\u0027,"},{"line_number":72,"context_line":"            status\u003djson_home.Status.EXPERIMENTAL,"},{"line_number":73,"context_line":"            rel\u003djson_home.build_v3_resource_relation(\u0027limit_model\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_c2167ca8","line":70,"range":{"start_line":70,"start_character":19,"end_line":70,"end_character":30},"updated":"2018-04-30 15:44:05.000000000","message":"This path should change to /v3/limis/model instead.","commit_id":"116dbcece22e0e37817383fc655f8476f26df1fd"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1d9babb84ad815f0c79e0bb25837fae0a8fa05da","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        self._add_resource("},{"line_number":69,"context_line":"            mapper, controllers.LimitV3(),"},{"line_number":70,"context_line":"            path\u003d\u0027/limit_model\u0027,"},{"line_number":71,"context_line":"            get_head_action\u003d\u0027get_limit_model\u0027,"},{"line_number":72,"context_line":"            status\u003djson_home.Status.EXPERIMENTAL,"},{"line_number":73,"context_line":"            rel\u003djson_home.build_v3_resource_relation(\u0027limit_model\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_c2651c1f","line":70,"range":{"start_line":70,"start_character":19,"end_line":70,"end_character":30},"in_reply_to":"9f6a8fd7_c2167ca8","updated":"2018-04-30 16:10:22.000000000","message":"Done","commit_id":"116dbcece22e0e37817383fc655f8476f26df1fd"}],"keystone/tests/unit/test_limits.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"db7f78cfd15effcbf444130038295f8054a42d71","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        schema \u003d {"},{"line_number":33,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":34,"context_line":"            \u0027properties\u0027: {"},{"line_number":35,"context_line":"                \u0027model\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":36,"context_line":"            },"},{"line_number":37,"context_line":"            \u0027required\u0027: [\u0027model\u0027],"},{"line_number":38,"context_line":"            \u0027additionalProperties\u0027: False,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_226c1835","line":35,"range":{"start_line":35,"start_character":26,"end_line":35,"end_character":42},"updated":"2018-04-30 15:44:05.000000000","message":"This needs to be an object instead of a string.","commit_id":"116dbcece22e0e37817383fc655f8476f26df1fd"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1d9babb84ad815f0c79e0bb25837fae0a8fa05da","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        schema \u003d {"},{"line_number":33,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":34,"context_line":"            \u0027properties\u0027: {"},{"line_number":35,"context_line":"                \u0027model\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":36,"context_line":"            },"},{"line_number":37,"context_line":"            \u0027required\u0027: [\u0027model\u0027],"},{"line_number":38,"context_line":"            \u0027additionalProperties\u0027: False,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_85596e36","line":35,"range":{"start_line":35,"start_character":26,"end_line":35,"end_character":42},"in_reply_to":"9f6a8fd7_226c1835","updated":"2018-04-30 16:10:22.000000000","message":"Done","commit_id":"116dbcece22e0e37817383fc655f8476f26df1fd"}],"keystone/tests/unit/test_versions.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"db7f78cfd15effcbf444130038295f8054a42d71","unresolved":false,"context_lines":[{"line_number":659,"context_line":"        \u0027hints\u0027: {\u0027status\u0027: \u0027experimental\u0027}"},{"line_number":660,"context_line":"    },"},{"line_number":661,"context_line":"    json_home.build_v3_resource_relation(\u0027limit_model\u0027): {"},{"line_number":662,"context_line":"        \u0027href\u0027: \u0027/limit_model\u0027,"},{"line_number":663,"context_line":"        \u0027hints\u0027: {\u0027status\u0027: \u0027experimental\u0027}"},{"line_number":664,"context_line":"    },"},{"line_number":665,"context_line":"    json_home.build_v3_resource_relation(\u0027application_credential\u0027): {"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_a261083c","line":662,"range":{"start_line":662,"start_character":18,"end_line":662,"end_character":29},"updated":"2018-04-30 15:44:05.000000000","message":"same comment here about the path.","commit_id":"116dbcece22e0e37817383fc655f8476f26df1fd"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1d9babb84ad815f0c79e0bb25837fae0a8fa05da","unresolved":false,"context_lines":[{"line_number":659,"context_line":"        \u0027hints\u0027: {\u0027status\u0027: \u0027experimental\u0027}"},{"line_number":660,"context_line":"    },"},{"line_number":661,"context_line":"    json_home.build_v3_resource_relation(\u0027limit_model\u0027): {"},{"line_number":662,"context_line":"        \u0027href\u0027: \u0027/limit_model\u0027,"},{"line_number":663,"context_line":"        \u0027hints\u0027: {\u0027status\u0027: \u0027experimental\u0027}"},{"line_number":664,"context_line":"    },"},{"line_number":665,"context_line":"    json_home.build_v3_resource_relation(\u0027application_credential\u0027): {"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_45a916db","line":662,"range":{"start_line":662,"start_character":18,"end_line":662,"end_character":29},"in_reply_to":"9f6a8fd7_a261083c","updated":"2018-04-30 16:10:22.000000000","message":"Done","commit_id":"116dbcece22e0e37817383fc655f8476f26df1fd"}],"releasenotes/notes/bug-1765193-b40318b9fb5d1c7b.yaml":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"687a9018ea95e77a7bd6e931d1115c53bfb8f866","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    [`bug 1765193 \u003chttps://bugs.launchpad.net/keystone/+bug/1765193\u003e`_]"},{"line_number":5,"context_line":"    The unified limit API now exposes a deployments configured enforcement"},{"line_number":6,"context_line":"    model via the ``GET /limit_model`` endpoint."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"9f6a8fd7_613d412b","line":5,"range":{"start_line":5,"start_character":40,"end_line":5,"end_character":51},"updated":"2018-04-28 15:13:43.000000000","message":"should be just \"deployment\"?","commit_id":"116dbcece22e0e37817383fc655f8476f26df1fd"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"db7f78cfd15effcbf444130038295f8054a42d71","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    [`bug 1765193 \u003chttps://bugs.launchpad.net/keystone/+bug/1765193\u003e`_]"},{"line_number":5,"context_line":"    The unified limit API now exposes a deployments configured enforcement"},{"line_number":6,"context_line":"    model via the ``GET /limit_model`` endpoint."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"9f6a8fd7_825e4474","line":5,"range":{"start_line":5,"start_character":40,"end_line":5,"end_character":51},"in_reply_to":"9f6a8fd7_613d412b","updated":"2018-04-30 15:44:05.000000000","message":"Yeah - this needs to be plural. Done.","commit_id":"116dbcece22e0e37817383fc655f8476f26df1fd"}]}
