)]}'
{"nova/tests/unit/virt/libvirt/test_blockinfo.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2fedd18506ef0291eaa91170f01662037613cce1","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        rescue_image_meta.properties \u003d rescue_props"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        mapping \u003d blockinfo.get_disk_mapping(\"kvm\", instance, \"virtio\", \"ide\","},{"line_number":284,"context_line":"                      image_meta, rescue\u003dTrue, block_device_info\u003dblock_info,"},{"line_number":285,"context_line":"                      rescue_image_meta\u003drescue_image_meta)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        self.assertEqual(expected, mapping)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_34517532","line":284,"range":{"start_line":284,"start_character":20,"end_line":284,"end_character":22},"updated":"2020-01-21 17:22:26.000000000","message":"nit: weird indentation (vim?)","commit_id":"ea5aa8495a23f7776fbcc70c6764a0be21d7fd06"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"4315bdf96b2b92ec15c20f2a6f68609856e7a8f9","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        rescue_image_meta.properties \u003d rescue_props"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        mapping \u003d blockinfo.get_disk_mapping(\"kvm\", instance, \"virtio\", \"ide\","},{"line_number":284,"context_line":"                      image_meta, rescue\u003dTrue, block_device_info\u003dblock_info,"},{"line_number":285,"context_line":"                      rescue_image_meta\u003drescue_image_meta)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        self.assertEqual(expected, mapping)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_c6cce963","line":284,"range":{"start_line":284,"start_character":20,"end_line":284,"end_character":22},"in_reply_to":"3fa7e38b_34517532","updated":"2020-01-22 12:46:16.000000000","message":"Done","commit_id":"ea5aa8495a23f7776fbcc70c6764a0be21d7fd06"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2fedd18506ef0291eaa91170f01662037613cce1","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        self.assertEqual(expected, mapping)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    def test_get_disk_mapping_stable_rescue_virtio_disk(self):"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        rescue_props \u003d {\u0027hw_rescue_bus\u0027: \u0027virtio\u0027}"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        expected \u003d {"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_547511c8","line":290,"updated":"2020-01-21 17:22:26.000000000","message":"Could we get some comments in here explaining what you\u0027re trying to achieve. I can grok them from the names and content, but docstrings are so much easier","commit_id":"ea5aa8495a23f7776fbcc70c6764a0be21d7fd06"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"4315bdf96b2b92ec15c20f2a6f68609856e7a8f9","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        self.assertEqual(expected, mapping)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    def test_get_disk_mapping_stable_rescue_virtio_disk(self):"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        rescue_props \u003d {\u0027hw_rescue_bus\u0027: \u0027virtio\u0027}"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        expected \u003d {"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_e6c9e550","line":290,"in_reply_to":"3fa7e38b_547511c8","updated":"2020-01-22 12:46:16.000000000","message":"Done","commit_id":"ea5aa8495a23f7776fbcc70c6764a0be21d7fd06"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2fedd18506ef0291eaa91170f01662037613cce1","unresolved":false,"context_lines":[{"line_number":19038,"context_line":"                                     \u0027disk.rescue\u0027: {\u0027dev\u0027: \u0027hda\u0027}}}"},{"line_number":19039,"context_line":"        else:"},{"line_number":19040,"context_line":"            rescue_data \u003d None"},{"line_number":19041,"context_line":"            disk_info \u003d disk_info \u003d {\u0027mapping\u0027: {\u0027disk\u0027: {}}}"},{"line_number":19042,"context_line":""},{"line_number":19043,"context_line":"        cfg \u003d drvr._get_guest_config(instance_ref,"},{"line_number":19044,"context_line":"                                    _fake_network_info(self),"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_d437c1fc","line":19041,"range":{"start_line":19041,"start_character":24,"end_line":19041,"end_character":36},"updated":"2020-01-21 17:22:26.000000000","message":"?","commit_id":"ea5aa8495a23f7776fbcc70c6764a0be21d7fd06"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"4315bdf96b2b92ec15c20f2a6f68609856e7a8f9","unresolved":false,"context_lines":[{"line_number":19038,"context_line":"                                     \u0027disk.rescue\u0027: {\u0027dev\u0027: \u0027hda\u0027}}}"},{"line_number":19039,"context_line":"        else:"},{"line_number":19040,"context_line":"            rescue_data \u003d None"},{"line_number":19041,"context_line":"            disk_info \u003d disk_info \u003d {\u0027mapping\u0027: {\u0027disk\u0027: {}}}"},{"line_number":19042,"context_line":""},{"line_number":19043,"context_line":"        cfg \u003d drvr._get_guest_config(instance_ref,"},{"line_number":19044,"context_line":"                                    _fake_network_info(self),"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_86d271fd","line":19041,"range":{"start_line":19041,"start_character":24,"end_line":19041,"end_character":36},"in_reply_to":"3fa7e38b_d437c1fc","updated":"2020-01-22 12:46:16.000000000","message":"Done","commit_id":"ea5aa8495a23f7776fbcc70c6764a0be21d7fd06"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2fedd18506ef0291eaa91170f01662037613cce1","unresolved":false,"context_lines":[{"line_number":21882,"context_line":"            mock_detach.assert_called_once_with(expected.to_xml(),"},{"line_number":21883,"context_line":"                                                flags\u003dexpected_flags)"},{"line_number":21884,"context_line":""},{"line_number":21885,"context_line":"    @mock.patch(\u0027nova.objects.block_device.BlockDeviceMapping.save\u0027)"},{"line_number":21886,"context_line":"    @mock.patch(\u0027nova.objects.image_meta.ImageMeta.from_image_ref\u0027)"},{"line_number":21887,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.LibvirtDriver.\u0027"},{"line_number":21888,"context_line":"                \u0027_get_all_assigned_mediated_devices\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_54fc310c","line":21885,"range":{"start_line":21885,"start_character":67,"end_line":21885,"end_character":68},"updated":"2020-01-21 17:22:26.000000000","message":"can you add \u0027new\u003dmock.Mock()\u0027 to avoid having to pass the function parameters, since you don\u0027t seem to need them","commit_id":"ea5aa8495a23f7776fbcc70c6764a0be21d7fd06"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"4315bdf96b2b92ec15c20f2a6f68609856e7a8f9","unresolved":false,"context_lines":[{"line_number":21882,"context_line":"            mock_detach.assert_called_once_with(expected.to_xml(),"},{"line_number":21883,"context_line":"                                                flags\u003dexpected_flags)"},{"line_number":21884,"context_line":""},{"line_number":21885,"context_line":"    @mock.patch(\u0027nova.objects.block_device.BlockDeviceMapping.save\u0027)"},{"line_number":21886,"context_line":"    @mock.patch(\u0027nova.objects.image_meta.ImageMeta.from_image_ref\u0027)"},{"line_number":21887,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.LibvirtDriver.\u0027"},{"line_number":21888,"context_line":"                \u0027_get_all_assigned_mediated_devices\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_e62005fb","line":21885,"range":{"start_line":21885,"start_character":67,"end_line":21885,"end_character":68},"in_reply_to":"3fa7e38b_54fc310c","updated":"2020-01-22 12:46:16.000000000","message":"TIL thanks.","commit_id":"ea5aa8495a23f7776fbcc70c6764a0be21d7fd06"}],"nova/virt/libvirt/blockinfo.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e78a9ed84cd7e1c7c123b1da22e2885263144e64","unresolved":false,"context_lines":[{"line_number":649,"context_line":"                                         device_type\u003drescue_device)"},{"line_number":650,"context_line":"        mapping[\u0027disk.rescue\u0027] \u003d rescue_info"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    return mapping"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"def get_disk_info(virt_type, instance, image_meta, block_device_info\u003dNone,"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_2bf53ccc","line":652,"updated":"2020-03-24 16:17:33.000000000","message":"I needed some time to parse the whole get_disk_mapping(). There was two modes in the baseline:\n* rescue\n* normal\n\nAnd now we have 3 modes\n* rescue\n* normal\n* stable rescue\n\nThe stable rescue is basically the normal mode + the rescue disk at the end of the mapping.\n\nI would refactor this into 3 helpers but I won\u0027t block on this.","commit_id":"baf28454915ecc3ea39a2356e7f18a8c4aba7c84"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"466e93c96d59734371b715d8eef639b3801b0ced","unresolved":false,"context_lines":[{"line_number":649,"context_line":"                                         device_type\u003drescue_device)"},{"line_number":650,"context_line":"        mapping[\u0027disk.rescue\u0027] \u003d rescue_info"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    return mapping"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"def get_disk_info(virt_type, instance, image_meta, block_device_info\u003dNone,"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_2150980a","line":652,"in_reply_to":"df33271e_1fc1832f","updated":"2020-03-26 11:30:09.000000000","message":"I\u0027m happy to review such refactor as a followup","commit_id":"baf28454915ecc3ea39a2356e7f18a8c4aba7c84"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f6225e55029e5ddfb75751cd3afdcf561a582b17","unresolved":false,"context_lines":[{"line_number":649,"context_line":"                                         device_type\u003drescue_device)"},{"line_number":650,"context_line":"        mapping[\u0027disk.rescue\u0027] \u003d rescue_info"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    return mapping"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"def get_disk_info(virt_type, instance, image_meta, block_device_info\u003dNone,"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_1fc1832f","line":652,"in_reply_to":"df33271e_2bf53ccc","updated":"2020-03-25 13:19:24.000000000","message":"That\u0027s valid and something I can definitely do in a follow up if you\u0027d like.","commit_id":"baf28454915ecc3ea39a2356e7f18a8c4aba7c84"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e78a9ed84cd7e1c7c123b1da22e2885263144e64","unresolved":false,"context_lines":[{"line_number":667,"context_line":"       Returns the disk mapping disk."},{"line_number":668,"context_line":"    \"\"\""},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    disk_bus \u003d get_disk_bus_for_device_type(instance, virt_type,"},{"line_number":671,"context_line":"                                            image_meta, \"disk\")"},{"line_number":672,"context_line":"    cdrom_bus \u003d get_disk_bus_for_device_type(instance, virt_type,"},{"line_number":673,"context_line":"                                             image_meta, \"cdrom\")"},{"line_number":674,"context_line":"    mapping \u003d get_disk_mapping(virt_type, instance,"},{"line_number":675,"context_line":"                               disk_bus, cdrom_bus,"},{"line_number":676,"context_line":"                               image_meta,"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_ebe19400","line":673,"range":{"start_line":670,"start_character":0,"end_line":673,"end_character":65},"updated":"2020-03-24 16:17:33.000000000","message":"Do we have to consider the requested bus of the rescue disk here?","commit_id":"baf28454915ecc3ea39a2356e7f18a8c4aba7c84"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"466e93c96d59734371b715d8eef639b3801b0ced","unresolved":false,"context_lines":[{"line_number":667,"context_line":"       Returns the disk mapping disk."},{"line_number":668,"context_line":"    \"\"\""},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    disk_bus \u003d get_disk_bus_for_device_type(instance, virt_type,"},{"line_number":671,"context_line":"                                            image_meta, \"disk\")"},{"line_number":672,"context_line":"    cdrom_bus \u003d get_disk_bus_for_device_type(instance, virt_type,"},{"line_number":673,"context_line":"                                             image_meta, \"cdrom\")"},{"line_number":674,"context_line":"    mapping \u003d get_disk_mapping(virt_type, instance,"},{"line_number":675,"context_line":"                               disk_bus, cdrom_bus,"},{"line_number":676,"context_line":"                               image_meta,"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_a13b08c6","line":673,"range":{"start_line":670,"start_character":0,"end_line":673,"end_character":65},"in_reply_to":"df33271e_bfe7b7e4","updated":"2020-03-26 11:30:09.000000000","message":"thanks","commit_id":"baf28454915ecc3ea39a2356e7f18a8c4aba7c84"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f6225e55029e5ddfb75751cd3afdcf561a582b17","unresolved":false,"context_lines":[{"line_number":667,"context_line":"       Returns the disk mapping disk."},{"line_number":668,"context_line":"    \"\"\""},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    disk_bus \u003d get_disk_bus_for_device_type(instance, virt_type,"},{"line_number":671,"context_line":"                                            image_meta, \"disk\")"},{"line_number":672,"context_line":"    cdrom_bus \u003d get_disk_bus_for_device_type(instance, virt_type,"},{"line_number":673,"context_line":"                                             image_meta, \"cdrom\")"},{"line_number":674,"context_line":"    mapping \u003d get_disk_mapping(virt_type, instance,"},{"line_number":675,"context_line":"                               disk_bus, cdrom_bus,"},{"line_number":676,"context_line":"                               image_meta,"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_bfe7b7e4","line":673,"range":{"start_line":670,"start_character":0,"end_line":673,"end_character":65},"in_reply_to":"df33271e_ebe19400","updated":"2020-03-25 13:19:24.000000000","message":"No, the rescue device can and will likely have a different bus to the original disks and cdroms.\n\nFor example, disks could be virtio-scsi, cdrom could be IDE but the rescue disk device is presented over USB.","commit_id":"baf28454915ecc3ea39a2356e7f18a8c4aba7c84"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f27fb2b494f46b7b2bff41dd56d03a9beeca3e92","unresolved":false,"context_lines":[{"line_number":88,"context_line":"CONF \u003d cfg.CONF"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"BOOT_DEV_FOR_TYPE \u003d {\u0027disk\u0027: \u0027hd\u0027, \u0027cdrom\u0027: \u0027cdrom\u0027, \u0027floppy\u0027: \u0027fd\u0027}"},{"line_number":91,"context_line":"# NOTE(aspiers): If you change this, don\u0027t forget to update the docs and"},{"line_number":92,"context_line":"# metadata for hw_*_bus in glance."},{"line_number":93,"context_line":"SUPPORTED_DEVICE_BUS \u003d {"},{"line_number":94,"context_line":"    \u0027qemu\u0027: [\u0027virtio\u0027, \u0027scsi\u0027, \u0027ide\u0027, \u0027usb\u0027, \u0027fdc\u0027, \u0027sata\u0027],"},{"line_number":95,"context_line":"    \u0027kvm\u0027: [\u0027virtio\u0027, \u0027scsi\u0027, \u0027ide\u0027, \u0027usb\u0027, \u0027fdc\u0027, \u0027sata\u0027],"},{"line_number":96,"context_line":"    \u0027xen\u0027: [\u0027xen\u0027, \u0027ide\u0027],"},{"line_number":97,"context_line":"    \u0027uml\u0027: [\u0027uml\u0027],"},{"line_number":98,"context_line":"    \u0027lxc\u0027: [\u0027lxc\u0027],"},{"line_number":99,"context_line":"    \u0027parallels\u0027: [\u0027ide\u0027, \u0027scsi\u0027]}"},{"line_number":100,"context_line":"SUPPORTED_DEVICE_TYPES \u003d (\u0027disk\u0027, \u0027cdrom\u0027, \u0027floppy\u0027, \u0027lun\u0027)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_87aa5c82","line":99,"range":{"start_line":91,"start_character":0,"end_line":99,"end_character":33},"updated":"2020-04-07 16:16:21.000000000","message":"Looks like a rebase conflict","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"41fed422fe83157de88931d13570c079210420af","unresolved":false,"context_lines":[{"line_number":88,"context_line":"CONF \u003d cfg.CONF"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"BOOT_DEV_FOR_TYPE \u003d {\u0027disk\u0027: \u0027hd\u0027, \u0027cdrom\u0027: \u0027cdrom\u0027, \u0027floppy\u0027: \u0027fd\u0027}"},{"line_number":91,"context_line":"# NOTE(aspiers): If you change this, don\u0027t forget to update the docs and"},{"line_number":92,"context_line":"# metadata for hw_*_bus in glance."},{"line_number":93,"context_line":"SUPPORTED_DEVICE_BUS \u003d {"},{"line_number":94,"context_line":"    \u0027qemu\u0027: [\u0027virtio\u0027, \u0027scsi\u0027, \u0027ide\u0027, \u0027usb\u0027, \u0027fdc\u0027, \u0027sata\u0027],"},{"line_number":95,"context_line":"    \u0027kvm\u0027: [\u0027virtio\u0027, \u0027scsi\u0027, \u0027ide\u0027, \u0027usb\u0027, \u0027fdc\u0027, \u0027sata\u0027],"},{"line_number":96,"context_line":"    \u0027xen\u0027: [\u0027xen\u0027, \u0027ide\u0027],"},{"line_number":97,"context_line":"    \u0027uml\u0027: [\u0027uml\u0027],"},{"line_number":98,"context_line":"    \u0027lxc\u0027: [\u0027lxc\u0027],"},{"line_number":99,"context_line":"    \u0027parallels\u0027: [\u0027ide\u0027, \u0027scsi\u0027]}"},{"line_number":100,"context_line":"SUPPORTED_DEVICE_TYPES \u003d (\u0027disk\u0027, \u0027cdrom\u0027, \u0027floppy\u0027, \u0027lun\u0027)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_ed8ccc36","line":99,"range":{"start_line":91,"start_character":0,"end_line":99,"end_character":33},"in_reply_to":"df33271e_87aa5c82","updated":"2020-04-08 14:07:22.000000000","message":"fup I36f84109e654e2aa746c95efa62a1b45b44534e8","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f27fb2b494f46b7b2bff41dd56d03a9beeca3e92","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    raise exception.TooManyDiskDevices(maximum\u003dmax_dev)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"# NOTE(aspiers): If you change this, don\u0027t forget to update the docs and"},{"line_number":212,"context_line":"# metadata for hw_*_bus in glance. In addition, these bus names map directly to"},{"line_number":213,"context_line":"# standard os-traits as \u0027foo\u0027 \u003d\u003e \u0027COMPUTE_STORAGE_BUS_FOO\u0027. If adding a new bus"},{"line_number":214,"context_line":"# name, make sure the standard trait conforms to this rule."},{"line_number":215,"context_line":"SUPPORTED_STORAGE_BUSES \u003d {"},{"line_number":216,"context_line":"    \u0027qemu\u0027: [\u0027virtio\u0027, \u0027scsi\u0027, \u0027ide\u0027, \u0027usb\u0027, \u0027fdc\u0027, \u0027sata\u0027],"},{"line_number":217,"context_line":"    \u0027kvm\u0027: [\u0027virtio\u0027, \u0027scsi\u0027, \u0027ide\u0027, \u0027usb\u0027, \u0027fdc\u0027, \u0027sata\u0027],"},{"line_number":218,"context_line":"    \u0027xen\u0027: [\u0027xen\u0027, \u0027ide\u0027],"},{"line_number":219,"context_line":"    \u0027uml\u0027: [\u0027uml\u0027],"},{"line_number":220,"context_line":"    \u0027lxc\u0027: [\u0027lxc\u0027],"},{"line_number":221,"context_line":"    \u0027parallels\u0027: [\u0027ide\u0027, \u0027scsi\u0027]"},{"line_number":222,"context_line":"}"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"def is_disk_bus_valid_for_virt(virt_type, disk_bus):"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_07c92c77","line":222,"range":{"start_line":210,"start_character":0,"end_line":222,"end_character":1},"updated":"2020-04-07 16:16:21.000000000","message":"Whoops","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"41fed422fe83157de88931d13570c079210420af","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    raise exception.TooManyDiskDevices(maximum\u003dmax_dev)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"# NOTE(aspiers): If you change this, don\u0027t forget to update the docs and"},{"line_number":212,"context_line":"# metadata for hw_*_bus in glance. In addition, these bus names map directly to"},{"line_number":213,"context_line":"# standard os-traits as \u0027foo\u0027 \u003d\u003e \u0027COMPUTE_STORAGE_BUS_FOO\u0027. If adding a new bus"},{"line_number":214,"context_line":"# name, make sure the standard trait conforms to this rule."},{"line_number":215,"context_line":"SUPPORTED_STORAGE_BUSES \u003d {"},{"line_number":216,"context_line":"    \u0027qemu\u0027: [\u0027virtio\u0027, \u0027scsi\u0027, \u0027ide\u0027, \u0027usb\u0027, \u0027fdc\u0027, \u0027sata\u0027],"},{"line_number":217,"context_line":"    \u0027kvm\u0027: [\u0027virtio\u0027, \u0027scsi\u0027, \u0027ide\u0027, \u0027usb\u0027, \u0027fdc\u0027, \u0027sata\u0027],"},{"line_number":218,"context_line":"    \u0027xen\u0027: [\u0027xen\u0027, \u0027ide\u0027],"},{"line_number":219,"context_line":"    \u0027uml\u0027: [\u0027uml\u0027],"},{"line_number":220,"context_line":"    \u0027lxc\u0027: [\u0027lxc\u0027],"},{"line_number":221,"context_line":"    \u0027parallels\u0027: [\u0027ide\u0027, \u0027scsi\u0027]"},{"line_number":222,"context_line":"}"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"def is_disk_bus_valid_for_virt(virt_type, disk_bus):"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_8d7d401e","line":222,"range":{"start_line":210,"start_character":0,"end_line":222,"end_character":1},"in_reply_to":"df33271e_07c92c77","updated":"2020-04-08 14:07:22.000000000","message":"fup I36f84109e654e2aa746c95efa62a1b45b44534e8","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f27fb2b494f46b7b2bff41dd56d03a9beeca3e92","unresolved":false,"context_lines":[{"line_number":697,"context_line":"    return uniq(boot_devs_dup)"},{"line_number":698,"context_line":""},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"def get_rescue_device(rescue_image_meta):"},{"line_number":701,"context_line":"    # Find and validate the hw_rescue_device rescue device"},{"line_number":702,"context_line":"    rescue_device \u003d rescue_image_meta.properties.get(\"hw_rescue_device\","},{"line_number":703,"context_line":"                                                     \"disk\")"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_c7a10498","line":700,"range":{"start_line":700,"start_character":22,"end_line":700,"end_character":39},"updated":"2020-04-07 16:16:21.000000000","message":"can you call this simply \u0027image_meta\u0027? The current name suggests it\u0027s something more than it it","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"41fed422fe83157de88931d13570c079210420af","unresolved":false,"context_lines":[{"line_number":697,"context_line":"    return uniq(boot_devs_dup)"},{"line_number":698,"context_line":""},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"def get_rescue_device(rescue_image_meta):"},{"line_number":701,"context_line":"    # Find and validate the hw_rescue_device rescue device"},{"line_number":702,"context_line":"    rescue_device \u003d rescue_image_meta.properties.get(\"hw_rescue_device\","},{"line_number":703,"context_line":"                                                     \"disk\")"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_8d76e0d7","line":700,"range":{"start_line":700,"start_character":22,"end_line":700,"end_character":39},"in_reply_to":"df33271e_379f2704","updated":"2020-04-08 14:07:22.000000000","message":"Right, I was just trying to break up the block from L644.","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"41fed422fe83157de88931d13570c079210420af","unresolved":false,"context_lines":[{"line_number":697,"context_line":"    return uniq(boot_devs_dup)"},{"line_number":698,"context_line":""},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"def get_rescue_device(rescue_image_meta):"},{"line_number":701,"context_line":"    # Find and validate the hw_rescue_device rescue device"},{"line_number":702,"context_line":"    rescue_device \u003d rescue_image_meta.properties.get(\"hw_rescue_device\","},{"line_number":703,"context_line":"                                                     \"disk\")"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_8db1c092","line":700,"range":{"start_line":700,"start_character":22,"end_line":700,"end_character":39},"in_reply_to":"df33271e_c7a10498","updated":"2020-04-08 14:07:22.000000000","message":"I\u0027d rather not, it\u0027s making it clear that this is the image_meta provided for a rescue.","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3aa7db6524aa486ae2151f69f429c7745e43218d","unresolved":false,"context_lines":[{"line_number":697,"context_line":"    return uniq(boot_devs_dup)"},{"line_number":698,"context_line":""},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"def get_rescue_device(rescue_image_meta):"},{"line_number":701,"context_line":"    # Find and validate the hw_rescue_device rescue device"},{"line_number":702,"context_line":"    rescue_device \u003d rescue_image_meta.properties.get(\"hw_rescue_device\","},{"line_number":703,"context_line":"                                                     \"disk\")"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_379f2704","line":700,"range":{"start_line":700,"start_character":22,"end_line":700,"end_character":39},"in_reply_to":"df33271e_c7a10498","updated":"2020-04-08 12:48:33.000000000","message":"we lookup the rescue device type from the information that was only passed as a rescue image property, I don\u0027t really see how this can be reusable unless we add an argument for asking which image prop we should lookup.","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f27fb2b494f46b7b2bff41dd56d03a9beeca3e92","unresolved":false,"context_lines":[{"line_number":706,"context_line":"    return rescue_device"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"def get_rescue_bus(instance, virt_type, rescue_image_meta, rescue_device):"},{"line_number":710,"context_line":"    # Find and validate the hw_rescue_bus"},{"line_number":711,"context_line":"    rescue_bus \u003d rescue_image_meta.properties.get(\"hw_rescue_bus\")"},{"line_number":712,"context_line":"    if rescue_bus is not None:"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_2716f0a8","line":709,"range":{"start_line":709,"start_character":59,"end_line":709,"end_character":72},"updated":"2020-04-07 16:16:21.000000000","message":"and this might make more sense as \u0027device_type\u0027. A docstring (and type hints, if you could grok them) would be great.","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f27fb2b494f46b7b2bff41dd56d03a9beeca3e92","unresolved":false,"context_lines":[{"line_number":706,"context_line":"    return rescue_device"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"def get_rescue_bus(instance, virt_type, rescue_image_meta, rescue_device):"},{"line_number":710,"context_line":"    # Find and validate the hw_rescue_bus"},{"line_number":711,"context_line":"    rescue_bus \u003d rescue_image_meta.properties.get(\"hw_rescue_bus\")"},{"line_number":712,"context_line":"    if rescue_bus is not None:"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_a79cc05b","line":709,"range":{"start_line":709,"start_character":40,"end_line":709,"end_character":57},"updated":"2020-04-07 16:16:21.000000000","message":"ditto","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"41fed422fe83157de88931d13570c079210420af","unresolved":false,"context_lines":[{"line_number":706,"context_line":"    return rescue_device"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"def get_rescue_bus(instance, virt_type, rescue_image_meta, rescue_device):"},{"line_number":710,"context_line":"    # Find and validate the hw_rescue_bus"},{"line_number":711,"context_line":"    rescue_bus \u003d rescue_image_meta.properties.get(\"hw_rescue_bus\")"},{"line_number":712,"context_line":"    if rescue_bus is not None:"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_a8ee32b1","line":709,"range":{"start_line":709,"start_character":59,"end_line":709,"end_character":72},"in_reply_to":"df33271e_2716f0a8","updated":"2020-04-08 14:07:22.000000000","message":"fup I100584bde61cc3bc8fda06f0ff2b2c6afd1c3d61","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"41fed422fe83157de88931d13570c079210420af","unresolved":false,"context_lines":[{"line_number":706,"context_line":"    return rescue_device"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"def get_rescue_bus(instance, virt_type, rescue_image_meta, rescue_device):"},{"line_number":710,"context_line":"    # Find and validate the hw_rescue_bus"},{"line_number":711,"context_line":"    rescue_bus \u003d rescue_image_meta.properties.get(\"hw_rescue_bus\")"},{"line_number":712,"context_line":"    if rescue_bus is not None:"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_082bdeea","line":709,"range":{"start_line":709,"start_character":40,"end_line":709,"end_character":57},"in_reply_to":"df33271e_a79cc05b","updated":"2020-04-08 14:07:22.000000000","message":"As above, I\u0027d rather not.","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2fedd18506ef0291eaa91170f01662037613cce1","unresolved":false,"context_lines":[{"line_number":3372,"context_line":"            if instance.image_ref:"},{"line_number":3373,"context_line":"                try:"},{"line_number":3374,"context_line":"                    image_meta \u003d objects.ImageMeta.from_image_ref("},{"line_number":3375,"context_line":"                                            context, self._image_api,"},{"line_number":3376,"context_line":"                                            instance.image_ref)"},{"line_number":3377,"context_line":"                except Exception:"},{"line_number":3378,"context_line":"                    pass"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_0f97869e","line":3375,"range":{"start_line":3375,"start_character":24,"end_line":3375,"end_character":44},"updated":"2020-01-21 17:22:26.000000000","message":"nit: weird indentation","commit_id":"ea5aa8495a23f7776fbcc70c6764a0be21d7fd06"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"4315bdf96b2b92ec15c20f2a6f68609856e7a8f9","unresolved":false,"context_lines":[{"line_number":3372,"context_line":"            if instance.image_ref:"},{"line_number":3373,"context_line":"                try:"},{"line_number":3374,"context_line":"                    image_meta \u003d objects.ImageMeta.from_image_ref("},{"line_number":3375,"context_line":"                                            context, self._image_api,"},{"line_number":3376,"context_line":"                                            instance.image_ref)"},{"line_number":3377,"context_line":"                except Exception:"},{"line_number":3378,"context_line":"                    pass"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_467559ff","line":3375,"range":{"start_line":3375,"start_character":24,"end_line":3375,"end_character":44},"in_reply_to":"3fa7e38b_0f97869e","updated":"2020-01-22 12:46:16.000000000","message":"Done","commit_id":"ea5aa8495a23f7776fbcc70c6764a0be21d7fd06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e78a9ed84cd7e1c7c123b1da22e2885263144e64","unresolved":false,"context_lines":[{"line_number":4581,"context_line":"        if scsi_controller:"},{"line_number":4582,"context_line":"            devices.append(scsi_controller)"},{"line_number":4583,"context_line":""},{"line_number":4584,"context_line":"        if rescue and disk_mapping[\u0027disk.rescue\u0027] !\u003d disk_mapping[\u0027root\u0027]:"},{"line_number":4585,"context_line":"            diskrescue \u003d self._get_guest_disk_config(instance, \u0027disk.rescue\u0027,"},{"line_number":4586,"context_line":"                                                     disk_mapping, inst_type,"},{"line_number":4587,"context_line":"                                                     boot_order\u003d\u00271\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_2bc89c53","line":4584,"updated":"2020-03-24 16:17:33.000000000","message":"This is also a monster sized function. Maybe a comment would help that his is the stable device rescue case.","commit_id":"baf28454915ecc3ea39a2356e7f18a8c4aba7c84"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f6225e55029e5ddfb75751cd3afdcf561a582b17","unresolved":false,"context_lines":[{"line_number":4581,"context_line":"        if scsi_controller:"},{"line_number":4582,"context_line":"            devices.append(scsi_controller)"},{"line_number":4583,"context_line":""},{"line_number":4584,"context_line":"        if rescue and disk_mapping[\u0027disk.rescue\u0027] !\u003d disk_mapping[\u0027root\u0027]:"},{"line_number":4585,"context_line":"            diskrescue \u003d self._get_guest_disk_config(instance, \u0027disk.rescue\u0027,"},{"line_number":4586,"context_line":"                                                     disk_mapping, inst_type,"},{"line_number":4587,"context_line":"                                                     boot_order\u003d\u00271\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_1fd6a3f2","line":4584,"in_reply_to":"df33271e_2bc89c53","updated":"2020-03-25 13:19:24.000000000","message":"ACK I can respin and add that now.","commit_id":"baf28454915ecc3ea39a2356e7f18a8c4aba7c84"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3aa7db6524aa486ae2151f69f429c7745e43218d","unresolved":false,"context_lines":[{"line_number":3407,"context_line":"        original devices are attached to the instance during the rescue attempt"},{"line_number":3408,"context_line":"        with the addition of the rescue boot disk. This second mode is"},{"line_number":3409,"context_line":"        controlled by the hw_rescue_device and hw_rescue_bus image properties"},{"line_number":3410,"context_line":"        on the rescue image provided to this method via image_meta."},{"line_number":3411,"context_line":""},{"line_number":3412,"context_line":"        :param nova.context.RequestContext context:"},{"line_number":3413,"context_line":"            The context for the rescue."}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_37356747","line":3410,"updated":"2020-04-08 12:48:33.000000000","message":"++ thanks for the explanations","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f27fb2b494f46b7b2bff41dd56d03a9beeca3e92","unresolved":false,"context_lines":[{"line_number":3441,"context_line":"        }"},{"line_number":3442,"context_line":""},{"line_number":3443,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":3444,"context_line":"        if hardware.check_hw_rescue_props(image_meta):"},{"line_number":3445,"context_line":"            LOG.info(\"Attempting a stable device rescue\", instance\u003dinstance)"},{"line_number":3446,"context_line":"            # NOTE(lyarwood): Stable device rescue is not supported when using"},{"line_number":3447,"context_line":"            # the LXC and Xen virt_types as they do not support the required"}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_a72160ff","line":3444,"range":{"start_line":3444,"start_character":8,"end_line":3444,"end_character":54},"updated":"2020-04-07 16:16:21.000000000","message":"So the presence of _either_ option will trigger this alternate rescue mode?\n\nLater: yup, that\u0027s what you said in the commit message","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3aa7db6524aa486ae2151f69f429c7745e43218d","unresolved":false,"context_lines":[{"line_number":3465,"context_line":"                image_meta \u003d objects.ImageMeta.from_dict({})"},{"line_number":3466,"context_line":""},{"line_number":3467,"context_line":"        else:"},{"line_number":3468,"context_line":"            LOG.info(\"Attempting an unstable device rescue\", instance\u003dinstance)"},{"line_number":3469,"context_line":"            # NOTE(lyarwood): An unstable rescue only provides the rescue"},{"line_number":3470,"context_line":"            # device and the original root device so we don\u0027t need to provide"},{"line_number":3471,"context_line":"            # block_device_info to the get_disk_info call."}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_d764fb4b","line":3468,"range":{"start_line":3468,"start_character":36,"end_line":3468,"end_character":44},"updated":"2020-04-08 12:48:33.000000000","message":"mmm, why should it be unstable for ephemeral disks and not BFV instances ?","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"41fed422fe83157de88931d13570c079210420af","unresolved":false,"context_lines":[{"line_number":3465,"context_line":"                image_meta \u003d objects.ImageMeta.from_dict({})"},{"line_number":3466,"context_line":""},{"line_number":3467,"context_line":"        else:"},{"line_number":3468,"context_line":"            LOG.info(\"Attempting an unstable device rescue\", instance\u003dinstance)"},{"line_number":3469,"context_line":"            # NOTE(lyarwood): An unstable rescue only provides the rescue"},{"line_number":3470,"context_line":"            # device and the original root device so we don\u0027t need to provide"},{"line_number":3471,"context_line":"            # block_device_info to the get_disk_info call."}],"source_content_type":"text/x-python","patch_set":21,"id":"df33271e_2d86b4dc","line":3468,"range":{"start_line":3468,"start_character":36,"end_line":3468,"end_character":44},"in_reply_to":"df33271e_d764fb4b","updated":"2020-04-08 14:07:22.000000000","message":"fup I36f84109e654e2aa746c95efa62a1b45b44534e8","commit_id":"fa92dd02d3114a11e854dc534dd4c3ee84e2e017"}]}
