)]}'
{"keystone/common/policies/role.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"37b35a3e592c096e62991005cb15710d6288c7d4","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027get_role\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":21,"context_line":"        description\u003d\u0027Show role details\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles/{role_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":1,"id":"ffe62b97_b0d12bd0","line":21,"updated":"2017-03-27 19:27:25.000000000","message":"These should end with punctuation.","commit_id":"5f19e36da7fe37a7411feb5841d9fc224e6d2b71"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"c178f381a231e1325e71384df5830d45cbeeb9e2","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        name\u003dbase.IDENTITY % \u0027get_domain_role\u0027,"},{"line_number":50,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":51,"context_line":"        description\u003d\u0027Show domain role.\u0027,"},{"line_number":52,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles/{role_id}?{domain_id}\u0027,"},{"line_number":53,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":54,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":55,"context_line":"        name\u003dbase.IDENTITY % \u0027list_domain_roles\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfeb2761_47f2a208","line":52,"range":{"start_line":52,"start_character":30,"end_line":52,"end_character":61},"updated":"2017-03-30 17:56:23.000000000","message":"this is not correct, the API call is identical as getting a single role, but the role ID passed is the ID of a role that contains a domain_id attribute","commit_id":"857ba5bdaae5b286d7aa262a143a1534c73a40b2"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"c178f381a231e1325e71384df5830d45cbeeb9e2","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        name\u003dbase.IDENTITY % \u0027list_domain_roles\u0027,"},{"line_number":56,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":57,"context_line":"        description\u003d\u0027List domain roles.\u0027,"},{"line_number":58,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles?{domain_id}\u0027,"},{"line_number":59,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":60,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":61,"context_line":"        name\u003dbase.IDENTITY % \u0027create_domain_role\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfeb2761_c7e5923a","line":58,"range":{"start_line":58,"start_character":30,"end_line":58,"end_character":51},"updated":"2017-03-30 17:56:23.000000000","message":"this should be /v3/roles?domain_id\u003d{domain_id}","commit_id":"857ba5bdaae5b286d7aa262a143a1534c73a40b2"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"c178f381a231e1325e71384df5830d45cbeeb9e2","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        name\u003dbase.IDENTITY % \u0027create_domain_role\u0027,"},{"line_number":62,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":63,"context_line":"        description\u003d\u0027Create domain role.\u0027,"},{"line_number":64,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles?{domain_id}\u0027,"},{"line_number":65,"context_line":"                     \u0027method\u0027: \u0027POST\u0027}]),"},{"line_number":66,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":67,"context_line":"        name\u003dbase.IDENTITY % \u0027update_domain_role\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfeb2761_67d6c652","line":64,"range":{"start_line":64,"start_character":30,"end_line":64,"end_character":52},"updated":"2017-03-30 17:56:23.000000000","message":"same here, just /v3/roles","commit_id":"857ba5bdaae5b286d7aa262a143a1534c73a40b2"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"c178f381a231e1325e71384df5830d45cbeeb9e2","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        name\u003dbase.IDENTITY % \u0027update_domain_role\u0027,"},{"line_number":68,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":69,"context_line":"        description\u003d\u0027Update domain role.\u0027,"},{"line_number":70,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles?{domain_id}\u0027,"},{"line_number":71,"context_line":"                     \u0027method\u0027: \u0027PATCH\u0027}]),"},{"line_number":72,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":73,"context_line":"        name\u003dbase.IDENTITY % \u0027delete_domain_role\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfeb2761_47cbc2a4","line":70,"range":{"start_line":70,"start_character":30,"end_line":70,"end_character":51},"updated":"2017-03-30 17:56:23.000000000","message":"ditto","commit_id":"857ba5bdaae5b286d7aa262a143a1534c73a40b2"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"c178f381a231e1325e71384df5830d45cbeeb9e2","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        name\u003dbase.IDENTITY % \u0027delete_domain_role\u0027,"},{"line_number":74,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":75,"context_line":"        description\u003d\u0027Delete domain role.\u0027,"},{"line_number":76,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles?{domain_id}\u0027,"},{"line_number":77,"context_line":"                     \u0027method\u0027: \u0027DELETE\u0027}])"},{"line_number":78,"context_line":"]"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dfeb2761_07c5ba8e","line":76,"range":{"start_line":76,"start_character":30,"end_line":76,"end_character":51},"updated":"2017-03-30 17:56:23.000000000","message":"ditto","commit_id":"857ba5bdaae5b286d7aa262a143a1534c73a40b2"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"2591ff8118427079fec963fd90de23cca167cce9","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027get_role\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":21,"context_line":"        description\u003d\u0027Show role details.\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles/{role_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_roles\u0027,"},{"line_number":26,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_a29ecc60","line":23,"range":{"start_line":21,"start_character":0,"end_line":23,"end_character":40},"updated":"2017-04-06 13:18:15.000000000","message":"this has head too, as the router is the generic one\n\nhttps://github.com/openstack/keystone/blob/master/keystone/assignment/routers.py#L71-L74\n\nhttps://github.com/openstack/keystone/blob/master/keystone/common/router.py#L43-L52","commit_id":"d0fbac046fb64b0ce0fce945a41c950cf579fd19"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"2591ff8118427079fec963fd90de23cca167cce9","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":25,"context_line":"        name\u003dbase.IDENTITY % \u0027list_roles\u0027,"},{"line_number":26,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":27,"context_line":"        description\u003d\u0027List roles.\u0027,"},{"line_number":28,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles\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_role\u0027,"},{"line_number":32,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_829bc870","line":29,"range":{"start_line":27,"start_character":0,"end_line":29,"end_character":40},"updated":"2017-04-06 13:18:15.000000000","message":"same here","commit_id":"d0fbac046fb64b0ce0fce945a41c950cf579fd19"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"2591ff8118427079fec963fd90de23cca167cce9","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":49,"context_line":"        name\u003dbase.IDENTITY % \u0027get_domain_role\u0027,"},{"line_number":50,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":51,"context_line":"        description\u003d\u0027Show domain role.\u0027,"},{"line_number":52,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles/{role_id}\u0027,"},{"line_number":53,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":54,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":55,"context_line":"        name\u003dbase.IDENTITY % \u0027list_domain_roles\u0027,"},{"line_number":56,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_428f002a","line":53,"range":{"start_line":51,"start_character":0,"end_line":53,"end_character":40},"updated":"2017-04-06 13:18:15.000000000","message":"ditto","commit_id":"d0fbac046fb64b0ce0fce945a41c950cf579fd19"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"2591ff8118427079fec963fd90de23cca167cce9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":55,"context_line":"        name\u003dbase.IDENTITY % \u0027list_domain_roles\u0027,"},{"line_number":56,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":57,"context_line":"        description\u003d\u0027List domain roles.\u0027,"},{"line_number":58,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles?domain_id\u003d{domain_id}\u0027,"},{"line_number":59,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":60,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":61,"context_line":"        name\u003dbase.IDENTITY % \u0027create_domain_role\u0027,"},{"line_number":62,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_e27df41c","line":59,"range":{"start_line":57,"start_character":0,"end_line":59,"end_character":40},"updated":"2017-04-06 13:18:15.000000000","message":"ditto","commit_id":"d0fbac046fb64b0ce0fce945a41c950cf579fd19"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"abe42301c7d0196fac4c40a10f9cebcb425765ee","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        name\u003dbase.IDENTITY % \u0027update_domain_role\u0027,"},{"line_number":76,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":77,"context_line":"        description\u003d\u0027Update domain role.\u0027,"},{"line_number":78,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles\u0027,"},{"line_number":79,"context_line":"                     \u0027method\u0027: \u0027PATCH\u0027}]),"},{"line_number":80,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":81,"context_line":"        name\u003dbase.IDENTITY % \u0027delete_domain_role\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_52b70288","line":78,"range":{"start_line":78,"start_character":30,"end_line":78,"end_character":39},"updated":"2017-04-22 15:52:03.000000000","message":"Missing the {role_id} part of the path","commit_id":"32a1038c01f31f2ec39c54037f66b7d67a9c97b2"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"abe42301c7d0196fac4c40a10f9cebcb425765ee","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        name\u003dbase.IDENTITY % \u0027delete_domain_role\u0027,"},{"line_number":82,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":83,"context_line":"        description\u003d\u0027Delete domain role.\u0027,"},{"line_number":84,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/roles\u0027,"},{"line_number":85,"context_line":"                     \u0027method\u0027: \u0027DELETE\u0027}])"},{"line_number":86,"context_line":"]"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_92bd8a6a","line":84,"range":{"start_line":84,"start_character":30,"end_line":84,"end_character":39},"updated":"2017-04-22 15:52:03.000000000","message":"Missing the {role_id} part of the path","commit_id":"32a1038c01f31f2ec39c54037f66b7d67a9c97b2"}]}
