)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9fd3f9a9545e6021a13eef0a7c381d84fc6aad4c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"- Added database migration script"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I2554e25848997ccef9254800546e89fe8a5692bb"},{"line_number":14,"context_line":"Partial-Bug: #1291157"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5aef4532_e2b5177e","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":7},"updated":"2016-03-10 10:16:52.000000000","message":"this seems like a complete fix to me","commit_id":"149f281522ae484fc88b96ba279fa6f6bb271544"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c93b8979c7946074e43c1260f67b2f3a30f30c58","unresolved":false,"context_lines":[{"line_number":7,"context_line":"IdP deletion triggers token invalidation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- Ensure IdP deletion triggers token invalidation using revocation"},{"line_number":10,"context_line":"  lists"},{"line_number":11,"context_line":"- Added database migration script"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Co-Authored-By: Sean Perry \u003csean.perry@hpe.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1af94dfe_de570a56","line":10,"updated":"2016-03-18 19:00:41.000000000","message":"This behavior will only ever be observed for UUID tokens. If we want to fix this for Fernet tokens I think we\u0027ll have to use revocation events.","commit_id":"f6ee76345ce6713eb2bfff46037a4d216c67d615"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"4e073d294cd5bdc1dac3dac25a36259faa246fa9","unresolved":false,"context_lines":[{"line_number":7,"context_line":"IdP deletion triggers token invalidation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- Ensure IdP deletion triggers token invalidation using revocation"},{"line_number":10,"context_line":"  lists"},{"line_number":11,"context_line":"- Added database migration script"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Co-Authored-By: Sean Perry \u003csean.perry@hpe.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1af94dfe_6a70ab72","line":10,"in_reply_to":"1af94dfe_de570a56","updated":"2016-03-18 22:07:48.000000000","message":"Understood.","commit_id":"f6ee76345ce6713eb2bfff46037a4d216c67d615"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c93b8979c7946074e43c1260f67b2f3a30f30c58","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Co-Authored-By: Sean Perry \u003csean.perry@hpe.com\u003e"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I2554e25848997ccef9254800546e89fe8a5692bb"},{"line_number":16,"context_line":"Closes-Bug: #1291157"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1af94dfe_7ed356d5","line":16,"updated":"2016-03-18 19:00:41.000000000","message":"Suggest changing this to Partial-Bug since we still have to approach this with Fernet.","commit_id":"f6ee76345ce6713eb2bfff46037a4d216c67d615"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"4e073d294cd5bdc1dac3dac25a36259faa246fa9","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Co-Authored-By: Sean Perry \u003csean.perry@hpe.com\u003e"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I2554e25848997ccef9254800546e89fe8a5692bb"},{"line_number":16,"context_line":"Closes-Bug: #1291157"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1af94dfe_aa6633b8","line":16,"in_reply_to":"1af94dfe_7ed356d5","updated":"2016-03-18 22:07:48.000000000","message":"Agreed, I will revert it to Partial.","commit_id":"f6ee76345ce6713eb2bfff46037a4d216c67d615"}],"keystone/common/sql/migrate_repo/versions/095_add_idp_id_to_token_column.py":[{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"c9037b8c226c5f0a61ba23e1b95e24d926ff057e","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    token_table \u003d sql.Table(_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":25,"context_line":"    idp_id_column \u003d sql.Column(\u0027idp_id\u0027, sql.String(64), nullable\u003dTrue)"},{"line_number":26,"context_line":"    token_table.create_column(idp_id_column)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_4b4e7f3b","line":25,"range":{"start_line":25,"start_character":70,"end_line":25,"end_character":71},"updated":"2016-03-10 21:24:46.000000000","message":"What about a foreign key constraint to the identity_provider table?","commit_id":"9f280f685063b39af20dc9cf645bf4109d91b651"}],"keystone/common/sql/migrate_repo/versions/096_add_idp_id_to_token_column.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c71679105e5989a8cb187104f4975b6a2f604ad8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"fa0719c6_e3d5e0b9","updated":"2016-03-20 13:06:25.000000000","message":"bump this to 101, we merged the placeholders","commit_id":"f6ee76345ce6713eb2bfff46037a4d216c67d615"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"d0679431958832f0699a0c0fbdfc2b48598438d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3aaa91ec_ab37d3ae","in_reply_to":"fa0719c6_e3d5e0b9","updated":"2016-06-22 22:10:16.000000000","message":"++","commit_id":"f6ee76345ce6713eb2bfff46037a4d216c67d615"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"807b72fb106b3149a9dee7a121d974612107333c","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    sql.Table(\u0027identity_provider\u0027, meta, autoload\u003dTrue)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    idp_id_column \u003d sql.Column(\u0027idp_id\u0027, sql.String(64),"},{"line_number":30,"context_line":"                               sql.ForeignKey(\u0027identity_provider.id\u0027),"},{"line_number":31,"context_line":"                               nullable\u003dTrue)"},{"line_number":32,"context_line":"    token_table.create_column(idp_id_column)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa0719c6_e7e77ee2","line":30,"range":{"start_line":30,"start_character":31,"end_line":30,"end_character":70},"updated":"2016-03-21 18:12:13.000000000","message":"Your loading the table above, but not using it.  And what about cascade deletes?  For example:\nidp_table \u003d sql.Table(\u0027identity_provider\u0027, meta, autoload\u003dTrue)\n\nsql.Column(\u0027idp_id\u0027, sql.String(64),\n           sql.ForeignKey(idp_table.c.id, ondelete\u003d\u0027CASCADE\u0027),\n           nullable\u003dFalse),","commit_id":"f6ee76345ce6713eb2bfff46037a4d216c67d615"}],"keystone/contrib/federation/controllers.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"044251912d57e5d9c827329432a4aaf6be34420b","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @controller.protected()"},{"line_number":120,"context_line":"    def update_identity_provider(self, context, idp_id, identity_provider):"},{"line_number":121,"context_line":"        identity_provider \u003d self._normalize_dict(identity_provider)"},{"line_number":122,"context_line":"        IdentityProvider.check_immutable_params(identity_provider)"},{"line_number":123,"context_line":"        idp_ref \u003d self.federation_api.update_idp(idp_id, identity_provider)"},{"line_number":124,"context_line":"        return IdentityProvider.wrap_member(context, idp_ref)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_7b8e46d1","line":121,"updated":"2015-08-20 14:03:19.000000000","message":"do we need to send a notification for the update case?","commit_id":"0b88db476631781006293546886b04de19a7a41e"}],"keystone/federation/controllers.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9fd3f9a9545e6021a13eef0a7c381d84fc6aad4c","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        identity_provider.setdefault(\u0027enabled\u0027, False)"},{"line_number":99,"context_line":"        idp_ref \u003d self.federation_api.create_idp(idp_id, identity_provider)"},{"line_number":100,"context_line":"        response \u003d IdentityProvider.wrap_member(context, idp_ref)"},{"line_number":101,"context_line":"        notifications.Audit.created(\u0027idp\u0027, idp_ref[\u0027id\u0027], None)"},{"line_number":102,"context_line":"        return wsgi.render_response(body\u003dresponse, status\u003d(\u0027201\u0027, \u0027Created\u0027))"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @controller.filterprotected(\u0027id\u0027, \u0027enabled\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_dd0efee3","line":101,"range":{"start_line":101,"start_character":58,"end_line":101,"end_character":62},"updated":"2016-03-10 10:16:52.000000000","message":"also, i\u0027d feel more comfortable if we sent the initiator information... just call:\n\n  initiator \u003d notifications._get_request_audit_info(context)\n\nthe context is hanging around anyway","commit_id":"149f281522ae484fc88b96ba279fa6f6bb271544"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9fd3f9a9545e6021a13eef0a7c381d84fc6aad4c","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        identity_provider.setdefault(\u0027enabled\u0027, False)"},{"line_number":99,"context_line":"        idp_ref \u003d self.federation_api.create_idp(idp_id, identity_provider)"},{"line_number":100,"context_line":"        response \u003d IdentityProvider.wrap_member(context, idp_ref)"},{"line_number":101,"context_line":"        notifications.Audit.created(\u0027idp\u0027, idp_ref[\u0027id\u0027], None)"},{"line_number":102,"context_line":"        return wsgi.render_response(body\u003dresponse, status\u003d(\u0027201\u0027, \u0027Created\u0027))"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @controller.filterprotected(\u0027id\u0027, \u0027enabled\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_025da346","line":101,"range":{"start_line":101,"start_character":8,"end_line":101,"end_character":63},"updated":"2016-03-10 10:16:52.000000000","message":"i don\u0027t believe we need a notification on create for handling revoked tokens, but it is probably a good thing to add anyway","commit_id":"149f281522ae484fc88b96ba279fa6f6bb271544"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"cf2aa50ee8842ae67e0276749a639dfdf4696298","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        identity_provider.setdefault(\u0027enabled\u0027, False)"},{"line_number":99,"context_line":"        idp_ref \u003d self.federation_api.create_idp(idp_id, identity_provider)"},{"line_number":100,"context_line":"        response \u003d IdentityProvider.wrap_member(context, idp_ref)"},{"line_number":101,"context_line":"        notifications.Audit.created(\u0027idp\u0027, idp_ref[\u0027id\u0027], None)"},{"line_number":102,"context_line":"        return wsgi.render_response(body\u003dresponse, status\u003d(\u0027201\u0027, \u0027Created\u0027))"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @controller.filterprotected(\u0027id\u0027, \u0027enabled\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_b575ef32","line":101,"range":{"start_line":101,"start_character":8,"end_line":101,"end_character":63},"in_reply_to":"5aef4532_025da346","updated":"2016-03-10 17:51:11.000000000","message":"It seemed odd to only have updated and deleted.","commit_id":"149f281522ae484fc88b96ba279fa6f6bb271544"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"cf2aa50ee8842ae67e0276749a639dfdf4696298","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        identity_provider.setdefault(\u0027enabled\u0027, False)"},{"line_number":99,"context_line":"        idp_ref \u003d self.federation_api.create_idp(idp_id, identity_provider)"},{"line_number":100,"context_line":"        response \u003d IdentityProvider.wrap_member(context, idp_ref)"},{"line_number":101,"context_line":"        notifications.Audit.created(\u0027idp\u0027, idp_ref[\u0027id\u0027], None)"},{"line_number":102,"context_line":"        return wsgi.render_response(body\u003dresponse, status\u003d(\u0027201\u0027, \u0027Created\u0027))"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @controller.filterprotected(\u0027id\u0027, \u0027enabled\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_5593cb5a","line":101,"range":{"start_line":101,"start_character":58,"end_line":101,"end_character":62},"in_reply_to":"5aef4532_dd0efee3","updated":"2016-03-10 17:51:11.000000000","message":"Thank you for that. I was going to ask about it.","commit_id":"149f281522ae484fc88b96ba279fa6f6bb271544"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"d0679431958832f0699a0c0fbdfc2b48598438d7","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        identity_provider.setdefault(\u0027enabled\u0027, False)"},{"line_number":99,"context_line":"        idp_ref \u003d self.federation_api.create_idp(idp_id, identity_provider)"},{"line_number":100,"context_line":"        response \u003d IdentityProvider.wrap_member(context, idp_ref)"},{"line_number":101,"context_line":"        initiator \u003d notifications._get_request_audit_info(context)"},{"line_number":102,"context_line":"        notifications.Audit.created(\u0027idp\u0027, idp_ref[\u0027id\u0027], initiator)"},{"line_number":103,"context_line":"        return wsgi.render_response(body\u003dresponse, status\u003d(\u0027201\u0027, \u0027Created\u0027))"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @controller.filterprotected(\u0027id\u0027, \u0027enabled\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_4bff4faa","line":102,"range":{"start_line":101,"start_character":8,"end_line":102,"end_character":68},"updated":"2016-06-22 22:10:16.000000000","message":"Is this unrelated ? I don\u0027t have a clue to this and revoking tokens upon IPD deletion.","commit_id":"f6ee76345ce6713eb2bfff46037a4d216c67d615"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"2cc144c3d9d6afb9ee5dcc5bd36585326c86f14c","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        identity_provider.setdefault(\u0027enabled\u0027, False)"},{"line_number":99,"context_line":"        idp_ref \u003d self.federation_api.create_idp(idp_id, identity_provider)"},{"line_number":100,"context_line":"        response \u003d IdentityProvider.wrap_member(context, idp_ref)"},{"line_number":101,"context_line":"        initiator \u003d notifications._get_request_audit_info(context)"},{"line_number":102,"context_line":"        notifications.Audit.created(\u0027idp\u0027, idp_ref[\u0027id\u0027], initiator)"},{"line_number":103,"context_line":"        return wsgi.render_response(body\u003dresponse, status\u003d(\u0027201\u0027, \u0027Created\u0027))"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @controller.filterprotected(\u0027id\u0027, \u0027enabled\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_70945342","line":102,"range":{"start_line":101,"start_character":8,"end_line":102,"end_character":68},"in_reply_to":"3aaa91ec_4bff4faa","updated":"2016-07-06 19:48:53.000000000","message":"In a previous version of the review it was decided that adding these for consistency was the right thing to do.","commit_id":"f6ee76345ce6713eb2bfff46037a4d216c67d615"}],"keystone/tests/unit/test_v3_federation.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c93b8979c7946074e43c1260f67b2f3a30f30c58","unresolved":false,"context_lines":[{"line_number":2521,"context_line":"        resp \u003d self.get(\u0027/auth/projects\u0027, token\u003dunscoped_token)"},{"line_number":2522,"context_line":"        projects \u003d resp.result[\u0027projects\u0027]"},{"line_number":2523,"context_line":"        random_project \u003d random.randint(0, len(projects)) - 1"},{"line_number":2524,"context_line":"        project \u003d projects[random_project]"},{"line_number":2525,"context_line":""},{"line_number":2526,"context_line":"        v3_scope_request \u003d self._scope_request(unscoped_token,"},{"line_number":2527,"context_line":"                                               \u0027project\u0027, project[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"1af94dfe_3ef42e59","side":"PARENT","line":2524,"updated":"2016-03-18 19:00:41.000000000","message":"Can we do the same test above but down here to show that it\u0027s broken for Fernet as well? Or inherit the FederatedTokenTests class and run it that way.","commit_id":"862068d0ef87d9e68f37dfcdf048c4f42f7b25b2"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"807b72fb106b3149a9dee7a121d974612107333c","unresolved":false,"context_lines":[{"line_number":2521,"context_line":"        resp \u003d self.get(\u0027/auth/projects\u0027, token\u003dunscoped_token)"},{"line_number":2522,"context_line":"        projects \u003d resp.result[\u0027projects\u0027]"},{"line_number":2523,"context_line":"        random_project \u003d random.randint(0, len(projects)) - 1"},{"line_number":2524,"context_line":"        project \u003d projects[random_project]"},{"line_number":2525,"context_line":""},{"line_number":2526,"context_line":"        v3_scope_request \u003d self._scope_request(unscoped_token,"},{"line_number":2527,"context_line":"                                               \u0027project\u0027, project[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa0719c6_a77906ff","side":"PARENT","line":2524,"in_reply_to":"1af94dfe_3ef42e59","updated":"2016-03-21 18:12:13.000000000","message":"++","commit_id":"862068d0ef87d9e68f37dfcdf048c4f42f7b25b2"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c93b8979c7946074e43c1260f67b2f3a30f30c58","unresolved":false,"context_lines":[{"line_number":2479,"context_line":"            self.assertTrue(self.token_provider_api.validate_token(token))"},{"line_number":2480,"context_line":""},{"line_number":2481,"context_line":"        self.token_provider_api._persistence.delete_tokens(user_id\u003dNone,"},{"line_number":2482,"context_line":"                                                           idp_id\u003dself.IDP)"},{"line_number":2483,"context_line":""},{"line_number":2484,"context_line":"        for token in self.tokens.values():"},{"line_number":2485,"context_line":"            self.assertRaises("}],"source_content_type":"text/x-python","patch_set":6,"id":"1af94dfe_5e92da4c","line":2482,"updated":"2016-03-18 19:00:41.000000000","message":"I don\u0027t think this test will work against the Fernet provider since it is relying on the functionality of the _persistence backend.","commit_id":"f6ee76345ce6713eb2bfff46037a4d216c67d615"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"4e073d294cd5bdc1dac3dac25a36259faa246fa9","unresolved":false,"context_lines":[{"line_number":2479,"context_line":"            self.assertTrue(self.token_provider_api.validate_token(token))"},{"line_number":2480,"context_line":""},{"line_number":2481,"context_line":"        self.token_provider_api._persistence.delete_tokens(user_id\u003dNone,"},{"line_number":2482,"context_line":"                                                           idp_id\u003dself.IDP)"},{"line_number":2483,"context_line":""},{"line_number":2484,"context_line":"        for token in self.tokens.values():"},{"line_number":2485,"context_line":"            self.assertRaises("}],"source_content_type":"text/x-python","patch_set":6,"id":"1af94dfe_4a25ef59","line":2482,"in_reply_to":"1af94dfe_5e92da4c","updated":"2016-03-18 22:07:48.000000000","message":"Ok, will make it UUID specific.","commit_id":"f6ee76345ce6713eb2bfff46037a4d216c67d615"}],"keystone/tests/unit/token/test_backends.py":[{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"c9037b8c226c5f0a61ba23e1b95e24d926ff057e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                \u0027user\u0027: {\u0027id\u0027: \u0027testuserid\u0027},"},{"line_number":59,"context_line":"                \u0027token_data\u0027: {\u0027access\u0027: {\u0027token\u0027: {"},{"line_number":60,"context_line":"                    \u0027audit_ids\u0027: [uuid.uuid4().hex]}}},"},{"line_number":61,"context_line":"                \u0027idp_id\u0027: None, }"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        data_ref \u003d self.token_provider_api._persistence.create_token(token_id,"},{"line_number":64,"context_line":"                                                                     data)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_cbd56f1c","line":61,"range":{"start_line":61,"start_character":0,"end_line":61,"end_character":16},"updated":"2016-03-10 21:24:46.000000000","message":"Shouldn\u0027t there be some tests where idp_id is not None?","commit_id":"9f280f685063b39af20dc9cf645bf4109d91b651"}],"keystone/token/persistence/backends/kvs.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"044251912d57e5d9c827329432a4aaf6be34420b","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        try:"},{"line_number":107,"context_line":"            data_copy[\u0027idp_id\u0027] \u003d (data_copy[\u0027user\u0027][\u0027OS-FEDERATION\u0027]"},{"line_number":108,"context_line":"                                            [\u0027identity_provider\u0027][\u0027id\u0027])"},{"line_number":109,"context_line":"        except KeyError:"},{"line_number":110,"context_line":"            data_copy[\u0027idp_id\u0027] \u003d None"},{"line_number":111,"context_line":"        # NOTE(morganfainberg): for ease of manipulating the data without"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_9e154841","line":108,"updated":"2015-08-20 14:03:19.000000000","message":"we could simplify this to be something like http://cdn.pasteraw.com/fqcvkzvjb7hv4ojbajlukq2hyq0rea8","commit_id":"0b88db476631781006293546886b04de19a7a41e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"044251912d57e5d9c827329432a4aaf6be34420b","unresolved":false,"context_lines":[{"line_number":308,"context_line":"    def _token_match_idp(self, token_ref, idp_id):"},{"line_number":309,"context_line":"        try:"},{"line_number":310,"context_line":"            idp \u003d token_ref[\u0027user\u0027][\u0027OS-FEDERATION\u0027][\u0027identity_provider\u0027]"},{"line_number":311,"context_line":"            return idp.get(\u0027id\u0027) \u003d\u003d idp_id"},{"line_number":312,"context_line":"        except KeyError:"},{"line_number":313,"context_line":"            return False"},{"line_number":314,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_1e285885","line":311,"updated":"2015-08-20 14:03:19.000000000","message":"same comment here","commit_id":"0b88db476631781006293546886b04de19a7a41e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9fd3f9a9545e6021a13eef0a7c381d84fc6aad4c","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        except KeyError:"},{"line_number":318,"context_line":"            return False"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def _token_match_idp(self, token_ref, idp_id):"},{"line_number":321,"context_line":"        try:"},{"line_number":322,"context_line":"            idp \u003d token_ref[\u0027user\u0027][\u0027OS-FEDERATION\u0027][\u0027identity_provider\u0027]"},{"line_number":323,"context_line":"            return idp.gets(\u0027id\u0027) \u003d\u003d idp_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_6dfaa676","line":320,"range":{"start_line":320,"start_character":8,"end_line":320,"end_character":24},"updated":"2016-03-10 10:16:52.000000000","message":"token_contains_idp?","commit_id":"149f281522ae484fc88b96ba279fa6f6bb271544"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"cf2aa50ee8842ae67e0276749a639dfdf4696298","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        except KeyError:"},{"line_number":318,"context_line":"            return False"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def _token_match_idp(self, token_ref, idp_id):"},{"line_number":321,"context_line":"        try:"},{"line_number":322,"context_line":"            idp \u003d token_ref[\u0027user\u0027][\u0027OS-FEDERATION\u0027][\u0027identity_provider\u0027]"},{"line_number":323,"context_line":"            return idp.gets(\u0027id\u0027) \u003d\u003d idp_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_553d8b29","line":320,"range":{"start_line":320,"start_character":8,"end_line":320,"end_character":24},"in_reply_to":"5aef4532_6dfaa676","updated":"2016-03-10 17:51:11.000000000","message":"The author was matching the style of the other names.","commit_id":"149f281522ae484fc88b96ba279fa6f6bb271544"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9fd3f9a9545e6021a13eef0a7c381d84fc6aad4c","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    def _token_match_idp(self, token_ref, idp_id):"},{"line_number":321,"context_line":"        try:"},{"line_number":322,"context_line":"            idp \u003d token_ref[\u0027user\u0027][\u0027OS-FEDERATION\u0027][\u0027identity_provider\u0027]"},{"line_number":323,"context_line":"            return idp.gets(\u0027id\u0027) \u003d\u003d idp_id"},{"line_number":324,"context_line":"        except KeyError:"},{"line_number":325,"context_line":"            return False"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_3d18c274","line":323,"range":{"start_line":323,"start_character":19,"end_line":323,"end_character":33},"updated":"2016-03-10 10:16:52.000000000","message":"nit: idp[\u0027id\u0027] in this case, if it had the other stuff, it\u0027ll have ID.\n\nalso you catch the keyError anyway","commit_id":"149f281522ae484fc88b96ba279fa6f6bb271544"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"cf2aa50ee8842ae67e0276749a639dfdf4696298","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    def _token_match_idp(self, token_ref, idp_id):"},{"line_number":321,"context_line":"        try:"},{"line_number":322,"context_line":"            idp \u003d token_ref[\u0027user\u0027][\u0027OS-FEDERATION\u0027][\u0027identity_provider\u0027]"},{"line_number":323,"context_line":"            return idp.gets(\u0027id\u0027) \u003d\u003d idp_id"},{"line_number":324,"context_line":"        except KeyError:"},{"line_number":325,"context_line":"            return False"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_f52db7fe","line":323,"range":{"start_line":323,"start_character":19,"end_line":323,"end_character":33},"in_reply_to":"5aef4532_3d18c274","updated":"2016-03-10 17:51:11.000000000","message":"I (and the original author) was mimicing the style in the function just above it.","commit_id":"149f281522ae484fc88b96ba279fa6f6bb271544"}],"keystone/token/persistence/backends/sql.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"044251912d57e5d9c827329432a4aaf6be34420b","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        try:"},{"line_number":106,"context_line":"            data_copy[\u0027idp_id\u0027] \u003d (data_copy[\u0027user\u0027][\u0027OS-FEDERATION\u0027]"},{"line_number":107,"context_line":"                                            [\u0027identity_provider\u0027][\u0027id\u0027])"},{"line_number":108,"context_line":"        except KeyError:"},{"line_number":109,"context_line":"            data_copy[\u0027idp_id\u0027] \u003d None"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        token_ref \u003d TokenModel.from_dict(data_copy)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_be392cd9","line":108,"updated":"2015-08-20 14:03:19.000000000","message":"and here","commit_id":"0b88db476631781006293546886b04de19a7a41e"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"c9037b8c226c5f0a61ba23e1b95e24d926ff057e","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    user_id \u003d sql.Column(sql.String(64))"},{"line_number":41,"context_line":"    trust_id \u003d sql.Column(sql.String(64))"},{"line_number":42,"context_line":"    idp_id \u003d sql.Column(sql.String(64))"},{"line_number":43,"context_line":"    __table_args__ \u003d ("},{"line_number":44,"context_line":"        sql.Index(\u0027ix_token_expires\u0027, \u0027expires\u0027),"},{"line_number":45,"context_line":"        sql.Index(\u0027ix_token_expires_valid\u0027, \u0027expires\u0027, \u0027valid\u0027),"},{"line_number":46,"context_line":"        sql.Index(\u0027ix_token_user_id\u0027, \u0027user_id\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_cb8a8f1a","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":18},"updated":"2016-03-10 21:24:46.000000000","message":"idp_id foreign key constraint","commit_id":"9f280f685063b39af20dc9cf645bf4109d91b651"}],"keystone/token/persistence/core.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c93b8979c7946074e43c1260f67b2f3a30f30c58","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    @abc.abstractmethod"},{"line_number":280,"context_line":"    def delete_tokens(self, user_id, tenant_id\u003dNone, trust_id\u003dNone,"},{"line_number":281,"context_line":"                      consumer_id\u003dNone, idp_id\u003dNone):"},{"line_number":282,"context_line":"        \"\"\"Deletes tokens by user."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"        If the tenant_id is not None, only delete the tokens by user id under"}],"source_content_type":"text/x-python","patch_set":6,"id":"1af94dfe_9e0bc27c","line":281,"updated":"2016-03-18 19:00:41.000000000","message":"This isn\u0027t used in the method anywhere - does it need to be passed to self._list_tokens()?","commit_id":"f6ee76345ce6713eb2bfff46037a4d216c67d615"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"4e073d294cd5bdc1dac3dac25a36259faa246fa9","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    @abc.abstractmethod"},{"line_number":280,"context_line":"    def delete_tokens(self, user_id, tenant_id\u003dNone, trust_id\u003dNone,"},{"line_number":281,"context_line":"                      consumer_id\u003dNone, idp_id\u003dNone):"},{"line_number":282,"context_line":"        \"\"\"Deletes tokens by user."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"        If the tenant_id is not None, only delete the tokens by user id under"}],"source_content_type":"text/x-python","patch_set":6,"id":"1af94dfe_aac2b350","line":281,"in_reply_to":"1af94dfe_9e0bc27c","updated":"2016-03-18 22:07:48.000000000","message":"I think the original author did it for consistency. Agreed it is not needed currently.","commit_id":"f6ee76345ce6713eb2bfff46037a4d216c67d615"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"d0679431958832f0699a0c0fbdfc2b48598438d7","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    @abc.abstractmethod"},{"line_number":280,"context_line":"    def delete_tokens(self, user_id, tenant_id\u003dNone, trust_id\u003dNone,"},{"line_number":281,"context_line":"                      consumer_id\u003dNone, idp_id\u003dNone):"},{"line_number":282,"context_line":"        \"\"\"Deletes tokens by user."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"        If the tenant_id is not None, only delete the tokens by user id under"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_abd35337","line":281,"in_reply_to":"1af94dfe_aac2b350","updated":"2016-06-22 22:10:16.000000000","message":"++","commit_id":"f6ee76345ce6713eb2bfff46037a4d216c67d615"}]}
