)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"3073f403b1f8c64412ca41aa194fccf2ff40f561","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  regard to this encoding topic."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Tests for the internal production of the location header are adjusted"},{"line_number":56,"context_line":"to reflect these changes."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"[1] https://www.python.org/dev/peps/pep-3333/#a-note-on-string-types"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_efd3ef00","line":56,"updated":"2018-10-01 21:42:28.000000000","message":"I\u0027m unsure how or if to test the other changes. If we hope that something in the functional tests or tempest tests covers this, then it still does.\n\nIf there\u0027s nothing in tempest then we could probably add something that simply verifies the value of the location header, in python 3.","commit_id":"a61eb2ee41099b983ebbfb34656e11ae2bd35600"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"554fe908f6eaea8c4b503a43a59c36fd5a113437","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"1f769fc5_a6938b4f","updated":"2018-12-24 18:27:21.000000000","message":"A+ commit message","commit_id":"68a689b0f3e5bcdd8939fdadef21de38d06f4dd2"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d513ffc2f740a534252d3a16f84b26f8cfa6c353","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        link \u003d [l for l in robj.obj[\u0027server\u0027][\u0027links\u0027] if l[\u0027rel\u0027] \u003d\u003d \u0027self\u0027]"},{"line_number":69,"context_line":"        if link:"},{"line_number":70,"context_line":"            robj[\u0027Location\u0027] \u003d utils.utf8(link[0][\u0027href\u0027])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        # Convenience return"},{"line_number":73,"context_line":"        return robj"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_232586bf","side":"PARENT","line":70,"range":{"start_line":70,"start_character":31,"end_line":70,"end_character":41},"updated":"2018-10-01 18:31:41.000000000","message":"This was done with https://review.openstack.org/#/c/58523/ and part of that change was updated with I297f30aa6eb01fe3b53fd8c9b7853949be31156d and that serialize() method says, \"# In Py3.X Headers must be utf-8 strings\" so is this OK and the serialize() method handles it, or is there more to change?\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/api/openstack/wsgi.py#n323","commit_id":"ffdd8098383a6d5502fbfa7c921633b24512aadf"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"279c32f86f3fc382d162386d119ec199ba4c400a","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        link \u003d [l for l in robj.obj[\u0027server\u0027][\u0027links\u0027] if l[\u0027rel\u0027] \u003d\u003d \u0027self\u0027]"},{"line_number":69,"context_line":"        if link:"},{"line_number":70,"context_line":"            robj[\u0027Location\u0027] \u003d utils.utf8(link[0][\u0027href\u0027])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        # Convenience return"},{"line_number":73,"context_line":"        return robj"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ee48d5b4","side":"PARENT","line":70,"range":{"start_line":70,"start_character":31,"end_line":70,"end_character":41},"in_reply_to":"3f79a3b5_0ee75111","updated":"2018-10-01 19:10:28.000000000","message":"Okay, the problem there is that while the code is right in Change-Id: I297f30aa6eb01fe3b53fd8c9b7853949be31156d the comments are misleading. When (if?) I respin this I\u0027ll make those comments more correct.\n\nMy thinking at this point is that we\u0027re seeing double encoding happening but I need to get a working devstack to see.","commit_id":"ffdd8098383a6d5502fbfa7c921633b24512aadf"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"992f2e68d802ca5cad1bb9d57d0822f786f47114","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        link \u003d [l for l in robj.obj[\u0027server\u0027][\u0027links\u0027] if l[\u0027rel\u0027] \u003d\u003d \u0027self\u0027]"},{"line_number":69,"context_line":"        if link:"},{"line_number":70,"context_line":"            robj[\u0027Location\u0027] \u003d utils.utf8(link[0][\u0027href\u0027])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        # Convenience return"},{"line_number":73,"context_line":"        return robj"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0ee75111","side":"PARENT","line":70,"range":{"start_line":70,"start_character":31,"end_line":70,"end_character":41},"in_reply_to":"3f79a3b5_232586bf","updated":"2018-10-01 18:51:26.000000000","message":"Ugh.\n\nThings have changed some since 2013, but also the fact that nova is overriding some of webob\u0027s behaviors  is problematic. This may be more than I\u0027m willing to touch at this time, but I\u0027ll do some digging now to see if I can tease out if there is a bad problem, or merely a dumb problem.","commit_id":"ffdd8098383a6d5502fbfa7c921633b24512aadf"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"d61024481ae48853ec5579238eb8535ab3cc1048","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        link \u003d [l for l in robj.obj[\u0027server\u0027][\u0027links\u0027] if l[\u0027rel\u0027] \u003d\u003d \u0027self\u0027]"},{"line_number":69,"context_line":"        if link:"},{"line_number":70,"context_line":"            robj[\u0027Location\u0027] \u003d utils.utf8(link[0][\u0027href\u0027])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        # Convenience return"},{"line_number":73,"context_line":"        return robj"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_936d4832","side":"PARENT","line":70,"updated":"2018-12-01 09:47:42.000000000","message":"It seems now we can delete and clean up the utf8() method in nova/utils.py since this is the only use case.","commit_id":"ffdd8098383a6d5502fbfa7c921633b24512aadf"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"257c49e0c754448ce0c635be33414c2a883c0b3b","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        link \u003d [l for l in robj.obj[\u0027server\u0027][\u0027links\u0027] if l[\u0027rel\u0027] \u003d\u003d \u0027self\u0027]"},{"line_number":69,"context_line":"        if link:"},{"line_number":70,"context_line":"            robj[\u0027Location\u0027] \u003d utils.utf8(link[0][\u0027href\u0027])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        # Convenience return"},{"line_number":73,"context_line":"        return robj"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_b028689e","side":"PARENT","line":70,"in_reply_to":"3f79a3b5_936d4832","updated":"2018-12-03 18:14:40.000000000","message":"It\u0027s used in nova/network/ldapdns.py, which is deprecated but not yet removed.","commit_id":"ffdd8098383a6d5502fbfa7c921633b24512aadf"}],"nova/api/openstack/wsgi.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"d61024481ae48853ec5579238eb8535ab3cc1048","unresolved":false,"context_lines":[{"line_number":671,"context_line":"                response \u003d resp_obj.serialize(request, accept)"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        if hasattr(response, \u0027headers\u0027):"},{"line_number":674,"context_line":"            for hdr, val in list(response.headers.items()):"},{"line_number":675,"context_line":"                if not isinstance(val, six.text_type):"},{"line_number":676,"context_line":"                    val \u003d six.text_type(val)"},{"line_number":677,"context_line":"                if six.PY2:"},{"line_number":678,"context_line":"                    # In Py2.X Headers must be byte strings"},{"line_number":679,"context_line":"                    response.headers[hdr] \u003d encodeutils.safe_encode(val)"},{"line_number":680,"context_line":"                else:"},{"line_number":681,"context_line":"                    # In Py3.X Headers must be utf-8 strings"},{"line_number":682,"context_line":"                    response.headers[hdr] \u003d encodeutils.safe_decode("},{"line_number":683,"context_line":"                            encodeutils.safe_encode(val))"},{"line_number":684,"context_line":""},{"line_number":685,"context_line":"            if not request.api_version_request.is_null():"},{"line_number":686,"context_line":"                response.headers[API_VERSION_REQUEST_HEADER] \u003d \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_13905841","line":683,"range":{"start_line":674,"start_character":0,"end_line":683,"end_character":57},"updated":"2018-12-01 09:47:42.000000000","message":"At least, changing the comment on L354,458 while not changing here seems odd to me. Can we change this block as well, or can we delete this because this seems a duplicate block?","commit_id":"a61eb2ee41099b983ebbfb34656e11ae2bd35600"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"257c49e0c754448ce0c635be33414c2a883c0b3b","unresolved":false,"context_lines":[{"line_number":671,"context_line":"                response \u003d resp_obj.serialize(request, accept)"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        if hasattr(response, \u0027headers\u0027):"},{"line_number":674,"context_line":"            for hdr, val in list(response.headers.items()):"},{"line_number":675,"context_line":"                if not isinstance(val, six.text_type):"},{"line_number":676,"context_line":"                    val \u003d six.text_type(val)"},{"line_number":677,"context_line":"                if six.PY2:"},{"line_number":678,"context_line":"                    # In Py2.X Headers must be byte strings"},{"line_number":679,"context_line":"                    response.headers[hdr] \u003d encodeutils.safe_encode(val)"},{"line_number":680,"context_line":"                else:"},{"line_number":681,"context_line":"                    # In Py3.X Headers must be utf-8 strings"},{"line_number":682,"context_line":"                    response.headers[hdr] \u003d encodeutils.safe_decode("},{"line_number":683,"context_line":"                            encodeutils.safe_encode(val))"},{"line_number":684,"context_line":""},{"line_number":685,"context_line":"            if not request.api_version_request.is_null():"},{"line_number":686,"context_line":"                response.headers[API_VERSION_REQUEST_HEADER] \u003d \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_cb2219a6","line":683,"range":{"start_line":674,"start_character":0,"end_line":683,"end_character":57},"in_reply_to":"3f79a3b5_13905841","updated":"2018-12-03 18:14:40.000000000","message":"I\u0027ll update the comments, but I didn\u0027t want to change the code too much in this area because I couldn\u0027t unwind what was going on...\n\nThe nova wsgi stack is a maze of twisty passages...","commit_id":"a61eb2ee41099b983ebbfb34656e11ae2bd35600"}]}
