)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"eb3352d159a468a3d0d083b4cbdd77abbe7b57d7","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The method for issuing a token accepted an argument for user_id and"},{"line_number":10,"context_line":"an optional argument for auth_context, which also contained a user_id"},{"line_number":11,"context_line":"value. Despite having two ways to pass in the same information, the"},{"line_number":12,"context_line":"user_id only ever comes from auth_context."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch simplifies the issue_token API by removing the user_id"},{"line_number":15,"context_line":"parameter since it is redundant. It also updates callers where"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9fdfeff1_73894173","line":12,"range":{"start_line":11,"start_character":7,"end_line":12,"end_character":42},"updated":"2019-02-26 09:35:16.000000000","message":"I\u0027m still uneasy about this because the s3/ec2 auth shows this isn\u0027t true.\n\nOur documentation gives a specific meaning to the term `auth_context`[1] and I feel like creating one on the fly with just a user_id isn\u0027t really fulfilling our own definition.\n\n[1] https://docs.openstack.org/keystone/latest/contributor/auth-plugins.html#how-to-implement-an-authentication-plugin","commit_id":"257ca4b5a63b09b7aee0da85817ce8abd42c6e31"}],"keystone/api/_shared/EC2_S3_Resource.py":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"56ddd136ad14f623a3faa2046570c8c0e97c5eb5","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        method_names \u003d [\u0027ec2credential\u0027]"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        auth_context \u003d {\u0027user_id\u0027: user_ref[\u0027id\u0027]}"},{"line_number":123,"context_line":"        token \u003d PROVIDERS.token_provider_api.issue_token("},{"line_number":124,"context_line":"            method_names, auth_context, project_id\u003dproject_ref[\u0027id\u0027]"},{"line_number":125,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_a209b084","line":122,"updated":"2019-02-25 10:59:27.000000000","message":"This seems like kind of a weird workaround that proves that your assertion in the commit message is incorrect.","commit_id":"9138837f55093ae3246f34559d3274ee1559892f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"89ab92b4111aef18c51b8f3870164bb16b81ae96","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        method_names \u003d [\u0027ec2credential\u0027]"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        auth_context \u003d {\u0027user_id\u0027: user_ref[\u0027id\u0027]}"},{"line_number":123,"context_line":"        token \u003d PROVIDERS.token_provider_api.issue_token("},{"line_number":124,"context_line":"            method_names, auth_context, project_id\u003dproject_ref[\u0027id\u0027]"},{"line_number":125,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_91414aa9","line":122,"in_reply_to":"9fdfeff1_a209b084","updated":"2019-02-25 21:48:46.000000000","message":"Done","commit_id":"9138837f55093ae3246f34559d3274ee1559892f"}],"keystone/token/provider.py":[{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"0a12e100459cd7117b1824af06c5696e717b40c8","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            if \u0027access_token_id\u0027 in auth_context:"},{"line_number":235,"context_line":"                token.access_token_id \u003d auth_context[\u0027access_token_id\u0027]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        if not token.user_id:"},{"line_number":238,"context_line":"            token.user_id \u003d user_id"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        token.user_domain_id \u003d token.user[\u0027domain_id\u0027]"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_f25b642b","side":"PARENT","line":238,"range":{"start_line":237,"start_character":8,"end_line":238,"end_character":35},"updated":"2018-08-06 21:50:07.000000000","message":"I wonder if we will ever hit an issue where auth_context is None and the token won\u0027t get a user_id set.","commit_id":"140a34b439d9aa60712a164b21622e721a60dfc2"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"8db0fe1db0a0631ae8ab497ded3f146ee5c1e5a3","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            if \u0027access_token_id\u0027 in auth_context:"},{"line_number":235,"context_line":"                token.access_token_id \u003d auth_context[\u0027access_token_id\u0027]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        if not token.user_id:"},{"line_number":238,"context_line":"            token.user_id \u003d user_id"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        token.user_domain_id \u003d token.user[\u0027domain_id\u0027]"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_7312f35a","side":"PARENT","line":238,"range":{"start_line":237,"start_character":8,"end_line":238,"end_character":35},"in_reply_to":"3f79a3b5_321f9c6d","updated":"2018-08-07 07:27:42.000000000","message":"It won\u0027t happen, since before calling \"issue_token\" the code has made sure the \"auth_context\" contains \"user_id\". see https://review.openstack.org/#/c/582635/3/keystone/contrib/ec2/controllers.py\n\nHowever I won\u0027t oppose to add a check to make the code stronger.","commit_id":"140a34b439d9aa60712a164b21622e721a60dfc2"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0a688c20211ebcfeb4a1e8a08deea9f50eb86a56","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            if \u0027access_token_id\u0027 in auth_context:"},{"line_number":235,"context_line":"                token.access_token_id \u003d auth_context[\u0027access_token_id\u0027]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        if not token.user_id:"},{"line_number":238,"context_line":"            token.user_id \u003d user_id"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        token.user_domain_id \u003d token.user[\u0027domain_id\u0027]"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_d473a3e6","side":"PARENT","line":238,"range":{"start_line":237,"start_character":8,"end_line":238,"end_character":35},"in_reply_to":"3f79a3b5_7312f35a","updated":"2018-08-07 17:30:39.000000000","message":"right, it won\u0027t happen for the current usages - we never know how this method is going to be used in the future :)","commit_id":"140a34b439d9aa60712a164b21622e721a60dfc2"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"88e2d074fe79927db8af1cb4b9495bc3b262f8d3","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            if \u0027access_token_id\u0027 in auth_context:"},{"line_number":235,"context_line":"                token.access_token_id \u003d auth_context[\u0027access_token_id\u0027]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        if not token.user_id:"},{"line_number":238,"context_line":"            token.user_id \u003d user_id"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        token.user_domain_id \u003d token.user[\u0027domain_id\u0027]"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_e9968f4a","side":"PARENT","line":238,"range":{"start_line":237,"start_character":8,"end_line":238,"end_character":35},"in_reply_to":"3f79a3b5_d473a3e6","updated":"2018-10-12 19:53:48.000000000","message":"auth_context can\u0027t be None, it\u0027s always populated [0][1][2].\n\nWhat do you expect the check to be?\n\n  assert auth_context is not None\n\nIn that case I can just remove auth_context as a kwarg and make it a required argument of the method.\n\n\n[0] https://git.openstack.org/cgit/openstack/keystone/tree/keystone/api/auth.py#n315\n[1] https://git.openstack.org/cgit/openstack/keystone/tree/keystone/api/_shared/authentication.py#n183\n[2] https://git.openstack.org/cgit/openstack/keystone/tree/keystone/auth/core.py#n80","commit_id":"140a34b439d9aa60712a164b21622e721a60dfc2"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"56ddd136ad14f623a3faa2046570c8c0e97c5eb5","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            if \u0027access_token_id\u0027 in auth_context:"},{"line_number":235,"context_line":"                token.access_token_id \u003d auth_context[\u0027access_token_id\u0027]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        if not token.user_id:"},{"line_number":238,"context_line":"            token.user_id \u003d user_id"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        token.user_domain_id \u003d token.user[\u0027domain_id\u0027]"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_82f6ec8e","side":"PARENT","line":238,"range":{"start_line":237,"start_character":8,"end_line":238,"end_character":35},"in_reply_to":"3f79a3b5_e9968f4a","updated":"2019-02-25 10:59:27.000000000","message":"\u003e auth_context can\u0027t be None, it\u0027s always populated [0][1][2].\n\nFrom [0] it looks like that\u0027s actually not the case?\n\n[0] https://review.openstack.org/#/c/582635/6/keystone/api/_shared/EC2_S3_Resource.py","commit_id":"140a34b439d9aa60712a164b21622e721a60dfc2"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"959f2f5069951424292260bc3daaa8455d36f688","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            if \u0027access_token_id\u0027 in auth_context:"},{"line_number":235,"context_line":"                token.access_token_id \u003d auth_context[\u0027access_token_id\u0027]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        if not token.user_id:"},{"line_number":238,"context_line":"            token.user_id \u003d user_id"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        token.user_domain_id \u003d token.user[\u0027domain_id\u0027]"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_321f9c6d","side":"PARENT","line":238,"range":{"start_line":237,"start_character":8,"end_line":238,"end_character":35},"in_reply_to":"3f79a3b5_f25b642b","updated":"2018-08-06 23:33:17.000000000","message":"that\u0027s totally possible given the way the parameters are passed and the code should check for this case.\n\nI believe we need a test to cover this case as well.","commit_id":"140a34b439d9aa60712a164b21622e721a60dfc2"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"a11144dc4e03c9f3336545e504e3193fd809accc","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            if isinstance(idp_id, bytes):"},{"line_number":226,"context_line":"                idp_id \u003d idp_id.decode(\u0027utf-8\u0027)"},{"line_number":227,"context_line":"            token.identity_provider_id \u003d idp_id"},{"line_number":228,"context_line":"            token.user_id \u003d auth_context[\u0027user_id\u0027]"},{"line_number":229,"context_line":"            token.federated_groups \u003d ["},{"line_number":230,"context_line":"                {\u0027id\u0027: group} for group in auth_context[\u0027group_ids\u0027]"},{"line_number":231,"context_line":"            ]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_a9c3b705","line":228,"range":{"start_line":228,"start_character":12,"end_line":228,"end_character":51},"updated":"2018-10-12 20:10:54.000000000","message":"nit: extra assignment, can remove later.","commit_id":"8bef09254b105aaa5392bc8858059c36defe0dd0"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f01d644106c54a2dbade6b324139ccdc5fc837bb","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            if isinstance(idp_id, bytes):"},{"line_number":226,"context_line":"                idp_id \u003d idp_id.decode(\u0027utf-8\u0027)"},{"line_number":227,"context_line":"            token.identity_provider_id \u003d idp_id"},{"line_number":228,"context_line":"            token.user_id \u003d auth_context[\u0027user_id\u0027]"},{"line_number":229,"context_line":"            token.federated_groups \u003d ["},{"line_number":230,"context_line":"                {\u0027id\u0027: group} for group in auth_context[\u0027group_ids\u0027]"},{"line_number":231,"context_line":"            ]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_e978cfc2","line":228,"range":{"start_line":228,"start_character":12,"end_line":228,"end_character":51},"in_reply_to":"3f79a3b5_a9c3b705","updated":"2018-10-12 20:16:28.000000000","message":"Good catch, done.","commit_id":"8bef09254b105aaa5392bc8858059c36defe0dd0"}]}
