)]}'
{"nova/volume/cinder.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d3d70d2238e0c8a4dd46f1f0766cb114ef29d0d6","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    endpoint_override \u003d None"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    auth \u003d context.get_auth_plugin()"},{"line_number":74,"context_line":"    service_type, service_name, interface \u003d CONF.cinder.catalog_info.split(\u0027:\u0027)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    service_parameters \u003d {\u0027service_type\u0027: service_type,"},{"line_number":77,"context_line":"                          \u0027service_name\u0027: service_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_1c469423","line":74,"range":{"start_line":74,"start_character":44,"end_line":74,"end_character":68},"updated":"2016-12-12 17:14:57.000000000","message":"You\u0027re still getting \"volumev2:cinderv2:publicURL\" which is the default, so you\u0027ll probably want to change that to v3 in this patch to test it out.","commit_id":"81afa45bf249dc56751b901b353483f9133f016e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b1f81a102c5af74b4c9913c8571fe3e3bdbfe13","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                                connect_retries\u003dCONF.cinder.http_retries,"},{"line_number":97,"context_line":"                                **service_parameters)"},{"line_number":98,"context_line":"    if version \u003d\u003d \u00273\u0027:"},{"line_number":99,"context_line":"        api_version \u003d api_versions.get_highest_version(client)"},{"line_number":100,"context_line":"        CINDER_API_MICROVERSION \u003d api_version.ver_minor"},{"line_number":101,"context_line":"        msg \u003d _LW(\u0027CINDER_API_MICROVERSION set to %s\u0027 % CINDER_API_MICROVERSION)"},{"line_number":102,"context_line":"        LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_11b898c7","line":99,"range":{"start_line":99,"start_character":35,"end_line":99,"end_character":54},"updated":"2017-01-05 19:05:00.000000000","message":"Oh this is going to blow up because that change isn\u0027t in cinderclient yet.","commit_id":"9c0ab91d0b549978ff58093994fc36d248d2d317"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d01173045046d2792283ef850a4ad05857e66006","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    if version \u003d\u003d \u00271\u0027:"},{"line_number":90,"context_line":"        raise exception.UnsupportedCinderAPIVersion(version\u003dversion)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    client \u003d cinder_client.Client(version,"},{"line_number":93,"context_line":"                                session\u003d_SESSION,"},{"line_number":94,"context_line":"                                auth\u003dauth,"},{"line_number":95,"context_line":"                                endpoint_override\u003dendpoint_override,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_69c6549b","line":92,"updated":"2017-01-06 01:31:58.000000000","message":"Hitting the same failures that Ildiko was:\n\nhttp://logs.openstack.org/82/385682/3/check/gate-tempest-dsvm-neutron-full-ubuntu-xenial/0a4185b/logs/screen-n-cpu.txt.gz?level\u003dTRACE#_2017-01-05_19_30_30_353","commit_id":"362054f5be34af0b0da7d306a8fc90967d2dd099"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5a51b4ee2ba77163bb9c0a5061ff8b7737070f76","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                                **service_parameters)"},{"line_number":98,"context_line":"    if version \u003d\u003d \u00273\u0027:"},{"line_number":99,"context_line":"        if hasattr(api_versions, \u0027get_highest_version\u0027):"},{"line_number":100,"context_line":"            api_version \u003d api_versions.get_highest_version(client)"},{"line_number":101,"context_line":"            CINDER_API_MICROVERSION \u003d api_version.ver_minor"},{"line_number":102,"context_line":"            msg \u003d _LW(\u0027CINDER_API_MICROVERSION set to %s\u0027 %"},{"line_number":103,"context_line":"                      CINDER_API_MICROVERSION)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a3c09a3_82522adc","line":100,"range":{"start_line":100,"start_character":39,"end_line":100,"end_character":58},"updated":"2017-01-12 22:19:54.000000000","message":"This is actually a bad idea. Nova is the client, and needs to opt-in to the microversions it can understand. So while we want to know the highest microversion available on the cinder v3 endpoint that we\u0027re talking to, we still need to pin the actual version that we\u0027re going to use.\n\nFor example, if our target version is 3.24 but the cinder endpoint only provides up to 3.15 (max in newton), then we can\u0027t do whatever we needed to do with 3.24. But if the max version available is 3.30, for example, we still only want to request 3.24 because that\u0027s the version that nova would understand, because there could be things in \u003e3.24 that break nova if it\u0027s not expecting them.","commit_id":"362054f5be34af0b0da7d306a8fc90967d2dd099"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"25ad463122f6c4ab0aad41969370d968bb0db98e","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                                **service_parameters)"},{"line_number":98,"context_line":"    if version \u003d\u003d \u00273\u0027:"},{"line_number":99,"context_line":"        if hasattr(api_versions, \u0027get_highest_version\u0027):"},{"line_number":100,"context_line":"            api_version \u003d api_versions.get_highest_version(client)"},{"line_number":101,"context_line":"            CINDER_API_MICROVERSION \u003d api_version.ver_minor"},{"line_number":102,"context_line":"            msg \u003d _LW(\u0027CINDER_API_MICROVERSION set to %s\u0027 %"},{"line_number":103,"context_line":"                      CINDER_API_MICROVERSION)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a3c09a3_eec44260","line":100,"range":{"start_line":100,"start_character":39,"end_line":100,"end_character":58},"in_reply_to":"7a3c09a3_2304f17c","updated":"2017-01-16 17:56:32.000000000","message":"I don\u0027t think we want this configured in nova.conf. Nova knows which microversion it needs at a minimum to make some specific call to cinder for the new flows, so we\u0027re going to have to hard-code that in nova.","commit_id":"362054f5be34af0b0da7d306a8fc90967d2dd099"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"b4c04ab87b42b24112abbdfee09417c71c4b0074","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                                **service_parameters)"},{"line_number":98,"context_line":"    if version \u003d\u003d \u00273\u0027:"},{"line_number":99,"context_line":"        if hasattr(api_versions, \u0027get_highest_version\u0027):"},{"line_number":100,"context_line":"            api_version \u003d api_versions.get_highest_version(client)"},{"line_number":101,"context_line":"            CINDER_API_MICROVERSION \u003d api_version.ver_minor"},{"line_number":102,"context_line":"            msg \u003d _LW(\u0027CINDER_API_MICROVERSION set to %s\u0027 %"},{"line_number":103,"context_line":"                      CINDER_API_MICROVERSION)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a3c09a3_2304f17c","line":100,"range":{"start_line":100,"start_character":39,"end_line":100,"end_character":58},"in_reply_to":"7a3c09a3_82522adc","updated":"2017-01-13 17:12:40.000000000","message":"Yes. I think we\u0027d want some nova.conf entry for \"highest_cinderclient_version\".\nThen we could query the server for it\u0027s highest version (using a mechanism such as L#100) and pick the mutually highest.\nAnd all this will need a static method in the cinderclient, to do this before we instantiate the client.","commit_id":"362054f5be34af0b0da7d306a8fc90967d2dd099"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"16360a21230da451845b056ddda5083e161dbb19","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                                **service_parameters)"},{"line_number":98,"context_line":"    if version \u003d\u003d \u00273\u0027:"},{"line_number":99,"context_line":"        if hasattr(api_versions, \u0027get_highest_version\u0027):"},{"line_number":100,"context_line":"            api_version \u003d api_versions.get_highest_version(client)"},{"line_number":101,"context_line":"            CINDER_API_MICROVERSION \u003d api_version.ver_minor"},{"line_number":102,"context_line":"            msg \u003d _LW(\u0027CINDER_API_MICROVERSION set to %s\u0027 %"},{"line_number":103,"context_line":"                      CINDER_API_MICROVERSION)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_382892e0","line":100,"range":{"start_line":100,"start_character":39,"end_line":100,"end_character":58},"in_reply_to":"7a3c09a3_eec44260","updated":"2017-05-31 15:59:56.000000000","message":"Exactly. The code in nova is the thing that knows what microversions it understands how to consume. Nova is the consumer in this case, not the nova operator.\n\nNova actually needs to know the range - it needs to know the min and max version available (although the min number is pretty much always going to be the same- in the future if old microversions ever get dropped, coding for both is future proof.\n\nThen, when calls are being made, matching \"as nova I know how to make calls at microversion X, Y and Z\" with Microversion range A-B is available is a thing.\n\nIt likely can\u0027t be as simple as \"I only support making calls at 3.37\" - because rolling upgrades. There\u0027s always the chance that the cinder is a release or two behind. In those cases, nova needs to _know_ it\u0027s talking to a cinder that has an older microversion and it needs to be able to respond accordingly.\n\nAs a stop-gap for now, calling get_highest_client_server_version should be enough to know the  max version, and then if nova wants to make a call that exceeds that, it can at least know about it.","commit_id":"362054f5be34af0b0da7d306a8fc90967d2dd099"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d01173045046d2792283ef850a4ad05857e66006","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    if version \u003d\u003d \u00273\u0027:"},{"line_number":99,"context_line":"        if hasattr(api_versions, \u0027get_highest_version\u0027):"},{"line_number":100,"context_line":"            api_version \u003d api_versions.get_highest_version(client)"},{"line_number":101,"context_line":"            CINDER_API_MICROVERSION \u003d api_version.ver_minor"},{"line_number":102,"context_line":"            msg \u003d _LW(\u0027CINDER_API_MICROVERSION set to %s\u0027 %"},{"line_number":103,"context_line":"                      CINDER_API_MICROVERSION)"},{"line_number":104,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_c9e2e02e","line":101,"updated":"2017-01-06 01:31:58.000000000","message":"This needs to be set as a global first.","commit_id":"362054f5be34af0b0da7d306a8fc90967d2dd099"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"0b244176afa1b3f2727f6283c8691c255f78aab7","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                      CINDER_API_MICROVERSION)"},{"line_number":104,"context_line":"            LOG.warning(msg)"},{"line_number":105,"context_line":"        else:"},{"line_number":106,"context_line":"            LOG.warning(_LW(\u0027Unable to determine highest Cinder V3 version.\u0027))"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    return client"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_f42f8285","line":106,"updated":"2017-01-05 19:20:55.000000000","message":"We could set to 3.0 as the default here.","commit_id":"362054f5be34af0b0da7d306a8fc90967d2dd099"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"16360a21230da451845b056ddda5083e161dbb19","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                      CINDER_API_MICROVERSION)"},{"line_number":104,"context_line":"            LOG.warning(msg)"},{"line_number":105,"context_line":"        else:"},{"line_number":106,"context_line":"            LOG.warning(_LW(\u0027Unable to determine highest Cinder V3 version.\u0027))"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    return client"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_18514e63","line":106,"in_reply_to":"ba5201f7_f42f8285","updated":"2017-05-31 15:59:56.000000000","message":"Yup.","commit_id":"362054f5be34af0b0da7d306a8fc90967d2dd099"}]}
