)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"82ccc99dc47c7c655dd9e8b02215ae157650e33d","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2020-03-12 13:56:53 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"fix scsi disk unit number of the attaching volume when cdrom bus is scsi"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closes-Bug: #1867075"},{"line_number":10,"context_line":"Change-Id: Ifd8b249de3e8f96fa13db252f0abe2b1bd950de0"},{"line_number":11,"context_line":"Signed-off-by: Kevin Zhao \u003ckevin.zhao@linaro.org\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1fa4df85_1f12adb2","line":8,"updated":"2020-03-13 16:11:45.000000000","message":"Could we have a bit more explanation in the commit message about what\u0027s the bug and how this patch fixes it? The launchpad bug reference is good but we like having the main point of the bug/fix explained in the commit message too.","commit_id":"3351f062ab64041fefc423730b36d82e81cd9aca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fd35a19c7d0049628a022b6a045d4bf5b2c68042","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"From Image Meta Properties: hw_cdrom_bus\u003dscsi, and use virtio-scsi mode,"},{"line_number":10,"context_line":"it will also need a disk address for it. So we need to calculate the"},{"line_number":11,"context_line":"disk address when call the function to get the max unit of scsi controller."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: #1867075"},{"line_number":14,"context_line":"Change-Id: Ifd8b249de3e8f96fa13db252f0abe2b1bd950de0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"df33271e_2b37604f","line":11,"range":{"start_line":11,"start_character":38,"end_line":11,"end_character":74},"updated":"2020-04-01 14:29:32.000000000","message":"you mean the max unit already in use so that we can add one to it to caulate this adress.","commit_id":"6f49787ec422c3373598902976c0a4cc166f04bf"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"15932c2139aadf8646e530034466a45cf4c49ebb","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"From Image Meta Properties: hw_cdrom_bus\u003dscsi, and use virtio-scsi mode,"},{"line_number":10,"context_line":"it will also need a disk address for it. So we need to calculate the"},{"line_number":11,"context_line":"disk address when call the function to get the max unit of scsi controller."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: #1867075"},{"line_number":14,"context_line":"Change-Id: Ifd8b249de3e8f96fa13db252f0abe2b1bd950de0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"df33271e_aec61e67","line":11,"range":{"start_line":11,"start_character":38,"end_line":11,"end_character":74},"in_reply_to":"df33271e_2b37604f","updated":"2020-04-09 09:03:20.000000000","message":"Will change the the description here.","commit_id":"6f49787ec422c3373598902976c0a4cc166f04bf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"22b8348052b9be170cd1b3e1dab335bc903311a8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kevin Zhao \u003ckevin.zhao@linaro.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-04-09 17:01:21 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"fix scsi disk unit number of the attaching volume when cdrom bus is scsi"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"From Image Meta Properties: hw_cdrom_bus\u003dscsi, and use virtio-scsi mode,"},{"line_number":10,"context_line":"it will also need a disk address for it. So we need to calculate the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"df33271e_54955c86","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":1},"updated":"2020-04-09 16:23:34.000000000","message":"F","commit_id":"e8f6df9adb1f5b17e894bcbb3f9cf5ec687e7a83"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"cc85a5c760e2a1f2255bbf0ab13e44db4faa9903","unresolved":false,"context_lines":[{"line_number":5514,"context_line":"        guest \u003d libvirt_guest.Guest(FakeVirtDomain())"},{"line_number":5515,"context_line":"        return drvr._get_serial_ports_from_guest(guest, mode\u003dmode)"},{"line_number":5516,"context_line":""},{"line_number":5517,"context_line":"    @mock.patch.object(libvirt_guest.Guest, \"get_xml_desc\")"},{"line_number":5518,"context_line":"    def test_get_scsi_controller_max_unit_from_guest_with_scsi_cdrom("},{"line_number":5519,"context_line":"            self, mock_get_xml_desc):"},{"line_number":5520,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_ee100eab","line":5517,"range":{"start_line":5517,"start_character":4,"end_line":5517,"end_character":59},"updated":"2020-03-18 08:59:13.000000000","message":"You can just mock this in the test method directly.","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"380a8ee2f29ab25d79869c7207f690d7b8b1c45e","unresolved":false,"context_lines":[{"line_number":5514,"context_line":"        guest \u003d libvirt_guest.Guest(FakeVirtDomain())"},{"line_number":5515,"context_line":"        return drvr._get_serial_ports_from_guest(guest, mode\u003dmode)"},{"line_number":5516,"context_line":""},{"line_number":5517,"context_line":"    @mock.patch.object(libvirt_guest.Guest, \"get_xml_desc\")"},{"line_number":5518,"context_line":"    def test_get_scsi_controller_max_unit_from_guest_with_scsi_cdrom("},{"line_number":5519,"context_line":"            self, mock_get_xml_desc):"},{"line_number":5520,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_f91684a7","line":5517,"range":{"start_line":5517,"start_character":4,"end_line":5517,"end_character":59},"in_reply_to":"1fa4df85_ee100eab","updated":"2020-03-19 07:11:47.000000000","message":"Done","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"cc85a5c760e2a1f2255bbf0ab13e44db4faa9903","unresolved":false,"context_lines":[{"line_number":5524,"context_line":"                                                          mock_get_xml_desc)"},{"line_number":5525,"context_line":"        self.assertEqual(1, i)"},{"line_number":5526,"context_line":""},{"line_number":5527,"context_line":"    @mock.patch.object(libvirt_guest.Guest, \"get_xml_desc\")"},{"line_number":5528,"context_line":"    def test_get_scsi_controller_max_unit_from_guest_no_scsi_cdrom("},{"line_number":5529,"context_line":"            self, mock_get_xml_desc):"},{"line_number":5530,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({\"disk_format\": \"raw\"})"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_ae221600","line":5527,"range":{"start_line":5527,"start_character":4,"end_line":5527,"end_character":59},"updated":"2020-03-18 08:59:13.000000000","message":"Ditto.","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"380a8ee2f29ab25d79869c7207f690d7b8b1c45e","unresolved":false,"context_lines":[{"line_number":5524,"context_line":"                                                          mock_get_xml_desc)"},{"line_number":5525,"context_line":"        self.assertEqual(1, i)"},{"line_number":5526,"context_line":""},{"line_number":5527,"context_line":"    @mock.patch.object(libvirt_guest.Guest, \"get_xml_desc\")"},{"line_number":5528,"context_line":"    def test_get_scsi_controller_max_unit_from_guest_no_scsi_cdrom("},{"line_number":5529,"context_line":"            self, mock_get_xml_desc):"},{"line_number":5530,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({\"disk_format\": \"raw\"})"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_990d1092","line":5527,"range":{"start_line":5527,"start_character":4,"end_line":5527,"end_character":59},"in_reply_to":"1fa4df85_ae221600","updated":"2020-03-19 07:11:47.000000000","message":"Done","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"cc85a5c760e2a1f2255bbf0ab13e44db4faa9903","unresolved":false,"context_lines":[{"line_number":5530,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({\"disk_format\": \"raw\"})"},{"line_number":5531,"context_line":"        i \u003d self._get_scsi_controller_max_unit_from_guest(image_meta,"},{"line_number":5532,"context_line":"                                                          mock_get_xml_desc)"},{"line_number":5533,"context_line":"        self.assertEqual(0, i)"},{"line_number":5534,"context_line":""},{"line_number":5535,"context_line":"    def _get_scsi_controller_max_unit_from_guest(self, image_meta,"},{"line_number":5536,"context_line":"                                                 mock_get_xml_desc):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_6e717e0c","line":5533,"range":{"start_line":5533,"start_character":8,"end_line":5533,"end_character":30},"updated":"2020-03-18 08:59:13.000000000","message":"I\u0027d also move this into the test itself and pass in the expected value to be asserted.","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"380a8ee2f29ab25d79869c7207f690d7b8b1c45e","unresolved":false,"context_lines":[{"line_number":5530,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({\"disk_format\": \"raw\"})"},{"line_number":5531,"context_line":"        i \u003d self._get_scsi_controller_max_unit_from_guest(image_meta,"},{"line_number":5532,"context_line":"                                                          mock_get_xml_desc)"},{"line_number":5533,"context_line":"        self.assertEqual(0, i)"},{"line_number":5534,"context_line":""},{"line_number":5535,"context_line":"    def _get_scsi_controller_max_unit_from_guest(self, image_meta,"},{"line_number":5536,"context_line":"                                                 mock_get_xml_desc):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_b9100caa","line":5533,"range":{"start_line":5533,"start_character":8,"end_line":5533,"end_character":30},"in_reply_to":"1fa4df85_6e717e0c","updated":"2020-03-19 07:11:47.000000000","message":"Done","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"cc85a5c760e2a1f2255bbf0ab13e44db4faa9903","unresolved":false,"context_lines":[{"line_number":5532,"context_line":"                                                          mock_get_xml_desc)"},{"line_number":5533,"context_line":"        self.assertEqual(0, i)"},{"line_number":5534,"context_line":""},{"line_number":5535,"context_line":"    def _get_scsi_controller_max_unit_from_guest(self, image_meta,"},{"line_number":5536,"context_line":"                                                 mock_get_xml_desc):"},{"line_number":5537,"context_line":" "},{"line_number":5538,"context_line":"        xml \u003d \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_ae39b63f","line":5535,"range":{"start_line":5535,"start_character":8,"end_line":5535,"end_character":48},"updated":"2020-03-18 08:59:13.000000000","message":"_test_get_max_unit ?","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"380a8ee2f29ab25d79869c7207f690d7b8b1c45e","unresolved":false,"context_lines":[{"line_number":5532,"context_line":"                                                          mock_get_xml_desc)"},{"line_number":5533,"context_line":"        self.assertEqual(0, i)"},{"line_number":5534,"context_line":""},{"line_number":5535,"context_line":"    def _get_scsi_controller_max_unit_from_guest(self, image_meta,"},{"line_number":5536,"context_line":"                                                 mock_get_xml_desc):"},{"line_number":5537,"context_line":" "},{"line_number":5538,"context_line":"        xml \u003d \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_59279813","line":5535,"range":{"start_line":5535,"start_character":8,"end_line":5535,"end_character":48},"in_reply_to":"1fa4df85_ae39b63f","updated":"2020-03-19 07:11:47.000000000","message":"Done","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"cc85a5c760e2a1f2255bbf0ab13e44db4faa9903","unresolved":false,"context_lines":[{"line_number":5534,"context_line":""},{"line_number":5535,"context_line":"    def _get_scsi_controller_max_unit_from_guest(self, image_meta,"},{"line_number":5536,"context_line":"                                                 mock_get_xml_desc):"},{"line_number":5537,"context_line":" "},{"line_number":5538,"context_line":"        xml \u003d \"\"\""},{"line_number":5539,"context_line":"            \u003cdomain type\u003d\u0027kvm\u0027\u003e"},{"line_number":5540,"context_line":"              \u003cdevices\u003e"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_2e094694","line":5537,"range":{"start_line":5537,"start_character":0,"end_line":5537,"end_character":1},"updated":"2020-03-18 08:59:13.000000000","message":"whitespace","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"380a8ee2f29ab25d79869c7207f690d7b8b1c45e","unresolved":false,"context_lines":[{"line_number":5534,"context_line":""},{"line_number":5535,"context_line":"    def _get_scsi_controller_max_unit_from_guest(self, image_meta,"},{"line_number":5536,"context_line":"                                                 mock_get_xml_desc):"},{"line_number":5537,"context_line":" "},{"line_number":5538,"context_line":"        xml \u003d \"\"\""},{"line_number":5539,"context_line":"            \u003cdomain type\u003d\u0027kvm\u0027\u003e"},{"line_number":5540,"context_line":"              \u003cdevices\u003e"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_79229403","line":5537,"range":{"start_line":5537,"start_character":0,"end_line":5537,"end_character":1},"in_reply_to":"1fa4df85_2e094694","updated":"2020-03-19 07:11:47.000000000","message":"Done","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"cc85a5c760e2a1f2255bbf0ab13e44db4faa9903","unresolved":false,"context_lines":[{"line_number":5535,"context_line":"    def _get_scsi_controller_max_unit_from_guest(self, image_meta,"},{"line_number":5536,"context_line":"                                                 mock_get_xml_desc):"},{"line_number":5537,"context_line":" "},{"line_number":5538,"context_line":"        xml \u003d \"\"\""},{"line_number":5539,"context_line":"            \u003cdomain type\u003d\u0027kvm\u0027\u003e"},{"line_number":5540,"context_line":"              \u003cdevices\u003e"},{"line_number":5541,"context_line":"                \u003cdisk type\u003d\u0027file\u0027 device\u003d\u0027disk\u0027\u003e"},{"line_number":5542,"context_line":"                  \u003ctarget dev\u003d\u0027sda\u0027 bus\u003d\u0027scsi\u0027/\u003e"},{"line_number":5543,"context_line":"                  \u003caddress type\u003d\u0027drive\u0027 controller\u003d\u00270\u0027 bus\u003d\u00270\u0027 target\u003d\u00270\u0027 unit\u003d\u00270\u0027/\u003e"},{"line_number":5544,"context_line":"                \u003c/disk\u003e"},{"line_number":5545,"context_line":"                \u003cdisk type\u003d\u0027file\u0027 device\u003d\u0027cdrom\u0027\u003e"},{"line_number":5546,"context_line":"                  \u003ctarget dev\u003d\u0027sdb\u0027 bus\u003d\u0027scsi\u0027/\u003e"},{"line_number":5547,"context_line":"                  \u003caddress type\u003d\u0027drive\u0027 controller\u003d\u00270\u0027 bus\u003d\u00270\u0027 target\u003d\u00270\u0027 unit\u003d\u00271\u0027/\u003e"},{"line_number":5548,"context_line":"                \u003c/disk\u003e"},{"line_number":5549,"context_line":"              \u003c/devices\u003e"},{"line_number":5550,"context_line":"            \u003c/domain\u003e"},{"line_number":5551,"context_line":"        \"\"\""},{"line_number":5552,"context_line":"        mock_get_xml_desc.return_value \u003d xml"},{"line_number":5553,"context_line":""},{"line_number":5554,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_ce82f2c8","line":5551,"range":{"start_line":5538,"start_character":7,"end_line":5551,"end_character":11},"updated":"2020-03-18 08:59:13.000000000","message":"I\u0027d assume this would be the bit you would want to pass in here as a variable, to allow different XML to be presented by different tests.","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"380a8ee2f29ab25d79869c7207f690d7b8b1c45e","unresolved":false,"context_lines":[{"line_number":5535,"context_line":"    def _get_scsi_controller_max_unit_from_guest(self, image_meta,"},{"line_number":5536,"context_line":"                                                 mock_get_xml_desc):"},{"line_number":5537,"context_line":" "},{"line_number":5538,"context_line":"        xml \u003d \"\"\""},{"line_number":5539,"context_line":"            \u003cdomain type\u003d\u0027kvm\u0027\u003e"},{"line_number":5540,"context_line":"              \u003cdevices\u003e"},{"line_number":5541,"context_line":"                \u003cdisk type\u003d\u0027file\u0027 device\u003d\u0027disk\u0027\u003e"},{"line_number":5542,"context_line":"                  \u003ctarget dev\u003d\u0027sda\u0027 bus\u003d\u0027scsi\u0027/\u003e"},{"line_number":5543,"context_line":"                  \u003caddress type\u003d\u0027drive\u0027 controller\u003d\u00270\u0027 bus\u003d\u00270\u0027 target\u003d\u00270\u0027 unit\u003d\u00270\u0027/\u003e"},{"line_number":5544,"context_line":"                \u003c/disk\u003e"},{"line_number":5545,"context_line":"                \u003cdisk type\u003d\u0027file\u0027 device\u003d\u0027cdrom\u0027\u003e"},{"line_number":5546,"context_line":"                  \u003ctarget dev\u003d\u0027sdb\u0027 bus\u003d\u0027scsi\u0027/\u003e"},{"line_number":5547,"context_line":"                  \u003caddress type\u003d\u0027drive\u0027 controller\u003d\u00270\u0027 bus\u003d\u00270\u0027 target\u003d\u00270\u0027 unit\u003d\u00271\u0027/\u003e"},{"line_number":5548,"context_line":"                \u003c/disk\u003e"},{"line_number":5549,"context_line":"              \u003c/devices\u003e"},{"line_number":5550,"context_line":"            \u003c/domain\u003e"},{"line_number":5551,"context_line":"        \"\"\""},{"line_number":5552,"context_line":"        mock_get_xml_desc.return_value \u003d xml"},{"line_number":5553,"context_line":""},{"line_number":5554,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_192120fc","line":5551,"range":{"start_line":5538,"start_character":7,"end_line":5551,"end_character":11},"in_reply_to":"1fa4df85_ce82f2c8","updated":"2020-03-19 07:11:47.000000000","message":"Done","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b2272702c22c0f48cb9f84b35c240d998aa3295a","unresolved":false,"context_lines":[{"line_number":5609,"context_line":"      \u003c/devices\u003e"},{"line_number":5610,"context_line":"    \u003c/domain\u003e"},{"line_number":5611,"context_line":"            \"\"\""},{"line_number":5612,"context_line":"        self._test_get_scsi_controller_max_unit_from_guest(xml, 1)"},{"line_number":5613,"context_line":""},{"line_number":5614,"context_line":"    def test_get_scsi_controller_max_unit_from_guest_scsi_cdrom(self):"},{"line_number":5615,"context_line":"        xml \u003d \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"df33271e_e32b3d7f","line":5612,"updated":"2020-03-27 14:26:22.000000000","message":"you also need a test for having no SCSI devices","commit_id":"5a5b46cf0e4fb7dc36cb271de5a33ed732046fb6"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"3c7cea47cb910eabeeb0fa35054918e5af304a54","unresolved":false,"context_lines":[{"line_number":5609,"context_line":"      \u003c/devices\u003e"},{"line_number":5610,"context_line":"    \u003c/domain\u003e"},{"line_number":5611,"context_line":"            \"\"\""},{"line_number":5612,"context_line":"        self._test_get_scsi_controller_max_unit_from_guest(xml, 1)"},{"line_number":5613,"context_line":""},{"line_number":5614,"context_line":"    def test_get_scsi_controller_max_unit_from_guest_scsi_cdrom(self):"},{"line_number":5615,"context_line":"        xml \u003d \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"df33271e_e34fbd8f","line":5612,"in_reply_to":"df33271e_e32b3d7f","updated":"2020-03-27 14:57:43.000000000","message":"Done","commit_id":"5a5b46cf0e4fb7dc36cb271de5a33ed732046fb6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"da4848f1ab997d5ecb98dc027e1bbd4fa8540849","unresolved":false,"context_lines":[{"line_number":5611,"context_line":"            \"\"\""},{"line_number":5612,"context_line":"        self._test_get_scsi_controller_next_unit_from_guest(xml, 2)"},{"line_number":5613,"context_line":""},{"line_number":5614,"context_line":"    def test_get_scsi_controller_next_unit_from_guest_scsi_cdrom(self):"},{"line_number":5615,"context_line":"        xml \u003d \"\"\""},{"line_number":5616,"context_line":"    \u003cdomain type\u003d\u0027kvm\u0027\u003e"},{"line_number":5617,"context_line":"      \u003cdevices\u003e"},{"line_number":5618,"context_line":"        \u003cdisk type\u003d\u0027file\u0027 device\u003d\u0027disk\u0027\u003e"},{"line_number":5619,"context_line":"          \u003ctarget dev\u003d\u0027sda\u0027 bus\u003d\u0027scsi\u0027/\u003e"},{"line_number":5620,"context_line":"          \u003caddress type\u003d\u0027drive\u0027 controller\u003d\u00270\u0027 bus\u003d\u00270\u0027 target\u003d\u00270\u0027 unit\u003d\u00270\u0027/\u003e"},{"line_number":5621,"context_line":"        \u003c/disk\u003e"},{"line_number":5622,"context_line":"        \u003cdisk type\u003d\u0027file\u0027 device\u003d\u0027cdrom\u0027\u003e"},{"line_number":5623,"context_line":"          \u003ctarget dev\u003d\u0027sdb\u0027 bus\u003d\u0027scsi\u0027/\u003e"},{"line_number":5624,"context_line":"          \u003caddress type\u003d\u0027drive\u0027 controller\u003d\u00270\u0027 bus\u003d\u00270\u0027 target\u003d\u00270\u0027 unit\u003d\u00271\u0027/\u003e"},{"line_number":5625,"context_line":"        \u003c/disk\u003e"},{"line_number":5626,"context_line":"        \u003cdisk type\u003d\u0027file\u0027 device\u003d\u0027disk\u0027\u003e"},{"line_number":5627,"context_line":"          \u003ctarget dev\u003d\u0027sdc\u0027 bus\u003d\u0027scsi\u0027/\u003e"},{"line_number":5628,"context_line":"          \u003caddress type\u003d\u0027drive\u0027 controller\u003d\u00270\u0027 bus\u003d\u00270\u0027 target\u003d\u00270\u0027 unit\u003d\u00272\u0027/\u003e"},{"line_number":5629,"context_line":"        \u003c/disk\u003e"},{"line_number":5630,"context_line":"      \u003c/devices\u003e"},{"line_number":5631,"context_line":"    \u003c/domain\u003e"},{"line_number":5632,"context_line":"        \"\"\""},{"line_number":5633,"context_line":"        self._test_get_scsi_controller_next_unit_from_guest(xml, 3)"},{"line_number":5634,"context_line":""},{"line_number":5635,"context_line":"    def test_get_scsi_controller_next_unit_from_guest_no_scsi(self):"},{"line_number":5636,"context_line":"        xml \u003d \"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"df33271e_23b7e4f8","line":5633,"range":{"start_line":5614,"start_character":0,"end_line":5633,"end_character":67},"updated":"2020-03-27 15:20:16.000000000","message":"This test is kind of useless no? It\u0027s got the \u0027_scsi_cdrom\u0027 suffix but you\u0027re already testing SCSI CD-ROM devices in the previous test. Can we drop this?","commit_id":"bfc82aa85da8f18000d7b83df68a009fa56026ae"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"d46f13438474caab30ef43ccf23540da6213e8d7","unresolved":false,"context_lines":[{"line_number":5611,"context_line":"            \"\"\""},{"line_number":5612,"context_line":"        self._test_get_scsi_controller_next_unit_from_guest(xml, 2)"},{"line_number":5613,"context_line":""},{"line_number":5614,"context_line":"    def test_get_scsi_controller_next_unit_from_guest_scsi_cdrom(self):"},{"line_number":5615,"context_line":"        xml \u003d \"\"\""},{"line_number":5616,"context_line":"    \u003cdomain type\u003d\u0027kvm\u0027\u003e"},{"line_number":5617,"context_line":"      \u003cdevices\u003e"},{"line_number":5618,"context_line":"        \u003cdisk type\u003d\u0027file\u0027 device\u003d\u0027disk\u0027\u003e"},{"line_number":5619,"context_line":"          \u003ctarget dev\u003d\u0027sda\u0027 bus\u003d\u0027scsi\u0027/\u003e"},{"line_number":5620,"context_line":"          \u003caddress type\u003d\u0027drive\u0027 controller\u003d\u00270\u0027 bus\u003d\u00270\u0027 target\u003d\u00270\u0027 unit\u003d\u00270\u0027/\u003e"},{"line_number":5621,"context_line":"        \u003c/disk\u003e"},{"line_number":5622,"context_line":"        \u003cdisk type\u003d\u0027file\u0027 device\u003d\u0027cdrom\u0027\u003e"},{"line_number":5623,"context_line":"          \u003ctarget dev\u003d\u0027sdb\u0027 bus\u003d\u0027scsi\u0027/\u003e"},{"line_number":5624,"context_line":"          \u003caddress type\u003d\u0027drive\u0027 controller\u003d\u00270\u0027 bus\u003d\u00270\u0027 target\u003d\u00270\u0027 unit\u003d\u00271\u0027/\u003e"},{"line_number":5625,"context_line":"        \u003c/disk\u003e"},{"line_number":5626,"context_line":"        \u003cdisk type\u003d\u0027file\u0027 device\u003d\u0027disk\u0027\u003e"},{"line_number":5627,"context_line":"          \u003ctarget dev\u003d\u0027sdc\u0027 bus\u003d\u0027scsi\u0027/\u003e"},{"line_number":5628,"context_line":"          \u003caddress type\u003d\u0027drive\u0027 controller\u003d\u00270\u0027 bus\u003d\u00270\u0027 target\u003d\u00270\u0027 unit\u003d\u00272\u0027/\u003e"},{"line_number":5629,"context_line":"        \u003c/disk\u003e"},{"line_number":5630,"context_line":"      \u003c/devices\u003e"},{"line_number":5631,"context_line":"    \u003c/domain\u003e"},{"line_number":5632,"context_line":"        \"\"\""},{"line_number":5633,"context_line":"        self._test_get_scsi_controller_next_unit_from_guest(xml, 3)"},{"line_number":5634,"context_line":""},{"line_number":5635,"context_line":"    def test_get_scsi_controller_next_unit_from_guest_no_scsi(self):"},{"line_number":5636,"context_line":"        xml \u003d \"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"df33271e_2301a46c","line":5633,"range":{"start_line":5614,"start_character":0,"end_line":5633,"end_character":67},"in_reply_to":"df33271e_23b7e4f8","updated":"2020-03-27 15:27:22.000000000","message":"Sounds reasonable to me, I think we can remove it","commit_id":"bfc82aa85da8f18000d7b83df68a009fa56026ae"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"ff4d7a76b406c96abb10ccfe08755af86b4ff1c5","unresolved":false,"context_lines":[{"line_number":5547,"context_line":""},{"line_number":5548,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":5549,"context_line":"        guest \u003d libvirt_guest.Guest(FakeVirtDomain())"},{"line_number":5550,"context_line":"        i \u003d drvr._get_scsi_controller_next_unit(guest)"},{"line_number":5551,"context_line":"        self.assertEqual(expect_num, i)"},{"line_number":5552,"context_line":""},{"line_number":5553,"context_line":"    def test_get_guest_config_with_type_xen(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"3f4c43b2_005f8ae2","line":5550,"range":{"start_line":5550,"start_character":8,"end_line":5550,"end_character":9},"updated":"2020-04-14 08:38:48.000000000","message":"nit - actual_next_unit","commit_id":"c8d6767cf8baaf3cc81496c83db10c8ae72fce06"}],"nova/virt/libvirt/blockinfo.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5eccdd220d40676e80e590a36a30d82f9e39ee58","unresolved":false,"context_lines":[{"line_number":262,"context_line":"            return \"xen\""},{"line_number":263,"context_line":"    elif virt_type in (\"qemu\", \"kvm\"):"},{"line_number":264,"context_line":"        if device_type \u003d\u003d \"cdrom\":"},{"line_number":265,"context_line":"            if get_non_x86_guest_arch_qemu_kvm(virt_type, image_meta):"},{"line_number":266,"context_line":"                return \"scsi\""},{"line_number":267,"context_line":"            machine_type \u003d libvirt_utils.get_machine_type(image_meta)"},{"line_number":268,"context_line":"            # NOTE(lyarwood): We can\u0027t be any more explicit here as QEMU"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_7aa9d479","line":265,"updated":"2020-03-24 14:04:07.000000000","message":"If you end up following my approach on the next file, this can probably be removed","commit_id":"7ab96291df8d4e40d61fa32abb85f46342588653"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"78e57ca76ea9f45b9829ae3044c24efe09f81496","unresolved":false,"context_lines":[{"line_number":262,"context_line":"            return \"xen\""},{"line_number":263,"context_line":"    elif virt_type in (\"qemu\", \"kvm\"):"},{"line_number":264,"context_line":"        if device_type \u003d\u003d \"cdrom\":"},{"line_number":265,"context_line":"            if get_non_x86_guest_arch_qemu_kvm(virt_type, image_meta):"},{"line_number":266,"context_line":"                return \"scsi\""},{"line_number":267,"context_line":"            machine_type \u003d libvirt_utils.get_machine_type(image_meta)"},{"line_number":268,"context_line":"            # NOTE(lyarwood): We can\u0027t be any more explicit here as QEMU"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_59c20c87","line":265,"in_reply_to":"df33271e_7aa9d479","updated":"2020-03-25 14:16:08.000000000","message":"Done","commit_id":"7ab96291df8d4e40d61fa32abb85f46342588653"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"cc85a5c760e2a1f2255bbf0ab13e44db4faa9903","unresolved":false,"context_lines":[{"line_number":1415,"context_line":"        for obj in tree.findall(addrs):"},{"line_number":1416,"context_line":"            ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":"        # For AArch64, the cdrom disk bus can be as scsi. So we should also"},{"line_number":1419,"context_line":"        # calculate the scsi address for cdrom."},{"line_number":1420,"context_line":"        cdrom_bus \u003d image_meta.properties.get(\"hw_cdrom_bus\")"},{"line_number":1421,"context_line":"        if cdrom_bus \u003d\u003d \u0027scsi\u0027:"},{"line_number":1422,"context_line":"            addrs \u003d \"./devices/disk[@device\u003d\u0027cdrom\u0027]/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1423,"context_line":"            ret \u003d []"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_ceb192e3","line":1420,"range":{"start_line":1418,"start_character":0,"end_line":1420,"end_character":61},"updated":"2020-03-18 08:59:13.000000000","message":"This could be SCSI regardless of hw_cdrom_bus being set for AArch64 right?\n\nhttps://github.com/openstack/nova/blob/31aa4a6d7f0b8c301b093ad176ee2b44b5d3cec8/nova/virt/libvirt/blockinfo.py#L262-L272","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"380a8ee2f29ab25d79869c7207f690d7b8b1c45e","unresolved":false,"context_lines":[{"line_number":1415,"context_line":"        for obj in tree.findall(addrs):"},{"line_number":1416,"context_line":"            ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":"        # For AArch64, the cdrom disk bus can be as scsi. So we should also"},{"line_number":1419,"context_line":"        # calculate the scsi address for cdrom."},{"line_number":1420,"context_line":"        cdrom_bus \u003d image_meta.properties.get(\"hw_cdrom_bus\")"},{"line_number":1421,"context_line":"        if cdrom_bus \u003d\u003d \u0027scsi\u0027:"},{"line_number":1422,"context_line":"            addrs \u003d \"./devices/disk[@device\u003d\u0027cdrom\u0027]/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1423,"context_line":"            ret \u003d []"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_194840ca","line":1420,"range":{"start_line":1418,"start_character":0,"end_line":1420,"end_character":61},"in_reply_to":"1fa4df85_ceb192e3","updated":"2020-03-19 07:11:47.000000000","message":"Done","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"cc85a5c760e2a1f2255bbf0ab13e44db4faa9903","unresolved":false,"context_lines":[{"line_number":1423,"context_line":"            ret \u003d []"},{"line_number":1424,"context_line":"            for obj in tree.findall(addrs):"},{"line_number":1425,"context_line":"                ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1426,"context_line":"        LOG.info(ret)"},{"line_number":1427,"context_line":"        LOG.info(image_meta)"},{"line_number":1428,"context_line":"        return max(ret)"},{"line_number":1429,"context_line":""},{"line_number":1430,"context_line":"    def _cleanup_rbd(self, instance):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_4eda8217","line":1427,"range":{"start_line":1426,"start_character":0,"end_line":1427,"end_character":28},"updated":"2020-03-18 08:59:13.000000000","message":"Can you LOG these (maybe max(ret) instead?) in a single DEBUG line?","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"380a8ee2f29ab25d79869c7207f690d7b8b1c45e","unresolved":false,"context_lines":[{"line_number":1423,"context_line":"            ret \u003d []"},{"line_number":1424,"context_line":"            for obj in tree.findall(addrs):"},{"line_number":1425,"context_line":"                ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1426,"context_line":"        LOG.info(ret)"},{"line_number":1427,"context_line":"        LOG.info(image_meta)"},{"line_number":1428,"context_line":"        return max(ret)"},{"line_number":1429,"context_line":""},{"line_number":1430,"context_line":"    def _cleanup_rbd(self, instance):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_3943bcb1","line":1427,"range":{"start_line":1426,"start_character":0,"end_line":1427,"end_character":28},"in_reply_to":"1fa4df85_4eda8217","updated":"2020-03-19 07:11:47.000000000","message":"Aha, sorry I leave a message here for person debug, forget to remove it. Already removed.","commit_id":"6402b23f0e337d27667f55b859414347f6c85b36"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"361b33cf466121e9b3849ed49a868d5e93c38531","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"        \"\"\"Returns the max disk unit used by scsi controller\"\"\""},{"line_number":1410,"context_line":"        xml \u003d guest.get_xml_desc()"},{"line_number":1411,"context_line":"        tree \u003d etree.fromstring(xml)"},{"line_number":1412,"context_line":"        addrs \u003d \"./devices/disk[@device\u003d\u0027disk\u0027]/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"        ret \u003d []"},{"line_number":1415,"context_line":"        for obj in tree.findall(addrs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_347bc3be","line":1412,"range":{"start_line":1412,"start_character":0,"end_line":1412,"end_character":71},"updated":"2020-03-19 09:13:36.000000000","message":"Couldn\u0027t we update this to only look for type\u003d\u0027drive\u0027?\n\nThat would list disks and cdroms right?","commit_id":"1d8e4714d3eee16851519074d212234a95c290bd"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"155968d79fe277773aefc0c587026c14ee1df267","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"        \"\"\"Returns the max disk unit used by scsi controller\"\"\""},{"line_number":1410,"context_line":"        xml \u003d guest.get_xml_desc()"},{"line_number":1411,"context_line":"        tree \u003d etree.fromstring(xml)"},{"line_number":1412,"context_line":"        addrs \u003d \"./devices/disk[@device\u003d\u0027disk\u0027]/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"        ret \u003d []"},{"line_number":1415,"context_line":"        for obj in tree.findall(addrs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_b43d73de","line":1412,"range":{"start_line":1412,"start_character":0,"end_line":1412,"end_character":71},"in_reply_to":"1fa4df85_347bc3be","updated":"2020-03-19 09:16:26.000000000","message":"Actually no, we only want to optionally do this when we know the cdrom is on the SCSI bus. Apologies.","commit_id":"1d8e4714d3eee16851519074d212234a95c290bd"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"eddd81d5c8e458f0b3c2f42cb2c7d27865a85600","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"        \"\"\"Returns the max disk unit used by scsi controller\"\"\""},{"line_number":1410,"context_line":"        xml \u003d guest.get_xml_desc()"},{"line_number":1411,"context_line":"        tree \u003d etree.fromstring(xml)"},{"line_number":1412,"context_line":"        addrs \u003d \"./devices/disk[@device\u003d\u0027disk\u0027]/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"        ret \u003d []"},{"line_number":1415,"context_line":"        for obj in tree.findall(addrs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_08378301","line":1412,"range":{"start_line":1412,"start_character":0,"end_line":1412,"end_character":71},"in_reply_to":"1fa4df85_b43d73de","updated":"2020-03-19 15:16:20.000000000","message":"OK, thanks","commit_id":"1d8e4714d3eee16851519074d212234a95c290bd"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"155968d79fe277773aefc0c587026c14ee1df267","unresolved":false,"context_lines":[{"line_number":1415,"context_line":"        for obj in tree.findall(addrs):"},{"line_number":1416,"context_line":"            ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":"        # For non-x86 host with kvm or qemu, the by default cdrom bus has been"},{"line_number":1419,"context_line":"        # set to scsi. So we should also calculate the scsi address for cdrom."},{"line_number":1420,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \"kvm\" or CONF.libvirt.virt_type \u003d\u003d \"qemu\":"},{"line_number":1421,"context_line":"            guestarch \u003d libvirt_utils.get_arch(image_meta)"},{"line_number":1422,"context_line":"            if guestarch in ("},{"line_number":1423,"context_line":"                    fields.Architecture.PPC,"},{"line_number":1424,"context_line":"                    fields.Architecture.PPC64,"},{"line_number":1425,"context_line":"                    fields.Architecture.PPCLE,"},{"line_number":1426,"context_line":"                    fields.Architecture.PPC64LE,"},{"line_number":1427,"context_line":"                    fields.Architecture.S390,"},{"line_number":1428,"context_line":"                    fields.Architecture.S390X,"},{"line_number":1429,"context_line":"                    fields.Architecture.AARCH64):"},{"line_number":1430,"context_line":"                addrs \u003d \"./devices/disk[@device\u003d\u0027cdrom\u0027]\" \\"},{"line_number":1431,"context_line":"                        \"/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1432,"context_line":"                ret \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_54243fc6","line":1429,"range":{"start_line":1418,"start_character":1,"end_line":1429,"end_character":49},"updated":"2020-03-19 09:16:26.000000000","message":"Can you move this into a util method within blockinfo?","commit_id":"1d8e4714d3eee16851519074d212234a95c290bd"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"eddd81d5c8e458f0b3c2f42cb2c7d27865a85600","unresolved":false,"context_lines":[{"line_number":1415,"context_line":"        for obj in tree.findall(addrs):"},{"line_number":1416,"context_line":"            ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":"        # For non-x86 host with kvm or qemu, the by default cdrom bus has been"},{"line_number":1419,"context_line":"        # set to scsi. So we should also calculate the scsi address for cdrom."},{"line_number":1420,"context_line":"        if CONF.libvirt.virt_type \u003d\u003d \"kvm\" or CONF.libvirt.virt_type \u003d\u003d \"qemu\":"},{"line_number":1421,"context_line":"            guestarch \u003d libvirt_utils.get_arch(image_meta)"},{"line_number":1422,"context_line":"            if guestarch in ("},{"line_number":1423,"context_line":"                    fields.Architecture.PPC,"},{"line_number":1424,"context_line":"                    fields.Architecture.PPC64,"},{"line_number":1425,"context_line":"                    fields.Architecture.PPCLE,"},{"line_number":1426,"context_line":"                    fields.Architecture.PPC64LE,"},{"line_number":1427,"context_line":"                    fields.Architecture.S390,"},{"line_number":1428,"context_line":"                    fields.Architecture.S390X,"},{"line_number":1429,"context_line":"                    fields.Architecture.AARCH64):"},{"line_number":1430,"context_line":"                addrs \u003d \"./devices/disk[@device\u003d\u0027cdrom\u0027]\" \\"},{"line_number":1431,"context_line":"                        \"/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1432,"context_line":"                ret \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_2856ff2b","line":1429,"range":{"start_line":1418,"start_character":1,"end_line":1429,"end_character":49},"in_reply_to":"1fa4df85_54243fc6","updated":"2020-03-19 15:16:20.000000000","message":"Done","commit_id":"1d8e4714d3eee16851519074d212234a95c290bd"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"155968d79fe277773aefc0c587026c14ee1df267","unresolved":false,"context_lines":[{"line_number":1429,"context_line":"                    fields.Architecture.AARCH64):"},{"line_number":1430,"context_line":"                addrs \u003d \"./devices/disk[@device\u003d\u0027cdrom\u0027]\" \\"},{"line_number":1431,"context_line":"                        \"/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1432,"context_line":"                ret \u003d []"},{"line_number":1433,"context_line":"                for obj in tree.findall(addrs):"},{"line_number":1434,"context_line":"                    ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1435,"context_line":"        return max(ret)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_741ffb6f","line":1432,"range":{"start_line":1432,"start_character":0,"end_line":1432,"end_character":24},"updated":"2020-03-19 09:16:26.000000000","message":"Remove this, otherwise we only end up returning the units used by cdroms.","commit_id":"1d8e4714d3eee16851519074d212234a95c290bd"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"eddd81d5c8e458f0b3c2f42cb2c7d27865a85600","unresolved":false,"context_lines":[{"line_number":1429,"context_line":"                    fields.Architecture.AARCH64):"},{"line_number":1430,"context_line":"                addrs \u003d \"./devices/disk[@device\u003d\u0027cdrom\u0027]\" \\"},{"line_number":1431,"context_line":"                        \"/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1432,"context_line":"                ret \u003d []"},{"line_number":1433,"context_line":"                for obj in tree.findall(addrs):"},{"line_number":1434,"context_line":"                    ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1435,"context_line":"        return max(ret)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_885db348","line":1432,"range":{"start_line":1432,"start_character":0,"end_line":1432,"end_character":24},"in_reply_to":"1fa4df85_741ffb6f","updated":"2020-03-19 15:16:20.000000000","message":"Done","commit_id":"1d8e4714d3eee16851519074d212234a95c290bd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2d04bf54a5d67326081be6a3e50975f795dc09a0","unresolved":false,"context_lines":[{"line_number":1746,"context_line":"        disk_info \u003d blockinfo.get_info_from_bdm("},{"line_number":1747,"context_line":"            instance, CONF.libvirt.virt_type, instance.image_meta, bdm)"},{"line_number":1748,"context_line":"        if disk_info[\u0027bus\u0027] \u003d\u003d \u0027scsi\u0027:"},{"line_number":1749,"context_line":"            disk_info[\u0027unit\u0027] \u003d \\"},{"line_number":1750,"context_line":"                self._get_scsi_controller_max_unit(guest,"},{"line_number":1751,"context_line":"                                                   instance.image_meta) + 1"},{"line_number":1752,"context_line":""},{"line_number":1753,"context_line":"        conf \u003d self._get_volume_config(connection_info, disk_info)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_68415739","line":1750,"range":{"start_line":1749,"start_character":32,"end_line":1750,"end_character":16},"updated":"2020-03-19 14:40:46.000000000","message":"nit: don\u0027t need to wrap this, right?\n\n  disk_info[\u0027unit\u0027] \u003d self._get_scsi_controller_max_unit(\n      guest, instance.image_meta,\n  ) + 1","commit_id":"1d8e4714d3eee16851519074d212234a95c290bd"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"eddd81d5c8e458f0b3c2f42cb2c7d27865a85600","unresolved":false,"context_lines":[{"line_number":1746,"context_line":"        disk_info \u003d blockinfo.get_info_from_bdm("},{"line_number":1747,"context_line":"            instance, CONF.libvirt.virt_type, instance.image_meta, bdm)"},{"line_number":1748,"context_line":"        if disk_info[\u0027bus\u0027] \u003d\u003d \u0027scsi\u0027:"},{"line_number":1749,"context_line":"            disk_info[\u0027unit\u0027] \u003d \\"},{"line_number":1750,"context_line":"                self._get_scsi_controller_max_unit(guest,"},{"line_number":1751,"context_line":"                                                   instance.image_meta) + 1"},{"line_number":1752,"context_line":""},{"line_number":1753,"context_line":"        conf \u003d self._get_volume_config(connection_info, disk_info)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_882293b8","line":1750,"range":{"start_line":1749,"start_character":32,"end_line":1750,"end_character":16},"in_reply_to":"1fa4df85_68415739","updated":"2020-03-19 15:16:20.000000000","message":"Thanks, done","commit_id":"1d8e4714d3eee16851519074d212234a95c290bd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5eccdd220d40676e80e590a36a30d82f9e39ee58","unresolved":false,"context_lines":[{"line_number":1407,"context_line":"        \"\"\"Returns the max disk unit used by scsi controller\"\"\""},{"line_number":1408,"context_line":"        xml \u003d guest.get_xml_desc()"},{"line_number":1409,"context_line":"        tree \u003d etree.fromstring(xml)"},{"line_number":1410,"context_line":"        addrs \u003d \"./devices/disk[@device\u003d\u0027disk\u0027]/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1411,"context_line":""},{"line_number":1412,"context_line":"        ret \u003d []"},{"line_number":1413,"context_line":"        for obj in tree.findall(addrs):"},{"line_number":1414,"context_line":"            ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"        # For non-x86 host with kvm or qemu, the by default cdrom bus has been"},{"line_number":1417,"context_line":"        # set to scsi. So we should also calculate the scsi address for cdrom."},{"line_number":1418,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":1419,"context_line":"        if blockinfo.get_non_x86_guest_arch_qemu_kvm(virt_type, image_meta):"},{"line_number":1420,"context_line":"            addrs \u003d \"./devices/disk[@device\u003d\u0027cdrom\u0027]\" \\"},{"line_number":1421,"context_line":"                    \"/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1422,"context_line":"            for obj in tree.findall(addrs):"},{"line_number":1423,"context_line":"                ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1424,"context_line":"        return max(ret)"},{"line_number":1425,"context_line":""},{"line_number":1426,"context_line":"    def _cleanup_rbd(self, instance):"},{"line_number":1427,"context_line":"        # NOTE(nic): On revert_resize, the cleanup steps for the root"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_faba04dc","line":1424,"range":{"start_line":1410,"start_character":0,"end_line":1424,"end_character":23},"updated":"2020-03-24 14:04:07.000000000","message":"It\u0027s also possible to configure CD-ROMs to use SCSI via the \u0027hw_cdrom_bus\u0027 image metadata property. Configured on x86_64 host, I see:\n\n    \u003cdisk type\u003d\u0027file\u0027 device\u003d\u0027cdrom\u0027\u003e\n      \u003cdriver name\u003d\u0027qemu\u0027 type\u003d\u0027raw\u0027 cache\u003d\u0027none\u0027/\u003e\n      \u003csource file\u003d\u0027/opt/stack/data/nova/instances/4462d350-6f19-442f-9e99-9cbfa00a5cb8/disk.config\u0027/\u003e\n      \u003cbackingStore/\u003e\n      \u003ctarget dev\u003d\u0027sda\u0027 bus\u003d\u0027scsi\u0027/\u003e\n      \u003creadonly/\u003e\n      \u003calias name\u003d\u0027scsi0-0-0\u0027/\u003e\n      \u003caddress type\u003d\u0027drive\u0027 controller\u003d\u00270\u0027 bus\u003d\u00270\u0027 target\u003d\u00270\u0027 unit\u003d\u00270\u0027/\u003e\n    \u003c/disk\u003e\n\nAs such, any reason we need to limit this to non-x86 guests? Could we remove this check and instead replace the xpath on line 1410 with something like this?\n\n  ./devices/disk[target[@bus\u003d\u0027scsi\u0027]]/address[@type\u003d\u0027drive\u0027]\n\ni.e. fetch all disk devices using a SCSI bus, regardless of their type.\n\n(note: I don\u0027t know if the last \"[@type\u003d\u0027drive\u0027]\" is necessary)","commit_id":"7ab96291df8d4e40d61fa32abb85f46342588653"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"e2cb7c480b302e112facd5157b57814355eddde5","unresolved":false,"context_lines":[{"line_number":1407,"context_line":"        \"\"\"Returns the max disk unit used by scsi controller\"\"\""},{"line_number":1408,"context_line":"        xml \u003d guest.get_xml_desc()"},{"line_number":1409,"context_line":"        tree \u003d etree.fromstring(xml)"},{"line_number":1410,"context_line":"        addrs \u003d \"./devices/disk[@device\u003d\u0027disk\u0027]/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1411,"context_line":""},{"line_number":1412,"context_line":"        ret \u003d []"},{"line_number":1413,"context_line":"        for obj in tree.findall(addrs):"},{"line_number":1414,"context_line":"            ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"        # For non-x86 host with kvm or qemu, the by default cdrom bus has been"},{"line_number":1417,"context_line":"        # set to scsi. So we should also calculate the scsi address for cdrom."},{"line_number":1418,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":1419,"context_line":"        if blockinfo.get_non_x86_guest_arch_qemu_kvm(virt_type, image_meta):"},{"line_number":1420,"context_line":"            addrs \u003d \"./devices/disk[@device\u003d\u0027cdrom\u0027]\" \\"},{"line_number":1421,"context_line":"                    \"/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1422,"context_line":"            for obj in tree.findall(addrs):"},{"line_number":1423,"context_line":"                ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1424,"context_line":"        return max(ret)"},{"line_number":1425,"context_line":""},{"line_number":1426,"context_line":"    def _cleanup_rbd(self, instance):"},{"line_number":1427,"context_line":"        # NOTE(nic): On revert_resize, the cleanup steps for the root"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_f37de51c","line":1424,"range":{"start_line":1410,"start_character":0,"end_line":1424,"end_character":23},"in_reply_to":"df33271e_36d2a05d","updated":"2020-03-26 14:26:54.000000000","message":"Thanks! \nFinanlly I find this one is also OK with findall:\n\"./devices//target[@bus\u003d\u0027scsi\u0027]/../address[@type\u003d\u0027drive\u0027]\"","commit_id":"7ab96291df8d4e40d61fa32abb85f46342588653"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4aaa1cbc07f2f2650df40ca614592b9d13e2d00a","unresolved":false,"context_lines":[{"line_number":1407,"context_line":"        \"\"\"Returns the max disk unit used by scsi controller\"\"\""},{"line_number":1408,"context_line":"        xml \u003d guest.get_xml_desc()"},{"line_number":1409,"context_line":"        tree \u003d etree.fromstring(xml)"},{"line_number":1410,"context_line":"        addrs \u003d \"./devices/disk[@device\u003d\u0027disk\u0027]/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1411,"context_line":""},{"line_number":1412,"context_line":"        ret \u003d []"},{"line_number":1413,"context_line":"        for obj in tree.findall(addrs):"},{"line_number":1414,"context_line":"            ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"        # For non-x86 host with kvm or qemu, the by default cdrom bus has been"},{"line_number":1417,"context_line":"        # set to scsi. So we should also calculate the scsi address for cdrom."},{"line_number":1418,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"},{"line_number":1419,"context_line":"        if blockinfo.get_non_x86_guest_arch_qemu_kvm(virt_type, image_meta):"},{"line_number":1420,"context_line":"            addrs \u003d \"./devices/disk[@device\u003d\u0027cdrom\u0027]\" \\"},{"line_number":1421,"context_line":"                    \"/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1422,"context_line":"            for obj in tree.findall(addrs):"},{"line_number":1423,"context_line":"                ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1424,"context_line":"        return max(ret)"},{"line_number":1425,"context_line":""},{"line_number":1426,"context_line":"    def _cleanup_rbd(self, instance):"},{"line_number":1427,"context_line":"        # NOTE(nic): On revert_resize, the cleanup steps for the root"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_36d2a05d","line":1424,"range":{"start_line":1410,"start_character":0,"end_line":1424,"end_character":23},"in_reply_to":"df33271e_faba04dc","updated":"2020-03-26 10:48:18.000000000","message":"Oh, turns out if you do this, you need to use \u0027tree.xpath\u0027 instead of \u0027tree.findall\u0027 [1]. Also, that xpath expression can be simplified further:\n\n  ./devices/disk[target/@bus\u003d\u0027scsi\u0027]/address[@type\u003d\u0027drive\u0027]\n\n[1] https://stackoverflow.com/a/6231045","commit_id":"7ab96291df8d4e40d61fa32abb85f46342588653"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b2272702c22c0f48cb9f84b35c240d998aa3295a","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"        \"\"\"Returns the max disk unit used by scsi controller\"\"\""},{"line_number":1410,"context_line":"        xml \u003d guest.get_xml_desc()"},{"line_number":1411,"context_line":"        tree \u003d etree.fromstring(xml)"},{"line_number":1412,"context_line":"        addrs \u003d \"./devices//target[@bus\u003d\u0027scsi\u0027]/../address[@type\u003d\u0027drive\u0027]\""},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"        ret \u003d []"},{"line_number":1415,"context_line":"        for obj in tree.findall(addrs):"}],"source_content_type":"text/x-python","patch_set":14,"id":"df33271e_68e26a03","line":1412,"updated":"2020-03-27 14:26:22.000000000","message":"This isn\u0027t the same thing. It could return devices that are non-disks but use the SCSI bus. Maybe the \u0027address[@type\u003d\"drive\"]\u0027 piece would prevent that but I\u0027m not sure. Any reason _not_ to use \u0027xpath\u0027 instead? It seems clearer to me, at least","commit_id":"5a5b46cf0e4fb7dc36cb271de5a33ed732046fb6"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"3c7cea47cb910eabeeb0fa35054918e5af304a54","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"        \"\"\"Returns the max disk unit used by scsi controller\"\"\""},{"line_number":1410,"context_line":"        xml \u003d guest.get_xml_desc()"},{"line_number":1411,"context_line":"        tree \u003d etree.fromstring(xml)"},{"line_number":1412,"context_line":"        addrs \u003d \"./devices//target[@bus\u003d\u0027scsi\u0027]/../address[@type\u003d\u0027drive\u0027]\""},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"        ret \u003d []"},{"line_number":1415,"context_line":"        for obj in tree.findall(addrs):"}],"source_content_type":"text/x-python","patch_set":14,"id":"df33271e_83223151","line":1412,"in_reply_to":"df33271e_68e26a03","updated":"2020-03-27 14:57:43.000000000","message":"yes np, changing to xpath with the one you referred make more sense.","commit_id":"5a5b46cf0e4fb7dc36cb271de5a33ed732046fb6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b2272702c22c0f48cb9f84b35c240d998aa3295a","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"        ret \u003d []"},{"line_number":1415,"context_line":"        for obj in tree.findall(addrs):"},{"line_number":1416,"context_line":"            ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1417,"context_line":"        return max(ret)"},{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"    def _cleanup_rbd(self, instance):"},{"line_number":1420,"context_line":"        # NOTE(nic): On revert_resize, the cleanup steps for the root"}],"source_content_type":"text/x-python","patch_set":14,"id":"df33271e_e834bafd","line":1417,"range":{"start_line":1417,"start_character":0,"end_line":1417,"end_character":23},"updated":"2020-03-27 14:26:22.000000000","message":"The tests are failing because we\u0027re trying to attach a SCSI volume when there are no SCSI-based volumes currently attached, meaning \u0027ret\u0027 is empty and therefore no max can be found. We probably want to rename this function to something like \u0027_get_scsi_controller_next_unit\u0027 and change this line to e.g.:\n\n  return max(ret) + 1 if ret else 0\n\nThen you\u0027d stop doing the \u0027+ 1\u0027 wherever this is called.","commit_id":"5a5b46cf0e4fb7dc36cb271de5a33ed732046fb6"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"3c7cea47cb910eabeeb0fa35054918e5af304a54","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"        ret \u003d []"},{"line_number":1415,"context_line":"        for obj in tree.findall(addrs):"},{"line_number":1416,"context_line":"            ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1417,"context_line":"        return max(ret)"},{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"    def _cleanup_rbd(self, instance):"},{"line_number":1420,"context_line":"        # NOTE(nic): On revert_resize, the cleanup steps for the root"}],"source_content_type":"text/x-python","patch_set":14,"id":"df33271e_631d6d0e","line":1417,"range":{"start_line":1417,"start_character":0,"end_line":1417,"end_character":23},"in_reply_to":"df33271e_e834bafd","updated":"2020-03-27 14:57:43.000000000","message":"Done","commit_id":"5a5b46cf0e4fb7dc36cb271de5a33ed732046fb6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fd35a19c7d0049628a022b6a045d4bf5b2c68042","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"        \"\"\"Returns the max disk unit used by scsi controller\"\"\""},{"line_number":1410,"context_line":"        xml \u003d guest.get_xml_desc()"},{"line_number":1411,"context_line":"        tree \u003d etree.fromstring(xml)"},{"line_number":1412,"context_line":"        addrs \u003d \"./devices/disk[@device\u003d\u0027disk\u0027]/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"        ret \u003d []"},{"line_number":1415,"context_line":"        for obj in tree.findall(addrs):"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_ab1b70c7","side":"PARENT","line":1412,"range":{"start_line":1412,"start_character":32,"end_line":1412,"end_character":46},"updated":"2020-04-01 14:29:32.000000000","message":"ok so before it would have counted all the disks on any bus","commit_id":"eaf08c0b7b8250408e5d10c6471f2e3155cc0edb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fd35a19c7d0049628a022b6a045d4bf5b2c68042","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"        \"\"\"Returns the max disk unit used by scsi controller\"\"\""},{"line_number":1410,"context_line":"        xml \u003d guest.get_xml_desc()"},{"line_number":1411,"context_line":"        tree \u003d etree.fromstring(xml)"},{"line_number":1412,"context_line":"        addrs \u003d \"./devices/disk[target/@bus\u003d\u0027scsi\u0027]/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"        ret \u003d []"},{"line_number":1415,"context_line":"        for obj in tree.xpath(addrs):"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_eb67384c","line":1412,"range":{"start_line":1412,"start_character":32,"end_line":1412,"end_character":50},"updated":"2020-04-01 14:29:32.000000000","message":"and now we only look at the scsi bus.\nthis is the main change.\n\nya that makes sense","commit_id":"6f49787ec422c3373598902976c0a4cc166f04bf"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"15932c2139aadf8646e530034466a45cf4c49ebb","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"        \"\"\"Returns the max disk unit used by scsi controller\"\"\""},{"line_number":1410,"context_line":"        xml \u003d guest.get_xml_desc()"},{"line_number":1411,"context_line":"        tree \u003d etree.fromstring(xml)"},{"line_number":1412,"context_line":"        addrs \u003d \"./devices/disk[target/@bus\u003d\u0027scsi\u0027]/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"        ret \u003d []"},{"line_number":1415,"context_line":"        for obj in tree.xpath(addrs):"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_8efcfab5","line":1412,"range":{"start_line":1412,"start_character":32,"end_line":1412,"end_character":50},"in_reply_to":"df33271e_eb67384c","updated":"2020-04-09 09:03:20.000000000","message":"Yes sure","commit_id":"6f49787ec422c3373598902976c0a4cc166f04bf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fd35a19c7d0049628a022b6a045d4bf5b2c68042","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"        ret \u003d []"},{"line_number":1415,"context_line":"        for obj in tree.xpath(addrs):"},{"line_number":1416,"context_line":"            ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1417,"context_line":"        return max(ret) + 1 if ret else 0"},{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"    def _cleanup_rbd(self, instance):"},{"line_number":1420,"context_line":"        # NOTE(nic): On revert_resize, the cleanup steps for the root"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_6bd848ee","line":1417,"range":{"start_line":1417,"start_character":23,"end_line":1417,"end_character":41},"updated":"2020-04-01 14:29:32.000000000","message":"and here you are just folding in the increment logic hence the name change to next instead of max which could be confused with the max capasity rather then the current max in use. this also make sense.","commit_id":"6f49787ec422c3373598902976c0a4cc166f04bf"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"15932c2139aadf8646e530034466a45cf4c49ebb","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"        ret \u003d []"},{"line_number":1415,"context_line":"        for obj in tree.xpath(addrs):"},{"line_number":1416,"context_line":"            ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1417,"context_line":"        return max(ret) + 1 if ret else 0"},{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"    def _cleanup_rbd(self, instance):"},{"line_number":1420,"context_line":"        # NOTE(nic): On revert_resize, the cleanup steps for the root"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_6ee7f613","line":1417,"range":{"start_line":1417,"start_character":23,"end_line":1417,"end_character":41},"in_reply_to":"df33271e_6bd848ee","updated":"2020-04-09 09:03:20.000000000","message":"Yes definitely","commit_id":"6f49787ec422c3373598902976c0a4cc166f04bf"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"75ee0488cb737c73edb6a61a2a3570d566198e15","unresolved":false,"context_lines":[{"line_number":1408,"context_line":"        tree \u003d etree.fromstring(xml)"},{"line_number":1409,"context_line":"        addrs \u003d \"./devices/disk[target/@bus\u003d\u0027scsi\u0027]/address[@type\u003d\u0027drive\u0027]\""},{"line_number":1410,"context_line":""},{"line_number":1411,"context_line":"        ret \u003d []"},{"line_number":1412,"context_line":"        for obj in tree.xpath(addrs):"},{"line_number":1413,"context_line":"            ret.append(int(obj.get(\u0027unit\u0027, 0)))"},{"line_number":1414,"context_line":"        return max(ret) + 1 if ret else 0"}],"source_content_type":"text/x-python","patch_set":18,"id":"3f4c43b2_00ecaac5","line":1411,"range":{"start_line":1411,"start_character":8,"end_line":1411,"end_character":16},"updated":"2020-04-14 08:42:10.000000000","message":"nit\n\n    ret \u003d [0]\n\nAllowing you to remove the if ret else 0 below.","commit_id":"c8d6767cf8baaf3cc81496c83db10c8ae72fce06"}]}
