)]}'
{"keystone/contrib/endpoint_filter/backends/sql.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7e103bbe99280bd66e68b3f9ebe917e5aaac6351","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        with session.begin():"},{"line_number":218,"context_line":"            query \u003d session.query(ProjectEndpointGroupMembership)"},{"line_number":219,"context_line":"            query \u003d query.filter_by(endpoint_group_id\u003dendpoint_group_id)"},{"line_number":220,"context_line":"            endpoint_group_project_refs \u003d query.all()"},{"line_number":221,"context_line":"            for ref in endpoint_group_project_refs:"},{"line_number":222,"context_line":"                session.delete(ref)"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_edb91016","line":220,"updated":"2014-09-03 14:00:25.000000000","message":"there are a couple subtle reasons why you might not want to do this, but i dont see them here... rather than issuing a hundred DELETEs in a loop, use .delete() above instead of .all()","commit_id":"9ffa0be4622f7d2376fc1d16eb1f2a0f33501c9f"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"2e2147ec8b9b8aa772eccfa47ecad2181bc28b99","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        with session.begin():"},{"line_number":218,"context_line":"            query \u003d session.query(ProjectEndpointGroupMembership)"},{"line_number":219,"context_line":"            query \u003d query.filter_by(endpoint_group_id\u003dendpoint_group_id)"},{"line_number":220,"context_line":"            endpoint_group_project_refs \u003d query.all()"},{"line_number":221,"context_line":"            for ref in endpoint_group_project_refs:"},{"line_number":222,"context_line":"                session.delete(ref)"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_53339213","line":220,"in_reply_to":"fa98f980_edb91016","updated":"2014-09-04 21:54:48.000000000","message":"Done","commit_id":"9ffa0be4622f7d2376fc1d16eb1f2a0f33501c9f"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"2e2147ec8b9b8aa772eccfa47ecad2181bc28b99","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            query \u003d session.query(ProjectEndpointGroupMembership)"},{"line_number":228,"context_line":"            query \u003d query.filter_by(project_id\u003dproject_id)"},{"line_number":229,"context_line":"            endpoint_group_project_refs \u003d query.all()"},{"line_number":230,"context_line":"            for ref in endpoint_group_project_refs:"},{"line_number":231,"context_line":"                session.delete(ref)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_733896ef","line":230,"updated":"2014-09-04 21:54:48.000000000","message":"Done","commit_id":"9ffa0be4622f7d2376fc1d16eb1f2a0f33501c9f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cab31db89951879f6c43b39dcb46b27320cdfe5a","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        session \u003d sql.get_session()"},{"line_number":150,"context_line":"        endpoint_group_ref \u003d self._get_endpoint_group(session,"},{"line_number":151,"context_line":"                                                      endpoint_group_id)"},{"line_number":152,"context_line":"        with session.begin():"},{"line_number":153,"context_line":"            session.delete(endpoint_group_ref)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def get_endpoint_group_in_project(self, endpoint_group_id, project_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_7e25565b","line":152,"updated":"2014-09-08 00:40:28.000000000","message":"Notifications aren\u0027t required for this. Just call delete_endpoint_group_association_by_endpoint_group here.","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"45ceec23d96fe96fa8e317afb2621c408f475835","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        session \u003d sql.get_session()"},{"line_number":150,"context_line":"        endpoint_group_ref \u003d self._get_endpoint_group(session,"},{"line_number":151,"context_line":"                                                      endpoint_group_id)"},{"line_number":152,"context_line":"        with session.begin():"},{"line_number":153,"context_line":"            session.delete(endpoint_group_ref)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def get_endpoint_group_in_project(self, endpoint_group_id, project_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_a7570359","line":152,"in_reply_to":"fa98f980_7e25565b","updated":"2014-09-12 17:43:54.000000000","message":"Done","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"17d06a0ebd8c77bdfc90fc6d538a4817a0fd4f0c","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        session \u003d sql.get_session()"},{"line_number":150,"context_line":"        endpoint_group_ref \u003d self._get_endpoint_group(session,"},{"line_number":151,"context_line":"                                                      endpoint_group_id)"},{"line_number":152,"context_line":"        with session.begin():"},{"line_number":153,"context_line":"            session.delete(endpoint_group_ref)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def get_endpoint_group_in_project(self, endpoint_group_id, project_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_7f58aafa","line":152,"in_reply_to":"fa98f980_7e25565b","updated":"2014-09-09 22:14:44.000000000","message":"Yeah I agree. endpoint_group.id is a foreign key of endpoint_group_project. In general, we do not need notification for stuff that are internal to the extension.","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"45ceec23d96fe96fa8e317afb2621c408f475835","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        session \u003d sql.get_session()"},{"line_number":150,"context_line":"        endpoint_group_ref \u003d self._get_endpoint_group(session,"},{"line_number":151,"context_line":"                                                      endpoint_group_id)"},{"line_number":152,"context_line":"        with session.begin():"},{"line_number":153,"context_line":"            session.delete(endpoint_group_ref)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def get_endpoint_group_in_project(self, endpoint_group_id, project_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_87667f4f","line":152,"in_reply_to":"fa98f980_7f58aafa","updated":"2014-09-12 17:43:54.000000000","message":"Done","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"}],"keystone/contrib/endpoint_filter/controllers.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7e103bbe99280bd66e68b3f9ebe917e5aaac6351","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        filtered_endpoints \u003d dict(("},{"line_number":108,"context_line":"            ref.endpoint_id, self.catalog_api.get_endpoint("},{"line_number":109,"context_line":"                ref.endpoint_id)) for ref in refs)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # need to recover endpoint_groups associated with project"},{"line_number":112,"context_line":"        # then for each endpoint group return the endpoints."}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_8d97a447","line":109,"updated":"2014-09-03 14:00:25.000000000","message":"we normally avoid making unnecessary whitespace changes in an actual patch","commit_id":"9ffa0be4622f7d2376fc1d16eb1f2a0f33501c9f"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"2e2147ec8b9b8aa772eccfa47ecad2181bc28b99","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        filtered_endpoints \u003d dict(("},{"line_number":108,"context_line":"            ref.endpoint_id, self.catalog_api.get_endpoint("},{"line_number":109,"context_line":"                ref.endpoint_id)) for ref in refs)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # need to recover endpoint_groups associated with project"},{"line_number":112,"context_line":"        # then for each endpoint group return the endpoints."}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_b33e7ed8","line":109,"in_reply_to":"fa98f980_8d97a447","updated":"2014-09-04 21:54:48.000000000","message":"Done","commit_id":"9ffa0be4622f7d2376fc1d16eb1f2a0f33501c9f"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7e103bbe99280bd66e68b3f9ebe917e5aaac6351","unresolved":false,"context_lines":[{"line_number":257,"context_line":"            self._on_project_or_endpoint_group_delete)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def _on_project_or_endpoint_group_delete(self, service, resource_type,"},{"line_number":260,"context_line":"                                             operation, payload):"},{"line_number":261,"context_line":"        project_or_endpoint_group_id \u003d payload[\u0027resource_info\u0027]"},{"line_number":262,"context_line":"        if resource_type \u003d\u003d \u0027project\u0027:"},{"line_number":263,"context_line":"            (self.endpoint_filter_api."}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_2d97983c","line":260,"updated":"2014-09-03 14:00:25.000000000","message":"I\u0027d rather see two descrete callbacks instead of one overloaded method","commit_id":"9ffa0be4622f7d2376fc1d16eb1f2a0f33501c9f"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"2e2147ec8b9b8aa772eccfa47ecad2181bc28b99","unresolved":false,"context_lines":[{"line_number":257,"context_line":"            self._on_project_or_endpoint_group_delete)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def _on_project_or_endpoint_group_delete(self, service, resource_type,"},{"line_number":260,"context_line":"                                             operation, payload):"},{"line_number":261,"context_line":"        project_or_endpoint_group_id \u003d payload[\u0027resource_info\u0027]"},{"line_number":262,"context_line":"        if resource_type \u003d\u003d \u0027project\u0027:"},{"line_number":263,"context_line":"            (self.endpoint_filter_api."}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_2584015d","line":260,"in_reply_to":"fa98f980_2d97983c","updated":"2014-09-04 21:54:48.000000000","message":"Done","commit_id":"9ffa0be4622f7d2376fc1d16eb1f2a0f33501c9f"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"072440468e5842be23bfb528802251332c205c70","unresolved":false,"context_lines":[{"line_number":248,"context_line":"    def __init__(self):"},{"line_number":249,"context_line":"        super(ProjectEndpointGroupV3Controller, self).__init__()"},{"line_number":250,"context_line":"        notifications.register_event_callback("},{"line_number":251,"context_line":"            \u0027deleted\u0027, \u0027project\u0027,"},{"line_number":252,"context_line":"            self._on_project_delete)"},{"line_number":253,"context_line":"        notifications.register_event_callback("},{"line_number":254,"context_line":"            \u0027deleted\u0027, \u0027OS-EP-FILTER:endpoint_group\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_b13acc96","line":251,"updated":"2014-09-04 21:57:28.000000000","message":"This should be: notifications.ACTIONS.deleted","commit_id":"495e26c5c81aa427b2432950ccc97da6088aac9d"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"072440468e5842be23bfb528802251332c205c70","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            \u0027deleted\u0027, \u0027project\u0027,"},{"line_number":252,"context_line":"            self._on_project_delete)"},{"line_number":253,"context_line":"        notifications.register_event_callback("},{"line_number":254,"context_line":"            \u0027deleted\u0027, \u0027OS-EP-FILTER:endpoint_group\u0027,"},{"line_number":255,"context_line":"            self._on_endpoint_group_delete)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    def _on_project_delete(self, service, resource_type,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_314edc3b","line":254,"updated":"2014-09-04 21:57:28.000000000","message":"Same as above.","commit_id":"495e26c5c81aa427b2432950ccc97da6088aac9d"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"17d06a0ebd8c77bdfc90fc6d538a4817a0fd4f0c","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        notifications.register_event_callback("},{"line_number":251,"context_line":"            notifications.ACTIONS.deleted, \u0027project\u0027,"},{"line_number":252,"context_line":"            self._on_project_delete)"},{"line_number":253,"context_line":"        notifications.register_event_callback("},{"line_number":254,"context_line":"            notifications.ACTIONS.deleted, \u0027OS-EP-FILTER:endpoint_group\u0027,"},{"line_number":255,"context_line":"            self._on_endpoint_group_delete)"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_7f26ea69","line":253,"updated":"2014-09-09 22:14:44.000000000","message":"you don\u0027t need a notification for this. Just delete the associations prior to deleting the endpoint group.","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"45ceec23d96fe96fa8e317afb2621c408f475835","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        notifications.register_event_callback("},{"line_number":251,"context_line":"            notifications.ACTIONS.deleted, \u0027project\u0027,"},{"line_number":252,"context_line":"            self._on_project_delete)"},{"line_number":253,"context_line":"        notifications.register_event_callback("},{"line_number":254,"context_line":"            notifications.ACTIONS.deleted, \u0027OS-EP-FILTER:endpoint_group\u0027,"},{"line_number":255,"context_line":"            self._on_endpoint_group_delete)"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_e76d8b33","line":253,"in_reply_to":"fa98f980_7f26ea69","updated":"2014-09-12 17:43:54.000000000","message":"Done","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cab31db89951879f6c43b39dcb46b27320cdfe5a","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            notifications.ACTIONS.deleted, \u0027project\u0027,"},{"line_number":252,"context_line":"            self._on_project_delete)"},{"line_number":253,"context_line":"        notifications.register_event_callback("},{"line_number":254,"context_line":"            notifications.ACTIONS.deleted, \u0027OS-EP-FILTER:endpoint_group\u0027,"},{"line_number":255,"context_line":"            self._on_endpoint_group_delete)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    def _on_project_delete(self, service, resource_type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_fe0146b0","line":254,"updated":"2014-09-08 00:40:28.000000000","message":"this magic string should be shared with the same string in core.py.","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"45ceec23d96fe96fa8e317afb2621c408f475835","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            notifications.ACTIONS.deleted, \u0027project\u0027,"},{"line_number":252,"context_line":"            self._on_project_delete)"},{"line_number":253,"context_line":"        notifications.register_event_callback("},{"line_number":254,"context_line":"            notifications.ACTIONS.deleted, \u0027OS-EP-FILTER:endpoint_group\u0027,"},{"line_number":255,"context_line":"            self._on_endpoint_group_delete)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    def _on_project_delete(self, service, resource_type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_4771f70a","line":254,"in_reply_to":"fa98f980_fe0146b0","updated":"2014-09-12 17:43:54.000000000","message":"Done","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"180fd26207aa63b1eea4bcc9d8d5399755d7465e","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        project_id \u003d payload[\u0027resource_info\u0027]"},{"line_number":257,"context_line":"        (self.endpoint_filter_api."},{"line_number":258,"context_line":"            delete_endpoint_group_association_by_project("},{"line_number":259,"context_line":"                project_id))"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    @controller.protected()"},{"line_number":262,"context_line":"    def get_endpoint_group_in_project(self, context, endpoint_group_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_c2305c58","line":259,"updated":"2014-09-14 22:42:22.000000000","message":"This should probably exist on the endpoint_filter_api directly not on the controller. This can be fixed as a cleanup item down the line.","commit_id":"d176359e6e6ac75ff416f994521d907557d566a2"}],"keystone/contrib/endpoint_filter/core.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7e103bbe99280bd66e68b3f9ebe917e5aaac6351","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    _ENDPOINT_GROUP \u003d \"OS-EP-FILTER:endpoint_group\""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def __init__(self):"},{"line_number":63,"context_line":"        super(Manager, self).__init__(CONF.endpoint_filter.driver)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_adc9c85a","line":60,"updated":"2014-09-03 14:00:25.000000000","message":"(nit/HACKING) use single quotes where possible","commit_id":"9ffa0be4622f7d2376fc1d16eb1f2a0f33501c9f"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"2e2147ec8b9b8aa772eccfa47ecad2181bc28b99","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    _ENDPOINT_GROUP \u003d \"OS-EP-FILTER:endpoint_group\""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def __init__(self):"},{"line_number":63,"context_line":"        super(Manager, self).__init__(CONF.endpoint_filter.driver)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_05b9bd14","line":60,"in_reply_to":"fa98f980_adc9c85a","updated":"2014-09-04 21:54:48.000000000","message":"Done","commit_id":"9ffa0be4622f7d2376fc1d16eb1f2a0f33501c9f"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7e103bbe99280bd66e68b3f9ebe917e5aaac6351","unresolved":false,"context_lines":[{"line_number":294,"context_line":"        :returns: None"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"        \"\"\""},{"line_number":297,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    @abc.abstractmethod"},{"line_number":300,"context_line":"    def delete_endpoint_group_association_by_project(self, project_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_adf7088a","line":297,"updated":"2014-09-03 14:00:25.000000000","message":"we actually have a coverage job for base driver classes you could use","commit_id":"9ffa0be4622f7d2376fc1d16eb1f2a0f33501c9f"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"2e2147ec8b9b8aa772eccfa47ecad2181bc28b99","unresolved":false,"context_lines":[{"line_number":294,"context_line":"        :returns: None"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"        \"\"\""},{"line_number":297,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    @abc.abstractmethod"},{"line_number":300,"context_line":"    def delete_endpoint_group_association_by_project(self, project_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_25bc01dc","line":297,"in_reply_to":"fa98f980_adf7088a","updated":"2014-09-04 21:54:48.000000000","message":"Dolph, good to know, thanks. Can you please give a link? I was actually leveraging the existing approach that was previously approved:\n\nhttps://review.openstack.org/#/c/109507/2/keystone/contrib/endpoint_filter/core.py","commit_id":"9ffa0be4622f7d2376fc1d16eb1f2a0f33501c9f"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"45ceec23d96fe96fa8e317afb2621c408f475835","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from keystone.common import manager"},{"line_number":22,"context_line":"from keystone import config"},{"line_number":23,"context_line":"from keystone import exception"},{"line_number":24,"context_line":"from keystone import notifications"},{"line_number":25,"context_line":"from keystone.openstack.common import log"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_e7266b15","line":24,"updated":"2014-09-12 17:43:54.000000000","message":"Removed - No longer used","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"45ceec23d96fe96fa8e317afb2621c408f475835","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    _ENDPOINT_GROUP \u003d \u0027OS-EP-FILTER:endpoint_group\u0027"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def __init__(self):"},{"line_number":63,"context_line":"        super(Manager, self).__init__(CONF.endpoint_filter.driver)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_471ad7c6","line":60,"updated":"2014-09-12 17:43:54.000000000","message":"No longer used after removing notification below.","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"17d06a0ebd8c77bdfc90fc6d538a4817a0fd4f0c","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        super(Manager, self).__init__(CONF.endpoint_filter.driver)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    @notifications.deleted(_ENDPOINT_GROUP)"},{"line_number":66,"context_line":"    def delete_endpoint_group(self, endpoint_group_id):"},{"line_number":67,"context_line":"        return self.driver.delete_endpoint_group(endpoint_group_id)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_9fe0eefb","line":66,"updated":"2014-09-09 22:14:44.000000000","message":"you don\u0027t need a notification for this","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"45ceec23d96fe96fa8e317afb2621c408f475835","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        super(Manager, self).__init__(CONF.endpoint_filter.driver)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    @notifications.deleted(_ENDPOINT_GROUP)"},{"line_number":66,"context_line":"    def delete_endpoint_group(self, endpoint_group_id):"},{"line_number":67,"context_line":"        return self.driver.delete_endpoint_group(endpoint_group_id)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_a7e463e0","line":66,"in_reply_to":"fa98f980_9fe0eefb","updated":"2014-09-12 17:43:54.000000000","message":"Done","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cab31db89951879f6c43b39dcb46b27320cdfe5a","unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    @abc.abstractmethod"},{"line_number":211,"context_line":"    def add_endpoint_group_to_project(self, endpoint_group_id, project_id):"},{"line_number":212,"context_line":"        \"\"\"Add an endpoint group to project association."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        :param endpoint_group_id: identity of endpoint to associate"},{"line_number":215,"context_line":"        :type endpoint_group_id: string"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_debf22fb","line":212,"updated":"2014-09-08 00:40:28.000000000","message":"this is an unrelated change. Put it in a separate commit.","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"45ceec23d96fe96fa8e317afb2621c408f475835","unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    @abc.abstractmethod"},{"line_number":211,"context_line":"    def add_endpoint_group_to_project(self, endpoint_group_id, project_id):"},{"line_number":212,"context_line":"        \"\"\"Add an endpoint group to project association."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        :param endpoint_group_id: identity of endpoint to associate"},{"line_number":215,"context_line":"        :type endpoint_group_id: string"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_c7e967b8","line":212,"in_reply_to":"fa98f980_debf22fb","updated":"2014-09-12 17:43:54.000000000","message":"I have removed this change from this particular commit.","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cab31db89951879f6c43b39dcb46b27320cdfe5a","unresolved":false,"context_lines":[{"line_number":287,"context_line":"    @abc.abstractmethod"},{"line_number":288,"context_line":"    def delete_endpoint_group_association_by_endpoint_group(self,"},{"line_number":289,"context_line":"                                                            endpoint_group_id):"},{"line_number":290,"context_line":"        \"\"\"Remove endpoint_group to project associations."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        :param endpoint_group_id: identity of endpoint group to check"},{"line_number":293,"context_line":"        :type endpoint_group_id: string"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_9e459a19","line":290,"updated":"2014-09-08 00:40:28.000000000","message":"change \"endpoint_group\" to \"endpoint group\"","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"45ceec23d96fe96fa8e317afb2621c408f475835","unresolved":false,"context_lines":[{"line_number":287,"context_line":"    @abc.abstractmethod"},{"line_number":288,"context_line":"    def delete_endpoint_group_association_by_endpoint_group(self,"},{"line_number":289,"context_line":"                                                            endpoint_group_id):"},{"line_number":290,"context_line":"        \"\"\"Remove endpoint_group to project associations."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        :param endpoint_group_id: identity of endpoint group to check"},{"line_number":293,"context_line":"        :type endpoint_group_id: string"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_c737a74b","line":290,"in_reply_to":"fa98f980_9e459a19","updated":"2014-09-12 17:43:54.000000000","message":"Done","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cab31db89951879f6c43b39dcb46b27320cdfe5a","unresolved":false,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    @abc.abstractmethod"},{"line_number":300,"context_line":"    def delete_endpoint_group_association_by_project(self, project_id):"},{"line_number":301,"context_line":"        \"\"\"Remove endpoint_group to project associations."},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        :param project_id: identity of the project to check"},{"line_number":304,"context_line":"        :type project_id: string"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_be497e34","line":301,"updated":"2014-09-08 00:40:28.000000000","message":"change \"endpoint_group\" to \"endpoint group\"","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"45ceec23d96fe96fa8e317afb2621c408f475835","unresolved":false,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    @abc.abstractmethod"},{"line_number":300,"context_line":"    def delete_endpoint_group_association_by_project(self, project_id):"},{"line_number":301,"context_line":"        \"\"\"Remove endpoint_group to project associations."},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        :param project_id: identity of the project to check"},{"line_number":304,"context_line":"        :type project_id: string"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_e73f4b23","line":301,"in_reply_to":"fa98f980_be497e34","updated":"2014-09-12 17:43:54.000000000","message":"Done","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"}],"keystone/tests/test_associate_project_endpoint_extension.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cab31db89951879f6c43b39dcb46b27320cdfe5a","unresolved":false,"context_lines":[{"line_number":976,"context_line":"        # create endpoint group"},{"line_number":977,"context_line":"        endpoint_group_id \u003d self._create_valid_endpoint_group("},{"line_number":978,"context_line":"          self.DEFAULT_ENDPOINT_GROUP_URL, self.DEFAULT_ENDPOINT_GROUP_BODY)"},{"line_number":979,"context_line":"        # create new project and associated with endpoint_group"},{"line_number":980,"context_line":"        project_ref \u003d self.new_project_ref(domain_id\u003dself.domain_id)"},{"line_number":981,"context_line":"        r \u003d self.post(\u0027/projects\u0027, body\u003d{\u0027project\u0027: project_ref})"},{"line_number":982,"context_line":"        project \u003d self.assertValidProjectResponse(r, project_ref)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_fe5306e0","line":979,"updated":"2014-09-08 00:40:28.000000000","message":"change \"associated\" to \"associate\"","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"45ceec23d96fe96fa8e317afb2621c408f475835","unresolved":false,"context_lines":[{"line_number":976,"context_line":"        # create endpoint group"},{"line_number":977,"context_line":"        endpoint_group_id \u003d self._create_valid_endpoint_group("},{"line_number":978,"context_line":"          self.DEFAULT_ENDPOINT_GROUP_URL, self.DEFAULT_ENDPOINT_GROUP_BODY)"},{"line_number":979,"context_line":"        # create new project and associated with endpoint_group"},{"line_number":980,"context_line":"        project_ref \u003d self.new_project_ref(domain_id\u003dself.domain_id)"},{"line_number":981,"context_line":"        r \u003d self.post(\u0027/projects\u0027, body\u003d{\u0027project\u0027: project_ref})"},{"line_number":982,"context_line":"        project \u003d self.assertValidProjectResponse(r, project_ref)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_2769538c","line":979,"in_reply_to":"fa98f980_fe5306e0","updated":"2014-09-12 17:43:54.000000000","message":"Done","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cab31db89951879f6c43b39dcb46b27320cdfe5a","unresolved":false,"context_lines":[{"line_number":993,"context_line":"        # create endpoint group"},{"line_number":994,"context_line":"        endpoint_group_id \u003d self._create_valid_endpoint_group("},{"line_number":995,"context_line":"          self.DEFAULT_ENDPOINT_GROUP_URL, self.DEFAULT_ENDPOINT_GROUP_BODY)"},{"line_number":996,"context_line":"        # create new project and associated with endpoint_group"},{"line_number":997,"context_line":"        project_ref \u003d self.new_project_ref(domain_id\u003dself.domain_id)"},{"line_number":998,"context_line":"        r \u003d self.post(\u0027/projects\u0027, body\u003d{\u0027project\u0027: project_ref})"},{"line_number":999,"context_line":"        project \u003d self.assertValidProjectResponse(r, project_ref)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_be709e74","line":996,"updated":"2014-09-08 00:40:28.000000000","message":"change \"associated\" to \"associate\"","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"45ceec23d96fe96fa8e317afb2621c408f475835","unresolved":false,"context_lines":[{"line_number":993,"context_line":"        # create endpoint group"},{"line_number":994,"context_line":"        endpoint_group_id \u003d self._create_valid_endpoint_group("},{"line_number":995,"context_line":"          self.DEFAULT_ENDPOINT_GROUP_URL, self.DEFAULT_ENDPOINT_GROUP_BODY)"},{"line_number":996,"context_line":"        # create new project and associated with endpoint_group"},{"line_number":997,"context_line":"        project_ref \u003d self.new_project_ref(domain_id\u003dself.domain_id)"},{"line_number":998,"context_line":"        r \u003d self.post(\u0027/projects\u0027, body\u003d{\u0027project\u0027: project_ref})"},{"line_number":999,"context_line":"        project \u003d self.assertValidProjectResponse(r, project_ref)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_0770cf70","line":996,"in_reply_to":"fa98f980_be709e74","updated":"2014-09-12 17:43:54.000000000","message":"Done","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cab31db89951879f6c43b39dcb46b27320cdfe5a","unresolved":false,"context_lines":[{"line_number":1005,"context_line":"        # now remove the project endpoint group association"},{"line_number":1006,"context_line":"        self.delete(\u0027/OS-EP-FILTER/endpoint_groups/%(endpoint_group_id)s\u0027 % {"},{"line_number":1007,"context_line":"            \u0027endpoint_group_id\u0027: endpoint_group_id})"},{"line_number":1008,"context_line":"        self.get(url, expected_status\u003d404)"},{"line_number":1009,"context_line":""},{"line_number":1010,"context_line":"    def _create_valid_endpoint_group(self, url, body):"},{"line_number":1011,"context_line":"        r \u003d self.post(url, body\u003dbody)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_5e0972dc","line":1008,"updated":"2014-09-08 00:40:28.000000000","message":"this didn\u0027t fail before? seems like it would fail already because `/OS-EP-FILTER/endpoint_groups/%(endpoint_group_id)s` doesn\u0027t exist so something under that wouldn\u0027t exist either.","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"45ceec23d96fe96fa8e317afb2621c408f475835","unresolved":false,"context_lines":[{"line_number":1005,"context_line":"        # now remove the project endpoint group association"},{"line_number":1006,"context_line":"        self.delete(\u0027/OS-EP-FILTER/endpoint_groups/%(endpoint_group_id)s\u0027 % {"},{"line_number":1007,"context_line":"            \u0027endpoint_group_id\u0027: endpoint_group_id})"},{"line_number":1008,"context_line":"        self.get(url, expected_status\u003d404)"},{"line_number":1009,"context_line":""},{"line_number":1010,"context_line":"    def _create_valid_endpoint_group(self, url, body):"},{"line_number":1011,"context_line":"        r \u003d self.post(url, body\u003dbody)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_67d43b20","line":1008,"in_reply_to":"fa98f980_5e0972dc","updated":"2014-09-12 17:43:54.000000000","message":"\u0027/OS-EP-FILTER/endpoint_groups/%(endpoint_group_id)s\u0027 is created on line 1002 and I\u0027ll add an additional comment to make this clear. \n\nIf the endpoint group did not exist then the attempt to delete it on line 1006 would have failed with a 404 Not Found.\n\nGood point though. I will make this clear. Thanks.","commit_id":"5c6076c2c4dac17e853ffb767d9fd6b2338dd4be"}]}
