)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3fa3bc63e326ad0d200bf251436bf4e3a119d581","unresolved":false,"context_lines":[{"line_number":4432,"context_line":"                                                            context, instance)"},{"line_number":4433,"context_line":"        bdms \u003d block_device_info.get(\u0027block_device_mapping\u0027, [])"},{"line_number":4434,"context_line":""},{"line_number":4435,"context_line":"        # Save source host\u0027s target_lun for its block devices."},{"line_number":4436,"context_line":"        # So as to correctly delete the LUNs after successfull live migration"},{"line_number":4437,"context_line":"        migrate_data[\u0027source_luns\u0027] \u003d dict((vol[\u0027volume_id\u0027],"},{"line_number":4438,"context_line":"                                vol[\u0027connection_info\u0027][\u0027data\u0027][\u0027target_lun\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FBJs%3D","line":4435,"updated":"2014-03-10 17:12:47.000000000","message":"This is a work around for libvirt, should this not live in the libvirt driver code?","commit_id":"d90393b72924f0589942200d87f7e3bbd6abde21"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3fa3bc63e326ad0d200bf251436bf4e3a119d581","unresolved":false,"context_lines":[{"line_number":4557,"context_line":""},{"line_number":4558,"context_line":"            # Use the source host LUNs while disconnecting volumes"},{"line_number":4559,"context_line":"            # from source hypervisor"},{"line_number":4560,"context_line":"            # https://bugs.launchpad.net/nova/+bug/1288039"},{"line_number":4561,"context_line":"            source_luns \u003d {}"},{"line_number":4562,"context_line":"            if migrate_data:"},{"line_number":4563,"context_line":"                source_luns \u003d migrate_data.get(\u0027source_luns\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FBK0%3D","line":4560,"updated":"2014-03-10 17:12:47.000000000","message":"Not sure about having the code littered with these, what about a better description of why its an issue.","commit_id":"d90393b72924f0589942200d87f7e3bbd6abde21"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3fa3bc63e326ad0d200bf251436bf4e3a119d581","unresolved":false,"context_lines":[{"line_number":4563,"context_line":"                source_luns \u003d migrate_data.get(\u0027source_luns\u0027)"},{"line_number":4564,"context_line":"            orig_target_lun \u003d source_luns.get(vol[\u0027volume_id\u0027],"},{"line_number":4565,"context_line":"                                        connection_info[\u0027data\u0027][\u0027target_lun\u0027])"},{"line_number":4566,"context_line":"            connection_info[\u0027data\u0027][\u0027target_lun\u0027] \u003d orig_target_lun"},{"line_number":4567,"context_line":"            disk_dev \u003d vol[\u0027mount_device\u0027].rpartition(\"/\")[2]"},{"line_number":4568,"context_line":"            self.volume_driver_method(\u0027disconnect_volume\u0027,"},{"line_number":4569,"context_line":"                                      connection_info,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FBKQ%3D","line":4566,"updated":"2014-03-10 17:12:47.000000000","message":"is target_lun always specified?","commit_id":"d90393b72924f0589942200d87f7e3bbd6abde21"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"8767997ab03b87aa92148d20df34ad66723f2ad3","unresolved":false,"context_lines":[{"line_number":4464,"context_line":"        source_luns \u003d {}"},{"line_number":4465,"context_line":"        for bdm in block_device_mapping:"},{"line_number":4466,"context_line":"            if \u0027target_lun\u0027 in bdm[\u0027connection_info\u0027][\u0027data\u0027]:"},{"line_number":4467,"context_line":"                target_lun \u003d bdm[\u0027connection_info\u0027][\u0027data\u0027][\u0027target_lun\u0027]"},{"line_number":4468,"context_line":"                source_luns[bdm[\u0027volume_id\u0027]] \u003d target_lun"},{"line_number":4469,"context_line":""},{"line_number":4470,"context_line":"        migrate_data[\u0027source_luns\u0027] \u003d source_luns"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_36ad9732","line":4467,"updated":"2014-05-08 06:55:40.000000000","message":"For some storage system with multiple iSCSI portals, target_iqn and target_portal may also change.\nWill it be better to also deal with target_iqn and target_portal here?","commit_id":"467d984264f39f0c66a12b608ee6d475778dcdd0"},{"author":{"_account_id":6124,"name":"Rohan Kanade","email":"openstack@rohankanade.com","username":"kanaderohan"},"change_message_id":"b6c39113e694d95f2c127ccf11704c0baa8abaaa","unresolved":false,"context_lines":[{"line_number":4464,"context_line":"        source_luns \u003d {}"},{"line_number":4465,"context_line":"        for bdm in block_device_mapping:"},{"line_number":4466,"context_line":"            if \u0027target_lun\u0027 in bdm[\u0027connection_info\u0027][\u0027data\u0027]:"},{"line_number":4467,"context_line":"                target_lun \u003d bdm[\u0027connection_info\u0027][\u0027data\u0027][\u0027target_lun\u0027]"},{"line_number":4468,"context_line":"                source_luns[bdm[\u0027volume_id\u0027]] \u003d target_lun"},{"line_number":4469,"context_line":""},{"line_number":4470,"context_line":"        migrate_data[\u0027source_luns\u0027] \u003d source_luns"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_6c9bce72","line":4467,"in_reply_to":"7adec928_36ad9732","updated":"2014-05-21 13:22:54.000000000","message":"Done","commit_id":"467d984264f39f0c66a12b608ee6d475778dcdd0"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"4fd0ed0ea95fd1fa40a99bb732d85376bea35da1","unresolved":false,"context_lines":[{"line_number":4611,"context_line":"            vol_data \u003d bdm[\u0027connection_info\u0027][\u0027data\u0027]"},{"line_number":4612,"context_line":"            source_vol_data[bdm[\u0027volume_id\u0027]] \u003d vol_data"},{"line_number":4613,"context_line":""},{"line_number":4614,"context_line":"        migrate_data[\u0027source_vol_data\u0027] \u003d source_vol_data"},{"line_number":4615,"context_line":""},{"line_number":4616,"context_line":"        # Establishing connection to volume server."},{"line_number":4617,"context_line":"        for vol in block_device_mapping:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_79c15a2e","line":4614,"updated":"2014-06-11 12:38:08.000000000","message":"IIUC this is having the destination host record the volume connection data that the source host used and then pass this back to the source host so that it knows how to disconnect the volumes it previously setup itself. This seems rather crazy - the destination host shouldn\u0027t have to tell the source host something it should already know.\n\nThe passing around of arbitrary opaque dicts with ever changing/growing contents between dest \u0026 source hosts is going to cause pain for Nova live upgrades.\n\nI\u0027d rather see a solution to this problem which only involves the source host and does not require stuffing yet more data into the migrate_data blob.","commit_id":"01d2a9baa54484d4eaa8f02be587c380d3175955"},{"author":{"_account_id":6896,"name":"Loganathan Parthipan","email":"parthi@hpe.com","username":"parthipan"},"change_message_id":"c1b9715759cc22239770342e4d3e1213679ea953","unresolved":false,"context_lines":[{"line_number":4611,"context_line":"            vol_data \u003d bdm[\u0027connection_info\u0027][\u0027data\u0027]"},{"line_number":4612,"context_line":"            source_vol_data[bdm[\u0027volume_id\u0027]] \u003d vol_data"},{"line_number":4613,"context_line":""},{"line_number":4614,"context_line":"        migrate_data[\u0027source_vol_data\u0027] \u003d source_vol_data"},{"line_number":4615,"context_line":""},{"line_number":4616,"context_line":"        # Establishing connection to volume server."},{"line_number":4617,"context_line":"        for vol in block_device_mapping:"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_dd7c5474","line":4614,"in_reply_to":"1ae5cdf2_79c15a2e","updated":"2014-07-30 16:01:16.000000000","message":"Also, isn\u0027t it the responsibility of the volume driver to disconnect the correct volume? Isn\u0027t the unique serial id or target_iqn sufficient to walk the attached volumes and remove the appropriate one?","commit_id":"01d2a9baa54484d4eaa8f02be587c380d3175955"}]}
