)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2cd081bb4a3c046bae2fbc62cbc32488e642015","unresolved":false,"context_lines":[{"line_number":10,"context_line":"related to Fibre Channel based volumes.  The problem is"},{"line_number":11,"context_line":"the libvirt volume driver for FC was storing a list of"},{"line_number":12,"context_line":"devices it discovered in the connection_info at the bottom"},{"line_number":13,"context_line":"end of connect_volume.   The connection_info is blown away"},{"line_number":14,"context_line":"by nova at the start of the live migration process with the"},{"line_number":15,"context_line":"call to the block_device refresh_connection_info."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba3cc151_5658228a","line":13,"updated":"2015-07-01 16:31:08.000000000","message":"This might be a symptom of a larger bug 1419577.","commit_id":"7c51a32844e87580aefcc9b95bdd416d5267e810"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"de279fd17332d244801eb8259c9a9de124ae8f31","unresolved":false,"context_lines":[{"line_number":14,"context_line":"by nova at the start of the live migration process with the"},{"line_number":15,"context_line":"call to the block_device refresh_connection_info."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This patch is an easy work around for the problem of the devices"},{"line_number":18,"context_line":"going away.   The FC libvirt volume driver now doesn\u0027t rely"},{"line_number":19,"context_line":"upon the devices list existing.  It discovers the devices and"},{"line_number":20,"context_line":"the device information from the device_path that is always"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba3cc151_c91a547d","line":17,"updated":"2015-07-01 17:50:37.000000000","message":"So this is potentially still a problem for other volume drivers, right?  I see that the reporter of the bug had a proposed fix in pre_live_migration here:\n\nhttps://bugs.launchpad.net/nova/+bug/1406161/comments/1\n\nWhat are your thoughts on that?  I think we know we have issues in the live migration flow with volumes attached where we aren\u0027t preserving the connection_info properly, like in the case of bug 1419577 where the connection_info is updated for the destination host but then live migrations and we don\u0027t rollback the connection information for the source host.","commit_id":"7c51a32844e87580aefcc9b95bdd416d5267e810"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"9af187691ea208ad0fe5ae1c8a30da334b56c41c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"by nova at the start of the live migration process with the"},{"line_number":15,"context_line":"call to the block_device refresh_connection_info."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This patch is an easy work around for the problem of the devices"},{"line_number":18,"context_line":"going away.   The FC libvirt volume driver now doesn\u0027t rely"},{"line_number":19,"context_line":"upon the devices list existing.  It discovers the devices and"},{"line_number":20,"context_line":"the device information from the device_path that is always"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a41bdd9_c39cb45f","line":17,"in_reply_to":"ba3cc151_c91a547d","updated":"2015-07-13 18:45:27.000000000","message":"So my latest patch in this set now doesn\u0027t rely on any data added to the connection_info at connect_volume time.  It rebuilds the possible list of volume paths, finds out which paths exist on the system, and then issues a SCSI remove device.","commit_id":"7c51a32844e87580aefcc9b95bdd416d5267e810"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"088f8feef674450dc434bea8087386db4db2ddb2","unresolved":false,"context_lines":[{"line_number":18,"context_line":"going away.   The FC libvirt volume driver now doesn\u0027t rely"},{"line_number":19,"context_line":"upon the devices list existing.  The FC driver now rebuilds"},{"line_number":20,"context_line":"the list of possible devices that might show up, finds out what\u0027s"},{"line_number":21,"context_line":"actually there, and then removes them"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: Iab7869c799f3d80d0b45a784191adee32952ee2b"},{"line_number":24,"context_line":"Closes-Bug: 1406161"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a41bdd9_dc71eaa9","line":21,"updated":"2015-07-13 21:56:58.000000000","message":"Missing period at EOL here.","commit_id":"ba16db7a19050754bb05677d8ccd962e35e08683"}],"nova/tests/unit/virt/libvirt/test_volume.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"be80aa388469f3fa5fbeb41e37448371cf1bcd0f","unresolved":false,"context_lines":[{"line_number":1372,"context_line":"                                \u0027address\u0027: \u00271:0:0:1\u0027,"},{"line_number":1373,"context_line":"                                \u0027host\u0027: 1, \u0027channel\u0027: 0,"},{"line_number":1374,"context_line":"                                \u0027id\u0027: 0, \u0027lun\u0027: 1}]}"},{"line_number":1375,"context_line":"        self.stubs.Set(linuxscsi, \u0027find_multipath_device\u0027, lambda x: devices)"},{"line_number":1376,"context_line":"        self.stubs.Set(linuxscsi, \u0027remove_device\u0027, lambda x: None)"},{"line_number":1377,"context_line":"        # Should work for string, unicode, and list"},{"line_number":1378,"context_line":"        wwns \u003d [\u00271234567890123456\u0027, six.text_type(\u00271234567890123456\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_8b26becc","line":1375,"updated":"2015-07-13 21:06:32.000000000","message":"This is a latent issue, but we don\u0027t really do a great job of asserting how linuxscsi.remove_device is called (what actual devices are returned).  For example, say with your change there are 2 devices but only one exists - we don\u0027t test that the one that doesn\u0027t exist is filtered out since we just always assume that linuxscsi.remove_device is called correctly.\n\nA better test in here would be to have two devices and then have a side_effect with multiple calls to os.path.exists where the first call returns True and the second returns False, and we assert the calls to linuxscsi.remove_device was only called for the one where the path existed.","commit_id":"ba16db7a19050754bb05677d8ccd962e35e08683"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"be80aa388469f3fa5fbeb41e37448371cf1bcd0f","unresolved":false,"context_lines":[{"line_number":1390,"context_line":"            expected_commands \u003d []"},{"line_number":1391,"context_line":"            self.assertEqual(expected_commands, self.executes)"},{"line_number":1392,"context_line":"            # Test the scenario where multipath_id is not returned"},{"line_number":1393,"context_line":"            connection_info[\"data\"][\"devices\"] \u003d devices[\"devices\"]"},{"line_number":1394,"context_line":"            del connection_info[\"data\"][\"multipath_id\"]"},{"line_number":1395,"context_line":"            self._fc_disconnect(libvirt_driver, connection_info, mount_device)"},{"line_number":1396,"context_line":"            expected_commands \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_2b7d32e7","line":1393,"updated":"2015-07-13 21:06:32.000000000","message":"I guess we don\u0027t need this anymore.","commit_id":"ba16db7a19050754bb05677d8ccd962e35e08683"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"be80aa388469f3fa5fbeb41e37448371cf1bcd0f","unresolved":false,"context_lines":[{"line_number":1415,"context_line":"    def _fc_disconnect(self, libvirt_driver, connection_info, mount_device,"},{"line_number":1416,"context_line":"                       fake_exists, fake_realpath, fake_dev_info):"},{"line_number":1417,"context_line":"        fake_exists.return_value \u003d True"},{"line_number":1418,"context_line":"        fake_realpath.return_value \u003d \u0027/dev/sdX\u0027"},{"line_number":1419,"context_line":"        fake_dev_info.return_value \u003d {\u0027something\u0027: \u0027here\u0027}"},{"line_number":1420,"context_line":"        libvirt_driver.disconnect_volume(connection_info, mount_device)"},{"line_number":1421,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_8b6ebe2d","line":1418,"updated":"2015-07-13 21:06:32.000000000","message":"I\u0027m surprised this doesn\u0027t mess with the mox on line 1366:\n\nself.stubs.Set(os.path, \u0027realpath\u0027, lambda x: \u0027/dev/sdb\u0027)\n\nThe only real difference in this helper method is the mock for linuxscsi.get_device_info, we could arguably move that up into test_libvirt_fibrechan_driver where the other mocks are happening.","commit_id":"ba16db7a19050754bb05677d8ccd962e35e08683"}],"nova/virt/libvirt/volume.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"be80aa388469f3fa5fbeb41e37448371cf1bcd0f","unresolved":false,"context_lines":[{"line_number":1377,"context_line":"                      {\u0027device\u0027: mdev_info[\u0027device\u0027]})"},{"line_number":1378,"context_line":"            device_path \u003d mdev_info[\u0027device\u0027]"},{"line_number":1379,"context_line":"            connection_info[\u0027data\u0027][\u0027device_path\u0027] \u003d device_path"},{"line_number":1380,"context_line":"            connection_info[\u0027data\u0027][\u0027devices\u0027] \u003d mdev_info[\u0027devices\u0027]"},{"line_number":1381,"context_line":"            connection_info[\u0027data\u0027][\u0027multipath_id\u0027] \u003d mdev_info[\u0027id\u0027]"},{"line_number":1382,"context_line":"        else:"},{"line_number":1383,"context_line":"            # we didn\u0027t find a multipath device."}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_eb298a38","side":"PARENT","line":1380,"updated":"2015-07-13 21:06:32.000000000","message":"I assume we\u0027re removing this just because it\u0027s no longer used/needed.","commit_id":"4bfb094a6fc5e92a2e8329e32be5e47f09cd84be"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"be80aa388469f3fa5fbeb41e37448371cf1bcd0f","unresolved":false,"context_lines":[{"line_number":1426,"context_line":"                    dev_info \u003d linuxscsi.get_device_info(dev_name)"},{"line_number":1427,"context_line":"                    devices.append(dev_info)"},{"line_number":1428,"context_line":""},{"line_number":1429,"context_line":"            LOG.debug(\"devices to remove \u003d %s\", devices)"},{"line_number":1430,"context_line":""},{"line_number":1431,"context_line":"        # There may have been more than 1 device mounted"},{"line_number":1432,"context_line":"        # by the kernel for this volume.  We have to remove"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_abe38204","line":1429,"updated":"2015-07-13 21:06:32.000000000","message":"Drop this back one tab since you removed it from line 1403 in the multipath case.","commit_id":"ba16db7a19050754bb05677d8ccd962e35e08683"}]}
