)]}'
{"keystone/common/policies/implied_role.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3fc633c656727fd457803220553b90c9dad5dcba","unresolved":false,"context_lines":[{"line_number":17,"context_line":"implied_role_policies \u003d ["},{"line_number":18,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027get_implied_role\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":21,"context_line":"        description\u003d\u0027Get role inference rule\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/roles/{prior_role_id}/implies/\u0027"},{"line_number":23,"context_line":"                              \u0027{implied_role_id}\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_66e52609","line":20,"updated":"2017-03-27 21:20:20.000000000","message":"Punctuation.","commit_id":"e255ab3605adeeb7f657ab568640bb6165c17cde"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"eb02de7e3ff7768c709306979426afba36eda0ca","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":26,"context_line":"        name\u003dbase.IDENTITY % \u0027list_implied_roles\u0027,"},{"line_number":27,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":28,"context_line":"        description\u003d\u0027List implied (inference) roles for role.\u0027,"},{"line_number":29,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles/{prior_role_id}/implies\u0027,"},{"line_number":30,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":31,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":3,"id":"dfeb2761_a744ceb8","line":28,"range":{"start_line":28,"start_character":21,"end_line":28,"end_character":61},"updated":"2017-03-30 18:06:39.000000000","message":"(inference) is a bit confusing for me.. what about\n\n\"List implied roles for prior role.\" would be clearer for me, what\u0027s your opinion ?","commit_id":"444d6487220de067e9320e17d8b414a6e12e0271"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"eb02de7e3ff7768c709306979426afba36eda0ca","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":52,"context_line":"        name\u003dbase.IDENTITY % \u0027check_implied_role\u0027,"},{"line_number":53,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":54,"context_line":"        description\u003d\u0027Confirm role inference rule.\u0027,"},{"line_number":55,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/roles/{prior_role_id}/implies/\u0027"},{"line_number":56,"context_line":"                              \u0027{implied_role_id}\u0027),"},{"line_number":57,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}])"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfeb2761_c7d91223","line":54,"range":{"start_line":54,"start_character":21,"end_line":54,"end_character":28},"updated":"2017-03-30 18:06:39.000000000","message":"\"Check\" would be more consistent with all the other APIs you\u0027ve been documenting","commit_id":"444d6487220de067e9320e17d8b414a6e12e0271"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6b8a0550daca07d8ba87023d7e00ff9d061dd4fe","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027get_implied_role\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":21,"context_line":"        description\u003d\u0027Get role inference rule.\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/roles/{prior_role_id}/implies/\u0027"},{"line_number":23,"context_line":"                              \u0027{implied_role_id}\u0027),"},{"line_number":24,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfeb2761_2e392ea3","line":21,"updated":"2017-04-04 16:30:32.000000000","message":"It wouldn\u0027t be a bad idea here to elaborate a bit. What exactly is happening between the two roles? What do we mean by inference?","commit_id":"ebe6dba3ef9ac539748f908e62ccc622bce47bc3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6b8a0550daca07d8ba87023d7e00ff9d061dd4fe","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":26,"context_line":"        name\u003dbase.IDENTITY % \u0027list_implied_roles\u0027,"},{"line_number":27,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":28,"context_line":"        description\u003d\u0027List implied roles for prior role.\u0027,"},{"line_number":29,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles/{prior_role_id}/implies\u0027,"},{"line_number":30,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":31,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"dfeb2761_ae965e4b","line":28,"updated":"2017-04-04 16:30:32.000000000","message":"I think it would help if we level set the term \u0027prior role\u0027. I think the big thing that would help in the readability of this document is to define what role implies the other. If A implies B, and I have B I shouldn\u0027t be able to do things A is allowed to do. But if I have A I should be able to do things B is allowed to do.\n\nIt would be good to map that example into these descriptions somehow.","commit_id":"ebe6dba3ef9ac539748f908e62ccc622bce47bc3"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e6e5876a263c6bab9c2a3601ea8f2da10783b2ba","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":26,"context_line":"        name\u003dbase.IDENTITY % \u0027list_implied_roles\u0027,"},{"line_number":27,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":28,"context_line":"        description\u003d\u0027List implied roles for prior role.\u0027,"},{"line_number":29,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles/{prior_role_id}/implies\u0027,"},{"line_number":30,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":31,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"bff0334d_47f96e7e","line":28,"in_reply_to":"dfeb2761_ae965e4b","updated":"2017-04-05 21:40:54.000000000","message":"Yeah, that threw me off, too.","commit_id":"ebe6dba3ef9ac539748f908e62ccc622bce47bc3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"92ffabb90b3cacb3c3222a71465953792b5f459a","unresolved":false,"context_lines":[{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027get_implied_role\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":21,"context_line":"        description\u003d(\u0027Get information for an implied role associated with a \u0027"},{"line_number":22,"context_line":"                     \u0027superior role.\u0027),"},{"line_number":23,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/roles/{prior_role_id}/implies/\u0027"},{"line_number":24,"context_line":"                              \u0027{implied_role_id}\u0027),"},{"line_number":25,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f201791_e3a87078","line":22,"updated":"2017-06-20 21:57:23.000000000","message":"nit: we might be able to simplify this further without introducing yet another term (superior). \n\n  \u0027Get information about an association between two roles. When a relationship \u0027\n  \u0027exists between a prior_role and an implied_role and the prior_role is assigned \u0027\n  \u0027to a user, the user also assumes the implied role.\u0027\n\nBut in better wording? This might be something you can recycle in other descriptions here, too.","commit_id":"921f410685b37d88a9ec18d4326c820c906238f1"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7f157b4e44bf1551cb0c40c053f015908f0b223d","unresolved":false,"context_lines":[{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027get_implied_role\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":21,"context_line":"        description\u003d(\u0027Get information for an implied role associated with a \u0027"},{"line_number":22,"context_line":"                     \u0027superior role.\u0027),"},{"line_number":23,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/roles/{prior_role_id}/implies/\u0027"},{"line_number":24,"context_line":"                              \u0027{implied_role_id}\u0027),"},{"line_number":25,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f201791_d4aae86e","line":22,"in_reply_to":"5f201791_e3a87078","updated":"2017-06-28 16:54:34.000000000","message":"Done","commit_id":"921f410685b37d88a9ec18d4326c820c906238f1"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8146730481b962114b47df03a3920644a5f7f2cb","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":29,"context_line":"        description\u003d\u0027Get a list of implied roles for a superior prior.\u0027,"},{"line_number":30,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles/{prior_role_id}/implies\u0027,"},{"line_number":31,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":32,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":33,"context_line":"        name\u003dbase.IDENTITY % \u0027create_implied_role\u0027,"},{"line_number":34,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f201791_c305747c","line":31,"updated":"2017-06-20 21:58:12.000000000","message":"After my change goes in, these will have to be updated to support HEAD: \n\nhttps://review.openstack.org/#/c/473912/2/keystone/assignment/routers.py","commit_id":"921f410685b37d88a9ec18d4326c820c906238f1"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7f157b4e44bf1551cb0c40c053f015908f0b223d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":29,"context_line":"        description\u003d\u0027Get a list of implied roles for a superior prior.\u0027,"},{"line_number":30,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles/{prior_role_id}/implies\u0027,"},{"line_number":31,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":32,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":33,"context_line":"        name\u003dbase.IDENTITY % \u0027create_implied_role\u0027,"},{"line_number":34,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f201791_c848085d","line":31,"in_reply_to":"5f201791_7058e086","updated":"2017-06-28 16:54:34.000000000","message":"Done","commit_id":"921f410685b37d88a9ec18d4326c820c906238f1"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e4ec3a5ed6c50a87a55086981adb2921f37b84a1","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":29,"context_line":"        description\u003d\u0027Get a list of implied roles for a superior prior.\u0027,"},{"line_number":30,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles/{prior_role_id}/implies\u0027,"},{"line_number":31,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":32,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":33,"context_line":"        name\u003dbase.IDENTITY % \u0027create_implied_role\u0027,"},{"line_number":34,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f201791_7058e086","line":31,"in_reply_to":"5f201791_c305747c","updated":"2017-06-27 22:21:56.000000000","message":"That change merged, so we\u0027ll need to update these to advertise HEAD as well.","commit_id":"921f410685b37d88a9ec18d4326c820c906238f1"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"92ffabb90b3cacb3c3222a71465953792b5f459a","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":53,"context_line":"        name\u003dbase.IDENTITY % \u0027check_implied_role\u0027,"},{"line_number":54,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":55,"context_line":"        description\u003d\u0027Check role inference rule.\u0027,"},{"line_number":56,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/roles/{prior_role_id}/implies/\u0027"},{"line_number":57,"context_line":"                              \u0027{implied_role_id}\u0027),"},{"line_number":58,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f201791_83b1bce4","line":55,"updated":"2017-06-20 21:57:23.000000000","message":"nit: Check if a inference relationship exists between two roles* ?","commit_id":"921f410685b37d88a9ec18d4326c820c906238f1"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7f157b4e44bf1551cb0c40c053f015908f0b223d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":53,"context_line":"        name\u003dbase.IDENTITY % \u0027check_implied_role\u0027,"},{"line_number":54,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":55,"context_line":"        description\u003d\u0027Check role inference rule.\u0027,"},{"line_number":56,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/roles/{prior_role_id}/implies/\u0027"},{"line_number":57,"context_line":"                              \u0027{implied_role_id}\u0027),"},{"line_number":58,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f201791_8878d08f","line":55,"in_reply_to":"5f201791_83b1bce4","updated":"2017-06-28 16:54:34.000000000","message":"Done","commit_id":"921f410685b37d88a9ec18d4326c820c906238f1"}]}
