)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e762ce68e1ec5779877735712dac82fb8265c6e6","unresolved":false,"context_lines":[{"line_number":18,"context_line":"get_highest_client_server_version, but doing the version discovery via"},{"line_number":19,"context_line":"the same keystoneauth1 session that\u0027s configured for use with the client"},{"line_number":20,"context_line":"itself, thus inheriting any SSL configuration as appropriate."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"[1] https://review.openstack.org/#/c/469579/"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I4de355195281009a5979710d7f14ae8ea11d10e0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bf659307_bc16c954","line":21,"updated":"2018-03-28 21:24:04.000000000","message":"Add a mention that we\u0027ll eventually remove all of this when we\u0027re using KSA for the cinderclient stuff and can just get the version information from the endpoint data in the KSA adapter, rather than relying on cinderclient itself.","commit_id":"35f0558d60290d936084a22e0de6e9a12fc4b0d8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c258c8e43fadfad4e1c5aaca346fb7d9816d0994","unresolved":false,"context_lines":[{"line_number":18,"context_line":"get_highest_client_server_version, but doing the version discovery via"},{"line_number":19,"context_line":"the same keystoneauth1 session that\u0027s configured for use with the client"},{"line_number":20,"context_line":"itself, thus inheriting any SSL configuration as appropriate."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"[1] https://review.openstack.org/#/c/469579/"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I4de355195281009a5979710d7f14ae8ea11d10e0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bf659307_17b6ae3f","line":21,"in_reply_to":"bf659307_bc16c954","updated":"2018-03-28 21:30:45.000000000","message":"I was gonna say something along those lines... but it\u0027s not totally clear how much of it we can move/remove, or whether it\u0027ll be because of the ksa integration or because we fix cinderclient, or what.  So I thought it best to avoid the discussion entirely.","commit_id":"35f0558d60290d936084a22e0de6e9a12fc4b0d8"}],"nova/tests/unit/volume/test_cinder.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"aa5ee92ea22d33c5194b9471a504bbdd9f5e4ecf","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"                return_value\u003d\u00273\u0027)"},{"line_number":1012,"context_line":"    @mock.patch(\u0027nova.volume.cinder._get_highest_client_server_version\u0027,"},{"line_number":1013,"context_line":"                # Fake the case that cinder is really old."},{"line_number":1014,"context_line":"                return_value\u003dcinder_api_versions.APIVersion(\u00272.0\u0027))"},{"line_number":1015,"context_line":"    def test_create_v3_client_with_microversion_too_new(self,"},{"line_number":1016,"context_line":"                                                        get_highest_version,"},{"line_number":1017,"context_line":"                                                        get_volume_api):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_b4232ebd","line":1014,"updated":"2018-03-29 14:13:04.000000000","message":"Heh, appears you tripped up a hacking check:\n\nhttp://logs.openstack.org/08/557508/1/check/openstack-tox-pep8/c2ba60f/job-output.txt.gz#_2018-03-28_21_07_54_370792\n\n./nova/tests/unit/volume/test_cinder.py:1012:5: N332  the api_version decorator must be the first decorator on a method.","commit_id":"35f0558d60290d936084a22e0de6e9a12fc4b0d8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1af4108ddd7d9fa231ff061c58173ced28e5f188","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"                return_value\u003d\u00273\u0027)"},{"line_number":1012,"context_line":"    @mock.patch(\u0027nova.volume.cinder._get_highest_client_server_version\u0027,"},{"line_number":1013,"context_line":"                # Fake the case that cinder is really old."},{"line_number":1014,"context_line":"                return_value\u003dcinder_api_versions.APIVersion(\u00272.0\u0027))"},{"line_number":1015,"context_line":"    def test_create_v3_client_with_microversion_too_new(self,"},{"line_number":1016,"context_line":"                                                        get_highest_version,"},{"line_number":1017,"context_line":"                                                        get_volume_api):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_a1d52fe7","line":1014,"in_reply_to":"bf659307_b4232ebd","updated":"2018-03-29 15:08:12.000000000","message":"That\u0027s a bug in the hacking check, nah?","commit_id":"35f0558d60290d936084a22e0de6e9a12fc4b0d8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"22fc808f92bb1e6e7c99a3fd3cfba13415c6d039","unresolved":false,"context_lines":[{"line_number":1010,"context_line":"    @mock.patch(\u0027nova.volume.cinder._get_highest_client_server_version\u0027,"},{"line_number":1011,"context_line":"                # Fake the case that cinder is really old."},{"line_number":1012,"context_line":"                return_value\u003dcinder_api_versions.APIVersion(\u00272.0\u0027))"},{"line_number":1013,"context_line":"    @mock.patch(\u0027cinderclient.client.get_volume_api_from_url\u0027,"},{"line_number":1014,"context_line":"                return_value\u003d\u00273\u0027)"},{"line_number":1015,"context_line":"    def test_create_v3_client_with_microversion_too_new(self,"},{"line_number":1016,"context_line":"                                                        get_highest_version,"},{"line_number":1017,"context_line":"                                                        get_volume_api):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_6169571f","line":1014,"range":{"start_line":1013,"start_character":0,"end_line":1014,"end_character":33},"updated":"2018-03-29 15:11:08.000000000","message":"The params need to be reordered too.","commit_id":"3e0338afebaaec8fd2526f704ed998525cd038fd"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b0217424523a3ea0b8e7c2ffa39c6063e7120c3f","unresolved":false,"context_lines":[{"line_number":1010,"context_line":"    @mock.patch(\u0027nova.volume.cinder._get_highest_client_server_version\u0027,"},{"line_number":1011,"context_line":"                # Fake the case that cinder is really old."},{"line_number":1012,"context_line":"                return_value\u003dcinder_api_versions.APIVersion(\u00272.0\u0027))"},{"line_number":1013,"context_line":"    @mock.patch(\u0027cinderclient.client.get_volume_api_from_url\u0027,"},{"line_number":1014,"context_line":"                return_value\u003d\u00273\u0027)"},{"line_number":1015,"context_line":"    def test_create_v3_client_with_microversion_too_new(self,"},{"line_number":1016,"context_line":"                                                        get_highest_version,"},{"line_number":1017,"context_line":"                                                        get_volume_api):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_e15ec742","line":1014,"range":{"start_line":1013,"start_character":0,"end_line":1014,"end_character":33},"in_reply_to":"bf659307_6169571f","updated":"2018-03-29 15:15:18.000000000","message":"Done","commit_id":"3e0338afebaaec8fd2526f704ed998525cd038fd"}],"nova/volume/cinder.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"708bc92cd438a11c8993f70627d2c917be06aea6","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    raise cinder_exception.Unauthorized(401, message\u003derr_msg)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"def _check_microversion(url, microversion):"},{"line_number":76,"context_line":"    \"\"\"Checks to see if the requested microversion is supported by the current"},{"line_number":77,"context_line":"    version of python-cinderclient and the volume API endpoint."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_dc961df1","side":"PARENT","line":75,"updated":"2018-03-28 21:22:14.000000000","message":"The diff would be not so bad if you didn\u0027t move this.","commit_id":"d73b9ab558c349188fde473cabe75fbe84b911d1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c258c8e43fadfad4e1c5aaca346fb7d9816d0994","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    raise cinder_exception.Unauthorized(401, message\u003derr_msg)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"def _check_microversion(url, microversion):"},{"line_number":76,"context_line":"    \"\"\"Checks to see if the requested microversion is supported by the current"},{"line_number":77,"context_line":"    version of python-cinderclient and the volume API endpoint."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_f77c5a84","side":"PARENT","line":75,"in_reply_to":"bf659307_dc961df1","updated":"2018-03-28 21:30:45.000000000","message":"I think that\u0027s just gerrit being silly.  I didn\u0027t move it - I added the new stuff in front of it, and then changed it slightly.  It looks cleaner under git diff.","commit_id":"d73b9ab558c349188fde473cabe75fbe84b911d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"708bc92cd438a11c8993f70627d2c917be06aea6","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            # leave as is without cropping."},{"line_number":140,"context_line":"            version_url \u003d url"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        response \u003d _SESSION.get(version_url, auth\u003dauth)"},{"line_number":143,"context_line":"        data \u003d jsonutils.loads(response.text)"},{"line_number":144,"context_line":"        versions \u003d data[\u0027versions\u0027]"},{"line_number":145,"context_line":"        for version in versions:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_dcf13d6d","line":142,"range":{"start_line":142,"start_character":19,"end_line":142,"end_character":55},"updated":"2018-03-28 21:22:14.000000000","message":"Yup so this is the difference from cinderclient:\n\nhttps://github.com/openstack/python-cinderclient/blob/571e5d8c4d089b8082782c13ec83861b7e59364c/cinderclient/client.py#L109","commit_id":"35f0558d60290d936084a22e0de6e9a12fc4b0d8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"708bc92cd438a11c8993f70627d2c917be06aea6","unresolved":false,"context_lines":[{"line_number":163,"context_line":"    min_server, max_server \u003d _get_server_version(context, url)"},{"line_number":164,"context_line":"    max_client \u003d cinder_api_versions.APIVersion("},{"line_number":165,"context_line":"        cinder_api_versions.MAX_VERSION)"},{"line_number":166,"context_line":"    return min(max_server, max_client)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"def _check_microversion(context, url, microversion):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_3cf87947","line":166,"updated":"2018-03-28 21:22:14.000000000","message":"This is different:\n\nhttps://github.com/openstack/python-cinderclient/blob/571e5d8c4d089b8082782c13ec83861b7e59364c/cinderclient/client.py#L128","commit_id":"35f0558d60290d936084a22e0de6e9a12fc4b0d8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c258c8e43fadfad4e1c5aaca346fb7d9816d0994","unresolved":false,"context_lines":[{"line_number":163,"context_line":"    min_server, max_server \u003d _get_server_version(context, url)"},{"line_number":164,"context_line":"    max_client \u003d cinder_api_versions.APIVersion("},{"line_number":165,"context_line":"        cinder_api_versions.MAX_VERSION)"},{"line_number":166,"context_line":"    return min(max_server, max_client)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"def _check_microversion(context, url, microversion):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_971f1e5a","line":166,"in_reply_to":"bf659307_3cf87947","updated":"2018-03-28 21:30:45.000000000","message":"See below.","commit_id":"35f0558d60290d936084a22e0de6e9a12fc4b0d8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"708bc92cd438a11c8993f70627d2c917be06aea6","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    :raises: CinderAPIVersionNotAvailable if the microversion is not available."},{"line_number":180,"context_line":"    \"\"\""},{"line_number":181,"context_line":"    max_api_version \u003d _get_highest_client_server_version(context, url)"},{"line_number":182,"context_line":"    # Check if the max_api_version matches the requested minimum microversion."},{"line_number":183,"context_line":"    if max_api_version.matches(microversion):"},{"line_number":184,"context_line":"        # The requested microversion is supported by the client and the server."},{"line_number":185,"context_line":"        return microversion"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_5c61ad04","line":182,"updated":"2018-03-28 21:22:14.000000000","message":"This is different, presumably because you dropped the get_string() in _get_highest_client_server_version, but that was there for a reason, but maybe that\u0027s not necessary anymore. Maybe that was a workaround on the nova side before Ica4d718b3de31c31da047f07c5154b242e122596 in cinderclient.","commit_id":"35f0558d60290d936084a22e0de6e9a12fc4b0d8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c258c8e43fadfad4e1c5aaca346fb7d9816d0994","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    :raises: CinderAPIVersionNotAvailable if the microversion is not available."},{"line_number":180,"context_line":"    \"\"\""},{"line_number":181,"context_line":"    max_api_version \u003d _get_highest_client_server_version(context, url)"},{"line_number":182,"context_line":"    # Check if the max_api_version matches the requested minimum microversion."},{"line_number":183,"context_line":"    if max_api_version.matches(microversion):"},{"line_number":184,"context_line":"        # The requested microversion is supported by the client and the server."},{"line_number":185,"context_line":"        return microversion"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_d729168a","line":182,"in_reply_to":"bf659307_5c61ad04","updated":"2018-03-28 21:30:45.000000000","message":"Right.  Previously, the cinderclient code was returning it as a string rather than as an APIVersion, and then the nova code was immediately converting it *back* to an APIVersion so we could do .matches() on it.  Since we now have control over both pieces, that back-and-forth is no longer necessary.","commit_id":"35f0558d60290d936084a22e0de6e9a12fc4b0d8"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"ed01f44fdad36b15fef5e11ed992fa76ffb349b0","unresolved":false,"context_lines":[{"line_number":101,"context_line":"# This method is copied/adapted from cinderclient.client.get_server_version so"},{"line_number":102,"context_line":"# we can use _SESSION.get rather than a raw requests.get to retrieve the"},{"line_number":103,"context_line":"# version document. This enables HTTPS by gleaning cert info from the session"},{"line_number":104,"context_line":"# config."},{"line_number":105,"context_line":"def _get_server_version(context, url):"},{"line_number":106,"context_line":"    \"\"\"Queries the server via the naked endpoint and gets version info."},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_070c243f","line":104,"updated":"2018-03-29 21:54:29.000000000","message":"Thank you for this comment.","commit_id":"20eaaee2334957eb8739ecca524a1c4aa9f246e9"}]}
