)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"f49ff132a0744049f321edac7213d39fe224ecc2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e855e325_f600cf32","updated":"2022-04-25 11:09:12.000000000","message":"recheck","commit_id":"ad8ac88ffc8c5895bda0f4b1d393778e993f89f1"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"71e7f4a57d41fedfce5cfaff2c3075af86ab4373","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"427ce021_17455da2","updated":"2022-04-28 09:57:23.000000000","message":"recheck","commit_id":"4ddcace9182749afeee1507af693541e1ba5807e"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"a59b3aedafb33da76a8d6b1df12a66039506516f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"810de21f_8d692e26","updated":"2022-04-27 20:38:35.000000000","message":"recheck","commit_id":"4ddcace9182749afeee1507af693541e1ba5807e"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"3989b3202181ba5b2558e77fa595cc5e56b433b5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2df7c335_e4aba614","updated":"2022-04-28 07:09:14.000000000","message":"recheck - seems unrelated","commit_id":"4ddcace9182749afeee1507af693541e1ba5807e"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"ef724513a49764cb84b55fbd92faa91c651daa2d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"6707a564_408b1959","updated":"2022-06-03 15:29:32.000000000","message":"LGTM","commit_id":"6a3fa87cde3a1a273c49d515d8139df14a69cf9a"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"65c69e38377c18cbea1ec538acac552d24f181a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a65c65cd_352a12d1","updated":"2022-05-25 14:57:46.000000000","message":"LGTM","commit_id":"6a3fa87cde3a1a273c49d515d8139df14a69cf9a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d6fa0e3c94e7aec493fd5dd6de4ee475f6bc29a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c5a777c7_ab5ff389","updated":"2022-05-24 11:11:16.000000000","message":"Thanks for the update. LGTM now. Note that there is no additional test coverage but I think it is okay as it is not easy to cover this change efficiently.","commit_id":"6a3fa87cde3a1a273c49d515d8139df14a69cf9a"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"837327c3c09c2354c8e105ba838dc900f78527bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f14e25b4_19a1d16a","updated":"2022-06-01 07:40:12.000000000","message":"Vishal could you approve this as well?","commit_id":"6a3fa87cde3a1a273c49d515d8139df14a69cf9a"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"13425466d4a57ba53b6412b911654a90ea36d57b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d7dc5b80_86d47420","updated":"2022-05-24 13:06:19.000000000","message":"recheck","commit_id":"6a3fa87cde3a1a273c49d515d8139df14a69cf9a"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"e50170063a80a0ea9f5d6059fc72ed5f3e839657","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5b945709_8d585a57","in_reply_to":"c5a777c7_ab5ff389","updated":"2022-05-24 12:00:07.000000000","message":"Thanks!","commit_id":"6a3fa87cde3a1a273c49d515d8139df14a69cf9a"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"89e7fb5e91934c2180ef41972e3ea162a5d85eec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"10433ff7_4f0ed68c","in_reply_to":"f14e25b4_19a1d16a","updated":"2022-06-01 07:52:26.000000000","message":"Hi, I am waiting for feedback from more reviewers.\nIf there are no more reviews by tomorrow\u0027s EOD, I\u0027ll approve it.","commit_id":"6a3fa87cde3a1a273c49d515d8139df14a69cf9a"}],"openstack_auth/backend.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"74f26e488bf98d326c23eb8c9b9c35ba5f362048","unresolved":true,"context_lines":[{"line_number":112,"context_line":"        plugin, unscoped_auth \u003d self._get_auth_backend(auth_url, **kwargs)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        client_ip \u003d utils.get_client_ip(request)"},{"line_number":115,"context_line":"        session \u003d utils.get_session(original_ip\u003dclient_ip)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        # the recent project id a user might have set in a cookie"},{"line_number":118,"context_line":"        recent_project \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"70513141_1855044e","line":115,"updated":"2022-05-24 10:27:49.000000000","message":"(review note) This pattern is used many times in this commit. I wonder if we can do it in get_session() and it took time to review, but there seems no good way....\nplugin/*.py does not refer to \"request\" object, so we need to get original_ip information outside of plugin/*.py and the proposed way looks like a good compromise.","commit_id":"4ddcace9182749afeee1507af693541e1ba5807e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"44f5fc01a1620779e365927c3f866e28d37a33f6","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        plugin, unscoped_auth \u003d self._get_auth_backend(auth_url, **kwargs)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        client_ip \u003d utils.get_client_ip(request)"},{"line_number":115,"context_line":"        session \u003d utils.get_session(original_ip\u003dclient_ip)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        # the recent project id a user might have set in a cookie"},{"line_number":118,"context_line":"        recent_project \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"c48a2870_a68afa79","line":115,"in_reply_to":"70513141_1855044e","updated":"2022-05-24 15:57:34.000000000","message":"I just forgot to mark it as resolved. This is just a note for reviewers, so I intended it should be marked as resolved.","commit_id":"4ddcace9182749afeee1507af693541e1ba5807e"}],"openstack_auth/plugin/base.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"74f26e488bf98d326c23eb8c9b9c35ba5f362048","unresolved":true,"context_lines":[{"line_number":110,"context_line":"        :raises: exceptions.KeystoneAuthException on auth failure"},{"line_number":111,"context_line":"        :returns: keystoneclient.access.AccessInfo"},{"line_number":112,"context_line":"        \"\"\""},{"line_number":113,"context_line":"        _session \u003d session if session else utils.get_session()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        try:"},{"line_number":116,"context_line":"            unscoped_auth_ref \u003d keystone_auth.get_access(_session)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df8935c9_d1efa4dd","line":113,"updated":"2022-05-24 10:27:49.000000000","message":"nit: This can be:\n\n  if session is None:\n      session \u003d utils.get_session()\n\nThis is just my preference, but I think we usually use this pattern in the code base.","commit_id":"4ddcace9182749afeee1507af693541e1ba5807e"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"f380971510bbf57ae4473d2dcde4a4efb8ca29b7","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        :raises: exceptions.KeystoneAuthException on auth failure"},{"line_number":111,"context_line":"        :returns: keystoneclient.access.AccessInfo"},{"line_number":112,"context_line":"        \"\"\""},{"line_number":113,"context_line":"        _session \u003d session if session else utils.get_session()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        try:"},{"line_number":116,"context_line":"            unscoped_auth_ref \u003d keystone_auth.get_access(_session)"}],"source_content_type":"text/x-python","patch_set":2,"id":"d703bac1_0cc63a8f","line":113,"in_reply_to":"c6c73d73_e3571c41","updated":"2022-05-24 10:39:18.000000000","message":"Done","commit_id":"4ddcace9182749afeee1507af693541e1ba5807e"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"277b2b7f372ba001bc4ff11b1ff2860255ee3f21","unresolved":true,"context_lines":[{"line_number":110,"context_line":"        :raises: exceptions.KeystoneAuthException on auth failure"},{"line_number":111,"context_line":"        :returns: keystoneclient.access.AccessInfo"},{"line_number":112,"context_line":"        \"\"\""},{"line_number":113,"context_line":"        _session \u003d session if session else utils.get_session()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        try:"},{"line_number":116,"context_line":"            unscoped_auth_ref \u003d keystone_auth.get_access(_session)"}],"source_content_type":"text/x-python","patch_set":2,"id":"c6c73d73_e3571c41","line":113,"in_reply_to":"df8935c9_d1efa4dd","updated":"2022-05-24 10:33:25.000000000","message":"I agree it\u0027s cleaner, I will update the patch to use that pattern, it will decrease the amount of lines changed as well.","commit_id":"4ddcace9182749afeee1507af693541e1ba5807e"}],"openstack_auth/views.py":[{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"dd43c3f2200d8503e961d236c71392fd232bfeb9","unresolved":true,"context_lines":[{"line_number":267,"context_line":"              tenant_id, request.user.username)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    endpoint, __ \u003d utils.fix_auth_url_version_prefix(request.user.endpoint)"},{"line_number":270,"context_line":"    session \u003d utils.get_session()"},{"line_number":271,"context_line":"    # Keystone can be configured to prevent exchanging a scoped token for"},{"line_number":272,"context_line":"    # another token. Always use the unscoped token for requesting a"},{"line_number":273,"context_line":"    # scoped token."}],"source_content_type":"text/x-python","patch_set":1,"id":"475d7cd2_933a7d89","line":270,"updated":"2022-04-27 15:59:44.000000000","message":"I can update this as well.","commit_id":"ad8ac88ffc8c5895bda0f4b1d393778e993f89f1"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"f4ad83ee2b64268aedbc63bb8a37870895a69013","unresolved":false,"context_lines":[{"line_number":267,"context_line":"              tenant_id, request.user.username)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    endpoint, __ \u003d utils.fix_auth_url_version_prefix(request.user.endpoint)"},{"line_number":270,"context_line":"    session \u003d utils.get_session()"},{"line_number":271,"context_line":"    # Keystone can be configured to prevent exchanging a scoped token for"},{"line_number":272,"context_line":"    # another token. Always use the unscoped token for requesting a"},{"line_number":273,"context_line":"    # scoped token."}],"source_content_type":"text/x-python","patch_set":1,"id":"65462414_5a9a72f2","line":270,"in_reply_to":"475d7cd2_933a7d89","updated":"2022-04-27 16:00:31.000000000","message":"Done","commit_id":"ad8ac88ffc8c5895bda0f4b1d393778e993f89f1"}]}
