)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"96589857cc3f2dc157bb9ef0f21e773657dba94e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Correctly handle direct mapping with keywords"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Curently mapping rules cannot be built in a way where a remote keyword"},{"line_number":10,"context_line":"with keyword such as \u0027any_one_of\u0027 or \u0027not_any_of\u0027 is used for direct"},{"line_number":11,"context_line":"mapping (\u0027{0}\u0027, \u0027{1}\u0027 etc in local rules). There is no way of properly"},{"line_number":12,"context_line":"handling for that as it would repeat functionality of whitelists and"},{"line_number":13,"context_line":"blacklists. However there is a need to inform user that the mapping rule"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9abe1de1_590316b9","line":10,"updated":"2015-04-27 12:50:35.000000000","message":"nit: probably don\u0027t need to repeat \"with keyword\"","commit_id":"a8ebee943146872417e00b64da967ac3b4ec1395"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"2dd06a9f20afb2763d4887882ba5f54a198ad401","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Correctly handle direct mapping with keywords"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Curently mapping rules cannot be built in a way where a remote keyword"},{"line_number":10,"context_line":"with keyword such as \u0027any_one_of\u0027 or \u0027not_any_of\u0027 is used for direct"},{"line_number":11,"context_line":"mapping (\u0027{0}\u0027, \u0027{1}\u0027 etc in local rules). There is no way of properly"},{"line_number":12,"context_line":"handling for that as it would repeat functionality of whitelists and"},{"line_number":13,"context_line":"blacklists. However there is a need to inform user that the mapping rule"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7ad32947_cb563506","line":10,"in_reply_to":"9abe1de1_590316b9","updated":"2015-04-27 15:50:36.000000000","message":"Done","commit_id":"a8ebee943146872417e00b64da967ac3b4ec1395"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"96589857cc3f2dc157bb9ef0f21e773657dba94e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Curently mapping rules cannot be built in a way where a remote keyword"},{"line_number":10,"context_line":"with keyword such as \u0027any_one_of\u0027 or \u0027not_any_of\u0027 is used for direct"},{"line_number":11,"context_line":"mapping (\u0027{0}\u0027, \u0027{1}\u0027 etc in local rules). There is no way of properly"},{"line_number":12,"context_line":"handling for that as it would repeat functionality of whitelists and"},{"line_number":13,"context_line":"blacklists. However there is a need to inform user that the mapping rule"},{"line_number":14,"context_line":"is incorrect and should be fixed."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9abe1de1_390062aa","line":12,"updated":"2015-04-27 12:50:35.000000000","message":"nit: s/for that/this/","commit_id":"a8ebee943146872417e00b64da967ac3b4ec1395"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"2dd06a9f20afb2763d4887882ba5f54a198ad401","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Curently mapping rules cannot be built in a way where a remote keyword"},{"line_number":10,"context_line":"with keyword such as \u0027any_one_of\u0027 or \u0027not_any_of\u0027 is used for direct"},{"line_number":11,"context_line":"mapping (\u0027{0}\u0027, \u0027{1}\u0027 etc in local rules). There is no way of properly"},{"line_number":12,"context_line":"handling for that as it would repeat functionality of whitelists and"},{"line_number":13,"context_line":"blacklists. However there is a need to inform user that the mapping rule"},{"line_number":14,"context_line":"is incorrect and should be fixed."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7ad32947_8b683dbc","line":12,"in_reply_to":"9abe1de1_390062aa","updated":"2015-04-27 15:50:36.000000000","message":"Done","commit_id":"a8ebee943146872417e00b64da967ac3b4ec1395"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"96589857cc3f2dc157bb9ef0f21e773657dba94e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"mapping (\u0027{0}\u0027, \u0027{1}\u0027 etc in local rules). There is no way of properly"},{"line_number":12,"context_line":"handling for that as it would repeat functionality of whitelists and"},{"line_number":13,"context_line":"blacklists. However there is a need to inform user that the mapping rule"},{"line_number":14,"context_line":"is incorrect and should be fixed."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I0f9e7a6949ff8bfbd147e2d3cac59fd5197934f1"},{"line_number":17,"context_line":"Closes-Bug: #1401057"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9abe1de1_19dd9e14","line":14,"updated":"2015-04-27 12:50:35.000000000","message":"Overall this commit message is a bit confusing....the first half sort of implies are going to provide this functionality...then at the end we so about informing the user.  I would suggest we make the whole commit comment more explicit, e.g. \"Ensure that attempts to use remote keywords mapped in direct mappings error cleanly....etc.\"","commit_id":"a8ebee943146872417e00b64da967ac3b4ec1395"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"2dd06a9f20afb2763d4887882ba5f54a198ad401","unresolved":false,"context_lines":[{"line_number":11,"context_line":"mapping (\u0027{0}\u0027, \u0027{1}\u0027 etc in local rules). There is no way of properly"},{"line_number":12,"context_line":"handling for that as it would repeat functionality of whitelists and"},{"line_number":13,"context_line":"blacklists. However there is a need to inform user that the mapping rule"},{"line_number":14,"context_line":"is incorrect and should be fixed."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I0f9e7a6949ff8bfbd147e2d3cac59fd5197934f1"},{"line_number":17,"context_line":"Closes-Bug: #1401057"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7ad32947_6bf601d9","line":14,"in_reply_to":"9abe1de1_19dd9e14","updated":"2015-04-27 15:50:36.000000000","message":"reworded","commit_id":"a8ebee943146872417e00b64da967ac3b4ec1395"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f3352abf01b4673d34d4bd91e3d5dbf471be43d7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Marek Denis \u003cmarek.denis@cern.ch\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-27 17:40:19 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Correctly handle direct mapping with keywords"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Curently mapping rules cannot be built in a way where a remote keyword"},{"line_number":10,"context_line":"such as \u0027any_one_of\u0027 or \u0027not_any_of\u0027 is used for direct"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1aca2d91_2a469e23","line":7,"updated":"2015-05-06 21:45:09.000000000","message":"\u0027with keywords\u0027 sounds confusing because we don\u0027t do any mapping with keywords. it\u0027s all positional. unfortunately i don\u0027t have a better suggestion right now.","commit_id":"6371a3a5219aee640c03d38e59746065290a27ec"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f3352abf01b4673d34d4bd91e3d5dbf471be43d7","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Curently mapping rules cannot be built in a way where a remote keyword"},{"line_number":10,"context_line":"such as \u0027any_one_of\u0027 or \u0027not_any_of\u0027 is used for direct"},{"line_number":11,"context_line":"mapping (\u0027{0}\u0027, \u0027{1}\u0027 etc in local rules). However, there is also no"},{"line_number":12,"context_line":"good way of informing user of faulty mapping rules."},{"line_number":13,"context_line":"This patch:"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"- introduces new exception class (resulting in HTTP 500 error code)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1aca2d91_4a7c3a72","line":12,"updated":"2015-05-06 21:45:09.000000000","message":"(nit) newline here","commit_id":"6371a3a5219aee640c03d38e59746065290a27ec"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"bd44c26800a95d1a922beca594d5b89f3263949a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Curently mapping rules cannot be built in a way where a remote keyword"},{"line_number":10,"context_line":"such as \u0027any_one_of\u0027 or \u0027not_any_of\u0027 is used for direct"},{"line_number":11,"context_line":"mapping (\u0027{0}\u0027, \u0027{1}\u0027 etc in local rules). However, there is also no"},{"line_number":12,"context_line":"good way of informing user of faulty mapping rules."},{"line_number":13,"context_line":"This patch:"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"- introduces new exception class (resulting in HTTP 500 error code)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1aca2d91_3a16d0a7","line":12,"in_reply_to":"1aca2d91_4a7c3a72","updated":"2015-05-07 13:45:56.000000000","message":"Done","commit_id":"6371a3a5219aee640c03d38e59746065290a27ec"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a981860050fc9598296c6d61fdf2320a3ec5eae2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Correctly handle direct mapping with keywords"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Curently mapping rules cannot be built in a way where a remote keyword"},{"line_number":10,"context_line":"such as \u0027any_one_of\u0027 or \u0027not_any_of\u0027 is used for direct"},{"line_number":11,"context_line":"mapping (\u0027{0}\u0027, \u0027{1}\u0027 etc in local rules). However, there is also no"},{"line_number":12,"context_line":"good way of informing user of faulty mapping rules."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa1b9901_012a2c90","line":9,"updated":"2015-08-20 17:19:27.000000000","message":"Currently, *","commit_id":"640b564725d8f6f6c39b9e155ddab7a095aa7882"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0454e6ba4bbf5e48bbf52b05511e120255c1324b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Correctly handle direct mapping with keywords"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Curently mapping rules cannot be built in a way where a remote keyword"},{"line_number":10,"context_line":"such as \u0027any_one_of\u0027 or \u0027not_any_of\u0027 is used for direct"},{"line_number":11,"context_line":"mapping (\u0027{0}\u0027, \u0027{1}\u0027 etc in local rules). However, there is also no"},{"line_number":12,"context_line":"good way of informing user of faulty mapping rules."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a5de9d1_8e54cd54","line":9,"in_reply_to":"fa1b9901_012a2c90","updated":"2016-01-27 19:02:18.000000000","message":"Done","commit_id":"640b564725d8f6f6c39b9e155ddab7a095aa7882"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8b33db39aae14d6b3d0f8e91af9fc9906228699d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Steve Martinelli \u003cstevemar@ca.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-01-30 03:32:45 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Correctly handle direct mapping with keywords"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently mapping rules cannot be built in a way where a remote"},{"line_number":10,"context_line":"keyword such as \u0027any_one_of\u0027 or \u0027not_any_of\u0027 is used for direct"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7a5de9d1_dabd0e69","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":45},"updated":"2016-01-30 16:32:33.000000000","message":"So does this patch actually fix this problem? I think it only ensures we raise an error (or am I missing the obvious)?","commit_id":"2a2ffe4906dcf435948c33e74f2c5556b67264ec"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e85a5d24ce6ab164f71fe7bbf822fd03ce83cdf2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Steve Martinelli \u003cstevemar@ca.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-01-30 03:32:45 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Correctly handle direct mapping with keywords"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently mapping rules cannot be built in a way where a remote"},{"line_number":10,"context_line":"keyword such as \u0027any_one_of\u0027 or \u0027not_any_of\u0027 is used for direct"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7a5de9d1_0c710d76","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":45},"in_reply_to":"7a5de9d1_dabd0e69","updated":"2016-02-01 13:15:53.000000000","message":"No, you are correct. Marek mentions in a comment on the bug that the correct thing to do here is to raise the correct error instead of a confusing IndexError. https://bugs.launchpad.net/keystone/+bug/1401057/comments/4","commit_id":"2a2ffe4906dcf435948c33e74f2c5556b67264ec"}],"keystone/contrib/federation/utils.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"96589857cc3f2dc157bb9ef0f21e773657dba94e","unresolved":false,"context_lines":[{"line_number":615,"context_line":"                try:"},{"line_number":616,"context_line":"                    new_value \u003d v.format(*direct_maps)"},{"line_number":617,"context_line":"                except IndexError:"},{"line_number":618,"context_line":"                    raise exception.DirectMappingError()"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"            new[k] \u003d new_value"},{"line_number":621,"context_line":"        return new"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abe1de1_19123eb5","line":618,"updated":"2015-04-27 12:50:35.000000000","message":"I can imagine mapping rules being quite long...is there a way to indicate to the user which mapping (or keyword) is at fault?","commit_id":"a8ebee943146872417e00b64da967ac3b4ec1395"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"fb2a2dd32b24f662af9ec9d5600ce8af8b58d453","unresolved":false,"context_lines":[{"line_number":615,"context_line":"                try:"},{"line_number":616,"context_line":"                    new_value \u003d v.format(*direct_maps)"},{"line_number":617,"context_line":"                except IndexError:"},{"line_number":618,"context_line":"                    raise exception.DirectMappingError()"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"            new[k] \u003d new_value"},{"line_number":621,"context_line":"        return new"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ad32947_503414dd","line":618,"in_reply_to":"9abe1de1_19123eb5","updated":"2015-04-27 15:24:55.000000000","message":"we can show what \u0027v\u0027 was and what direct_maps was. And I think that\u0027s all, but I am not sure if that\u0027s secure enough.","commit_id":"a8ebee943146872417e00b64da967ac3b4ec1395"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f3352abf01b4673d34d4bd91e3d5dbf471be43d7","unresolved":false,"context_lines":[{"line_number":615,"context_line":"                try:"},{"line_number":616,"context_line":"                    new_value \u003d v.format(*direct_maps)"},{"line_number":617,"context_line":"                except IndexError:"},{"line_number":618,"context_line":"                    raise exception.DirectMappingError()"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"            new[k] \u003d new_value"},{"line_number":621,"context_line":"        return new"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_aa698e8d","line":618,"updated":"2015-05-06 21:45:09.000000000","message":"It would be nice if we had context here to show what rule was broken.","commit_id":"6371a3a5219aee640c03d38e59746065290a27ec"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"879eb5050b8cf5fb1cc178211868975cb2324220","unresolved":false,"context_lines":[{"line_number":615,"context_line":"                try:"},{"line_number":616,"context_line":"                    new_value \u003d v.format(*direct_maps)"},{"line_number":617,"context_line":"                except IndexError:"},{"line_number":618,"context_line":"                    raise exception.DirectMappingError()"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"            new[k] \u003d new_value"},{"line_number":621,"context_line":"        return new"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_9a94c4e2","line":618,"in_reply_to":"1aca2d91_5a274cb6","updated":"2015-05-07 13:49:36.000000000","message":"++ for logging the broken rule","commit_id":"6371a3a5219aee640c03d38e59746065290a27ec"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"bd44c26800a95d1a922beca594d5b89f3263949a","unresolved":false,"context_lines":[{"line_number":615,"context_line":"                try:"},{"line_number":616,"context_line":"                    new_value \u003d v.format(*direct_maps)"},{"line_number":617,"context_line":"                except IndexError:"},{"line_number":618,"context_line":"                    raise exception.DirectMappingError()"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"            new[k] \u003d new_value"},{"line_number":621,"context_line":"        return new"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_5a274cb6","line":618,"in_reply_to":"1aca2d91_aa698e8d","updated":"2015-05-07 13:45:56.000000000","message":"I was thinking about that, but won\u0027t it expose too many details to an average user? We can consider logging rule, values, but I don\u0027t think this should be part of the error message returned to the user.\nWhatever we do, let\u0027s do this in a followup patch.","commit_id":"6371a3a5219aee640c03d38e59746065290a27ec"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"b585395ee0af56105f68cd92f0e55b0a61a3aea9","unresolved":false,"context_lines":[{"line_number":614,"context_line":"            else:"},{"line_number":615,"context_line":"                try:"},{"line_number":616,"context_line":"                    new_value \u003d v.format(*direct_maps)"},{"line_number":617,"context_line":"                except IndexError:"},{"line_number":618,"context_line":"                    raise exception.DirectMappingError()"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"            new[k] \u003d new_value"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_981f3b5b","line":617,"updated":"2015-05-26 22:48:57.000000000","message":"This won\u0027t just catch the cases your testing for. It will catch any case where you are asking for more things in the local rule than are provided in the remote rule.","commit_id":"640b564725d8f6f6c39b9e155ddab7a095aa7882"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"6fa4eb0e77973ef96657a40bf56848a5dfa0779f","unresolved":false,"context_lines":[{"line_number":614,"context_line":"            else:"},{"line_number":615,"context_line":"                try:"},{"line_number":616,"context_line":"                    new_value \u003d v.format(*direct_maps)"},{"line_number":617,"context_line":"                except IndexError:"},{"line_number":618,"context_line":"                    raise exception.DirectMappingError()"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"            new[k] \u003d new_value"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_cef457f2","line":617,"in_reply_to":"7a016987_981f3b5b","updated":"2015-05-29 12:16:38.000000000","message":"with current design i actually do not have  any better idea how to workaround this :/","commit_id":"640b564725d8f6f6c39b9e155ddab7a095aa7882"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4520c57a82c2bd76ba4b8d063191a80515ee50e4","unresolved":false,"context_lines":[{"line_number":614,"context_line":"            else:"},{"line_number":615,"context_line":"                try:"},{"line_number":616,"context_line":"                    new_value \u003d v.format(*direct_maps)"},{"line_number":617,"context_line":"                except IndexError:"},{"line_number":618,"context_line":"                    raise exception.DirectMappingError()"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"            new[k] \u003d new_value"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_b5acc39f","line":617,"in_reply_to":"7a016987_cef457f2","updated":"2015-05-29 15:49:44.000000000","message":"The only way I can think of is to change format() to catch the IndexError and only raise the new error if a keyword was included in the mapping. Otherwise you\u0027d re-raise the original exception.","commit_id":"640b564725d8f6f6c39b9e155ddab7a095aa7882"}],"keystone/exception.py":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"6cc67493a8f32ff4531df16ae7adaefd8977249e","unresolved":false,"context_lines":[{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class DirectMappingError(UnexpectedError):"},{"line_number":407,"context_line":"    message_format \u003d _(\"Cannot use remote rules with keywords \""},{"line_number":408,"context_line":"                       \"for direct mappings. Check your mapping rules\")"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"class AssignmentTypeCalculationError(UnexpectedError):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ad32947_b608082a","line":408,"updated":"2015-04-27 13:33:01.000000000","message":"nit: change this dot after \"mappings\" for a comma and put a dot in the end of the phrase?","commit_id":"a8ebee943146872417e00b64da967ac3b4ec1395"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"2dd06a9f20afb2763d4887882ba5f54a198ad401","unresolved":false,"context_lines":[{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class DirectMappingError(UnexpectedError):"},{"line_number":407,"context_line":"    message_format \u003d _(\"Cannot use remote rules with keywords \""},{"line_number":408,"context_line":"                       \"for direct mappings. Check your mapping rules\")"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"class AssignmentTypeCalculationError(UnexpectedError):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ad32947_b016c853","line":408,"in_reply_to":"7ad32947_b608082a","updated":"2015-04-27 15:50:36.000000000","message":"Done","commit_id":"a8ebee943146872417e00b64da967ac3b4ec1395"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f3352abf01b4673d34d4bd91e3d5dbf471be43d7","unresolved":false,"context_lines":[{"line_number":403,"context_line":"    message_format \u003d _(\"Error while reading metadata file, %(reason)s\")"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class DirectMappingError(UnexpectedError):"},{"line_number":407,"context_line":"    message_format \u003d _(\"Cannot use remote rules with keywords \""},{"line_number":408,"context_line":"                       \"for direct mappings, check your mapping rules.\")"},{"line_number":409,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_ca03aab7","line":406,"updated":"2015-05-06 21:45:09.000000000","message":"It\u0027s unfortunate that we can\u0027t catch some of these errors on the way in with some extra smart validation. That way it\u0027s not a runtime user error.","commit_id":"6371a3a5219aee640c03d38e59746065290a27ec"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"bd44c26800a95d1a922beca594d5b89f3263949a","unresolved":false,"context_lines":[{"line_number":403,"context_line":"    message_format \u003d _(\"Error while reading metadata file, %(reason)s\")"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class DirectMappingError(UnexpectedError):"},{"line_number":407,"context_line":"    message_format \u003d _(\"Cannot use remote rules with keywords \""},{"line_number":408,"context_line":"                       \"for direct mappings, check your mapping rules.\")"},{"line_number":409,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_3ad49045","line":406,"in_reply_to":"1aca2d91_ca03aab7","updated":"2015-05-07 13:45:56.000000000","message":"It is, but i think we cannot fix it easily with current design.\nIMHO sooner or later we will grow to have  language with easy, but strict syntax, formal specification.","commit_id":"6371a3a5219aee640c03d38e59746065290a27ec"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a981860050fc9598296c6d61fdf2320a3ec5eae2","unresolved":false,"context_lines":[{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class DirectMappingError(UnexpectedError):"},{"line_number":407,"context_line":"    message_format \u003d _(\"Cannot use remote rules with keywords \""},{"line_number":408,"context_line":"                       \"for direct mappings, check your mapping rules.\")"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"class AssignmentTypeCalculationError(UnexpectedError):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_6c567f07","line":408,"updated":"2015-08-20 17:19:27.000000000","message":"Would the mapping ID or any information about the mapping be useful here?","commit_id":"640b564725d8f6f6c39b9e155ddab7a095aa7882"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0454e6ba4bbf5e48bbf52b05511e120255c1324b","unresolved":false,"context_lines":[{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class DirectMappingError(UnexpectedError):"},{"line_number":407,"context_line":"    message_format \u003d _(\"Cannot use remote rules with keywords \""},{"line_number":408,"context_line":"                       \"for direct mappings, check your mapping rules.\")"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"class AssignmentTypeCalculationError(UnexpectedError):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_eae76310","line":408,"in_reply_to":"fa1b9901_6c567f07","updated":"2016-01-27 19:02:18.000000000","message":"Yes, I think so. I\u0027ve added that to my patch.","commit_id":"640b564725d8f6f6c39b9e155ddab7a095aa7882"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8faa3665c20a426e16b703da9feb609589ecfa92","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    debug_message_format \u003d _(\"Error while reading metadata file, %(reason)s\")"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"class DirectMappingError(UnexpectedError):"},{"line_number":441,"context_line":"    message_format \u003d _(\"Local section in mapping %(mapping_id)s refers to a \""},{"line_number":442,"context_line":"                       \"remote match that doesn\u0027t exist \""},{"line_number":443,"context_line":"                       \"(e.g. {0} in a local section).\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_931478a0","line":440,"updated":"2016-01-29 17:55:16.000000000","message":"Direct is still a little bit confusing but I have no suitable substitute...","commit_id":"bf1e7238d7860031619b3cea856a20ffbe1f5a8d"}],"keystone/federation/utils.py":[{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"240dbcc1a7e7aa362f2882b32206e66275babdcc","unresolved":false,"context_lines":[{"line_number":395,"context_line":"        self.rules \u003d rules"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    def process(self, assertion_data):"},{"line_number":398,"context_line":"        \"\"\"Transform assertion to a dictionary of user name and group ids"},{"line_number":399,"context_line":"        based on mapping rules."},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"        This function will iterate through the mapping rules to find"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_f9541f55","line":398,"updated":"2016-01-27 21:04:45.000000000","message":"add the :raises field of your new exception here","commit_id":"8d16ae62934363b95f73b1cdcf90f64cda96f391"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"a88eff033cacd60434d161e9bdd989b2cded7800","unresolved":false,"context_lines":[{"line_number":395,"context_line":"        self.rules \u003d rules"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    def process(self, assertion_data):"},{"line_number":398,"context_line":"        \"\"\"Transform assertion to a dictionary of user name and group ids"},{"line_number":399,"context_line":"        based on mapping rules."},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"        This function will iterate through the mapping rules to find"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_6456d8cf","line":398,"in_reply_to":"7a5de9d1_f9541f55","updated":"2016-01-29 17:49:27.000000000","message":"Done. But in the method that raises the new exception.","commit_id":"8d16ae62934363b95f73b1cdcf90f64cda96f391"}],"keystone/tests/unit/contrib/federation/test_utils.py":[{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"240dbcc1a7e7aa362f2882b32206e66275babdcc","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    def test_using_remote_direct_mapping_that_doesnt_exist_fails(self):"},{"line_number":274,"context_line":"        \"\"\"Test that rules with keywords cannot be used for direct mapping.\"\"\""},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        mapping \u003d mapping_fixtures.MAPPING_DIRECT_MAPPING_THROUGH_KEYWORD"},{"line_number":277,"context_line":"        rp \u003d mapping_utils.RuleProcessor(FAKE_MAPPING_ID, mapping[\u0027rules\u0027])"},{"line_number":278,"context_line":"        assertion \u003d mapping_fixtures.CUSTOMER_ASSERTION"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_d917e3eb","line":275,"updated":"2016-01-27 21:04:45.000000000","message":"linters flake8 is not happy with this line","commit_id":"8d16ae62934363b95f73b1cdcf90f64cda96f391"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"a88eff033cacd60434d161e9bdd989b2cded7800","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    def test_using_remote_direct_mapping_that_doesnt_exist_fails(self):"},{"line_number":274,"context_line":"        \"\"\"Test that rules with keywords cannot be used for direct mapping.\"\"\""},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        mapping \u003d mapping_fixtures.MAPPING_DIRECT_MAPPING_THROUGH_KEYWORD"},{"line_number":277,"context_line":"        rp \u003d mapping_utils.RuleProcessor(FAKE_MAPPING_ID, mapping[\u0027rules\u0027])"},{"line_number":278,"context_line":"        assertion \u003d mapping_fixtures.CUSTOMER_ASSERTION"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_73853c05","line":275,"in_reply_to":"7a5de9d1_d917e3eb","updated":"2016-01-29 17:49:27.000000000","message":"Done","commit_id":"8d16ae62934363b95f73b1cdcf90f64cda96f391"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"ca0e24eb73f1444ffdc1acee9b38764c57d37d89","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        The remote match must exist in a rule when a local section refers to"},{"line_number":277,"context_line":"        a remote matching using the format (e.g. {0} in a local section)."},{"line_number":278,"context_line":"        \"\"\""},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        mapping \u003d mapping_fixtures.MAPPING_DIRECT_MAPPING_THROUGH_KEYWORD"},{"line_number":281,"context_line":"        rp \u003d mapping_utils.RuleProcessor(FAKE_MAPPING_ID, mapping[\u0027rules\u0027])"},{"line_number":282,"context_line":"        assertion \u003d mapping_fixtures.CUSTOMER_ASSERTION"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_cee477e1","line":279,"updated":"2016-01-30 03:32:31.000000000","message":"remove this line to pass linters","commit_id":"bf1e7238d7860031619b3cea856a20ffbe1f5a8d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"1d6026494525fa398b654d9d990185490bc2a572","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        The remote match must exist in a rule when a local section refers to"},{"line_number":277,"context_line":"        a remote matching using the format (e.g. {0} in a local section)."},{"line_number":278,"context_line":"        \"\"\""},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        mapping \u003d mapping_fixtures.MAPPING_DIRECT_MAPPING_THROUGH_KEYWORD"},{"line_number":281,"context_line":"        rp \u003d mapping_utils.RuleProcessor(FAKE_MAPPING_ID, mapping[\u0027rules\u0027])"},{"line_number":282,"context_line":"        assertion \u003d mapping_fixtures.CUSTOMER_ASSERTION"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_44a5c344","line":279,"in_reply_to":"7a5de9d1_cee477e1","updated":"2016-01-30 13:20:57.000000000","message":"dumb linters :-)","commit_id":"bf1e7238d7860031619b3cea856a20ffbe1f5a8d"}],"keystone/tests/unit/test_v3_federation.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4002471715f887a7cd93344b235ee67e1c8c5b51","unresolved":false,"context_lines":[{"line_number":1665,"context_line":"        self.assertListEqual(list(), mapped_properties[\u0027group_ids\u0027])"},{"line_number":1666,"context_line":""},{"line_number":1667,"context_line":"    def test_direct_mapping_with_keyword_remote_only(self):"},{"line_number":1668,"context_line":"        \"\"\"Test that rules with keywords cannot be used for direct maping\"\"\""},{"line_number":1669,"context_line":""},{"line_number":1670,"context_line":"        mapping \u003d mapping_fixtures.MAPPING_DIRECT_MAPPING_THROUGH_KEYWORD"},{"line_number":1671,"context_line":"        rp \u003d mapping_utils.RuleProcessor(mapping[\u0027rules\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_0fc5348d","line":1668,"updated":"2015-05-06 21:10:50.000000000","message":"(nit) s/maping/mapping","commit_id":"6371a3a5219aee640c03d38e59746065290a27ec"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"bd44c26800a95d1a922beca594d5b89f3263949a","unresolved":false,"context_lines":[{"line_number":1665,"context_line":"        self.assertListEqual(list(), mapped_properties[\u0027group_ids\u0027])"},{"line_number":1666,"context_line":""},{"line_number":1667,"context_line":"    def test_direct_mapping_with_keyword_remote_only(self):"},{"line_number":1668,"context_line":"        \"\"\"Test that rules with keywords cannot be used for direct maping\"\"\""},{"line_number":1669,"context_line":""},{"line_number":1670,"context_line":"        mapping \u003d mapping_fixtures.MAPPING_DIRECT_MAPPING_THROUGH_KEYWORD"},{"line_number":1671,"context_line":"        rp \u003d mapping_utils.RuleProcessor(mapping[\u0027rules\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_9af3a49e","line":1668,"in_reply_to":"1aca2d91_0fc5348d","updated":"2015-05-07 13:45:56.000000000","message":"Done","commit_id":"6371a3a5219aee640c03d38e59746065290a27ec"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a981860050fc9598296c6d61fdf2320a3ec5eae2","unresolved":false,"context_lines":[{"line_number":1664,"context_line":"        self.assertIsNone(mapped_properties[\u0027user\u0027].get(\u0027name\u0027))"},{"line_number":1665,"context_line":"        self.assertListEqual(list(), mapped_properties[\u0027group_ids\u0027])"},{"line_number":1666,"context_line":""},{"line_number":1667,"context_line":"    def test_direct_mapping_with_keyword_remote_only(self):"},{"line_number":1668,"context_line":"        \"\"\"Test that rules with keywords cannot be used for direct mapping\"\"\""},{"line_number":1669,"context_line":""},{"line_number":1670,"context_line":"        mapping \u003d mapping_fixtures.MAPPING_DIRECT_MAPPING_THROUGH_KEYWORD"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_6c7bdf7b","line":1667,"updated":"2015-08-20 17:19:27.000000000","message":"what if we added the expected output to the test name? \n\n    def test_direct_mapping_with_keyword_raises_exception(self):","commit_id":"640b564725d8f6f6c39b9e155ddab7a095aa7882"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0454e6ba4bbf5e48bbf52b05511e120255c1324b","unresolved":false,"context_lines":[{"line_number":1664,"context_line":"        self.assertIsNone(mapped_properties[\u0027user\u0027].get(\u0027name\u0027))"},{"line_number":1665,"context_line":"        self.assertListEqual(list(), mapped_properties[\u0027group_ids\u0027])"},{"line_number":1666,"context_line":""},{"line_number":1667,"context_line":"    def test_direct_mapping_with_keyword_remote_only(self):"},{"line_number":1668,"context_line":"        \"\"\"Test that rules with keywords cannot be used for direct mapping\"\"\""},{"line_number":1669,"context_line":""},{"line_number":1670,"context_line":"        mapping \u003d mapping_fixtures.MAPPING_DIRECT_MAPPING_THROUGH_KEYWORD"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_2f04b07c","line":1667,"in_reply_to":"fa1b9901_6c7bdf7b","updated":"2016-01-27 19:02:18.000000000","message":"Done","commit_id":"640b564725d8f6f6c39b9e155ddab7a095aa7882"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"e24331515726b091a52b1447bffa2ae482f71443","unresolved":false,"context_lines":[{"line_number":1665,"context_line":"        self.assertListEqual(list(), mapped_properties[\u0027group_ids\u0027])"},{"line_number":1666,"context_line":""},{"line_number":1667,"context_line":"    def test_direct_mapping_with_keyword_remote_only(self):"},{"line_number":1668,"context_line":"        \"\"\"Test that rules with keywords cannot be used for direct mapping\"\"\""},{"line_number":1669,"context_line":""},{"line_number":1670,"context_line":"        mapping \u003d mapping_fixtures.MAPPING_DIRECT_MAPPING_THROUGH_KEYWORD"},{"line_number":1671,"context_line":"        rp \u003d mapping_utils.RuleProcessor(mapping[\u0027rules\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aca2d91_3a67f026","line":1668,"updated":"2015-05-07 13:50:27.000000000","message":"(nit): missing a dot in the end of the sentence","commit_id":"640b564725d8f6f6c39b9e155ddab7a095aa7882"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0454e6ba4bbf5e48bbf52b05511e120255c1324b","unresolved":false,"context_lines":[{"line_number":1665,"context_line":"        self.assertListEqual(list(), mapped_properties[\u0027group_ids\u0027])"},{"line_number":1666,"context_line":""},{"line_number":1667,"context_line":"    def test_direct_mapping_with_keyword_remote_only(self):"},{"line_number":1668,"context_line":"        \"\"\"Test that rules with keywords cannot be used for direct mapping\"\"\""},{"line_number":1669,"context_line":""},{"line_number":1670,"context_line":"        mapping \u003d mapping_fixtures.MAPPING_DIRECT_MAPPING_THROUGH_KEYWORD"},{"line_number":1671,"context_line":"        rp \u003d mapping_utils.RuleProcessor(mapping[\u0027rules\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_8fd8441f","line":1668,"in_reply_to":"1aca2d91_3a67f026","updated":"2016-01-27 19:02:18.000000000","message":"Done","commit_id":"640b564725d8f6f6c39b9e155ddab7a095aa7882"}]}
