)]}'
{"keystone/common/policies/region.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4597a58b0d60aae834f3ef9fc4d2944415f700cf","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":33,"context_line":"        description\u003d\u0027Create region\u0027,"},{"line_number":34,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/regions\u0027,"},{"line_number":35,"context_line":"                     \u0027method\u0027: \u0027POST\u0027}]),"},{"line_number":36,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":37,"context_line":"        name\u003dbase.IDENTITY % \u0027update_region\u0027,"},{"line_number":38,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_9bda1515","line":35,"updated":"2017-03-24 20:31:40.000000000","message":"According to the catalog router, this can also be a PUT:\n\nhttps://github.com/openstack/keystone/blob/62a0d2f295793928527530ae6540fe7e210dcd43/keystone/catalog/routers.py#L85","commit_id":"e256e8535993ab4d1a1b29035fb70c6e747ee11b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c341d0ce1467f3368b22890287cc6b607de7830","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027get_region\u0027,"},{"line_number":20,"context_line":"        check_str\u003d\u0027\u0027,"},{"line_number":21,"context_line":"        description\u003d\u0027Show region details\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/regions/{region_id}\u0027,"},{"line_number":23,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":24,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_92d3ccd5","line":21,"updated":"2017-03-27 20:49:29.000000000","message":"Let\u0027s use punctuation here to be consistent with the direction of the rest of the policy-docs patches.","commit_id":"520fc21709c908f25db7fe671942cfd6c39c8004"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"db439e34be177a2d632fe35dec20b697beec6d65","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        description\u003d\u0027Create region.\u0027,"},{"line_number":34,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/regions\u0027,"},{"line_number":35,"context_line":"                     \u0027method\u0027: \u0027POST\u0027},"},{"line_number":36,"context_line":"                    {\u0027path\u0027: \u0027/v3/regions\u0027,"},{"line_number":37,"context_line":"                     \u0027method\u0027: \u0027PUT\u0027}]),"},{"line_number":38,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":39,"context_line":"        name\u003dbase.IDENTITY % \u0027update_region\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfeb2761_e76f7690","line":36,"range":{"start_line":36,"start_character":30,"end_line":36,"end_character":41},"updated":"2017-03-30 17:57:56.000000000","message":"/v3/regions/{region_id}\n\nhttps://github.com/openstack/keystone/blob/dafbf5b/keystone/catalog/routers.py#L85","commit_id":"ad7da64cd89358a60853a1763ac8acfbff7ef325"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"0740ad527c0a6b659727a17adb2b3ade3b639f99","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"region_policies \u003d ["},{"line_number":18,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027get_region\u0027,"},{"line_number":20,"context_line":"        check_str\u003d\u0027\u0027,"},{"line_number":21,"context_line":"        description\u003d\u0027Show region details.\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/regions/{region_id}\u0027,"},{"line_number":23,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":24,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":25,"context_line":"        name\u003dbase.IDENTITY % \u0027list_regions\u0027,"},{"line_number":26,"context_line":"        check_str\u003d\u0027\u0027,"},{"line_number":27,"context_line":"        description\u003d\u0027List regions.\u0027,"},{"line_number":28,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/regions\u0027,"},{"line_number":29,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":30,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":31,"context_line":"        name\u003dbase.IDENTITY % \u0027create_region\u0027,"},{"line_number":32,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":7,"id":"bff0334d_1591549a","line":29,"range":{"start_line":19,"start_character":0,"end_line":29,"end_character":40},"updated":"2017-04-05 18:49:36.000000000","message":"perhaps both of these should have a HEAD:\n\nregions use the generic router [1] which establishes GET and HEAD to all get_ and list_ ops. does that make sense to you ?\n\n[1] https://github.com/openstack/keystone/blob/master/keystone/catalog/routers.py#L81-L83\n[2] https://github.com/openstack/keystone/blob/master/keystone/common/router.py#L43-L52","commit_id":"84fd9caa88707aa63eb365d68d3a699fdad99587"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e41592a75fcabc5689ce2b425c28b5220214a841","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        check_str\u003d\u0027\u0027,"},{"line_number":27,"context_line":"        description\u003d\u0027List regions.\u0027,"},{"line_number":28,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/regions\u0027,"},{"line_number":29,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":30,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":31,"context_line":"        name\u003dbase.IDENTITY % \u0027create_region\u0027,"},{"line_number":32,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":7,"id":"bff0334d_87dc1647","line":29,"in_reply_to":"bff0334d_1591549a","updated":"2017-04-05 21:35:08.000000000","message":"Good catch.","commit_id":"84fd9caa88707aa63eb365d68d3a699fdad99587"}]}
