)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"caa17c5baabbff1cc0379a12073d7eda51cf876c","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    - Moves default revoke_event policies into code"},{"line_number":17,"context_line":"    - Moves default service_provider policies into code"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Partially-Implements: https://blueprints.launchpad.net/keystone/+spec/policy-in-code"},{"line_number":20,"context_line":"Change-Id: Id6e3c0ac54b21d85e68625a5b52fe2559fb70f24"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a1ff146_0f21d19f","line":19,"updated":"2017-03-15 18:26:32.000000000","message":"this can just be:\n\n  blueprint policy-in-code \n\nsince Gerrit is configured to pick those key words up and link them automatically.","commit_id":"6bd66b3e9ce4ffa4a6c989486929ff0c6cef4421"}],"etc/policy.json":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2c4f63ac8c539733bd6de38610b9c4bcf6f93fc9","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    \"identity:update_domain_config\": \"rule:admin_required\","},{"line_number":46,"context_line":"    \"identity:delete_domain_config\": \"rule:admin_required\","},{"line_number":47,"context_line":"    \"identity:get_domain_config_default\": \"rule:admin_required\""},{"line_number":48,"context_line":"}"}],"source_content_type":"application/json","patch_set":6,"id":"3a1ff146_c11ce8c3","side":"PARENT","line":48,"updated":"2017-03-15 21:14:48.000000000","message":"Next stop is removing this whole file!","commit_id":"ab54db8ced99edb27c853c500723c5d58001f150"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b4b221f7224f2acc6ccab4ff9e5327dc82126413","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"    \"identity:create_protocol\": \"rule:admin_required\","},{"line_number":4,"context_line":"    \"identity:update_protocol\": \"rule:admin_required\","}],"source_content_type":"application/json","patch_set":7,"id":"3a1ff146_9392439e","side":"PARENT","line":1,"updated":"2017-03-15 21:28:04.000000000","message":"I think removing this file all together is going to cause some failures. I experienced it when I attempted to remove it awhile ago.\n\nI\u0027d be fine leaving an empty dictionary for now:\n\n  {}\n\nWe can remove the file and address the failures in a subsequent patch, I\u0027ve started some of the work already - https://review.openstack.org/#/c/437388/","commit_id":"ab54db8ced99edb27c853c500723c5d58001f150"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d2c92ae9629f9b11d4b55c52cb845fb30f94c61e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1a1ced50_00b9052e","side":"PARENT","updated":"2017-03-22 22:50:25.000000000","message":"just delete the file?","commit_id":"ab54db8ced99edb27c853c500723c5d58001f150"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"9041e2b9356cd088bb67a5ed041d94fa046b73b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1a1ced50_5b2ccc98","side":"PARENT","in_reply_to":"1a1ced50_00b9052e","updated":"2017-03-22 23:24:32.000000000","message":"Done","commit_id":"ab54db8ced99edb27c853c500723c5d58001f150"}],"keystone/common/policies/base.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2c4f63ac8c539733bd6de38610b9c4bcf6f93fc9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    \u0027rule:admin_required or \u0027"},{"line_number":18,"context_line":"    \u0027(rule:owner and user_id:%(target.credential.user_id)s)\u0027)"},{"line_number":19,"context_line":"RULE_ADMIN_OR_OWNER \u003d \u0027rule:admin_or_owner\u0027"},{"line_number":20,"context_line":"RULE_ADMIN_OR_SERVICE \u003d \u0027rule:service_or_admin\u0027"},{"line_number":21,"context_line":"RULE_ADMIN_OR_TARGET_DOMAIN \u003d ("},{"line_number":22,"context_line":"    \u0027rule:admin_required or \u0027"},{"line_number":23,"context_line":"    \u0027token.project.domain.id:%(target.domain.id)s\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a1ff146_215bfc88","line":20,"updated":"2017-03-15 21:14:48.000000000","message":"This could be RULE_SERVICE_OR_ADMIN to be consistent with the rest of the naming conventions here.","commit_id":"66bf74dcf678a6a84af4f5ba057da05e2857a243"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d2c92ae9629f9b11d4b55c52cb845fb30f94c61e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"RULE_ADMIN_OR_CREDENTIAL_OWNER \u003d ("},{"line_number":17,"context_line":"    \u0027rule:admin_required or \u0027"},{"line_number":18,"context_line":"    \u0027(rule:owner and user_id:%(target.credential.user_id)s)\u0027)"},{"line_number":19,"context_line":"RULE_ADMIN_OR_OWNER \u003d \u0027rule:admin_or_owner\u0027"},{"line_number":20,"context_line":"RULE_ADMIN_OR_TARGET_DOMAIN \u003d ("},{"line_number":21,"context_line":"    \u0027rule:admin_required or \u0027"},{"line_number":22,"context_line":"    \u0027token.project.domain.id:%(target.domain.id)s\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a1ced50_403a1d9a","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":43},"updated":"2017-03-22 22:50:25.000000000","message":"was this moved for the sake of alphabetizing them? i preferred it the other way, it was more logical.","commit_id":"bfc9282da7df70af1219151da173cdc323be6bfd"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"9041e2b9356cd088bb67a5ed041d94fa046b73b3","unresolved":false,"context_lines":[{"line_number":16,"context_line":"RULE_ADMIN_OR_CREDENTIAL_OWNER \u003d ("},{"line_number":17,"context_line":"    \u0027rule:admin_required or \u0027"},{"line_number":18,"context_line":"    \u0027(rule:owner and user_id:%(target.credential.user_id)s)\u0027)"},{"line_number":19,"context_line":"RULE_ADMIN_OR_OWNER \u003d \u0027rule:admin_or_owner\u0027"},{"line_number":20,"context_line":"RULE_ADMIN_OR_TARGET_DOMAIN \u003d ("},{"line_number":21,"context_line":"    \u0027rule:admin_required or \u0027"},{"line_number":22,"context_line":"    \u0027token.project.domain.id:%(target.domain.id)s\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a1ced50_fb1c986b","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":43},"in_reply_to":"1a1ced50_403a1d9a","updated":"2017-03-22 23:24:32.000000000","message":"Done","commit_id":"bfc9282da7df70af1219151da173cdc323be6bfd"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d2c92ae9629f9b11d4b55c52cb845fb30f94c61e","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    \u0027rule:admin_required or \u0027"},{"line_number":25,"context_line":"    \u0027project_id:%(target.project.id)s\u0027)"},{"line_number":26,"context_line":"RULE_ADMIN_OR_TOKEN_SUBJECT \u003d \u0027rule:admin_or_token_subject\u0027"},{"line_number":27,"context_line":"RULE_ADMIN_REQUIRED \u003d \u0027rule:admin_required\u0027"},{"line_number":28,"context_line":"RULE_REVOKE_EVENT_OR_ADMIN \u003d \u0027rule:revoke_event_or_admin\u0027"},{"line_number":29,"context_line":"RULE_SERVICE_ADMIN_OR_TOKEN_SUBJECT \u003d \u0027rule:service_admin_or_token_subject\u0027"},{"line_number":30,"context_line":"RULE_SERVICE_OR_ADMIN \u003d \u0027rule:service_or_admin\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a1ced50_80409508","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":43},"updated":"2017-03-22 22:50:25.000000000","message":"same","commit_id":"bfc9282da7df70af1219151da173cdc323be6bfd"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"9041e2b9356cd088bb67a5ed041d94fa046b73b3","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    \u0027rule:admin_required or \u0027"},{"line_number":25,"context_line":"    \u0027project_id:%(target.project.id)s\u0027)"},{"line_number":26,"context_line":"RULE_ADMIN_OR_TOKEN_SUBJECT \u003d \u0027rule:admin_or_token_subject\u0027"},{"line_number":27,"context_line":"RULE_ADMIN_REQUIRED \u003d \u0027rule:admin_required\u0027"},{"line_number":28,"context_line":"RULE_REVOKE_EVENT_OR_ADMIN \u003d \u0027rule:revoke_event_or_admin\u0027"},{"line_number":29,"context_line":"RULE_SERVICE_ADMIN_OR_TOKEN_SUBJECT \u003d \u0027rule:service_admin_or_token_subject\u0027"},{"line_number":30,"context_line":"RULE_SERVICE_OR_ADMIN \u003d \u0027rule:service_or_admin\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a1ced50_1b189474","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":43},"in_reply_to":"1a1ced50_80409508","updated":"2017-03-22 23:24:32.000000000","message":"Done","commit_id":"bfc9282da7df70af1219151da173cdc323be6bfd"}],"keystone/common/policies/for_user.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d2c92ae9629f9b11d4b55c52cb845fb30f94c61e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1a1ced50_a05af1ef","updated":"2017-03-22 22:50:25.000000000","message":"eww to the file name, why not place these under proejct.py and user.py?","commit_id":"bfc9282da7df70af1219151da173cdc323be6bfd"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"9041e2b9356cd088bb67a5ed041d94fa046b73b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1a1ced50_1b5df414","in_reply_to":"1a1ced50_a05af1ef","updated":"2017-03-22 23:24:32.000000000","message":"Done","commit_id":"bfc9282da7df70af1219151da173cdc323be6bfd"}],"keystone/common/policies/revoke_event.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2c4f63ac8c539733bd6de38610b9c4bcf6f93fc9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"revoke_event_policies \u003d ["},{"line_number":18,"context_line":"    policy.RuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027list_revoke_events\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_REVOKE_EVENT_OR_ADMIN)"},{"line_number":21,"context_line":"]"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a1ff146_a1fd2c3c","line":20,"updated":"2017-03-15 21:14:48.000000000","message":"This should be RULE_SERVICE_OR_ADMIN according to the policy file.","commit_id":"66bf74dcf678a6a84af4f5ba057da05e2857a243"}],"keystone/policies/auth.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"60281049a0e435d6fd6fb8803a2f00c4452e1862","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from keystone.policies import base"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"auth_policies \u003d ["},{"line_number":18,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027get_auth_catalog\u0027, check_str\u003d\"\"),"},{"line_number":19,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027get_auth_projects\u0027, check_str\u003d\"\"),"},{"line_number":20,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027get_auth_domains\u0027, check_str\u003d\"\"),"},{"line_number":21,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_0249b75f","line":18,"updated":"2017-02-20 17:18:44.000000000","message":"For consistency, we should follow the same indentation convention throughout the series. Which could be any of the following:\n\n  policy.RuleDefault(name\u003dbase.IDENTITY % \u0027get_auth_catalog\u0027, check_str\u003d\u0027\u0027),\n\nor\n\n  policy.RuleDefault(name\u003dbase.IDENTITY % \u0027get_auth_catalog\u0027,\n                     check_str\u003d\u0027\u0027),\n\nor\n\n  policy.RuleDefault(\n      name\u003dbase.IDENTITY % \u0027get_auth_catalog\u0027,\n      check_str\u003d\u0027\u0027\n  ),\n\nI think I prefer the last one because it gives us a lot of bang for our buck with long strings and look consistent everywhere. We could also standardize on either single or double quotes here instead of mixing.","commit_id":"3eaa59f03cd582460b7ed1d6001a6dec5d856c2a"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"dd1cc1388d32cd35105dde351bb0738e1695486d","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from keystone.policies import base"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"auth_policies \u003d ["},{"line_number":18,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027get_auth_catalog\u0027, check_str\u003d\"\"),"},{"line_number":19,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027get_auth_projects\u0027, check_str\u003d\"\"),"},{"line_number":20,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027get_auth_domains\u0027, check_str\u003d\"\"),"},{"line_number":21,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_3d4fbe93","line":18,"in_reply_to":"da36d5c6_0249b75f","updated":"2017-02-20 18:03:35.000000000","message":"Will do as requested in part 4 for all files","commit_id":"3eaa59f03cd582460b7ed1d6001a6dec5d856c2a"}],"keystone/policies/domain_config.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"60281049a0e435d6fd6fb8803a2f00c4452e1862","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027get_domain_config\u0027,"},{"line_number":21,"context_line":"                       check_str\u003dbase.RULE_ADMIN_REQUIRED),"},{"line_number":22,"context_line":"    policy.RuleDefault("},{"line_number":23,"context_line":"        name\u003dbase.IDENTITY % \u0027get_security_compliance_domain_config\u0027,"},{"line_number":24,"context_line":"        check_str\u003d\"\"),"},{"line_number":25,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027update_domain_config\u0027,"},{"line_number":26,"context_line":"                       check_str\u003dbase.RULE_ADMIN_REQUIRED),"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_421d6f72","line":23,"updated":"2017-02-20 17:18:44.000000000","message":"Same comment here as in the previous module.","commit_id":"3eaa59f03cd582460b7ed1d6001a6dec5d856c2a"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"dd1cc1388d32cd35105dde351bb0738e1695486d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027get_domain_config\u0027,"},{"line_number":21,"context_line":"                       check_str\u003dbase.RULE_ADMIN_REQUIRED),"},{"line_number":22,"context_line":"    policy.RuleDefault("},{"line_number":23,"context_line":"        name\u003dbase.IDENTITY % \u0027get_security_compliance_domain_config\u0027,"},{"line_number":24,"context_line":"        check_str\u003d\"\"),"},{"line_number":25,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027update_domain_config\u0027,"},{"line_number":26,"context_line":"                       check_str\u003dbase.RULE_ADMIN_REQUIRED),"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_b8657ce2","line":23,"in_reply_to":"da36d5c6_421d6f72","updated":"2017-02-20 18:03:35.000000000","message":"Done","commit_id":"3eaa59f03cd582460b7ed1d6001a6dec5d856c2a"}],"keystone/policies/for_user.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"60281049a0e435d6fd6fb8803a2f00c4452e1862","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"service_policies \u003d ["},{"line_number":18,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027list_projects_for_user\u0027,"},{"line_number":19,"context_line":"                       check_str\u003d\"\"),"},{"line_number":20,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027list_domains_for_user\u0027,"},{"line_number":21,"context_line":"                       check_str\u003d\"\"),"},{"line_number":22,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_c2095f33","line":19,"updated":"2017-02-20 17:18:44.000000000","message":"Mixing single and double quotes.","commit_id":"3eaa59f03cd582460b7ed1d6001a6dec5d856c2a"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"dd1cc1388d32cd35105dde351bb0738e1695486d","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"service_policies \u003d ["},{"line_number":18,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027list_projects_for_user\u0027,"},{"line_number":19,"context_line":"                       check_str\u003d\"\"),"},{"line_number":20,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027list_domains_for_user\u0027,"},{"line_number":21,"context_line":"                       check_str\u003d\"\"),"},{"line_number":22,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_f81a946d","line":19,"in_reply_to":"da36d5c6_c2095f33","updated":"2017-02-20 18:03:35.000000000","message":"Done","commit_id":"3eaa59f03cd582460b7ed1d6001a6dec5d856c2a"}],"keystone/policies/policy_association.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"60281049a0e435d6fd6fb8803a2f00c4452e1862","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        \u0027delete_policy_association_for_region_and_service\u0027),"},{"line_number":44,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED),"},{"line_number":45,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027get_policy_for_endpoint\u0027,"},{"line_number":46,"context_line":"                       check_str\u003dbase.RULE_ADMIN_REQUIRED),"},{"line_number":47,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027list_endpoints_for_policy\u0027,"},{"line_number":48,"context_line":"                       check_str\u003dbase.RULE_ADMIN_REQUIRED)"},{"line_number":49,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_3d041e14","line":46,"updated":"2017-02-20 17:18:44.000000000","message":"Same comment here as in auth.py.","commit_id":"3eaa59f03cd582460b7ed1d6001a6dec5d856c2a"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"dd1cc1388d32cd35105dde351bb0738e1695486d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        \u0027delete_policy_association_for_region_and_service\u0027),"},{"line_number":44,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED),"},{"line_number":45,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027get_policy_for_endpoint\u0027,"},{"line_number":46,"context_line":"                       check_str\u003dbase.RULE_ADMIN_REQUIRED),"},{"line_number":47,"context_line":"    policy.RuleDefault(name\u003dbase.IDENTITY % \u0027list_endpoints_for_policy\u0027,"},{"line_number":48,"context_line":"                       check_str\u003dbase.RULE_ADMIN_REQUIRED)"},{"line_number":49,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_586e40ca","line":46,"in_reply_to":"da36d5c6_3d041e14","updated":"2017-02-20 18:03:35.000000000","message":"Done","commit_id":"3eaa59f03cd582460b7ed1d6001a6dec5d856c2a"}]}
