)]}'
{"keystone/common/sql/core.py":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"062797b98d00581e5760a646d12020c07676e021","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    @classmethod"},{"line_number":125,"context_line":"    def from_dict(cls, d):"},{"line_number":126,"context_line":"        new_d \u003d d.copy()"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        new_d[\u0027extra\u0027] \u003d {k: new_d.pop(k) for k in six.iterkeys(d)"},{"line_number":129,"context_line":"                          if k not in cls.attributes and k !\u003d \u0027extra\u0027}"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_f7cd1787","side":"PARENT","line":127,"updated":"2015-08-10 06:51:35.000000000","message":"unrelated change? \nRemove this extra line.","commit_id":"74575a66f1113ac0452da9982b345dec18ec0f32"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"062797b98d00581e5760a646d12020c07676e021","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        new_d[\u0027extra\u0027] \u003d {k: new_d.pop(k) for k in six.iterkeys(d)"},{"line_number":129,"context_line":"                          if k not in cls.attributes and k !\u003d \u0027extra\u0027}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        return cls(**new_d)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def to_dict(self, include_extra_dict\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_17cbe373","side":"PARENT","line":130,"updated":"2015-08-10 06:51:35.000000000","message":"unrelated change? \nRemove this extra line.","commit_id":"74575a66f1113ac0452da9982b345dec18ec0f32"}],"keystone/contrib/federation/backends/sql.py":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"062797b98d00581e5760a646d12020c07676e021","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        with sql.transaction() as session:"},{"line_number":174,"context_line":"            self._delete_assigned_protocols(session, idp_id)"},{"line_number":175,"context_line":"            self._delete_associated_tokens(session, idp_id)"},{"line_number":176,"context_line":"            notifications.Audit.deleted(\u0027idp\u0027, idp_id, None)"},{"line_number":177,"context_line":"            idp_ref \u003d self._get_idp(session, idp_id)"},{"line_number":178,"context_line":"            session.delete(idp_ref)"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_57716bdf","line":176,"updated":"2015-08-10 06:51:35.000000000","message":"I think all the notifications should be emitted in the controller (contrib/federation/controllers.py) in the corresponding methods. \nThis file is rather for backend-like operations only.\n\nSee how it\u0027s done in keystone/resource/core.py | grep delete_project","commit_id":"44c80fc9e33c809114ace97e86bada6bd1d891a4"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"062797b98d00581e5760a646d12020c07676e021","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        query \u003d query.filter_by(idp_id\u003didp_id)"},{"line_number":274,"context_line":"        query.delete()"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def _delete_associated_tokens(self, session, idp_id):"},{"line_number":277,"context_line":"        query \u003d session.query(token_sql.TokenModel)"},{"line_number":278,"context_line":"        query \u003d query.filter_by(idp_id\u003didp_id)"},{"line_number":279,"context_line":"        token_manager \u003d persistence.PersistenceManager()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_d7549b22","line":276,"updated":"2015-08-10 06:51:35.000000000","message":"this should also go one level up (to controllers.py)","commit_id":"44c80fc9e33c809114ace97e86bada6bd1d891a4"}],"keystone/contrib/federation/controllers.py":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"2a7b431160de961c577356d32631b16b4d9c60a9","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            # an idp is disabled or remote ids were excluded."},{"line_number":127,"context_line":"            if (not identity_provider[\u0027enabled\u0027] or"},{"line_number":128,"context_line":"                    frozenset(identity_provider[\u0027remote_ids\u0027]) \u003c"},{"line_number":129,"context_line":"                    frozenset(idp_ref[\u0027remote_ids\u0027])):"},{"line_number":130,"context_line":"                notifications.Audit.disabled(\u0027idp\u0027, idp_id, None)"},{"line_number":131,"context_line":"        except KeyError:"},{"line_number":132,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_806efa94","line":129,"updated":"2015-08-21 16:21:15.000000000","message":"i think this piece of code can be tricky and should be evaluated very carefully.\n\nold \u003d frozenset([\u0027a\u0027, \u0027b\u0027, \u0027cc\u0027])\nnew \u003d frozenset([\u0027a\u0027, \u0027b\u0027, \u0027c\u0027])\n\n\nif new \u003c old:\n    print \"True1\"\nelse:\n    print \"False\"\n\nthis code will print \"False\" whereas it should print True (revocation event should be triggered).\n\nI might be wrong but how about this: \n\nif new \u003c old:\n    print \"True1\"\nelif new \u003e old and not new.issuperset(old):\n    print \"True2\"\nelif old.difference(new):\n    print \"True3\"\nelse:\n    print \"False\"","commit_id":"1632f5290511b569237d421e656b201c3c20140e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c9d7751f5a620945f21caecc17581faa63230433","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            # an idp is disabled or remote ids were excluded."},{"line_number":127,"context_line":"            if (not identity_provider[\u0027enabled\u0027] or"},{"line_number":128,"context_line":"                    frozenset(identity_provider[\u0027remote_ids\u0027]) \u003c"},{"line_number":129,"context_line":"                    frozenset(idp_ref[\u0027remote_ids\u0027])):"},{"line_number":130,"context_line":"                notifications.Audit.disabled(\u0027idp\u0027, idp_id, None)"},{"line_number":131,"context_line":"        except KeyError:"},{"line_number":132,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_64040115","line":129,"in_reply_to":"fa1b9901_806efa94","updated":"2015-08-27 04:16:55.000000000","message":"I think is the wrong implementation. Reading the code I have no idea what it is trying to do and why.","commit_id":"1632f5290511b569237d421e656b201c3c20140e"},{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"0604cbdfdf2339ab00218ca6e38ef07ba8031a7b","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                    frozenset(identity_provider[\u0027remote_ids\u0027]) \u003c"},{"line_number":129,"context_line":"                    frozenset(idp_ref[\u0027remote_ids\u0027])):"},{"line_number":130,"context_line":"                notifications.Audit.disabled(\u0027idp\u0027, idp_id, None)"},{"line_number":131,"context_line":"        except KeyError:"},{"line_number":132,"context_line":"            pass"},{"line_number":133,"context_line":"        idp_ref \u003d self.federation_api.update_idp(idp_id, identity_provider)"},{"line_number":134,"context_line":"        return IdentityProvider.wrap_member(context, idp_ref)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_fbe74b10","line":131,"updated":"2015-08-27 06:43:53.000000000","message":"+1 Lance","commit_id":"1632f5290511b569237d421e656b201c3c20140e"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"2a7b431160de961c577356d32631b16b4d9c60a9","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                    frozenset(identity_provider[\u0027remote_ids\u0027]) \u003c"},{"line_number":129,"context_line":"                    frozenset(idp_ref[\u0027remote_ids\u0027])):"},{"line_number":130,"context_line":"                notifications.Audit.disabled(\u0027idp\u0027, idp_id, None)"},{"line_number":131,"context_line":"        except KeyError:"},{"line_number":132,"context_line":"            pass"},{"line_number":133,"context_line":"        idp_ref \u003d self.federation_api.update_idp(idp_id, identity_provider)"},{"line_number":134,"context_line":"        return IdentityProvider.wrap_member(context, idp_ref)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_c84c1ea0","line":131,"updated":"2015-08-21 16:21:15.000000000","message":"when do you expect a KeyError could be raised? Missing attributes like \u0027enabled\u0027 or remote_ids ?","commit_id":"1632f5290511b569237d421e656b201c3c20140e"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"85ecf95dbe809437d0b4fb46ed01729fa20ad008","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                    frozenset(identity_provider[\u0027remote_ids\u0027]) \u003c"},{"line_number":129,"context_line":"                    frozenset(idp_ref[\u0027remote_ids\u0027])):"},{"line_number":130,"context_line":"                notifications.Audit.disabled(\u0027idp\u0027, idp_id, None)"},{"line_number":131,"context_line":"        except KeyError:"},{"line_number":132,"context_line":"            pass"},{"line_number":133,"context_line":"        idp_ref \u003d self.federation_api.update_idp(idp_id, identity_provider)"},{"line_number":134,"context_line":"        return IdentityProvider.wrap_member(context, idp_ref)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_9fdef20f","line":131,"in_reply_to":"da20952f_0531950b","updated":"2015-08-28 13:50:53.000000000","message":"I think so, Lance. Conclusion: IMHO try/except KeyError is redundant here.","commit_id":"1632f5290511b569237d421e656b201c3c20140e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c81f715c698a47b5558ccf01e5a73dc848c9d166","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                    frozenset(identity_provider[\u0027remote_ids\u0027]) \u003c"},{"line_number":129,"context_line":"                    frozenset(idp_ref[\u0027remote_ids\u0027])):"},{"line_number":130,"context_line":"                notifications.Audit.disabled(\u0027idp\u0027, idp_id, None)"},{"line_number":131,"context_line":"        except KeyError:"},{"line_number":132,"context_line":"            pass"},{"line_number":133,"context_line":"        idp_ref \u003d self.federation_api.update_idp(idp_id, identity_provider)"},{"line_number":134,"context_line":"        return IdentityProvider.wrap_member(context, idp_ref)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_0531950b","line":131,"in_reply_to":"fa1b9901_c84c1ea0","updated":"2015-08-26 18:55:44.000000000","message":"if a KeyError is raised here, then something was passed in that isn\u0027t in the idp_ref, which means it would probably fall under the validation error umbrella? \n\nRegardless, I don\u0027t think we should just except a KeyError and pass without doing something about it, or informing the user.","commit_id":"1632f5290511b569237d421e656b201c3c20140e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c9d7751f5a620945f21caecc17581faa63230433","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                    frozenset(idp_ref[\u0027remote_ids\u0027])):"},{"line_number":130,"context_line":"                notifications.Audit.disabled(\u0027idp\u0027, idp_id, None)"},{"line_number":131,"context_line":"        except KeyError:"},{"line_number":132,"context_line":"            pass"},{"line_number":133,"context_line":"        idp_ref \u003d self.federation_api.update_idp(idp_id, identity_provider)"},{"line_number":134,"context_line":"        return IdentityProvider.wrap_member(context, idp_ref)"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_bf26a414","line":132,"updated":"2015-08-27 04:16:55.000000000","message":"There is no tests that shows how a KeyError can happen.","commit_id":"1632f5290511b569237d421e656b201c3c20140e"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"85ecf95dbe809437d0b4fb46ed01729fa20ad008","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                    frozenset(idp_ref[\u0027remote_ids\u0027])):"},{"line_number":130,"context_line":"                notifications.Audit.disabled(\u0027idp\u0027, idp_id, None)"},{"line_number":131,"context_line":"        except KeyError:"},{"line_number":132,"context_line":"            pass"},{"line_number":133,"context_line":"        idp_ref \u003d self.federation_api.update_idp(idp_id, identity_provider)"},{"line_number":134,"context_line":"        return IdentityProvider.wrap_member(context, idp_ref)"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_7febdeb0","line":132,"in_reply_to":"da20952f_bf26a414","updated":"2015-08-28 13:50:53.000000000","message":"i think we are going to remove this try/except clause.","commit_id":"1632f5290511b569237d421e656b201c3c20140e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"df137758f618a838f816eb67ba23c76306a331b6","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            if remote_ids \u003c remote_ids_ref:"},{"line_number":160,"context_line":"                return True"},{"line_number":161,"context_line":"            if (remote_ids \u003e remote_ids_ref and"},{"line_number":162,"context_line":"               remote_ids.issuperset(remote_ids_ref) is False):"},{"line_number":163,"context_line":"                return True"},{"line_number":164,"context_line":"            if remote_ids_ref.difference(remote_ids):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_90a63c52","line":161,"updated":"2015-09-01 19:57:39.000000000","message":"It doesn\u0027t look like anything from here down is actually tested in this function. Can\u0027t all of this just be replaced with set.difference()?\n\nWhen I did this: http://paste.openstack.org/show/438523/, all of the federation tests still passed.","commit_id":"bede09e34cebca0efee243513e9db508d1ba93c3"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"a16b657fb739a1cc955e20ea1ec89e000ffd69e4","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            if remote_ids \u003c remote_ids_ref:"},{"line_number":160,"context_line":"                return True"},{"line_number":161,"context_line":"            if (remote_ids \u003e remote_ids_ref and"},{"line_number":162,"context_line":"               remote_ids.issuperset(remote_ids_ref) is False):"},{"line_number":163,"context_line":"                return True"},{"line_number":164,"context_line":"            if remote_ids_ref.difference(remote_ids):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_7859eb8d","line":161,"in_reply_to":"da20952f_90a63c52","updated":"2015-09-02 12:19:48.000000000","message":"i pushed new change that increases the coverage however i need to figure out how to check whether notifications were emited and revocation events added.","commit_id":"bede09e34cebca0efee243513e9db508d1ba93c3"}],"keystone/contrib/revoke/migrate_repo/versions/003_add_idp_id_to_revoke_table.py":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"2a7b431160de961c577356d32631b16b4d9c60a9","unresolved":false,"context_lines":[{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# \t\thttp://www.apache.org/licenses/LICENSE-2.0"},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"# Unless required by applicable law or agreed to in writing, software"},{"line_number":8,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_880aa677","line":5,"updated":"2015-08-21 16:21:15.000000000","message":"nit: remove tabs","commit_id":"1632f5290511b569237d421e656b201c3c20140e"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"85ecf95dbe809437d0b4fb46ed01729fa20ad008","unresolved":false,"context_lines":[{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# \t\thttp://www.apache.org/licenses/LICENSE-2.0"},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"# Unless required by applicable law or agreed to in writing, software"},{"line_number":8,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_7a2c4302","line":5,"in_reply_to":"fa1b9901_880aa677","updated":"2015-08-28 13:50:53.000000000","message":"Done","commit_id":"1632f5290511b569237d421e656b201c3c20140e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c9d7751f5a620945f21caecc17581faa63230433","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import sqlalchemy as sql"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"_TABLE_NAME \u003d \u0027revocation_event\u0027"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_44269dbb","line":14,"updated":"2015-08-27 04:16:55.000000000","message":"Add newline","commit_id":"1632f5290511b569237d421e656b201c3c20140e"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"85ecf95dbe809437d0b4fb46ed01729fa20ad008","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import sqlalchemy as sql"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"_TABLE_NAME \u003d \u0027revocation_event\u0027"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_9a2fd7f5","line":14,"in_reply_to":"da20952f_44269dbb","updated":"2015-08-28 13:50:53.000000000","message":"Done","commit_id":"1632f5290511b569237d421e656b201c3c20140e"},{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"0604cbdfdf2339ab00218ca6e38ef07ba8031a7b","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import sqlalchemy as sql"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"_TABLE_NAME \u003d \u0027revocation_event\u0027"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_dbe4c73c","line":14,"in_reply_to":"da20952f_44269dbb","updated":"2015-08-27 06:43:53.000000000","message":"it\u0027s need to add newline ? why ?","commit_id":"1632f5290511b569237d421e656b201c3c20140e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"358ab2382c2e5f8ff81f3bbb2cacad8b53d8d225","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import sqlalchemy as sql"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"_TABLE_NAME \u003d \u0027revocation_event\u0027"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_2ccfb480","line":14,"in_reply_to":"da20952f_dbe4c73c","updated":"2015-08-27 13:42:57.000000000","message":"there are two blank lines after the project import section http://docs.openstack.org/developer/hacking/#import-order-template","commit_id":"1632f5290511b569237d421e656b201c3c20140e"}],"keystone/contrib/revoke/model.py":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"062797b98d00581e5760a646d12020c07676e021","unresolved":false,"context_lines":[{"line_number":374,"context_line":"        token_values[\u0027consumer_id\u0027] \u003d oauth1[\u0027consumer_id\u0027]"},{"line_number":375,"context_line":"        token_values[\u0027access_token_id\u0027] \u003d oauth1[\u0027access_token_id\u0027]"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    token_values[\u0027idp_id\u0027] \u003d token_data.get(\u0027idp_id\u0027, None)"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"    return token_values"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_97e133d3","line":377,"updated":"2015-08-10 06:51:35.000000000","message":"None is the default value if \u0027idp_id\u0027 does not exist, so no need to put it explicitely as a default value.","commit_id":"44c80fc9e33c809114ace97e86bada6bd1d891a4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c81f715c698a47b5558ccf01e5a73dc848c9d166","unresolved":false,"context_lines":[{"line_number":372,"context_line":""},{"line_number":373,"context_line":"    try:"},{"line_number":374,"context_line":"        token_values[\u0027idp_id\u0027] \u003d (token_data[\u0027user\u0027][\u0027OS-FEDERATION\u0027]"},{"line_number":375,"context_line":"                                            [\u0027identity_provider\u0027][\u0027id\u0027])"},{"line_number":376,"context_line":"    except KeyError:"},{"line_number":377,"context_line":"        token_values[\u0027idp_id\u0027] \u003d None"},{"line_number":378,"context_line":"    return token_values"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_585214df","line":375,"updated":"2015-08-26 18:55:44.000000000","message":"can we check if the key is in the token_data dict and then populate it into token_values, rather than excepting KeyErrors?","commit_id":"1632f5290511b569237d421e656b201c3c20140e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0ef4fa7df55e7df5da6ef5b79cb961bc6f4f4a8c","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"# Additional arguments for creating a RevokeEvent"},{"line_number":34,"context_line":"_EVENT_ARGS \u003d [\u0027issued_before\u0027, \u0027revoked_at\u0027, \u0027idp_id\u0027]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"# Names of attributes in the RevocationEvent, including \"virtual\" attributes."},{"line_number":37,"context_line":"# Virtual attributes are those added based on other values."}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_da309c58","line":34,"updated":"2015-09-06 05:44:07.000000000","message":"this seems out of place here, like it should be in _NAMES?","commit_id":"f0e65ac13cb00f2127edfe62f4cb568df2375661"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"c40f3ef7c97331b980c4ce1133ac5221151ed7cd","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"# Additional arguments for creating a RevokeEvent"},{"line_number":34,"context_line":"_EVENT_ARGS \u003d [\u0027issued_before\u0027, \u0027revoked_at\u0027, \u0027idp_id\u0027]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"# Names of attributes in the RevocationEvent, including \"virtual\" attributes."},{"line_number":37,"context_line":"# Virtual attributes are those added based on other values."}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_1cad9ee8","line":34,"in_reply_to":"da20952f_da309c58","updated":"2015-09-07 08:50:37.000000000","message":"Yes, i missed that. Thanks.","commit_id":"f0e65ac13cb00f2127edfe62f4cb568df2375661"}],"keystone/tests/unit/test_sql_migrate_extensions.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c81f715c698a47b5558ccf01e5a73dc848c9d166","unresolved":false,"context_lines":[{"line_number":334,"context_line":"                                self._REVOKE_COLUMN_NAMES)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def test_add_idp_id_column(self):"},{"line_number":337,"context_line":"        self.upgrade(3, repository\u003dself.repo_path)"},{"line_number":338,"context_line":"        self.assertTableColumns(\u0027revocation_event\u0027,"},{"line_number":339,"context_line":"                                [\u0027id\u0027,"},{"line_number":340,"context_line":"                                 \u0027domain_id\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_d85ce4ef","line":337,"updated":"2015-08-26 18:55:44.000000000","message":"we should assert that the \u0027idp_id\u0027 column doesn\u0027t exist before migration 3.","commit_id":"1632f5290511b569237d421e656b201c3c20140e"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"85ecf95dbe809437d0b4fb46ed01729fa20ad008","unresolved":false,"context_lines":[{"line_number":334,"context_line":"                                self._REVOKE_COLUMN_NAMES)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def test_add_idp_id_column(self):"},{"line_number":337,"context_line":"        self.upgrade(3, repository\u003dself.repo_path)"},{"line_number":338,"context_line":"        self.assertTableColumns(\u0027revocation_event\u0027,"},{"line_number":339,"context_line":"                                [\u0027id\u0027,"},{"line_number":340,"context_line":"                                 \u0027domain_id\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_da546f22","line":337,"in_reply_to":"da20952f_d85ce4ef","updated":"2015-08-28 13:50:53.000000000","message":"Done","commit_id":"1632f5290511b569237d421e656b201c3c20140e"}],"keystone/tests/unit/test_v3_federation.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0ef4fa7df55e7df5da6ef5b79cb961bc6f4f4a8c","unresolved":false,"context_lines":[{"line_number":1087,"context_line":"            else:"},{"line_number":1088,"context_line":"                self.assertEqual(body[key], updated_idp.get(key))"},{"line_number":1089,"context_line":""},{"line_number":1090,"context_line":"    def test_check_notifications_on_idp_update(self):"},{"line_number":1091,"context_line":"        \"\"\"Ensure notfication are emited upon updating"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        Depending on what\u0027s being updated we should or should not emit"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_5a3d6c29","line":1090,"updated":"2015-09-06 05:44:07.000000000","message":"looks like you still need to check the notifications, maybe look at the code around line 2050ish? i\u0027ll have to look to see how the revoke tests are currently performed","commit_id":"f0e65ac13cb00f2127edfe62f4cb568df2375661"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"c40f3ef7c97331b980c4ce1133ac5221151ed7cd","unresolved":false,"context_lines":[{"line_number":1087,"context_line":"            else:"},{"line_number":1088,"context_line":"                self.assertEqual(body[key], updated_idp.get(key))"},{"line_number":1089,"context_line":""},{"line_number":1090,"context_line":"    def test_check_notifications_on_idp_update(self):"},{"line_number":1091,"context_line":"        \"\"\"Ensure notfication are emited upon updating"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        Depending on what\u0027s being updated we should or should not emit"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_fc6f8a28","line":1090,"in_reply_to":"da20952f_5a3d6c29","updated":"2015-09-07 08:50:37.000000000","message":"i did see the code around line 2055 but i don\u0027t know how to use it in my case.","commit_id":"f0e65ac13cb00f2127edfe62f4cb568df2375661"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0ef4fa7df55e7df5da6ef5b79cb961bc6f4f4a8c","unresolved":false,"context_lines":[{"line_number":1096,"context_line":"        The notification (revocation event) should be emited in case of:"},{"line_number":1097,"context_line":"        - Identity provider is disabled (and was enabled)"},{"line_number":1098,"context_line":"        - A remote_ids list has been shrinked by at least one element"},{"line_number":1099,"context_line":"        - An element in remote_ids has changed (one was removed)"},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"        \"\"\""},{"line_number":1102,"context_line":"        idp_id, default_idp \u003d self._create_and_decapsulate_response()"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_3a42f8ae","line":1099,"updated":"2015-09-06 05:44:07.000000000","message":"remove (one was removed) or say (one was changed)?","commit_id":"f0e65ac13cb00f2127edfe62f4cb568df2375661"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"c40f3ef7c97331b980c4ce1133ac5221151ed7cd","unresolved":false,"context_lines":[{"line_number":1096,"context_line":"        The notification (revocation event) should be emited in case of:"},{"line_number":1097,"context_line":"        - Identity provider is disabled (and was enabled)"},{"line_number":1098,"context_line":"        - A remote_ids list has been shrinked by at least one element"},{"line_number":1099,"context_line":"        - An element in remote_ids has changed (one was removed)"},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"        \"\"\""},{"line_number":1102,"context_line":"        idp_id, default_idp \u003d self._create_and_decapsulate_response()"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_bcc27232","line":1099,"in_reply_to":"da20952f_3a42f8ae","updated":"2015-09-07 08:50:37.000000000","message":"i changed this bullet point, see how you like it now.","commit_id":"f0e65ac13cb00f2127edfe62f4cb568df2375661"}],"keystone/token/persistence/backends/sql.py":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"062797b98d00581e5760a646d12020c07676e021","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from keystone import token"},{"line_number":26,"context_line":"from keystone.token import provider"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"CONF \u003d cfg.CONF"},{"line_number":30,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_b7da2f16","side":"PARENT","line":28,"updated":"2015-08-10 06:51:35.000000000","message":"unrelated change, revert.","commit_id":"74575a66f1113ac0452da9982b345dec18ec0f32"}]}
