)]}'
{"keystone/common/sql/contract_repo/versions/015_contract_updated_federated_user_domain.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5061eebe43cfca021ccd36f311140a8385eeec95","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5a3905b3_1352f913","updated":"2017-01-19 13:43:19.000000000","message":"remove contract from the file name","commit_id":"7225d45b07e4bb38790517465402ce44129b1d0d"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"4d0387608884dafa790234fadf113be71b58e012","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5a3905b3_c4c07b2d","in_reply_to":"5a3905b3_1352f913","updated":"2017-01-20 05:38:38.000000000","message":"This is still needed as the migration files need to be unique. Otherwise, it causes an error due to caching.","commit_id":"7225d45b07e4bb38790517465402ce44129b1d0d"}],"keystone/common/sql/data_migration_repo/versions/015_migrate_updated_federated_user_domain.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5061eebe43cfca021ccd36f311140a8385eeec95","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5a3905b3_f34c8d78","updated":"2017-01-19 13:43:19.000000000","message":"remove \"migrate\" from the file name","commit_id":"7225d45b07e4bb38790517465402ce44129b1d0d"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"4d0387608884dafa790234fadf113be71b58e012","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5a3905b3_24e85fb4","in_reply_to":"5a3905b3_f34c8d78","updated":"2017-01-20 05:38:38.000000000","message":"This is still needed as the migration files need to be unique. Otherwise, it causes an error due to caching.","commit_id":"7225d45b07e4bb38790517465402ce44129b1d0d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5061eebe43cfca021ccd36f311140a8385eeec95","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    federated_users \u003d list(federated_table.select().execute())"},{"line_number":29,"context_line":"    for federated_user in federated_users:"},{"line_number":30,"context_line":"        values \u003d _get_domain_value(session, federated_user.idp_id, idp_table)"},{"line_number":31,"context_line":"        stmt \u003d user_table.update().where("},{"line_number":32,"context_line":"            sql.and_("},{"line_number":33,"context_line":"                user_table.c.domain_id \u003d\u003d expression.null(),"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a3905b3_b36cc59d","line":30,"range":{"start_line":30,"start_character":8,"end_line":30,"end_character":14},"updated":"2017-01-19 13:43:19.000000000","message":"call this new_domain_id_ref?","commit_id":"7225d45b07e4bb38790517465402ce44129b1d0d"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"4d0387608884dafa790234fadf113be71b58e012","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    federated_users \u003d list(federated_table.select().execute())"},{"line_number":29,"context_line":"    for federated_user in federated_users:"},{"line_number":30,"context_line":"        values \u003d _get_domain_value(session, federated_user.idp_id, idp_table)"},{"line_number":31,"context_line":"        stmt \u003d user_table.update().where("},{"line_number":32,"context_line":"            sql.and_("},{"line_number":33,"context_line":"                user_table.c.domain_id \u003d\u003d expression.null(),"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a3905b3_c4eebbb3","line":30,"range":{"start_line":30,"start_character":8,"end_line":30,"end_character":14},"in_reply_to":"5a3905b3_b36cc59d","updated":"2017-01-20 05:38:38.000000000","message":"Too long of name, causes ugly line wrapping :)","commit_id":"7225d45b07e4bb38790517465402ce44129b1d0d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5061eebe43cfca021ccd36f311140a8385eeec95","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def _get_domain_value(session, idp_id, idp_table):"},{"line_number":39,"context_line":"    cols \u003d [idp_table.c.domain_id]"},{"line_number":40,"context_line":"    filter \u003d idp_table.c.id \u003d\u003d idp_id"},{"line_number":41,"context_line":"    statement \u003d sql.select(cols).where(filter)"},{"line_number":42,"context_line":"    domain \u003d session.execute(statement).fetchone()"},{"line_number":43,"context_line":"    return {\u0027domain_id\u0027: domain[0]}"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a3905b3_f830ea09","line":40,"range":{"start_line":40,"start_character":4,"end_line":40,"end_character":10},"updated":"2017-01-19 13:43:19.000000000","message":"filter is a reserved word, use filter_ or _filter","commit_id":"7225d45b07e4bb38790517465402ce44129b1d0d"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"4d0387608884dafa790234fadf113be71b58e012","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def _get_domain_value(session, idp_id, idp_table):"},{"line_number":39,"context_line":"    cols \u003d [idp_table.c.domain_id]"},{"line_number":40,"context_line":"    filter \u003d idp_table.c.id \u003d\u003d idp_id"},{"line_number":41,"context_line":"    statement \u003d sql.select(cols).where(filter)"},{"line_number":42,"context_line":"    domain \u003d session.execute(statement).fetchone()"},{"line_number":43,"context_line":"    return {\u0027domain_id\u0027: domain[0]}"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a3905b3_6440a7a6","line":40,"range":{"start_line":40,"start_character":4,"end_line":40,"end_character":10},"in_reply_to":"5a3905b3_f830ea09","updated":"2017-01-20 05:38:38.000000000","message":"Done","commit_id":"7225d45b07e4bb38790517465402ce44129b1d0d"}],"keystone/common/sql/expand_repo/versions/015_expand_updated_federated_user_domain.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5061eebe43cfca021ccd36f311140a8385eeec95","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5a3905b3_d33151ee","updated":"2017-01-19 13:43:19.000000000","message":"remove \"expand\" from the file name\n\n\"add_domain_to_federated_user\" ?","commit_id":"7225d45b07e4bb38790517465402ce44129b1d0d"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"4d0387608884dafa790234fadf113be71b58e012","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5a3905b3_a421affd","in_reply_to":"5a3905b3_d33151ee","updated":"2017-01-20 05:38:38.000000000","message":"This is still needed as the migration files need to be unique. Otherwise, it causes an error due to caching.","commit_id":"7225d45b07e4bb38790517465402ce44129b1d0d"}],"keystone/identity/core.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"708e95f9bf430f4f1b2d60ebcd1b22a049984370","unresolved":false,"context_lines":[{"line_number":1322,"context_line":"            user_dict \u003d self.shadow_users_api.get_federated_user("},{"line_number":1323,"context_line":"                idp_id, protocol_id, unique_id)"},{"line_number":1324,"context_line":"        except exception.UserNotFound:"},{"line_number":1325,"context_line":"            idp \u003d self.federation_api.get_idp(idp_id)"},{"line_number":1326,"context_line":"            federated_dict \u003d {"},{"line_number":1327,"context_line":"                \u0027idp_id\u0027: idp_id,"},{"line_number":1328,"context_line":"                \u0027protocol_id\u0027: protocol_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_425cc37c","line":1325,"range":{"start_line":1325,"start_character":12,"end_line":1325,"end_character":15},"updated":"2016-12-16 19:16:49.000000000","message":"why not add this to the federated_dict?","commit_id":"58a3efc00fb2f8b3d0cd240d91c0209660aac24c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"65c219d4ad241684d3cc1b29e5671d7cd4cb41ca","unresolved":false,"context_lines":[{"line_number":1322,"context_line":"            user_dict \u003d self.shadow_users_api.get_federated_user("},{"line_number":1323,"context_line":"                idp_id, protocol_id, unique_id)"},{"line_number":1324,"context_line":"        except exception.UserNotFound:"},{"line_number":1325,"context_line":"            idp \u003d self.federation_api.get_idp(idp_id)"},{"line_number":1326,"context_line":"            federated_dict \u003d {"},{"line_number":1327,"context_line":"                \u0027idp_id\u0027: idp_id,"},{"line_number":1328,"context_line":"                \u0027protocol_id\u0027: protocol_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_0afd7d6d","line":1325,"range":{"start_line":1325,"start_character":12,"end_line":1325,"end_character":15},"in_reply_to":"1a6eadb0_2ab239e5","updated":"2016-12-16 21:57:45.000000000","message":"then no need to change the interface","commit_id":"58a3efc00fb2f8b3d0cd240d91c0209660aac24c"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"9f8ef9b65194778b6fac97f8bfe7c38734c36cd8","unresolved":false,"context_lines":[{"line_number":1322,"context_line":"            user_dict \u003d self.shadow_users_api.get_federated_user("},{"line_number":1323,"context_line":"                idp_id, protocol_id, unique_id)"},{"line_number":1324,"context_line":"        except exception.UserNotFound:"},{"line_number":1325,"context_line":"            idp \u003d self.federation_api.get_idp(idp_id)"},{"line_number":1326,"context_line":"            federated_dict \u003d {"},{"line_number":1327,"context_line":"                \u0027idp_id\u0027: idp_id,"},{"line_number":1328,"context_line":"                \u0027protocol_id\u0027: protocol_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_a292f7f3","line":1325,"range":{"start_line":1325,"start_character":12,"end_line":1325,"end_character":15},"in_reply_to":"1a6eadb0_425cc37c","updated":"2016-12-16 19:20:28.000000000","message":"Add the idp? You mean like combine into one dictionary?","commit_id":"58a3efc00fb2f8b3d0cd240d91c0209660aac24c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4e4c5cb990dd1bcd14c1a6e3b9af55238db51cbf","unresolved":false,"context_lines":[{"line_number":1322,"context_line":"            user_dict \u003d self.shadow_users_api.get_federated_user("},{"line_number":1323,"context_line":"                idp_id, protocol_id, unique_id)"},{"line_number":1324,"context_line":"        except exception.UserNotFound:"},{"line_number":1325,"context_line":"            idp \u003d self.federation_api.get_idp(idp_id)"},{"line_number":1326,"context_line":"            federated_dict \u003d {"},{"line_number":1327,"context_line":"                \u0027idp_id\u0027: idp_id,"},{"line_number":1328,"context_line":"                \u0027protocol_id\u0027: protocol_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a6eadb0_2ab239e5","line":1325,"range":{"start_line":1325,"start_character":12,"end_line":1325,"end_character":15},"in_reply_to":"1a6eadb0_a292f7f3","updated":"2016-12-16 21:57:02.000000000","message":"i mean...\n\n  federated_dict \u003d {\n                \u0027idp_id\u0027: idp_id,\n                \u0027protocol_id\u0027: protocol_id,\n                \u0027unique_id\u0027: unique_id,\n                \u0027display_name\u0027: display_name\n                \u0027domain_id\u0027: idp[\u0027domain_id\u0027]\n            }","commit_id":"58a3efc00fb2f8b3d0cd240d91c0209660aac24c"}],"keystone/identity/shadow_backends/base.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5061eebe43cfca021ccd36f311140a8385eeec95","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def create_federated_user(self, domain_id, federated_dict):"},{"line_number":28,"context_line":"        \"\"\"Create a new user with the federated identity."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        :param domain_id: The domain ID for the user"},{"line_number":31,"context_line":"        :param dict federated_dict: Reference to the federated user"},{"line_number":32,"context_line":"        :returns dict: Containing the user reference"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5a3905b3_f38e4d26","line":30,"range":{"start_line":30,"start_character":40,"end_line":30,"end_character":52},"updated":"2017-01-19 13:43:19.000000000","message":"of the identity provider, that will be used for the federated user*","commit_id":"7225d45b07e4bb38790517465402ce44129b1d0d"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"4d0387608884dafa790234fadf113be71b58e012","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def create_federated_user(self, domain_id, federated_dict):"},{"line_number":28,"context_line":"        \"\"\"Create a new user with the federated identity."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        :param domain_id: The domain ID for the user"},{"line_number":31,"context_line":"        :param dict federated_dict: Reference to the federated user"},{"line_number":32,"context_line":"        :returns dict: Containing the user reference"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5a3905b3_04cb631f","line":30,"range":{"start_line":30,"start_character":40,"end_line":30,"end_character":52},"in_reply_to":"5a3905b3_f38e4d26","updated":"2017-01-20 05:38:38.000000000","message":"Done","commit_id":"7225d45b07e4bb38790517465402ce44129b1d0d"}]}
