)]}'
{"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"66e562fa779de5ee938b019d7c7ee02bd64ad647","unresolved":false,"context_lines":[{"line_number":6898,"context_line":"                    \u0027mount_device\u0027: \u0027/dev/sdb\u0027, }]}"},{"line_number":6899,"context_line":"        fake_connection_info \u003d {\u0027dummy_info\u0027}"},{"line_number":6900,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":6901,"context_line":"        self.mox.StubOutWithMock(drvr, \u0027_volume_api\u0027)"},{"line_number":6902,"context_line":""},{"line_number":6903,"context_line":"        inst_ref \u003d {\u0027id\u0027: \u0027foo\u0027}"},{"line_number":6904,"context_line":"        cntx \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_e3dc9248","line":6901,"updated":"2015-07-20 09:19:21.000000000","message":"Can you use mock here instead of mox? Also why do you mix mox and mock in a single test case?","commit_id":"fabecbe7d50cd74217b3b544b86184a572b364eb"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"c78a4403111df88b1b95b6859b0ddf9038c50dcb","unresolved":false,"context_lines":[{"line_number":6898,"context_line":"                    \u0027mount_device\u0027: \u0027/dev/sdb\u0027, }]}"},{"line_number":6899,"context_line":"        fake_connection_info \u003d {\u0027dummy_info\u0027}"},{"line_number":6900,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":6901,"context_line":"        self.mox.StubOutWithMock(drvr, \u0027_volume_api\u0027)"},{"line_number":6902,"context_line":""},{"line_number":6903,"context_line":"        inst_ref \u003d {\u0027id\u0027: \u0027foo\u0027}"},{"line_number":6904,"context_line":"        cntx \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_f54f4c90","line":6901,"in_reply_to":"3a50d1a3_e3dc9248","updated":"2015-07-20 17:04:31.000000000","message":"Done","commit_id":"fabecbe7d50cd74217b3b544b86184a572b364eb"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9dd6aba28d147542f62e3d9468566d195d33afeb","unresolved":false,"context_lines":[{"line_number":6862,"context_line":"            mock.patch.object(driver, \u0027block_device_info_get_mapping\u0027,"},{"line_number":6863,"context_line":"                              return_value\u003dvol[\u0027block_device_mapping\u0027]),"},{"line_number":6864,"context_line":"            mock.patch.object(drvr._volume_api, \"initialize_connection\","},{"line_number":6865,"context_line":"                              return_value\u003dfake_connection_info),"},{"line_number":6866,"context_line":"            mock.patch.object(drvr, \u0027_disconnect_volume\u0027)"},{"line_number":6867,"context_line":"        ) as (block_device_info_get_mapping, initialize_connection,"},{"line_number":6868,"context_line":"              _disconnect_volume):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_e5c8e177","line":6865,"updated":"2015-07-31 11:47:22.000000000","message":"Something is not good here, the first loop will update fake_connection_info with {\u0027data\u0027: {\u0027multipath_id\u0027: \u0027dummy1\u0027}}. So for the second loop initialize_connection will returns fake_connection_info as {\u0027data\u0027: {\u0027multipath_id\u0027: \u0027dummy1\u0027}}\n\nYou need to set side_effect\u003dfake_initialize_connection and remove the variable fake_connection_info and have method defined like that:\n\n  def fake_initialize_connection(context, volume_id, connector):\n    return {\u0027data\u0027: {}}","commit_id":"ed52a31700332c124326ee65035bf31613df36a1"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"0f7aba7af0ffe20db22a7f8840fbf35f6219e5da","unresolved":false,"context_lines":[{"line_number":6862,"context_line":"            mock.patch.object(driver, \u0027block_device_info_get_mapping\u0027,"},{"line_number":6863,"context_line":"                              return_value\u003dvol[\u0027block_device_mapping\u0027]),"},{"line_number":6864,"context_line":"            mock.patch.object(drvr._volume_api, \"initialize_connection\","},{"line_number":6865,"context_line":"                              return_value\u003dfake_connection_info),"},{"line_number":6866,"context_line":"            mock.patch.object(drvr, \u0027_disconnect_volume\u0027)"},{"line_number":6867,"context_line":"        ) as (block_device_info_get_mapping, initialize_connection,"},{"line_number":6868,"context_line":"              _disconnect_volume):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_f979a030","line":6865,"in_reply_to":"3a50d1a3_e5c8e177","updated":"2015-08-03 23:20:48.000000000","message":"Done","commit_id":"ed52a31700332c124326ee65035bf31613df36a1"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9dd6aba28d147542f62e3d9468566d195d33afeb","unresolved":false,"context_lines":[{"line_number":6871,"context_line":"            block_device_info_get_mapping.assert_has_calls(["},{"line_number":6872,"context_line":"                mock.call(vol)])"},{"line_number":6873,"context_line":"            _disconnect_volume.assert_has_calls(["},{"line_number":6874,"context_line":"                mock.call(fake_connection_info, \u0027sda\u0027),"},{"line_number":6875,"context_line":"                mock.call(fake_connection_info, \u0027sdb\u0027)])"},{"line_number":6876,"context_line":""},{"line_number":6877,"context_line":"    def test_get_instance_disk_info_excludes_volumes(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_aa4868b4","line":6874,"updated":"2015-07-31 11:47:22.000000000","message":"The assertions are not totally trues you cannot see a mistake in the tests\n\n  _disconnect_volume.assert_has_calls([\n                mock.call({\u0027data\u0027: {\u0027multipath_id\u0027: \u0027dummy1\u0027}}, \u0027sda\u0027),\n\t        mock.call({\u0027data\u0027: {}}, \u0027sdb\u0027)])\n\nThese will reveal the mistake.","commit_id":"ed52a31700332c124326ee65035bf31613df36a1"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"0f7aba7af0ffe20db22a7f8840fbf35f6219e5da","unresolved":false,"context_lines":[{"line_number":6871,"context_line":"            block_device_info_get_mapping.assert_has_calls(["},{"line_number":6872,"context_line":"                mock.call(vol)])"},{"line_number":6873,"context_line":"            _disconnect_volume.assert_has_calls(["},{"line_number":6874,"context_line":"                mock.call(fake_connection_info, \u0027sda\u0027),"},{"line_number":6875,"context_line":"                mock.call(fake_connection_info, \u0027sdb\u0027)])"},{"line_number":6876,"context_line":""},{"line_number":6877,"context_line":"    def test_get_instance_disk_info_excludes_volumes(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_99765c3d","line":6874,"in_reply_to":"3a50d1a3_aa4868b4","updated":"2015-08-03 23:20:48.000000000","message":"Done","commit_id":"ed52a31700332c124326ee65035bf31613df36a1"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"8645474e6a731dac9a98957ae595f4c18a8a7356","unresolved":false,"context_lines":[{"line_number":6036,"context_line":"        for vol in block_device_mapping:"},{"line_number":6037,"context_line":"            volume_id \u003d vol[\u0027connection_info\u0027][\u0027serial\u0027]"},{"line_number":6038,"context_line":"            volume_api \u003d self._volume_api"},{"line_number":6039,"context_line":"            connection_info \u003d volume_api.initialize_connection(context,"},{"line_number":6040,"context_line":"                                                               volume_id,"},{"line_number":6041,"context_line":"                                                               connector)"},{"line_number":6042,"context_line":"            disk_dev \u003d vol[\u0027mount_device\u0027].rpartition(\"/\")[2]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_ace5a838","line":6039,"updated":"2015-07-22 03:47:17.000000000","message":"Hi Anthony,\n \nIt is a good idea to retrieve the old connection_info by re-invoking the initilazie_connection. However, this requires the drivers always returns a same connection_info for reinvoking, this is not true for some driver. Besides, in the libvirt driver, the connect_volume will also change the connection_info such as putting the multipath_id, devices and so on. So the connection_info retrieved here may be not the same as the old one.  I am wandering whether we can considering store the old connection_info into the migrate_data before the pre_live_migration is invoked. And read the old connection_info from the migrate_data? \n\nThanks,\nTina","commit_id":"10f4884d9114e0ca423c07aec33aaa420fac43ca"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"1f3891003f62fa29fe89cfd204117c7a3d5cbf01","unresolved":false,"context_lines":[{"line_number":6036,"context_line":"        for vol in block_device_mapping:"},{"line_number":6037,"context_line":"            volume_id \u003d vol[\u0027connection_info\u0027][\u0027serial\u0027]"},{"line_number":6038,"context_line":"            volume_api \u003d self._volume_api"},{"line_number":6039,"context_line":"            connection_info \u003d volume_api.initialize_connection(context,"},{"line_number":6040,"context_line":"                                                               volume_id,"},{"line_number":6041,"context_line":"                                                               connector)"},{"line_number":6042,"context_line":"            disk_dev \u003d vol[\u0027mount_device\u0027].rpartition(\"/\")[2]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_ff00e935","line":6039,"in_reply_to":"3a50d1a3_1e6b9bb8","updated":"2015-07-23 08:14:26.000000000","message":"Thanks for the replies. So do we have an assumption that the connect_volume will never change the connection_info in future? Especially, the disconnect_volume should not reply on that change. If it is not the true, we will need to retrive other fields here in future, it is somehow hard to maintain. I just looked into the os-brick code and Walter\u0027s change for using os-brick in Nova. Seems many connection_info change in connect_volume has been removed.","commit_id":"10f4884d9114e0ca423c07aec33aaa420fac43ca"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"b43f25493d89425e4f9314efcad38f531d956484","unresolved":false,"context_lines":[{"line_number":6036,"context_line":"        for vol in block_device_mapping:"},{"line_number":6037,"context_line":"            volume_id \u003d vol[\u0027connection_info\u0027][\u0027serial\u0027]"},{"line_number":6038,"context_line":"            volume_api \u003d self._volume_api"},{"line_number":6039,"context_line":"            connection_info \u003d volume_api.initialize_connection(context,"},{"line_number":6040,"context_line":"                                                               volume_id,"},{"line_number":6041,"context_line":"                                                               connector)"},{"line_number":6042,"context_line":"            disk_dev \u003d vol[\u0027mount_device\u0027].rpartition(\"/\")[2]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_77565c2b","line":6039,"in_reply_to":"3a50d1a3_ace5a838","updated":"2015-07-22 18:31:34.000000000","message":"Cinder drivers will always return the same connection_info for the same initiator (connector) and volume.   If it doesn\u0027t, then there is a bug in the cinder volume driver, creating a new target export.   That\u0027s not Nova\u0027s problem.\n\nThe devices list is going away for FC with the os-brick patch.\nhttps://review.openstack.org/#/c/175569/\n\nPutting data into migrate_data is a hack.","commit_id":"10f4884d9114e0ca423c07aec33aaa420fac43ca"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"1315af1fd5f8553dfa6644ee09854a956a95677e","unresolved":false,"context_lines":[{"line_number":6036,"context_line":"        for vol in block_device_mapping:"},{"line_number":6037,"context_line":"            volume_id \u003d vol[\u0027connection_info\u0027][\u0027serial\u0027]"},{"line_number":6038,"context_line":"            volume_api \u003d self._volume_api"},{"line_number":6039,"context_line":"            connection_info \u003d volume_api.initialize_connection(context,"},{"line_number":6040,"context_line":"                                                               volume_id,"},{"line_number":6041,"context_line":"                                                               connector)"},{"line_number":6042,"context_line":"            disk_dev \u003d vol[\u0027mount_device\u0027].rpartition(\"/\")[2]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_1e6b9bb8","line":6039,"in_reply_to":"3a50d1a3_ace5a838","updated":"2015-07-22 21:59:36.000000000","message":"Hi Tina,\n\nWalt already answered a couple of your questions above.\n\nI did look into the multipath_id and I can still use it here. The multipath_id is generated based off the volume behind the scenes so the multipath_id in the BDM can be reused. It won\u0027t matter if the source or destination host saved it.","commit_id":"10f4884d9114e0ca423c07aec33aaa420fac43ca"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"3fa0cc9bd661e3ca3dbfc9c889bfd0e2aea35ee9","unresolved":false,"context_lines":[{"line_number":6036,"context_line":"        for vol in block_device_mapping:"},{"line_number":6037,"context_line":"            volume_id \u003d vol[\u0027connection_info\u0027][\u0027serial\u0027]"},{"line_number":6038,"context_line":"            volume_api \u003d self._volume_api"},{"line_number":6039,"context_line":"            connection_info \u003d volume_api.initialize_connection(context,"},{"line_number":6040,"context_line":"                                                               volume_id,"},{"line_number":6041,"context_line":"                                                               connector)"},{"line_number":6042,"context_line":"            disk_dev \u003d vol[\u0027mount_device\u0027].rpartition(\"/\")[2]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_1561cdd2","line":6039,"in_reply_to":"3a50d1a3_ff00e935","updated":"2015-07-23 18:20:18.000000000","message":"Yes, that is the assumption that is being made.  In the future connect_volume would not be saving data in connection_info (devices, devices_list, etc) which disconnect_volume would need.  Also in os-brick the multipath_id may no longer be needed either.","commit_id":"10f4884d9114e0ca423c07aec33aaa420fac43ca"},{"author":{"_account_id":9988,"name":"Tina Tang","email":"tina.tang@emc.com","username":"Tina"},"change_message_id":"b7b619252a35c19a076ca83c740d81c00792de05","unresolved":false,"context_lines":[{"line_number":6039,"context_line":"            # connection info because it is based off of the volume"},{"line_number":6040,"context_line":"            # and will be the same on the source and destination hosts."},{"line_number":6041,"context_line":"            volume_id \u003d vol[\u0027connection_info\u0027][\u0027serial\u0027]"},{"line_number":6042,"context_line":"            multipath_id \u003d vol[\u0027connection_info\u0027][\u0027data\u0027][\u0027multipath_id\u0027]"},{"line_number":6043,"context_line":"            volume_api \u003d self._volume_api"},{"line_number":6044,"context_line":"            connection_info \u003d volume_api.initialize_connection(context,"},{"line_number":6045,"context_line":"                                                               volume_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_0af23506","line":6042,"updated":"2015-07-23 08:13:11.000000000","message":"The multipath_id is not available always in the connection_info. So this code may throw exception.","commit_id":"cd05c35a7836ae487c389d0a8ccdf13be25d6f8e"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"68208020af1a6313c149e001beda00267bbaf096","unresolved":false,"context_lines":[{"line_number":6039,"context_line":"            # connection info because it is based off of the volume"},{"line_number":6040,"context_line":"            # and will be the same on the source and destination hosts."},{"line_number":6041,"context_line":"            volume_id \u003d vol[\u0027connection_info\u0027][\u0027serial\u0027]"},{"line_number":6042,"context_line":"            multipath_id \u003d vol[\u0027connection_info\u0027][\u0027data\u0027][\u0027multipath_id\u0027]"},{"line_number":6043,"context_line":"            volume_api \u003d self._volume_api"},{"line_number":6044,"context_line":"            connection_info \u003d volume_api.initialize_connection(context,"},{"line_number":6045,"context_line":"                                                               volume_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_158f8d75","line":6042,"in_reply_to":"3a50d1a3_0af23506","updated":"2015-07-23 18:21:13.000000000","message":"Done","commit_id":"cd05c35a7836ae487c389d0a8ccdf13be25d6f8e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9dd6aba28d147542f62e3d9468566d195d33afeb","unresolved":false,"context_lines":[{"line_number":5975,"context_line":"        connector \u003d self.get_volume_connector(instance)"},{"line_number":5976,"context_line":"        for vol in block_device_mapping:"},{"line_number":5977,"context_line":"            volume_id \u003d vol[\u0027connection_info\u0027][\u0027serial\u0027]"},{"line_number":5978,"context_line":"            volume_api \u003d self._volume_api"},{"line_number":5979,"context_line":"            connection_info \u003d volume_api.initialize_connection(context,"},{"line_number":5980,"context_line":"                                                               volume_id,"},{"line_number":5981,"context_line":"                                                               connector)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_0a815cfb","line":5978,"updated":"2015-07-31 11:47:22.000000000","message":"It\u0027s not necessary to have this inside the loop","commit_id":"ed52a31700332c124326ee65035bf31613df36a1"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"0f7aba7af0ffe20db22a7f8840fbf35f6219e5da","unresolved":false,"context_lines":[{"line_number":5975,"context_line":"        connector \u003d self.get_volume_connector(instance)"},{"line_number":5976,"context_line":"        for vol in block_device_mapping:"},{"line_number":5977,"context_line":"            volume_id \u003d vol[\u0027connection_info\u0027][\u0027serial\u0027]"},{"line_number":5978,"context_line":"            volume_api \u003d self._volume_api"},{"line_number":5979,"context_line":"            connection_info \u003d volume_api.initialize_connection(context,"},{"line_number":5980,"context_line":"                                                               volume_id,"},{"line_number":5981,"context_line":"                                                               connector)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_99adfc8a","line":5978,"in_reply_to":"3a50d1a3_0a815cfb","updated":"2015-08-03 23:20:48.000000000","message":"Done","commit_id":"ed52a31700332c124326ee65035bf31613df36a1"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"11463eef56155e246831e261be8ad2ede30a95a3","unresolved":false,"context_lines":[{"line_number":5985,"context_line":"            # same on the source and destination hosts."},{"line_number":5986,"context_line":"            if \u0027multipath_id\u0027 in vol[\u0027connection_info\u0027][\u0027data\u0027]:"},{"line_number":5987,"context_line":"                multipath_id \u003d vol[\u0027connection_info\u0027][\u0027data\u0027][\u0027multipath_id\u0027]"},{"line_number":5988,"context_line":"                connection_info[\u0027data\u0027][\u0027multipath_id\u0027] \u003d multipath_id"},{"line_number":5989,"context_line":"            disk_dev \u003d vol[\u0027mount_device\u0027].rpartition(\"/\")[2]"},{"line_number":5990,"context_line":"            self._disconnect_volume(connection_info, disk_dev)"},{"line_number":5991,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_7b950630","line":5988,"updated":"2015-08-03 11:28:40.000000000","message":"So at first I didn\u0027t think this was necessary since iscsi driver would figure out the multipath device name by calling _get_multipath_device_name_from_list (sadly this code is now in os-brick):\n\nhttps://github.com/openstack/os-brick/blob/master/os_brick/initiator/connector.py#L461\n\nhowever fiberchannel driver would not do that (and also imho incorrectly not check the :\n\nhttps://github.com/openstack/os-brick/blob/master/os_brick/initiator/connector.py#L979\n\nThe issue is made even worse by the case that iscsi relies on multipath being set by the config option iscsi_use_multipath (wtf?).\n\nI think the proper way to fix this is to\n\n1) leave the initialize_connection code in this part of the fix with a comment why we need to do this again\n\n2) move the multipath detection into the fibechannel driver and make sure that both iscsi and fiberchannel drivers use the same logic to detect multipath devices even if not passed in by cinder (what iscsi driver alrady does).","commit_id":"ed52a31700332c124326ee65035bf31613df36a1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"d43ec5397d6da140be33586d356e566b93d552bd","unresolved":false,"context_lines":[{"line_number":5985,"context_line":"            # same on the source and destination hosts."},{"line_number":5986,"context_line":"            if \u0027multipath_id\u0027 in vol[\u0027connection_info\u0027][\u0027data\u0027]:"},{"line_number":5987,"context_line":"                multipath_id \u003d vol[\u0027connection_info\u0027][\u0027data\u0027][\u0027multipath_id\u0027]"},{"line_number":5988,"context_line":"                connection_info[\u0027data\u0027][\u0027multipath_id\u0027] \u003d multipath_id"},{"line_number":5989,"context_line":"            disk_dev \u003d vol[\u0027mount_device\u0027].rpartition(\"/\")[2]"},{"line_number":5990,"context_line":"            self._disconnect_volume(connection_info, disk_dev)"},{"line_number":5991,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_07f8ace4","line":5988,"in_reply_to":"3a50d1a3_7b950630","updated":"2015-08-03 21:43:57.000000000","message":"I have plans to change how os-brick gets and uses the multipath id for both iSCSI and FC.   But, for the time being, until that patch is written and released, we need this patch as it is to land.   Once my os-brick changes is in place, this will completely free up the saving of the multipath_id in Nova in various spots entirely.  \n\nWe will be able to remove this code and all of it\u0027s calls.  \nhttps://github.com/openstack/nova/blob/master/nova/virt/block_device.py#L220\n\nFor now, we need this patch to land so that live migration for FC volumes works.","commit_id":"ed52a31700332c124326ee65035bf31613df36a1"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"a8c608999d0ecaa8a79b0a0e0168da7c73e7d176","unresolved":false,"context_lines":[{"line_number":6074,"context_line":"            # Pull out multipath_id from the bdm information. The"},{"line_number":6075,"context_line":"            # multipath_id can be placed into the connection info"},{"line_number":6076,"context_line":"            # because it is based off of the volume and will be the"},{"line_number":6077,"context_line":"            # same on the source and destination hosts."},{"line_number":6078,"context_line":"            if \u0027multipath_id\u0027 in vol[\u0027connection_info\u0027][\u0027data\u0027]:"},{"line_number":6079,"context_line":"                multipath_id \u003d vol[\u0027connection_info\u0027][\u0027data\u0027][\u0027multipath_id\u0027]"},{"line_number":6080,"context_line":"                connection_info[\u0027data\u0027][\u0027multipath_id\u0027] \u003d multipath_id"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a4dcd0f_0f9a506e","line":6077,"updated":"2015-08-06 17:46:19.000000000","message":"So as discussed on the previous patch - this should really go to os-brick, and be handled properly (uniformly) by all drivers that support multipath.\n\nHowever I am happy with it staying here for now seeing how bad this bug actually is, but _please_ add a comment saying this at the very least.","commit_id":"80647777b275c87336f2f9e025d817c2f2946513"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"bd1a02a61431fa038e122f762dd3011a1ad4f93f","unresolved":false,"context_lines":[{"line_number":6074,"context_line":"            # Pull out multipath_id from the bdm information. The"},{"line_number":6075,"context_line":"            # multipath_id can be placed into the connection info"},{"line_number":6076,"context_line":"            # because it is based off of the volume and will be the"},{"line_number":6077,"context_line":"            # same on the source and destination hosts."},{"line_number":6078,"context_line":"            if \u0027multipath_id\u0027 in vol[\u0027connection_info\u0027][\u0027data\u0027]:"},{"line_number":6079,"context_line":"                multipath_id \u003d vol[\u0027connection_info\u0027][\u0027data\u0027][\u0027multipath_id\u0027]"},{"line_number":6080,"context_line":"                connection_info[\u0027data\u0027][\u0027multipath_id\u0027] \u003d multipath_id"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a4dcd0f_36a761ab","line":6077,"in_reply_to":"1a4dcd0f_0f01f005","updated":"2015-08-06 19:57:59.000000000","message":"Done","commit_id":"80647777b275c87336f2f9e025d817c2f2946513"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"9ce16cad0f2a6151b5512d841f470b34f14f3fe4","unresolved":false,"context_lines":[{"line_number":6074,"context_line":"            # Pull out multipath_id from the bdm information. The"},{"line_number":6075,"context_line":"            # multipath_id can be placed into the connection info"},{"line_number":6076,"context_line":"            # because it is based off of the volume and will be the"},{"line_number":6077,"context_line":"            # same on the source and destination hosts."},{"line_number":6078,"context_line":"            if \u0027multipath_id\u0027 in vol[\u0027connection_info\u0027][\u0027data\u0027]:"},{"line_number":6079,"context_line":"                multipath_id \u003d vol[\u0027connection_info\u0027][\u0027data\u0027][\u0027multipath_id\u0027]"},{"line_number":6080,"context_line":"                connection_info[\u0027data\u0027][\u0027multipath_id\u0027] \u003d multipath_id"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a4dcd0f_4f25b806","line":6077,"in_reply_to":"1a4dcd0f_0f9a506e","updated":"2015-08-06 17:52:44.000000000","message":"I completely agree Nikola.  I\u0027m working on it for brick, but it\u0027s going to take too long to enable it for this patch.   This at least makes live migration work for multipath enabled volumes.","commit_id":"80647777b275c87336f2f9e025d817c2f2946513"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fbb0d30baf7a1e51d6c63eb5c0a6df3be8338f31","unresolved":false,"context_lines":[{"line_number":6074,"context_line":"            # Pull out multipath_id from the bdm information. The"},{"line_number":6075,"context_line":"            # multipath_id can be placed into the connection info"},{"line_number":6076,"context_line":"            # because it is based off of the volume and will be the"},{"line_number":6077,"context_line":"            # same on the source and destination hosts."},{"line_number":6078,"context_line":"            if \u0027multipath_id\u0027 in vol[\u0027connection_info\u0027][\u0027data\u0027]:"},{"line_number":6079,"context_line":"                multipath_id \u003d vol[\u0027connection_info\u0027][\u0027data\u0027][\u0027multipath_id\u0027]"},{"line_number":6080,"context_line":"                connection_info[\u0027data\u0027][\u0027multipath_id\u0027] \u003d multipath_id"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a4dcd0f_0f01f005","line":6077,"in_reply_to":"1a4dcd0f_4f25b806","updated":"2015-08-06 17:56:23.000000000","message":"Agree with ndipanov on the need for a TODO here so that we come back to this and remove it when we have the long-term fix in os-brick and nova is using the version that has that.","commit_id":"80647777b275c87336f2f9e025d817c2f2946513"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"f155aef9352fbad0602d403f216c6ed154329412","unresolved":false,"context_lines":[{"line_number":6077,"context_line":"            # and will be removed in the future once os-brick is updated"},{"line_number":6078,"context_line":"            # to handle multipath for drivers in a more efficient way."},{"line_number":6079,"context_line":"            # For now this logic is needed to ensure the connection info"},{"line_number":6080,"context_line":"            # data is correct."},{"line_number":6081,"context_line":""},{"line_number":6082,"context_line":"            # Pull out multipath_id from the bdm information. The"},{"line_number":6083,"context_line":"            # multipath_id can be placed into the connection info"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_70b87511","line":6080,"updated":"2015-08-07 10:00:23.000000000","message":"it\u0027s not necessarily about efficiency, but about uniformity I think. Currently iscsi drivers don\u0027t need this as they would figure it out but FC does.\n\nStill the comment is informative enough I think.","commit_id":"8b649aa86fb26e998d66e75e5cebfd19c396942d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"53fea1846f7526db4314bcd8cecb019d235ecd45","unresolved":false,"context_lines":[{"line_number":6077,"context_line":"            # and will be removed in the future once os-brick is updated"},{"line_number":6078,"context_line":"            # to handle multipath for drivers in a more efficient way."},{"line_number":6079,"context_line":"            # For now this logic is needed to ensure the connection info"},{"line_number":6080,"context_line":"            # data is correct."},{"line_number":6081,"context_line":""},{"line_number":6082,"context_line":"            # Pull out multipath_id from the bdm information. The"},{"line_number":6083,"context_line":"            # multipath_id can be placed into the connection info"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a1a9d01_49c1847f","line":6080,"in_reply_to":"1a4dcd0f_70b87511","updated":"2015-09-28 14:42:43.000000000","message":"Would have been nice if we could have just re-used this here:\n\nhttps://github.com/openstack/nova/blob/master/nova/virt/block_device.py#L306","commit_id":"8b649aa86fb26e998d66e75e5cebfd19c396942d"}]}
