)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"f872c08c3433976ce9c092219104d028a3af50e9","unresolved":false,"context_lines":[{"line_number":14,"context_line":"As part of the required work, class UserAuthInfo was moved from"},{"line_number":15,"context_line":"``keystone/auth/plugins/password.py`` to"},{"line_number":16,"context_line":"``keystone/auth/plugins/core.py`` and is now accessed after importing"},{"line_number":17,"context_line":"``keystone.auth.plugins`` module."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I90b7408a9905aa96387414d9250b410b28eff485"},{"line_number":20,"context_line":"Partially-Implements: bp federated-direct-user-mapping"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"ba7be1f8_81173e44","line":17,"updated":"2015-02-25 23:17:38.000000000","message":"DocImpact\n\nlooks like there are changes in the mapping. We need to document those.","commit_id":"c34f7fa6317ae3e9c31cebd609ae605c942ff4a5"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a15979b7bea3b1cef9b9325465513fa12c7a62fe","unresolved":false,"context_lines":[{"line_number":14,"context_line":"As part of the required work, class UserAuthInfo was moved from"},{"line_number":15,"context_line":"``keystone/auth/plugins/password.py`` to"},{"line_number":16,"context_line":"``keystone/auth/plugins/core.py`` and is now accessed after importing"},{"line_number":17,"context_line":"``keystone.auth.plugins`` module."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I90b7408a9905aa96387414d9250b410b28eff485"},{"line_number":20,"context_line":"Partially-Implements: bp federated-direct-user-mapping"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"ba7be1f8_cc188dd5","line":17,"in_reply_to":"ba7be1f8_81173e44","updated":"2015-02-26 00:06:26.000000000","message":"++","commit_id":"c34f7fa6317ae3e9c31cebd609ae605c942ff4a5"}],"keystone/auth/plugins/core.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"652407e3959bb640bc54c584eb4967ece7e245f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"ba7be1f8_88148cf6","updated":"2015-02-20 05:26:59.000000000","message":"two issues with this - 1) the move from password.py to core.py should be done in a separate commit, and 2) since it\u0027s a move, don\u0027t change the copyright :)","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e4517615cd6eff7ada9630b1cfcd71465308de9f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"ba7be1f8_dd539d6a","in_reply_to":"ba7be1f8_88148cf6","updated":"2015-02-20 10:25:26.000000000","message":"ok, to be honest i was not sure about the copyright.\nAlso, I will split the patch.","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"}],"keystone/auth/plugins/mapped.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"652407e3959bb640bc54c584eb4967ece7e245f4","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    user_id \u003d None"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    try:"},{"line_number":127,"context_line":"        mapping, mapped_properties \u003d apply_mapping_filter("},{"line_number":128,"context_line":"            identity_provider, protocol, assertion, assignment_api,"},{"line_number":129,"context_line":"            federation_api, identity_api)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_48bff4d0","line":127,"updated":"2015-02-20 05:26:59.000000000","message":"see my comment below, just use the function we already created instead of changing the return type of apply_mapping_filter.","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e4517615cd6eff7ada9630b1cfcd71465308de9f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    user_id \u003d None"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    try:"},{"line_number":127,"context_line":"        mapping, mapped_properties \u003d apply_mapping_filter("},{"line_number":128,"context_line":"            identity_provider, protocol, assertion, assignment_api,"},{"line_number":129,"context_line":"            federation_api, identity_api)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_bd49898d","line":127,"in_reply_to":"ba7be1f8_48bff4d0","updated":"2015-02-20 10:25:26.000000000","message":"I simply didn\u0027t want to call db twice.","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"652407e3959bb640bc54c584eb4967ece7e245f4","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            user_id \u003d user[\u0027id\u0027]"},{"line_number":134,"context_line":"            group_ids \u003d mapped_properties[\u0027group_ids\u0027]"},{"line_number":135,"context_line":"            utils.validate_groups_cardinality(group_ids, mapping[\u0027id\u0027])"},{"line_number":136,"context_line":"            build_ephemeral_mapping_context(auth_context, user,"},{"line_number":137,"context_line":"                                            mapped_properties,"},{"line_number":138,"context_line":"                                            identity_provider, protocol)"},{"line_number":139,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_e89ee862","line":136,"updated":"2015-02-20 05:26:59.000000000","message":"what about changing this to:\n\n  build_ephemeral_user_context\n\ns/mapping/user","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e4517615cd6eff7ada9630b1cfcd71465308de9f","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            user_id \u003d user[\u0027id\u0027]"},{"line_number":134,"context_line":"            group_ids \u003d mapped_properties[\u0027group_ids\u0027]"},{"line_number":135,"context_line":"            utils.validate_groups_cardinality(group_ids, mapping[\u0027id\u0027])"},{"line_number":136,"context_line":"            build_ephemeral_mapping_context(auth_context, user,"},{"line_number":137,"context_line":"                                            mapped_properties,"},{"line_number":138,"context_line":"                                            identity_provider, protocol)"},{"line_number":139,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_c05d74eb","line":136,"in_reply_to":"ba7be1f8_e89ee862","updated":"2015-02-20 10:25:26.000000000","message":"Done","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"652407e3959bb640bc54c584eb4967ece7e245f4","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                                                   outcome)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"def is_ephemeral_user(mapped_properties):"},{"line_number":163,"context_line":"    return mapped_properties[\u0027user\u0027][\u0027type\u0027] \u003d\u003d utils.UserType.EPHEMERAL"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_08c5fc5a","line":162,"updated":"2015-02-20 05:26:59.000000000","message":"this function seems unnecessary since it\u0027s only called once and has one line.","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e4517615cd6eff7ada9630b1cfcd71465308de9f","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                                                   outcome)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"def is_ephemeral_user(mapped_properties):"},{"line_number":163,"context_line":"    return mapped_properties[\u0027user\u0027][\u0027type\u0027] \u003d\u003d utils.UserType.EPHEMERAL"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_9d120561","line":162,"in_reply_to":"ba7be1f8_08c5fc5a","updated":"2015-02-20 10:25:26.000000000","message":"made it subfunction, as imho it increases the readibility (the check itself is super ugly).\nCan change if you insist.","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"652407e3959bb640bc54c584eb4967ece7e245f4","unresolved":false,"context_lines":[{"line_number":163,"context_line":"    return mapped_properties[\u0027user\u0027][\u0027type\u0027] \u003d\u003d utils.UserType.EPHEMERAL"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"def build_ephemeral_mapping_context(auth_context, user, mapped_properties,"},{"line_number":167,"context_line":"                                    identity_provider, protocol):"},{"line_number":168,"context_line":"    auth_context[\u0027user_id\u0027] \u003d user[\u0027id\u0027]"},{"line_number":169,"context_line":"    auth_context[\u0027group_ids\u0027] \u003d mapped_properties[\u0027group_ids\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_c8ca046e","line":166,"updated":"2015-02-20 05:26:59.000000000","message":"mark this as a private function by prefixing with _","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e4517615cd6eff7ada9630b1cfcd71465308de9f","unresolved":false,"context_lines":[{"line_number":163,"context_line":"    return mapped_properties[\u0027user\u0027][\u0027type\u0027] \u003d\u003d utils.UserType.EPHEMERAL"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"def build_ephemeral_mapping_context(auth_context, user, mapped_properties,"},{"line_number":167,"context_line":"                                    identity_provider, protocol):"},{"line_number":168,"context_line":"    auth_context[\u0027user_id\u0027] \u003d user[\u0027id\u0027]"},{"line_number":169,"context_line":"    auth_context[\u0027group_ids\u0027] \u003d mapped_properties[\u0027group_ids\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_1d061521","line":166,"in_reply_to":"ba7be1f8_c8ca046e","updated":"2015-02-20 10:25:26.000000000","message":"tempted to put it inside handle_unscoped_token :-)","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"652407e3959bb640bc54c584eb4967ece7e245f4","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    auth_context[federation.PROTOCOL] \u003d protocol"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"def build_local_user_context(auth_context, mapped_properties):"},{"line_number":175,"context_line":"    user_info \u003d auth_plugins.UserAuthInfo.create(mapped_properties,"},{"line_number":176,"context_line":"                                                 METHOD_NAME)"},{"line_number":177,"context_line":"    auth_context[\u0027user_id\u0027] \u003d user_info.user_id"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_a8cdd088","line":174,"updated":"2015-02-20 05:26:59.000000000","message":"mark this as a private function by prefixing with _","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e4517615cd6eff7ada9630b1cfcd71465308de9f","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    auth_context[federation.PROTOCOL] \u003d protocol"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"def build_local_user_context(auth_context, mapped_properties):"},{"line_number":175,"context_line":"    user_info \u003d auth_plugins.UserAuthInfo.create(mapped_properties,"},{"line_number":176,"context_line":"                                                 METHOD_NAME)"},{"line_number":177,"context_line":"    auth_context[\u0027user_id\u0027] \u003d user_info.user_id"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_60ff6802","line":174,"in_reply_to":"ba7be1f8_a8cdd088","updated":"2015-02-20 10:25:26.000000000","message":"tempted to put it inside handle_unscoped_token :-)","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"652407e3959bb640bc54c584eb4967ece7e245f4","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            mapped_properties[\u0027group_names\u0027], mapping[\u0027id\u0027],"},{"line_number":209,"context_line":"            identity_api, assignment_api))"},{"line_number":210,"context_line":"    mapped_properties[\u0027group_ids\u0027] \u003d list(set(group_ids))"},{"line_number":211,"context_line":"    return mapping, mapped_properties"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"def setup_username(context, mapped_properties):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_c8e3e403","line":211,"updated":"2015-02-20 05:26:59.000000000","message":"i\u0027d rather you just keep this function to just returning mapped_properties, if you need the mapping again (or ID) just call \n\n  mapping \u003d federation_api.get_mapping_from_idp_and_protocol(identity_provider, protocol)\n\nagain","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e4517615cd6eff7ada9630b1cfcd71465308de9f","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            mapped_properties[\u0027group_names\u0027], mapping[\u0027id\u0027],"},{"line_number":209,"context_line":"            identity_api, assignment_api))"},{"line_number":210,"context_line":"    mapped_properties[\u0027group_ids\u0027] \u003d list(set(group_ids))"},{"line_number":211,"context_line":"    return mapping, mapped_properties"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"def setup_username(context, mapped_properties):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_800a9cd0","line":211,"in_reply_to":"ba7be1f8_c8e3e403","updated":"2015-02-20 10:25:26.000000000","message":"i hope sqlalchemy has some kickass caching layer built-in :-)","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"f872c08c3433976ce9c092219104d028a3af50e9","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        auth_context[\u0027user_id\u0027] \u003d user[\u0027id\u0027]"},{"line_number":117,"context_line":"        auth_context[\u0027group_ids\u0027] \u003d mapped_properties[\u0027group_ids\u0027]"},{"line_number":118,"context_line":"        auth_context[federation.IDENTITY_PROVIDER] \u003d identity_provider"},{"line_number":119,"context_line":"        auth_context[federation.PROTOCOL] \u003d protocol"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def build_local_user_context(auth_context, mapped_properties):"},{"line_number":122,"context_line":"        user_info \u003d auth_plugins.UserAuthInfo.create(mapped_properties,"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba7be1f8_e608102a","line":119,"updated":"2015-02-25 23:17:38.000000000","message":"I would imagine this information is also helpful for local user as well as \u0027mapped\u0027 could mean a number of things.","commit_id":"c34f7fa6317ae3e9c31cebd609ae605c942ff4a5"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"a683f11f8dce7f6923d0dc83dc9fe7b9951fe8da","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        auth_context[\u0027user_id\u0027] \u003d user[\u0027id\u0027]"},{"line_number":117,"context_line":"        auth_context[\u0027group_ids\u0027] \u003d mapped_properties[\u0027group_ids\u0027]"},{"line_number":118,"context_line":"        auth_context[federation.IDENTITY_PROVIDER] \u003d identity_provider"},{"line_number":119,"context_line":"        auth_context[federation.PROTOCOL] \u003d protocol"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def build_local_user_context(auth_context, mapped_properties):"},{"line_number":122,"context_line":"        user_info \u003d auth_plugins.UserAuthInfo.create(mapped_properties,"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba7be1f8_36db247d","line":119,"in_reply_to":"ba7be1f8_e608102a","updated":"2015-02-26 10:23:20.000000000","message":"I don\u0027t follow what do you want me to do here? \nAdd user type, or method name?","commit_id":"c34f7fa6317ae3e9c31cebd609ae605c942ff4a5"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"ac42cd00ce3a235d9829646841a97d293aa1ecf1","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        auth_context[\u0027user_id\u0027] \u003d user[\u0027id\u0027]"},{"line_number":117,"context_line":"        auth_context[\u0027group_ids\u0027] \u003d mapped_properties[\u0027group_ids\u0027]"},{"line_number":118,"context_line":"        auth_context[federation.IDENTITY_PROVIDER] \u003d identity_provider"},{"line_number":119,"context_line":"        auth_context[federation.PROTOCOL] \u003d protocol"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def build_local_user_context(auth_context, mapped_properties):"},{"line_number":122,"context_line":"        user_info \u003d auth_plugins.UserAuthInfo.create(mapped_properties,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_542f89f6","line":119,"updated":"2015-02-27 02:15:24.000000000","message":"shouldn\u0027t line 118-119 be added after line 124 as well? I would image even for local user mapping, we still need to know the identity provider as the method are exactly the same. Only difference is in the mapping. The information need to be consistent.","commit_id":"10d74cf9092b6bad2f73e72decb49ce794faf0fe"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"ee202fd6c4ec509f987df4a8a9de581fcb4a95d6","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        auth_context[\u0027user_id\u0027] \u003d user[\u0027id\u0027]"},{"line_number":117,"context_line":"        auth_context[\u0027group_ids\u0027] \u003d mapped_properties[\u0027group_ids\u0027]"},{"line_number":118,"context_line":"        auth_context[federation.IDENTITY_PROVIDER] \u003d identity_provider"},{"line_number":119,"context_line":"        auth_context[federation.PROTOCOL] \u003d protocol"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def build_local_user_context(auth_context, mapped_properties):"},{"line_number":122,"context_line":"        user_info \u003d auth_plugins.UserAuthInfo.create(mapped_properties,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_0aecfbc6","line":119,"in_reply_to":"ba7be1f8_47d7ccbf","updated":"2015-02-27 11:47:40.000000000","message":"also....token with IDENTITY_PROVIDER and PROTOCOL attributes inside is treated as federated token.","commit_id":"10d74cf9092b6bad2f73e72decb49ce794faf0fe"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"85afbad60c5391a804d528356a29911d89bb13c7","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        auth_context[\u0027user_id\u0027] \u003d user[\u0027id\u0027]"},{"line_number":117,"context_line":"        auth_context[\u0027group_ids\u0027] \u003d mapped_properties[\u0027group_ids\u0027]"},{"line_number":118,"context_line":"        auth_context[federation.IDENTITY_PROVIDER] \u003d identity_provider"},{"line_number":119,"context_line":"        auth_context[federation.PROTOCOL] \u003d protocol"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def build_local_user_context(auth_context, mapped_properties):"},{"line_number":122,"context_line":"        user_info \u003d auth_plugins.UserAuthInfo.create(mapped_properties,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_47d7ccbf","line":119,"in_reply_to":"ba7be1f8_542f89f6","updated":"2015-02-27 11:32:17.000000000","message":"I think we would then have to change token format...... ?","commit_id":"10d74cf9092b6bad2f73e72decb49ce794faf0fe"}],"keystone/contrib/federation/utils.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"652407e3959bb640bc54c584eb4967ece7e245f4","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            yield (k, v)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"class UserType(object):"},{"line_number":288,"context_line":"    \"\"\"User mapping type.\"\"\""},{"line_number":289,"context_line":"    EPHEMERAL \u003d \u0027ephemeral\u0027"},{"line_number":290,"context_line":"    LOCAL \u003d \u0027local\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_a8a23098","line":287,"updated":"2015-02-20 05:26:59.000000000","message":"why move this now? do it in the dependent patch.","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e4517615cd6eff7ada9630b1cfcd71465308de9f","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            yield (k, v)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"class UserType(object):"},{"line_number":288,"context_line":"    \"\"\"User mapping type.\"\"\""},{"line_number":289,"context_line":"    EPHEMERAL \u003d \u0027ephemeral\u0027"},{"line_number":290,"context_line":"    LOCAL \u003d \u0027local\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_40aa6471","line":287,"in_reply_to":"ba7be1f8_a8a23098","updated":"2015-02-20 10:25:26.000000000","message":"ugh, ok.","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"}],"keystone/tests/unit/mapping_fixtures.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"652407e3959bb640bc54c584eb4967ece7e245f4","unresolved":false,"context_lines":[{"line_number":750,"context_line":""},{"line_number":751,"context_line":"ANOTHER_LOCAL_USER_ASSERTION \u003d {"},{"line_number":752,"context_line":"    \u0027UserName\u0027: \u0027marek\u0027,"},{"line_number":753,"context_line":"    \u0027Position\u0027: \u0027DirectorGeneral\u0027"},{"line_number":754,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_e8ac288f","line":753,"updated":"2015-02-20 05:26:59.000000000","message":"nice title!","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e4517615cd6eff7ada9630b1cfcd71465308de9f","unresolved":false,"context_lines":[{"line_number":750,"context_line":""},{"line_number":751,"context_line":"ANOTHER_LOCAL_USER_ASSERTION \u003d {"},{"line_number":752,"context_line":"    \u0027UserName\u0027: \u0027marek\u0027,"},{"line_number":753,"context_line":"    \u0027Position\u0027: \u0027DirectorGeneral\u0027"},{"line_number":754,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_c01494f7","line":753,"in_reply_to":"ba7be1f8_e8ac288f","updated":"2015-02-20 10:25:26.000000000","message":":D","commit_id":"0ab71b89cf01d76f358f2a5225c971824219dcd1"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a15979b7bea3b1cef9b9325465513fa12c7a62fe","unresolved":false,"context_lines":[{"line_number":743,"context_line":"    \u0027orgPersonType\u0027: \u0027Contractor\u0027"},{"line_number":744,"context_line":"}"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"LOCAL_USER_ASSERTION \u003d {"},{"line_number":747,"context_line":"    \u0027UserName\u0027: \u0027marek\u0027,"},{"line_number":748,"context_line":"    \u0027UserType\u0027: \u0027local\u0027"},{"line_number":749,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba7be1f8_0c5d4579","line":746,"updated":"2015-02-26 00:06:26.000000000","message":"just a general comment, not related to this change. I believe we must be careful while adding new fixtures. They have an impact in the tests and here in my local machine federation tests are the most slow ones.","commit_id":"c34f7fa6317ae3e9c31cebd609ae605c942ff4a5"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"a683f11f8dce7f6923d0dc83dc9fe7b9951fe8da","unresolved":false,"context_lines":[{"line_number":743,"context_line":"    \u0027orgPersonType\u0027: \u0027Contractor\u0027"},{"line_number":744,"context_line":"}"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"LOCAL_USER_ASSERTION \u003d {"},{"line_number":747,"context_line":"    \u0027UserName\u0027: \u0027marek\u0027,"},{"line_number":748,"context_line":"    \u0027UserType\u0027: \u0027local\u0027"},{"line_number":749,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba7be1f8_16d1c022","line":746,"in_reply_to":"ba7be1f8_0c5d4579","updated":"2015-02-26 10:23:20.000000000","message":"it increases readibility, we have small assertion, and small mapping rule and we are sure we test what we want to test.","commit_id":"c34f7fa6317ae3e9c31cebd609ae605c942ff4a5"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"f872c08c3433976ce9c092219104d028a3af50e9","unresolved":false,"context_lines":[{"line_number":745,"context_line":""},{"line_number":746,"context_line":"LOCAL_USER_ASSERTION \u003d {"},{"line_number":747,"context_line":"    \u0027UserName\u0027: \u0027marek\u0027,"},{"line_number":748,"context_line":"    \u0027UserType\u0027: \u0027local\u0027"},{"line_number":749,"context_line":"}"},{"line_number":750,"context_line":""},{"line_number":751,"context_line":"ANOTHER_LOCAL_USER_ASSERTION \u003d {"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba7be1f8_463d5c2a","line":748,"updated":"2015-02-25 23:17:38.000000000","message":"do we need a negative test for invalid UserType? Also, the remote user now have to explicitly specify the \"UserType\" if they want to map to a local user instead of ephemera?","commit_id":"c34f7fa6317ae3e9c31cebd609ae605c942ff4a5"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"a683f11f8dce7f6923d0dc83dc9fe7b9951fe8da","unresolved":false,"context_lines":[{"line_number":745,"context_line":""},{"line_number":746,"context_line":"LOCAL_USER_ASSERTION \u003d {"},{"line_number":747,"context_line":"    \u0027UserName\u0027: \u0027marek\u0027,"},{"line_number":748,"context_line":"    \u0027UserType\u0027: \u0027local\u0027"},{"line_number":749,"context_line":"}"},{"line_number":750,"context_line":""},{"line_number":751,"context_line":"ANOTHER_LOCAL_USER_ASSERTION \u003d {"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba7be1f8_d17bb278","line":748,"in_reply_to":"ba7be1f8_463d5c2a","updated":"2015-02-26 10:23:20.000000000","message":"Whether it\u0027s local or ephemeral user it is decided in the mapping rule, not the assertion.\n\nNot at all, that is just a coincidence.\nChanged to other value, so I don\u0027t confuse others.","commit_id":"c34f7fa6317ae3e9c31cebd609ae605c942ff4a5"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"f872c08c3433976ce9c092219104d028a3af50e9","unresolved":false,"context_lines":[{"line_number":748,"context_line":"    \u0027UserType\u0027: \u0027local\u0027"},{"line_number":749,"context_line":"}"},{"line_number":750,"context_line":""},{"line_number":751,"context_line":"ANOTHER_LOCAL_USER_ASSERTION \u003d {"},{"line_number":752,"context_line":"    \u0027UserName\u0027: \u0027marek\u0027,"},{"line_number":753,"context_line":"    \u0027Position\u0027: \u0027DirectorGeneral\u0027"},{"line_number":754,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba7be1f8_a61b787f","line":751,"updated":"2015-02-25 23:17:38.000000000","message":"not sure if the name is appropriate. These assertions are coming from a remote user right?","commit_id":"c34f7fa6317ae3e9c31cebd609ae605c942ff4a5"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"a683f11f8dce7f6923d0dc83dc9fe7b9951fe8da","unresolved":false,"context_lines":[{"line_number":748,"context_line":"    \u0027UserType\u0027: \u0027local\u0027"},{"line_number":749,"context_line":"}"},{"line_number":750,"context_line":""},{"line_number":751,"context_line":"ANOTHER_LOCAL_USER_ASSERTION \u003d {"},{"line_number":752,"context_line":"    \u0027UserName\u0027: \u0027marek\u0027,"},{"line_number":753,"context_line":"    \u0027Position\u0027: \u0027DirectorGeneral\u0027"},{"line_number":754,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba7be1f8_7614bce8","line":751,"in_reply_to":"ba7be1f8_a61b787f","updated":"2015-02-26 10:23:20.000000000","message":"From remote IdP. The name indicates the purpose, so we will use it for direct mapping.","commit_id":"c34f7fa6317ae3e9c31cebd609ae605c942ff4a5"}],"keystone/tests/unit/test_v3_federation.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"f872c08c3433976ce9c092219104d028a3af50e9","unresolved":false,"context_lines":[{"line_number":1985,"context_line":"                    ],"},{"line_number":1986,"context_line":"                    \"remote\": ["},{"line_number":1987,"context_line":"                        {"},{"line_number":1988,"context_line":"                            \"type\": \"UserType\","},{"line_number":1989,"context_line":"                            \"any_one_of\": ["},{"line_number":1990,"context_line":"                                \"local\""},{"line_number":1991,"context_line":"                            ]"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba7be1f8_c17a1687","line":1988,"updated":"2015-02-25 23:17:38.000000000","message":"so now IdPs will need to specify \"UserType\"? Also, for local user, why do we care about group? (line 1980)","commit_id":"c34f7fa6317ae3e9c31cebd609ae605c942ff4a5"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"a683f11f8dce7f6923d0dc83dc9fe7b9951fe8da","unresolved":false,"context_lines":[{"line_number":1985,"context_line":"                    ],"},{"line_number":1986,"context_line":"                    \"remote\": ["},{"line_number":1987,"context_line":"                        {"},{"line_number":1988,"context_line":"                            \"type\": \"UserType\","},{"line_number":1989,"context_line":"                            \"any_one_of\": ["},{"line_number":1990,"context_line":"                                \"local\""},{"line_number":1991,"context_line":"                            ]"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba7be1f8_91d3fa5e","line":1988,"in_reply_to":"ba7be1f8_c17a1687","updated":"2015-02-26 10:23:20.000000000","message":"Nope, this is just one parameter with the same meaning and prioriy like others.\nWhether user will be ephemeral or local is decided in the mapping rules (see line 1972 in this file).","commit_id":"c34f7fa6317ae3e9c31cebd609ae605c942ff4a5"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"ac42cd00ce3a235d9829646841a97d293aa1ecf1","unresolved":false,"context_lines":[{"line_number":1980,"context_line":"                            }"},{"line_number":1981,"context_line":"                        },"},{"line_number":1982,"context_line":"                        {"},{"line_number":1983,"context_line":"                            \"group\": {"},{"line_number":1984,"context_line":"                                \"id\": self.group_customers[\u0027id\u0027]"},{"line_number":1985,"context_line":"                            }"},{"line_number":1986,"context_line":"                        }"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_b4cfe556","line":1983,"updated":"2015-02-27 02:15:24.000000000","message":"Is group still \"required\" for local user? It should be optional right?","commit_id":"10d74cf9092b6bad2f73e72decb49ce794faf0fe"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"85afbad60c5391a804d528356a29911d89bb13c7","unresolved":false,"context_lines":[{"line_number":1980,"context_line":"                            }"},{"line_number":1981,"context_line":"                        },"},{"line_number":1982,"context_line":"                        {"},{"line_number":1983,"context_line":"                            \"group\": {"},{"line_number":1984,"context_line":"                                \"id\": self.group_customers[\u0027id\u0027]"},{"line_number":1985,"context_line":"                            }"},{"line_number":1986,"context_line":"                        }"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_c799fc20","line":1983,"in_reply_to":"ba7be1f8_b4cfe556","updated":"2015-02-27 11:32:17.000000000","message":"it\u0027s is discarded. If you map to a local user you get what user has, not user groups/roles + what you specify in the mapping.  AFAIR i was testing if that is really discarded.","commit_id":"10d74cf9092b6bad2f73e72decb49ce794faf0fe"}]}
