)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c2ca8d3911d9be9839b70296c137e9758f640dac","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Modify check_attach in volume_api in order to enable the functionality"},{"line_number":10,"context_line":"in Nova."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Boot from multiattach volume is blocked in case the \u0027source_type\u0027 and"},{"line_number":13,"context_line":"\u0027destination_type\u0027 is volume and \u0027boot_index\u0027 is 0 in the"},{"line_number":14,"context_line":"block_device_mapping."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"APIIMpact Enabling multiattach feature"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":37,"id":"9f91af0f_090a64d1","line":14,"range":{"start_line":12,"start_character":0,"end_line":14,"end_character":21},"updated":"2018-01-02 19:45:17.000000000","message":"I thought we said we\u0027d allow boot from volume with multiattach volumes?","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"d64e334afd4d49ce5133ea9a197c15d31a856447","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Modify check_attach in volume_api in order to enable the functionality"},{"line_number":10,"context_line":"in Nova."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Boot from multiattach volume is blocked in case the \u0027source_type\u0027 and"},{"line_number":13,"context_line":"\u0027destination_type\u0027 is volume and \u0027boot_index\u0027 is 0 in the"},{"line_number":14,"context_line":"block_device_mapping."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"APIIMpact Enabling multiattach feature"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":37,"id":"9f91af0f_4f0b828d","line":14,"range":{"start_line":12,"start_character":0,"end_line":14,"end_character":21},"in_reply_to":"9f91af0f_090a64d1","updated":"2018-01-03 10:37:53.000000000","message":"Removed te code bit, forgot the commit message... :/","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c2ca8d3911d9be9839b70296c137e9758f640dac","unresolved":false,"context_lines":[{"line_number":13,"context_line":"\u0027destination_type\u0027 is volume and \u0027boot_index\u0027 is 0 in the"},{"line_number":14,"context_line":"block_device_mapping."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"APIIMpact Enabling multiattach feature"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Partially-implements: blueprint multi-attach-volume"},{"line_number":19,"context_line":"Change-Id: I02120ef8767c3f9c9497bff67101e57e204ed6f4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":37,"id":"9f91af0f_69f8d0c3","line":16,"updated":"2018-01-02 19:45:17.000000000","message":"You can remove this, the APIImpact tag is only used on the nova-specs repo.","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"d64e334afd4d49ce5133ea9a197c15d31a856447","unresolved":false,"context_lines":[{"line_number":13,"context_line":"\u0027destination_type\u0027 is volume and \u0027boot_index\u0027 is 0 in the"},{"line_number":14,"context_line":"block_device_mapping."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"APIIMpact Enabling multiattach feature"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Partially-implements: blueprint multi-attach-volume"},{"line_number":19,"context_line":"Change-Id: I02120ef8767c3f9c9497bff67101e57e204ed6f4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":37,"id":"9f91af0f_effff664","line":16,"in_reply_to":"9f91af0f_69f8d0c3","updated":"2018-01-03 10:37:53.000000000","message":"Done","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"}],"doc/source/user/support-matrix.ini":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c2ca8d3911d9be9839b70296c137e9758f640dac","unresolved":false,"context_lines":[{"line_number":1367,"context_line":"  the attach volume operation, it allows to attach a"},{"line_number":1368,"context_line":"  single volume to multiple instances. This operation is"},{"line_number":1369,"context_line":"  not considered to be mandatory to support."},{"line_number":1370,"context_line":"cli\u003d"},{"line_number":1371,"context_line":"driver-impl-xenserver\u003dmissing"},{"line_number":1372,"context_line":"driver-impl-libvirt-kvm-x86\u003dcomplete"},{"line_number":1373,"context_line":"driver-impl-libvirt-kvm-ppc64\u003dcomplete"}],"source_content_type":"text/x-properties","patch_set":37,"id":"9f91af0f_2902c8b5","line":1370,"updated":"2018-01-02 19:45:17.000000000","message":"This would be:\n\ncli\u003dnova volume-attach \u003cserver\u003e \u003cvolume\u003e","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"d64e334afd4d49ce5133ea9a197c15d31a856447","unresolved":false,"context_lines":[{"line_number":1367,"context_line":"  the attach volume operation, it allows to attach a"},{"line_number":1368,"context_line":"  single volume to multiple instances. This operation is"},{"line_number":1369,"context_line":"  not considered to be mandatory to support."},{"line_number":1370,"context_line":"cli\u003d"},{"line_number":1371,"context_line":"driver-impl-xenserver\u003dmissing"},{"line_number":1372,"context_line":"driver-impl-libvirt-kvm-x86\u003dcomplete"},{"line_number":1373,"context_line":"driver-impl-libvirt-kvm-ppc64\u003dcomplete"}],"source_content_type":"text/x-properties","patch_set":37,"id":"9f91af0f_af6c8e36","line":1370,"in_reply_to":"9f91af0f_2902c8b5","updated":"2018-01-03 10:37:53.000000000","message":"Done","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5d4a5ae6d07de67aceaa43b35e7208daf6b9b48d","unresolved":false,"context_lines":[{"line_number":1369,"context_line":"  not considered to be mandatory to support."},{"line_number":1370,"context_line":"cli\u003d"},{"line_number":1371,"context_line":"driver-impl-xenserver\u003dmissing"},{"line_number":1372,"context_line":"driver-impl-libvirt-kvm-x86\u003dcomplete"},{"line_number":1373,"context_line":"driver-impl-libvirt-kvm-ppc64\u003dcomplete"},{"line_number":1374,"context_line":"driver-impl-libvirt-kvm-s390x\u003dcomplete"},{"line_number":1375,"context_line":"driver-impl-libvirt-qemu-x86\u003dcomplete"}],"source_content_type":"text/x-properties","patch_set":40,"id":"9f91af0f_6ad662c6","line":1372,"range":{"start_line":1372,"start_character":12,"end_line":1372,"end_character":19},"updated":"2018-01-04 03:45:54.000000000","message":"Gonna need to call out the version constraints for qemu/libvirt in here somewhere.","commit_id":"376dc1b6d3880a026e22376800aecfd0000205c1"}],"nova/api/openstack/api_version_request.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"693927c49ba9d366ac49651ac05476d05ec59641","unresolved":false,"context_lines":[{"line_number":139,"context_line":"             related limits and quota resources are also removed."},{"line_number":140,"context_line":"    * 2.58 - Add pagination support and changes-since filter for"},{"line_number":141,"context_line":"             os-instance-actions API."},{"line_number":142,"context_line":"    * 2.59 - Add support for attaching a single volume to multiple instances."},{"line_number":143,"context_line":"\"\"\""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":52,"id":"7f96bb07_984a547e","line":142,"updated":"2018-01-11 16:36:21.000000000","message":"This is going to have to be 2.60 because https://review.openstack.org/#/c/330406/ is approved and got 2.59.","commit_id":"c5e628d3e61bf9999eb08e7120df948fccffa3b7"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"240812139179cb937a13043b8d31f2a081800e09","unresolved":false,"context_lines":[{"line_number":139,"context_line":"             related limits and quota resources are also removed."},{"line_number":140,"context_line":"    * 2.58 - Add pagination support and changes-since filter for"},{"line_number":141,"context_line":"             os-instance-actions API."},{"line_number":142,"context_line":"    * 2.59 - Add support for attaching a single volume to multiple instances."},{"line_number":143,"context_line":"\"\"\""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":52,"id":"7f96bb07_e65959fe","line":142,"in_reply_to":"7f96bb07_984a547e","updated":"2018-01-12 12:28:23.000000000","message":"Done","commit_id":"c5e628d3e61bf9999eb08e7120df948fccffa3b7"}],"nova/api/openstack/compute/rest_api_version_history.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c2ca8d3911d9be9839b70296c137e9758f640dac","unresolved":false,"context_lines":[{"line_number":746,"context_line":""},{"line_number":747,"context_line":"From this version of the API users can attach a ``multiattach`` capable volume"},{"line_number":748,"context_line":"to multiple instances. The API request for creating the additional attachments"},{"line_number":749,"context_line":"is the same. The chosen virt driver and the volume back end has to support the"},{"line_number":750,"context_line":"functionality as well."}],"source_content_type":"text/x-rst","patch_set":37,"id":"9f91af0f_e92dc046","line":749,"range":{"start_line":749,"start_character":51,"end_line":749,"end_character":59},"updated":"2018-01-02 19:45:17.000000000","message":"type? The block storage API user deals with the volume type, so that\u0027s probably the term to use here.","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"}],"nova/compute/api.py":[{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"61a1003f4f57c0bf63a5e3b5d62ed78f60ef2c9f","unresolved":false,"context_lines":[{"line_number":1598,"context_line":""},{"line_number":1599,"context_line":"                    volume_id \u003d bdm.get(\u0027volume_id\u0027)"},{"line_number":1600,"context_line":"                    volume \u003d self.volume_api.get(context, volume_id)"},{"line_number":1601,"context_line":"                    if volume and volume[\u0027multiattach\u0027]:"},{"line_number":1602,"context_line":"                        raise exception.BootFromMultiattachVolumeNotSupported("},{"line_number":1603,"context_line":"                            volume_id\u003dvolume_id)"},{"line_number":1604,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"df87a7cf_cb230fbe","line":1601,"range":{"start_line":1601,"start_character":23,"end_line":1601,"end_character":29},"updated":"2017-12-14 10:21:46.000000000","message":"why should we check in this?\nIMO, if we pass the wrong volume_id, then cinderclient will raise an exception. In other case, we will have a volume.","commit_id":"b638b0669805a9c8be24b10102704083de135ee8"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"dbd02c5496b2f6a16e8269bcae9d6ce8cb1fad02","unresolved":false,"context_lines":[{"line_number":1598,"context_line":""},{"line_number":1599,"context_line":"                    volume_id \u003d bdm.get(\u0027volume_id\u0027)"},{"line_number":1600,"context_line":"                    volume \u003d self.volume_api.get(context, volume_id)"},{"line_number":1601,"context_line":"                    if volume and volume[\u0027multiattach\u0027]:"},{"line_number":1602,"context_line":"                        raise exception.BootFromMultiattachVolumeNotSupported("},{"line_number":1603,"context_line":"                            volume_id\u003dvolume_id)"},{"line_number":1604,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"df87a7cf_97b4fc83","line":1601,"range":{"start_line":1601,"start_character":23,"end_line":1601,"end_character":29},"in_reply_to":"df87a7cf_2d8ff423","updated":"2017-12-18 08:41:12.000000000","message":"I mean in #L1600\nwe are getting volume via cinderclient. If volume is exist, we will get a not None variable (volume), in other case we will get an error.\n\nThat mean in #L1601, we no need to check if volume and volume[\u0027multiattach\u0027], we just need something like volume[\u0027multiattach\u0027], right?\n\nIf i\u0027m wrong at any point, please clear it for me. Thanks!","commit_id":"b638b0669805a9c8be24b10102704083de135ee8"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"3297cd85ad4d1a2e46fd0dcf1369694616f49c2e","unresolved":false,"context_lines":[{"line_number":1598,"context_line":""},{"line_number":1599,"context_line":"                    volume_id \u003d bdm.get(\u0027volume_id\u0027)"},{"line_number":1600,"context_line":"                    volume \u003d self.volume_api.get(context, volume_id)"},{"line_number":1601,"context_line":"                    if volume and volume[\u0027multiattach\u0027]:"},{"line_number":1602,"context_line":"                        raise exception.BootFromMultiattachVolumeNotSupported("},{"line_number":1603,"context_line":"                            volume_id\u003dvolume_id)"},{"line_number":1604,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"df87a7cf_90306658","line":1601,"range":{"start_line":1601,"start_character":23,"end_line":1601,"end_character":29},"in_reply_to":"df87a7cf_97b4fc83","updated":"2017-12-19 10:31:26.000000000","message":"Sorry, I misunderstood your first comment.\n\nSo yes, get returns a NotFound exception, so you are right, that one is not needed there. I don\u0027t now at this point why it was originally added, probably by mistake.\n\nThis code part will be removed though due to what we agreed on in the latest version of the \u0027multiattach\u0027 spec: https://specs.openstack.org/openstack/nova-specs/specs/queens/approved/cinder-volume-multi-attach.html","commit_id":"b638b0669805a9c8be24b10102704083de135ee8"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"8996dd811e5de4dbb1b4f703b1d5400bbf48582a","unresolved":false,"context_lines":[{"line_number":1598,"context_line":""},{"line_number":1599,"context_line":"                    volume_id \u003d bdm.get(\u0027volume_id\u0027)"},{"line_number":1600,"context_line":"                    volume \u003d self.volume_api.get(context, volume_id)"},{"line_number":1601,"context_line":"                    if volume and volume[\u0027multiattach\u0027]:"},{"line_number":1602,"context_line":"                        raise exception.BootFromMultiattachVolumeNotSupported("},{"line_number":1603,"context_line":"                            volume_id\u003dvolume_id)"},{"line_number":1604,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"df87a7cf_2d8ff423","line":1601,"range":{"start_line":1601,"start_character":23,"end_line":1601,"end_character":29},"in_reply_to":"df87a7cf_cb230fbe","updated":"2017-12-17 22:29:09.000000000","message":"It\u0027s not the volume_id here. It is an old patch and a while back we said we don\u0027t want to boot from a \u0027multiattach\u0027 volume. In that sense this check is to see whether the device is a volume and if the boot_index is \u00270\u0027 that means that it\u0027s also the boot device. And if all these conditions met and the volume is marked \u0027multiattach\u0027 we raised an exception.","commit_id":"b638b0669805a9c8be24b10102704083de135ee8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c2ca8d3911d9be9839b70296c137e9758f640dac","unresolved":false,"context_lines":[{"line_number":1586,"context_line":""},{"line_number":1587,"context_line":"        Returns a tuple of (instances, reservation_id)"},{"line_number":1588,"context_line":"        \"\"\""},{"line_number":1589,"context_line":""},{"line_number":1590,"context_line":"        if requested_networks and max_count is not None and max_count \u003e 1:"},{"line_number":1591,"context_line":"            self._check_multiple_instances_with_specified_ip("},{"line_number":1592,"context_line":"                requested_networks)"}],"source_content_type":"text/x-python","patch_set":37,"id":"9f91af0f_093344ad","line":1589,"updated":"2018-01-02 19:45:17.000000000","message":"unrelated whitespace change","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"d64e334afd4d49ce5133ea9a197c15d31a856447","unresolved":false,"context_lines":[{"line_number":1586,"context_line":""},{"line_number":1587,"context_line":"        Returns a tuple of (instances, reservation_id)"},{"line_number":1588,"context_line":"        \"\"\""},{"line_number":1589,"context_line":""},{"line_number":1590,"context_line":"        if requested_networks and max_count is not None and max_count \u003e 1:"},{"line_number":1591,"context_line":"            self._check_multiple_instances_with_specified_ip("},{"line_number":1592,"context_line":"                requested_networks)"}],"source_content_type":"text/x-python","patch_set":37,"id":"9f91af0f_ef5b7684","line":1589,"in_reply_to":"9f91af0f_093344ad","updated":"2018-01-03 10:37:53.000000000","message":"Done","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c2ca8d3911d9be9839b70296c137e9758f640dac","unresolved":false,"context_lines":[{"line_number":3654,"context_line":"            #             the same time. When db access is removed from"},{"line_number":3655,"context_line":"            #             compute, the bdm will be created here and we will"},{"line_number":3656,"context_line":"            #             have to make sure that they are assigned atomically."},{"line_number":3657,"context_line":"            volume_bdm \u003d self.compute_rpcapi.reserve_block_device_name("},{"line_number":3658,"context_line":"                context, instance, device, volume_id, disk_bus\u003ddisk_bus,"},{"line_number":3659,"context_line":"                device_type\u003ddevice_type, tag\u003dtag)"},{"line_number":3660,"context_line":"        return volume_bdm"},{"line_number":3661,"context_line":""},{"line_number":3662,"context_line":"    def _check_volume_already_attached_to_instance(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":37,"id":"9f91af0f_c9af9c92","line":3659,"range":{"start_line":3657,"start_character":12,"end_line":3659,"end_character":49},"updated":"2018-01-02 19:45:17.000000000","message":"I was wondering if we can do something with the new microversion and the virt driver capability check like we have here for tagged attach (microversion 2.49).\n\nThis is an RPC call down to the compute and for tagged attach, we check the virt driver capability for tagged attach:\n\nhttps://github.com/openstack/nova/blob/afd45295f44c51fbd7ac543a82cee8f383054f00/nova/compute/manager.py#L5162-L5165\n\nThere is a similar check in the compute RPC API client code if the compute is too old to check the capability:\n\nhttps://github.com/openstack/nova/blob/afd45295f44c51fbd7ac543a82cee8f383054f00/nova/compute/rpcapi.py#L976\n\nSo we could do something similar for multiattach, but the question is what would we do? We shouldn\u0027t block on just the volume saying it supports multiattach if the driver doesn\u0027t support it, because the driver could attach to the volume if the volume is not already attached to another instance. So would our check then be:\n\n1. New microversion 2.59 requested.\n2. volume.multiattach is True\n3. volume.attachments is not empty (it\u0027s already attached)","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1dbceb1afd2f23f1b47d95a3c13b50b07b8f77f2","unresolved":false,"context_lines":[{"line_number":3654,"context_line":"            #             the same time. When db access is removed from"},{"line_number":3655,"context_line":"            #             compute, the bdm will be created here and we will"},{"line_number":3656,"context_line":"            #             have to make sure that they are assigned atomically."},{"line_number":3657,"context_line":"            volume_bdm \u003d self.compute_rpcapi.reserve_block_device_name("},{"line_number":3658,"context_line":"                context, instance, device, volume_id, disk_bus\u003ddisk_bus,"},{"line_number":3659,"context_line":"                device_type\u003ddevice_type, tag\u003dtag)"},{"line_number":3660,"context_line":"        return volume_bdm"},{"line_number":3661,"context_line":""},{"line_number":3662,"context_line":"    def _check_volume_already_attached_to_instance(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":37,"id":"9f91af0f_0b0eae3a","line":3659,"range":{"start_line":3657,"start_character":12,"end_line":3659,"end_character":49},"in_reply_to":"9f91af0f_4bb83675","updated":"2018-01-04 16:39:13.000000000","message":"I\u0027m good with just blocking attaching a multiattach volume if the backend compute is too old or doesn\u0027t support multiattach, regardless of the number of attachments the volume has. I wrote the comment when I was thinking about backward compat where nova didn\u0027t care if you attached a volume to an instance and it was marked as multiattach, but that was also before I knew that Cinder blocked multiattach altogether in Pike:\n\nhttps://review.openstack.org/#/c/428365/","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"83bcd71fd71918331d6aa4724bff4083836bb17a","unresolved":false,"context_lines":[{"line_number":3654,"context_line":"            #             the same time. When db access is removed from"},{"line_number":3655,"context_line":"            #             compute, the bdm will be created here and we will"},{"line_number":3656,"context_line":"            #             have to make sure that they are assigned atomically."},{"line_number":3657,"context_line":"            volume_bdm \u003d self.compute_rpcapi.reserve_block_device_name("},{"line_number":3658,"context_line":"                context, instance, device, volume_id, disk_bus\u003ddisk_bus,"},{"line_number":3659,"context_line":"                device_type\u003ddevice_type, tag\u003dtag)"},{"line_number":3660,"context_line":"        return volume_bdm"},{"line_number":3661,"context_line":""},{"line_number":3662,"context_line":"    def _check_volume_already_attached_to_instance(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":37,"id":"9f91af0f_4bb83675","line":3659,"range":{"start_line":3657,"start_character":12,"end_line":3659,"end_character":49},"in_reply_to":"9f91af0f_8ffaea3f","updated":"2018-01-04 16:34:37.000000000","message":"FWIW, that fallback seems like a really bad idea, as on another host we would just take a peak and attach the second one even though the first one isn\u0027t safe, and boom, we have an issue.","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"d64e334afd4d49ce5133ea9a197c15d31a856447","unresolved":false,"context_lines":[{"line_number":3654,"context_line":"            #             the same time. When db access is removed from"},{"line_number":3655,"context_line":"            #             compute, the bdm will be created here and we will"},{"line_number":3656,"context_line":"            #             have to make sure that they are assigned atomically."},{"line_number":3657,"context_line":"            volume_bdm \u003d self.compute_rpcapi.reserve_block_device_name("},{"line_number":3658,"context_line":"                context, instance, device, volume_id, disk_bus\u003ddisk_bus,"},{"line_number":3659,"context_line":"                device_type\u003ddevice_type, tag\u003dtag)"},{"line_number":3660,"context_line":"        return volume_bdm"},{"line_number":3661,"context_line":""},{"line_number":3662,"context_line":"    def _check_volume_already_attached_to_instance(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":37,"id":"9f91af0f_8ffaea3f","line":3659,"range":{"start_line":3657,"start_character":12,"end_line":3659,"end_character":49},"in_reply_to":"9f91af0f_c9af9c92","updated":"2018-01-03 10:37:53.000000000","message":"So you\u0027re saying that if a volume is set to multiattach\u003dTrue, but the driver doesn\u0027t support multi-attach, then we should fall back to handling the volume as non-multi-attach?","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c2ca8d3911d9be9839b70296c137e9758f640dac","unresolved":false,"context_lines":[{"line_number":3679,"context_line":"        except exception.VolumeBDMNotFound:"},{"line_number":3680,"context_line":"            pass"},{"line_number":3681,"context_line":""},{"line_number":3682,"context_line":"    def _check_attach_and_reserve_volume(self, context, volume_id, instance,"},{"line_number":3683,"context_line":"                                         bdm):"},{"line_number":3684,"context_line":"        volume \u003d self.volume_api.get(context, volume_id)"},{"line_number":3685,"context_line":"        self.volume_api.check_availability_zone(context, volume,"}],"source_content_type":"text/x-python","patch_set":37,"id":"9f91af0f_69a2109d","line":3682,"range":{"start_line":3682,"start_character":8,"end_line":3682,"end_character":40},"updated":"2018-01-02 19:45:17.000000000","message":"Would we need to do any validation in here using the new microversion? I don\u0027t think we can fail if volume.multiattach\u003dTrue and we\u0027re below microversion 2.59 because we allow attaching those types of volumes today, we just don\u0027t allow attaching a volume to more than one instance, so we\u0027d have to check that in the API if we were going to have a specific restriction.\n\nAs noted elsewhere, the volume does have an attachments list in the response and if it\u0027s multiattach\u003dTrue and it\u0027s already attached to another instance, we could enforce the check using the new microversion 2.59 if we wanted, otherwise we risk failing late in the compute after we\u0027ve already returned a 202 response to the user.","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"d64e334afd4d49ce5133ea9a197c15d31a856447","unresolved":false,"context_lines":[{"line_number":3679,"context_line":"        except exception.VolumeBDMNotFound:"},{"line_number":3680,"context_line":"            pass"},{"line_number":3681,"context_line":""},{"line_number":3682,"context_line":"    def _check_attach_and_reserve_volume(self, context, volume_id, instance,"},{"line_number":3683,"context_line":"                                         bdm):"},{"line_number":3684,"context_line":"        volume \u003d self.volume_api.get(context, volume_id)"},{"line_number":3685,"context_line":"        self.volume_api.check_availability_zone(context, volume,"}],"source_content_type":"text/x-python","patch_set":37,"id":"9f91af0f_ef45b671","line":3682,"range":{"start_line":3682,"start_character":8,"end_line":3682,"end_character":40},"in_reply_to":"9f91af0f_69a2109d","updated":"2018-01-03 10:37:53.000000000","message":"We need to check the Cinder microversion and above we said we will check the driver too. Do you also want to check the Nova API microversion?","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"012dbe74f5d08ca8e9b76e1cd3d9f2ff42ee74a9","unresolved":false,"context_lines":[{"line_number":3696,"context_line":"            raise exception.MultiattachNotSupportedOldMicroversion()"},{"line_number":3697,"context_line":""},{"line_number":3698,"context_line":"        if \u0027id\u0027 in instance:"},{"line_number":3699,"context_line":"            # This is a volume attach to an existing instance, so"},{"line_number":3700,"context_line":"            # we only care about the cell the instance is in."},{"line_number":3701,"context_line":"            min_compute_version \u003d objects.Service.get_minimum_version("},{"line_number":3702,"context_line":"                context, \u0027nova-compute\u0027)"},{"line_number":3703,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":55,"id":"7f96bb07_91637142","line":3700,"range":{"start_line":3699,"start_character":1,"end_line":3700,"end_character":61},"updated":"2018-01-17 15:23:08.000000000","message":"Didn\u0027t we have to check here if the multiattach is supported if request?","commit_id":"fa3514de6b99d33ecf461bff9a04fc12b3e71065"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b791b695f3c6fb1bf3c2ed3afa2d502a2196b73a","unresolved":false,"context_lines":[{"line_number":3696,"context_line":"            raise exception.MultiattachNotSupportedOldMicroversion()"},{"line_number":3697,"context_line":""},{"line_number":3698,"context_line":"        if \u0027id\u0027 in instance:"},{"line_number":3699,"context_line":"            # This is a volume attach to an existing instance, so"},{"line_number":3700,"context_line":"            # we only care about the cell the instance is in."},{"line_number":3701,"context_line":"            min_compute_version \u003d objects.Service.get_minimum_version("},{"line_number":3702,"context_line":"                context, \u0027nova-compute\u0027)"},{"line_number":3703,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":55,"id":"7f96bb07_26a7bebf","line":3700,"range":{"start_line":3699,"start_character":1,"end_line":3700,"end_character":61},"in_reply_to":"7f96bb07_91637142","updated":"2018-01-17 15:47:17.000000000","message":"Ildiko helped me on IRC to understand the flow. [1] So in case of _attach_volume the rpc.reserve_block_device_name is called earlier than _check_attach_and_reserve_volume and the rpc call already checks the compute version.\n\nSo this is OK as is.\n \n[1] http://eavesdrop.openstack.org/irclogs/%23openstack-nova/%23openstack-nova.2018-01-17.log.html#t2018-01-17T15:23:41","commit_id":"fa3514de6b99d33ecf461bff9a04fc12b3e71065"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"56c1e31cd77b0b7f01fc13ceeb89a9c4e84959f8","unresolved":false,"context_lines":[{"line_number":3706,"context_line":"            min_compute_version \u003d \\"},{"line_number":3707,"context_line":"                objects.service.get_minimum_version_all_cells("},{"line_number":3708,"context_line":"                    context, [\u0027nova-compute\u0027])"},{"line_number":3709,"context_line":"            # Check to see if the computes have been upgraded to support"},{"line_number":3710,"context_line":"            # booting from a multiattach volume."},{"line_number":3711,"context_line":"            if (volume[\u0027multiattach\u0027] and"},{"line_number":3712,"context_line":"                    min_compute_version \u003c MIN_COMPUTE_MULTIATTACH):"},{"line_number":3713,"context_line":"                raise exception.MultiattachSupportNotYetAvailable()"},{"line_number":3714,"context_line":""},{"line_number":3715,"context_line":"        if min_compute_version \u003e\u003d CINDER_V3_ATTACH_MIN_COMPUTE_VERSION:"},{"line_number":3716,"context_line":"            # Attempt a new style volume attachment, but fallback to old-style"}],"source_content_type":"text/x-python","patch_set":56,"id":"7f96bb07_8db43837","line":3713,"range":{"start_line":3709,"start_character":0,"end_line":3713,"end_character":67},"updated":"2018-01-22 15:13:45.000000000","message":"Hmm, should this be indented?\n\nI think we want to check this whether or not \u0027id\u0027 in instance?","commit_id":"9d3c340e24b2e99fb8262d4afef891a787e4ddaa"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0ba047f5da4c55a1db9249d8a4ce2ed2c7be9811","unresolved":false,"context_lines":[{"line_number":3706,"context_line":"            min_compute_version \u003d \\"},{"line_number":3707,"context_line":"                objects.service.get_minimum_version_all_cells("},{"line_number":3708,"context_line":"                    context, [\u0027nova-compute\u0027])"},{"line_number":3709,"context_line":"            # Check to see if the computes have been upgraded to support"},{"line_number":3710,"context_line":"            # booting from a multiattach volume."},{"line_number":3711,"context_line":"            if (volume[\u0027multiattach\u0027] and"},{"line_number":3712,"context_line":"                    min_compute_version \u003c MIN_COMPUTE_MULTIATTACH):"},{"line_number":3713,"context_line":"                raise exception.MultiattachSupportNotYetAvailable()"},{"line_number":3714,"context_line":""},{"line_number":3715,"context_line":"        if min_compute_version \u003e\u003d CINDER_V3_ATTACH_MIN_COMPUTE_VERSION:"},{"line_number":3716,"context_line":"            # Attempt a new style volume attachment, but fallback to old-style"}],"source_content_type":"text/x-python","patch_set":56,"id":"7f96bb07_10ba7fdd","line":3713,"range":{"start_line":3709,"start_character":0,"end_line":3713,"end_character":67},"in_reply_to":"7f96bb07_503b279b","updated":"2018-01-22 15:30:54.000000000","message":"Ah, got it.","commit_id":"9d3c340e24b2e99fb8262d4afef891a787e4ddaa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"54c67d37653e862d798192ffadf85c0c006c9a02","unresolved":false,"context_lines":[{"line_number":3706,"context_line":"            min_compute_version \u003d \\"},{"line_number":3707,"context_line":"                objects.service.get_minimum_version_all_cells("},{"line_number":3708,"context_line":"                    context, [\u0027nova-compute\u0027])"},{"line_number":3709,"context_line":"            # Check to see if the computes have been upgraded to support"},{"line_number":3710,"context_line":"            # booting from a multiattach volume."},{"line_number":3711,"context_line":"            if (volume[\u0027multiattach\u0027] and"},{"line_number":3712,"context_line":"                    min_compute_version \u003c MIN_COMPUTE_MULTIATTACH):"},{"line_number":3713,"context_line":"                raise exception.MultiattachSupportNotYetAvailable()"},{"line_number":3714,"context_line":""},{"line_number":3715,"context_line":"        if min_compute_version \u003e\u003d CINDER_V3_ATTACH_MIN_COMPUTE_VERSION:"},{"line_number":3716,"context_line":"            # Attempt a new style volume attachment, but fallback to old-style"}],"source_content_type":"text/x-python","patch_set":56,"id":"7f96bb07_503b279b","line":3713,"range":{"start_line":3709,"start_character":0,"end_line":3713,"end_character":67},"in_reply_to":"7f96bb07_8db43837","updated":"2018-01-22 15:16:26.000000000","message":"In the other case above, the instance already exists in a cell and we\u0027re attaching a multiattach volume to it. In that case, we use the reserve_block_device_name method (which is an RPC call) to determine if (1) the compute is new enough to support multiattach and (2) if the backend compute driver supports the capability. So it\u0027s handled, albeit slightly different.","commit_id":"9d3c340e24b2e99fb8262d4afef891a787e4ddaa"}],"nova/tests/functional/integrated_helpers.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0ba047f5da4c55a1db9249d8a4ce2ed2c7be9811","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            # We now have a valid imageId"},{"line_number":196,"context_line":"            server[self._image_ref_parameter] \u003d image[\u0027id\u0027]"},{"line_number":197,"context_line":"        else:"},{"line_number":198,"context_line":"            server[self._image_ref_parameter] \u003d image"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # Set a valid flavorId"},{"line_number":201,"context_line":"        flavor \u003d self.api.get_flavor(flavor_id)"}],"source_content_type":"text/x-python","patch_set":56,"id":"7f96bb07_b0f70bd5","line":198,"range":{"start_line":198,"start_character":48,"end_line":198,"end_character":53},"updated":"2018-01-22 15:30:54.000000000","message":"Certainly not going to block on this...\n\nMicro Nit: Should this parameter be image_id? or on line 192 we should call that image_ref?","commit_id":"9d3c340e24b2e99fb8262d4afef891a787e4ddaa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4f3c5583a75c1e57aa40030ac0c42ac13fefd367","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            # We now have a valid imageId"},{"line_number":196,"context_line":"            server[self._image_ref_parameter] \u003d image[\u0027id\u0027]"},{"line_number":197,"context_line":"        else:"},{"line_number":198,"context_line":"            server[self._image_ref_parameter] \u003d image"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # Set a valid flavorId"},{"line_number":201,"context_line":"        flavor \u003d self.api.get_flavor(flavor_id)"}],"source_content_type":"text/x-python","patch_set":56,"id":"7f96bb07_907c4fb6","line":198,"range":{"start_line":198,"start_character":48,"end_line":198,"end_character":53},"in_reply_to":"7f96bb07_b0f70bd5","updated":"2018-01-22 15:36:42.000000000","message":"good point, can fix in a follow up","commit_id":"9d3c340e24b2e99fb8262d4afef891a787e4ddaa"}],"nova/tests/unit/api/openstack/compute/test_block_device_mapping.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"012dbe74f5d08ca8e9b76e1cd3d9f2ff42ee74a9","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        params \u003d {block_device_mapping.ATTRIBUTE_NAME: self.bdm}"},{"line_number":116,"context_line":"        self._test_create(params, no_image\u003dTrue)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        mock_validate_bdm.assert_called_once_with("},{"line_number":119,"context_line":"            mock.ANY, mock.ANY, mock.ANY, mock.ANY, mock.ANY)"},{"line_number":120,"context_line":"        mock_bdm_image_metadata.assert_called_once_with("},{"line_number":121,"context_line":"            mock.ANY, mock.ANY, False)"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":55,"id":"7f96bb07_2cc48290","line":119,"range":{"start_line":118,"start_character":0,"end_line":119,"end_character":61},"updated":"2018-01-17 15:23:08.000000000","message":"nit: this could be replaced with self.assertEqual(1, mock_validate_bdm.call_count) as it seems we don\u0027t care about the actual parameters of the call","commit_id":"fa3514de6b99d33ecf461bff9a04fc12b3e71065"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"012dbe74f5d08ca8e9b76e1cd3d9f2ff42ee74a9","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        mock_validate_bdm.assert_called_once_with(mock.ANY,"},{"line_number":355,"context_line":"                                                  mock.ANY,"},{"line_number":356,"context_line":"                                                  mock.ANY,"},{"line_number":357,"context_line":"                                                  mock.ANY,"},{"line_number":358,"context_line":"                                                  mock.ANY)"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    @mock.patch.object(compute_api.API, \u0027_validate_bdm\u0027)"}],"source_content_type":"text/x-python","patch_set":55,"id":"7f96bb07_ac3df28f","line":357,"updated":"2018-01-17 15:23:08.000000000","message":"ditto","commit_id":"fa3514de6b99d33ecf461bff9a04fc12b3e71065"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"012dbe74f5d08ca8e9b76e1cd3d9f2ff42ee74a9","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        mock_validate_bdm.assert_called_once_with(mock.ANY,"},{"line_number":377,"context_line":"                                                  mock.ANY,"},{"line_number":378,"context_line":"                                                  mock.ANY,"},{"line_number":379,"context_line":"                                                  mock.ANY,"},{"line_number":380,"context_line":"                                                  mock.ANY)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    @mock.patch.object("}],"source_content_type":"text/x-python","patch_set":55,"id":"7f96bb07_4c3eae8b","line":379,"updated":"2018-01-17 15:23:08.000000000","message":"ditto","commit_id":"fa3514de6b99d33ecf461bff9a04fc12b3e71065"}],"releasenotes/notes/shared-volume-between-guests-6eb6cc9e3bcf80fa.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c2ca8d3911d9be9839b70296c137e9758f640dac","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - This release adds support to attach one volume to multiple"},{"line_number":4,"context_line":"    VM instances. The feature can only be used in Nova if the"},{"line_number":5,"context_line":"    volume is created in Cinder with the \u0027multiattach\u0027 flag set"},{"line_number":6,"context_line":"    to True. It is the responsibility of the user to use a"},{"line_number":7,"context_line":"    proper filesystem that supports shared read/write access."},{"line_number":8,"context_line":"    The feature is supported with using Libvirt."}],"source_content_type":"text/x-yaml","patch_set":37,"id":"9f91af0f_69d0d0f8","line":7,"range":{"start_line":6,"start_character":13,"end_line":7,"end_character":61},"updated":"2018-01-02 19:45:17.000000000","message":"filesystem in the guest? or on the host? If the latter, it\u0027s not up to the end user, it\u0027s up to the operator.","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"d64e334afd4d49ce5133ea9a197c15d31a856447","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - This release adds support to attach one volume to multiple"},{"line_number":4,"context_line":"    VM instances. The feature can only be used in Nova if the"},{"line_number":5,"context_line":"    volume is created in Cinder with the \u0027multiattach\u0027 flag set"},{"line_number":6,"context_line":"    to True. It is the responsibility of the user to use a"},{"line_number":7,"context_line":"    proper filesystem that supports shared read/write access."},{"line_number":8,"context_line":"    The feature is supported with using Libvirt."}],"source_content_type":"text/x-yaml","patch_set":37,"id":"9f91af0f_6f59a658","line":7,"range":{"start_line":6,"start_character":13,"end_line":7,"end_character":61},"in_reply_to":"9f91af0f_69d0d0f8","updated":"2018-01-03 10:37:53.000000000","message":"In the guest to avoid screwing up the volume.","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c2ca8d3911d9be9839b70296c137e9758f640dac","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    volume is created in Cinder with the \u0027multiattach\u0027 flag set"},{"line_number":6,"context_line":"    to True. It is the responsibility of the user to use a"},{"line_number":7,"context_line":"    proper filesystem that supports shared read/write access."},{"line_number":8,"context_line":"    The feature is supported with using Libvirt."}],"source_content_type":"text/x-yaml","patch_set":37,"id":"9f91af0f_090b448e","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":48},"updated":"2018-01-02 19:45:17.000000000","message":"I\u0027d re-word this to say, \"This feature is currently only supported by the libvirt compute driver.\"","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"d64e334afd4d49ce5133ea9a197c15d31a856447","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    volume is created in Cinder with the \u0027multiattach\u0027 flag set"},{"line_number":6,"context_line":"    to True. It is the responsibility of the user to use a"},{"line_number":7,"context_line":"    proper filesystem that supports shared read/write access."},{"line_number":8,"context_line":"    The feature is supported with using Libvirt."}],"source_content_type":"text/x-yaml","patch_set":37,"id":"9f91af0f_2f315e0c","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":48},"in_reply_to":"9f91af0f_090b448e","updated":"2018-01-03 10:37:53.000000000","message":"Done","commit_id":"d1af9a41a16049c0d2f8647f9cf1df25400bdcc0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7ba444923b36f741b1a856d7525acc574241143f","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    volume is created in Cinder with the \u0027multiattach\u0027 flag set"},{"line_number":6,"context_line":"    to True. It is the responsibility of the user to use a"},{"line_number":7,"context_line":"    proper filesystem in the guest that supports shared read/write access."},{"line_number":8,"context_line":"    This feature is currently only supported by the libvirt compute driver."}],"source_content_type":"text/x-yaml","patch_set":44,"id":"9f91af0f_27a39e51","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":75},"updated":"2018-01-04 23:44:59.000000000","message":"We are going to need to call out the restrictions with the libvirt driver once we have that all sorted out:\n\nqemu\u003c2.10 or libvirt\u003e\u003d3.10 or using raw images (configure nova for libvirt.images_type\u003draw or use_cow_images\u003dFalse)","commit_id":"6bdb9d06712df3ceed6a224ab0deb88853ccc8ab"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ef7f7ae9725cc34977426132c7808002fd2a6abb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":45,"id":"9f91af0f_f9630919","line":11,"updated":"2018-01-05 16:30:04.000000000","message":"We could also link to https://specs.openstack.org/openstack/cinder-specs/specs/queens/enable-multiattach.html about configuration and setup required on the Cinder side.","commit_id":"19fed2ec3a22964f718187bb0ea89988297c1c83"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"05f294d0af6e8d95c50ff492cb958f4a1d3847e2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release adds support to attach a volume to multiple"},{"line_number":5,"context_line":"    server instances. The feature can only be used in Nova if the"}],"source_content_type":"text/x-yaml","patch_set":46,"id":"9f91af0f_5d28d8e0","line":2,"updated":"2018-01-05 22:50:26.000000000","message":"TODO:\n\nNeed to point out the microversion to handle this, and the restrictions around boot from volume (min compute version), shelved offloaded attach (not supported for multiattach volumes) and normal attach (compute must be new enough and support multiattach).","commit_id":"f9259ea27610ab15cf817ec9fbf94322988488e9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"46fc7675478549059747f496558c04431b088a44","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    This feature is currently only supported by the libvirt compute driver"},{"line_number":11,"context_line":"    and only then if qemu\u003c2.10 or libvirt\u003e3.10."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    See the `Cinder enable multiattach` spec for details on configuring"},{"line_number":14,"context_line":"    Cinder for multiattach support."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    .. _Cinder enable multiattach: https://specs.openstack.org/openstack/cinder-specs/specs/queens/enable-multiattach.html"}],"source_content_type":"text/x-yaml","patch_set":46,"id":"9f91af0f_7d3a7c34","line":13,"range":{"start_line":13,"start_character":12,"end_line":13,"end_character":39},"updated":"2018-01-05 22:49:10.000000000","message":"Oops, should be `Cinder enable multiattach`_","commit_id":"f9259ea27610ab15cf817ec9fbf94322988488e9"}]}
