)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"72f297e28da2cf406061bf29b41a546301dfccf9","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix url in API response to get original"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This changes url in API response to get original of redirection"},{"line_number":10,"context_line":"if Header \u0027X-Forwarded-Host\u0027 is exist."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I10877522db5df66d14c01487de6297f1336cecaf"},{"line_number":13,"context_line":"Closes-Bug: 1488373"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa1b9901_4da8878c","line":10,"updated":"2015-08-25 21:06:48.000000000","message":"Suggest: \"This changes the url in the API response to get the original value of redirection if the header \u0027X-Forwarded-Host\u0027 exists.\"","commit_id":"90d817fcce376c48e856e271a6fb94d8a8f71ce0"}],"cinder/api/common.py":[{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"1c21a0501228e0a0fe28bb000a495c3be031ca37","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        app_url \u003d urllib.parse.urlparse(url)"},{"line_number":225,"context_line":"        url \u003d \u0027%s://%s%s\u0027 % (app_url.scheme,"},{"line_number":226,"context_line":"                             re.split(\u0027,\\s?\u0027, forwarded)[-1],"},{"line_number":227,"context_line":"                             app_url.path)"},{"line_number":228,"context_line":"    return url"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_c6efcc85","line":227,"updated":"2015-08-28 07:31:09.000000000","message":"The returned url won\u0027t carry fragment, i.e. \u0027#xxxx\u0027 at the end of url. Would that be a problem? Params and query component would also be lost.","commit_id":"795d76097d04b9635a7bf576b0c36bdaad24527a"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"4ddcb8ddf265452f8eeccdf08ab9c1c2ff283d7c","unresolved":false,"context_lines":[{"line_number":223,"context_line":"def get_request_url(request):"},{"line_number":224,"context_line":"    url \u003d request.application_url"},{"line_number":225,"context_line":"    headers \u003d request.headers"},{"line_number":226,"context_line":"    forwarded \u003d headers.get(\u0027X-Forwarded-Host\u0027)"},{"line_number":227,"context_line":"    if forwarded:"},{"line_number":228,"context_line":"        url_parts \u003d list(urllib.parse.urlsplit(url))"},{"line_number":229,"context_line":"        url_parts[1] \u003d re.split(\u0027,\\s?\u0027, forwarded)[-1]"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_c6e323a3","line":226,"updated":"2015-08-28 21:50:10.000000000","message":"This is fine. Default return value for .get is None.","commit_id":"d348d557581966160f8843f6a18eda8845ae432d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"06b4d8197964706758b55f7d329f9faa8bc7614b","unresolved":false,"context_lines":[{"line_number":223,"context_line":"def get_request_url(request):"},{"line_number":224,"context_line":"    url \u003d request.application_url"},{"line_number":225,"context_line":"    headers \u003d request.headers"},{"line_number":226,"context_line":"    forwarded \u003d headers.get(\u0027X-Forwarded-Host\u0027)"},{"line_number":227,"context_line":"    if forwarded:"},{"line_number":228,"context_line":"        url_parts \u003d list(urllib.parse.urlsplit(url))"},{"line_number":229,"context_line":"        url_parts[1] \u003d re.split(\u0027,\\s?\u0027, forwarded)[-1]"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_1910ac00","line":226,"updated":"2015-08-28 16:30:50.000000000","message":"What happens if \u0027X-Forwarded-Host\u0027 is not in headers? Does forwarded get populated with None? Note sure, but most of these you need to provide a default return value like headers.get(\u0027X-Forwarded-Host\u0027, None) see https://github.com/openstack/cinder/blob/master/cinder/volume/drivers/san/hp/hp_3par_common.py#L1699 for what I am talking about. If it is not None, \u0027if forwarded\u0027 will probably fail.\n\nNot positive so I am not giving a -1, but something to possibly look into.","commit_id":"d348d557581966160f8843f6a18eda8845ae432d"}],"cinder/tests/unit/api/test_common.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"a859b67dc84b7a9e38dbe02f30e0f348053d98fa","unresolved":false,"context_lines":[{"line_number":558,"context_line":"        result \u003d common.get_request_url(request)"},{"line_number":559,"context_line":"        self.assertEqual(app_url, result)"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"        request \u003d type(\u0027\u0027,(),{"},{"line_number":562,"context_line":"           \u0027application_url\u0027: app_url,"},{"line_number":563,"context_line":"           \u0027headers\u0027: {\u0027X-Forwarded-Host\u0027: \u0027192.168.0.243:24\u0027}"},{"line_number":564,"context_line":"        })"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_90b821e7","line":561,"updated":"2015-08-28 11:17:37.000000000","message":"Please break this into a separate test case.","commit_id":"17627de9176a1c7d880104400996e221c7aaead9"}]}
