)]}'
{"keystone/contrib/endpoint_filter/controllers.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a7d64952898603d97de95bd2bee3ea7640b6ab70","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        path \u003d (\u0027/OS-EP-FILTER/endpoint_groups/%(endpoint_group_id)s\u0027"},{"line_number":296,"context_line":"                \u0027/projects/%(project_id)s\u0027)"},{"line_number":297,"context_line":"        url \u003d cls.base_url(context, path)"},{"line_number":298,"context_line":"        url \u003d url % {"},{"line_number":299,"context_line":"            \u0027endpoint_group_id\u0027: ref[\u0027endpoint_group_id\u0027],"},{"line_number":300,"context_line":"            \u0027project_id\u0027: ref[\u0027project_id\u0027]}"},{"line_number":301,"context_line":"        ref.setdefault(\u0027links\u0027, {})"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_58cf6c7f","line":298,"updated":"2015-04-02 17:56:20.000000000","message":"is there a reason we do the substitution after adding in the base?  The implication is that there is.  If there is not, why don;t we do the substitution first, like we did before?","commit_id":"27a579a4326ba7bc1d70476a1d9b154785dfab1a"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d3030097d9d3e4247b8640a99b5149381beced08","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        path \u003d (\u0027/OS-EP-FILTER/endpoint_groups/%(endpoint_group_id)s\u0027"},{"line_number":296,"context_line":"                \u0027/projects/%(project_id)s\u0027)"},{"line_number":297,"context_line":"        url \u003d cls.base_url(context, path)"},{"line_number":298,"context_line":"        url \u003d url % {"},{"line_number":299,"context_line":"            \u0027endpoint_group_id\u0027: ref[\u0027endpoint_group_id\u0027],"},{"line_number":300,"context_line":"            \u0027project_id\u0027: ref[\u0027project_id\u0027]}"},{"line_number":301,"context_line":"        ref.setdefault(\u0027links\u0027, {})"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a29b11f_482416ae","line":298,"in_reply_to":"3a29b11f_cd16f8f0","updated":"2015-10-20 20:26:55.000000000","message":"++ this would be nice to see","commit_id":"27a579a4326ba7bc1d70476a1d9b154785dfab1a"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"5ff3da0ddd1c46f6b1fa83923bb8d0c3f2518ee2","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        path \u003d (\u0027/OS-EP-FILTER/endpoint_groups/%(endpoint_group_id)s\u0027"},{"line_number":296,"context_line":"                \u0027/projects/%(project_id)s\u0027)"},{"line_number":297,"context_line":"        url \u003d cls.base_url(context, path)"},{"line_number":298,"context_line":"        url \u003d url % {"},{"line_number":299,"context_line":"            \u0027endpoint_group_id\u0027: ref[\u0027endpoint_group_id\u0027],"},{"line_number":300,"context_line":"            \u0027project_id\u0027: ref[\u0027project_id\u0027]}"},{"line_number":301,"context_line":"        ref.setdefault(\u0027links\u0027, {})"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a29b11f_cd16f8f0","line":298,"in_reply_to":"9aa53dc9_3e6adc81","updated":"2015-10-20 20:04:30.000000000","message":"But why assign to url twice? Why not\n\nurl \u003d cls.base_url(context, path) % {","commit_id":"27a579a4326ba7bc1d70476a1d9b154785dfab1a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"09656cf75c2556fa412b8ece78df3ac389f113c6","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        path \u003d (\u0027/OS-EP-FILTER/endpoint_groups/%(endpoint_group_id)s\u0027"},{"line_number":296,"context_line":"                \u0027/projects/%(project_id)s\u0027)"},{"line_number":297,"context_line":"        url \u003d cls.base_url(context, path)"},{"line_number":298,"context_line":"        url \u003d url % {"},{"line_number":299,"context_line":"            \u0027endpoint_group_id\u0027: ref[\u0027endpoint_group_id\u0027],"},{"line_number":300,"context_line":"            \u0027project_id\u0027: ref[\u0027project_id\u0027]}"},{"line_number":301,"context_line":"        ref.setdefault(\u0027links\u0027, {})"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_01530c3a","line":298,"in_reply_to":"9aa53dc9_3e6adc81","updated":"2015-08-20 17:15:30.000000000","message":"that might make for a good comment,","commit_id":"27a579a4326ba7bc1d70476a1d9b154785dfab1a"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"bfb7a0ece9e9fb3de9a66e565e0f9712c3b9841a","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        path \u003d (\u0027/OS-EP-FILTER/endpoint_groups/%(endpoint_group_id)s\u0027"},{"line_number":296,"context_line":"                \u0027/projects/%(project_id)s\u0027)"},{"line_number":297,"context_line":"        url \u003d cls.base_url(context, path)"},{"line_number":298,"context_line":"        url \u003d url % {"},{"line_number":299,"context_line":"            \u0027endpoint_group_id\u0027: ref[\u0027endpoint_group_id\u0027],"},{"line_number":300,"context_line":"            \u0027project_id\u0027: ref[\u0027project_id\u0027]}"},{"line_number":301,"context_line":"        ref.setdefault(\u0027links\u0027, {})"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aa53dc9_3e6adc81","line":298,"in_reply_to":"baa041b7_58cf6c7f","updated":"2015-04-10 01:57:22.000000000","message":"The reason we overridden _add_self_referential_link is that  ProjectEndpointGroupMembership doesn\u0027t have \u0027id\u0027 attribute: https://github.com/openstack/keystone/blob/master/keystone/common/controller.py#L443 and the reason of this bug is that we forgot to add base_url into url.","commit_id":"27a579a4326ba7bc1d70476a1d9b154785dfab1a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bf8b556e0134a88e7dd45b6b12119412aa000d8f","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                \u0027/projects/%(project_id)s\u0027) % {"},{"line_number":297,"context_line":"                    \u0027endpoint_group_id\u0027: ref[\u0027endpoint_group_id\u0027],"},{"line_number":298,"context_line":"                    \u0027project_id\u0027: ref[\u0027project_id\u0027]}"},{"line_number":299,"context_line":"        url \u003d cls.base_url(context, path)"},{"line_number":300,"context_line":"        ref.setdefault(\u0027links\u0027, {})"},{"line_number":301,"context_line":"        ref[\u0027links\u0027][\u0027self\u0027] \u003d url"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a29b11f_80f7a5f4","line":299,"updated":"2015-10-27 01:25:42.000000000","message":"this class should override base_url like the other subclasses do.","commit_id":"2ab3bd5fc94ccec30691a142a376259f284dc438"}],"keystone/tests/unit/test_associate_project_endpoint_extension.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"72a6e5c3728c9c76c56981ab137a8608c8480f37","unresolved":false,"context_lines":[{"line_number":839,"context_line":"            self.project_id,"},{"line_number":840,"context_line":"            response.result[\u0027project_endpoint_group\u0027][\u0027project_id\u0027])"},{"line_number":841,"context_line":"        self.assertEqual("},{"line_number":842,"context_line":"            \u0027%s/%s/%s\u0027 % (response.request.host_url, \u0027v3\u0027, url.lstrip(\u0027/\u0027)),"},{"line_number":843,"context_line":"            response.result[\u0027project_endpoint_group\u0027][\u0027links\u0027][\u0027self\u0027])"},{"line_number":844,"context_line":""},{"line_number":845,"context_line":"    def test_get_invalid_endpoint_group_in_project(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6ced46_3aba736e","line":842,"updated":"2015-03-25 19:30:56.000000000","message":"i think using part of the response to verify against another part of the response is a bad approach","commit_id":"fc7f57c450692b3513213366577a1c4e4a9cff15"}]}
