)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"2666fb2e0a220979d82b48cd3dfef19ef56d12d3","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When live migrate fail, it will rollback and remove volume connection"},{"line_number":10,"context_line":"on destination host, according to block_device_mapping table. But"},{"line_number":11,"context_line":"if it fail in the stage of volume initialization on destination host,"},{"line_number":12,"context_line":"the block_device_mapping table was not update, and the rollback"},{"line_number":13,"context_line":"process will remove other\u0027s disk on destination host by mistake. This"},{"line_number":14,"context_line":"patch record connector info in block_device_mapping and check the"},{"line_number":15,"context_line":"host info before remove volume to avoid misreove."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"da6895a0_95915c55","line":12,"range":{"start_line":12,"start_character":39,"end_line":12,"end_character":45},"updated":"2016-10-24 04:45:26.000000000","message":"s/update/updated maybe?","commit_id":"e75877af46827b76467af06579a6509ef0b8817b"},{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"2666fb2e0a220979d82b48cd3dfef19ef56d12d3","unresolved":false,"context_lines":[{"line_number":12,"context_line":"the block_device_mapping table was not update, and the rollback"},{"line_number":13,"context_line":"process will remove other\u0027s disk on destination host by mistake. This"},{"line_number":14,"context_line":"patch record connector info in block_device_mapping and check the"},{"line_number":15,"context_line":"host info before remove volume to avoid misreove."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Id6e15c58e754439caec2e1962050c18419a9b293"},{"line_number":18,"context_line":"Closes-Bug:#1633955"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"da6895a0_f58ff820","line":15,"range":{"start_line":15,"start_character":40,"end_line":15,"end_character":48},"updated":"2016-10-24 04:45:26.000000000","message":"s/misreove/misremove ?","commit_id":"e75877af46827b76467af06579a6509ef0b8817b"}],"nova/compute/manager.py":[{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"2666fb2e0a220979d82b48cd3dfef19ef56d12d3","unresolved":false,"context_lines":[{"line_number":4981,"context_line":"                    context, volume_id, instance.uuid)"},{"line_number":4982,"context_line":"            connection_info \u003d jsonutils.loads(bdm.connection_info)"},{"line_number":4983,"context_line":"            connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":4984,"context_line":"            if connector[\u0027host\u0027] \u003d\u003d connection_info[\u0027connector\u0027][\u0027host\u0027]:"},{"line_number":4985,"context_line":"                self._driver_detach_volume(context,"},{"line_number":4986,"context_line":"                                           instance, bdm, connection_info)"},{"line_number":4987,"context_line":"                self.volume_api.terminate_connection(context,"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_f504587f","line":4984,"range":{"start_line":4984,"start_character":15,"end_line":4984,"end_character":73},"updated":"2016-10-24 04:45:26.000000000","message":"I couldn\u0027t find a test case that exercises the case when this evaluates to false.","commit_id":"e75877af46827b76467af06579a6509ef0b8817b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"82765164187d6e53b9106f2509654148e8531f8d","unresolved":false,"context_lines":[{"line_number":5076,"context_line":"                    context, volume_id, instance.uuid)"},{"line_number":5077,"context_line":"            connection_info \u003d jsonutils.loads(bdm.connection_info)"},{"line_number":5078,"context_line":"            connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":5079,"context_line":"            if connector[\u0027host\u0027] \u003d\u003d connection_info[\u0027connector\u0027][\u0027host\u0027]:"},{"line_number":5080,"context_line":"                self._driver_detach_volume(context,"},{"line_number":5081,"context_line":"                                           instance, bdm, connection_info)"},{"line_number":5082,"context_line":"                self.volume_api.terminate_connection(context,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_279080ec","line":5079,"range":{"start_line":5079,"start_character":36,"end_line":5079,"end_character":64},"updated":"2016-12-08 03:16:03.000000000","message":"The connector wasn\u0027t stashed in the connection_info until mitaka:\n\nhttps://review.openstack.org/#/c/266095/\n\nThat was backported to stable/liberty:\n\nhttps://review.openstack.org/#/c/277587/\n\nBut you could have a BDM from kilo which doesn\u0027t have the stashed connector and you\u0027ll get a KeyError here.\n\nI wrote some code in the nova/compute/api.py that gets the stashed connector in a safe way:\n\nhttps://review.openstack.org/#/c/257853/\n\nI\u0027d recommend pulling that out into nova/compute/utils and then using it from there in both places.","commit_id":"688c08ed6a4e731474b1270b01d67b74332c2f6e"}],"nova/virt/block_device.py":[{"author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"change_message_id":"2666fb2e0a220979d82b48cd3dfef19ef56d12d3","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                                                           connector)"},{"line_number":260,"context_line":"        if \u0027serial\u0027 not in connection_info:"},{"line_number":261,"context_line":"            connection_info[\u0027serial\u0027] \u003d self.volume_id"},{"line_number":262,"context_line":"        connection_info[\u0027connector\u0027] \u003d connector"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        self._preserve_multipath_id(connection_info)"},{"line_number":265,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_d5d754eb","line":262,"range":{"start_line":262,"start_character":39,"end_line":262,"end_character":48},"updated":"2016-10-24 04:45:26.000000000","message":"my problem is that the connector structure comes from the individual drivers, which means that it\u0027s under the control of the driver. I would unpack the required/used fields here. That will highlight that only the host field is used, so you don\u0027t need a nested structure here, all you need is connector.host, so you can get by adding one extra field `connector_host`","commit_id":"e75877af46827b76467af06579a6509ef0b8817b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a28ec7d24e22852d13ef0bcfb11ae4ff5e8a0bc6","unresolved":false,"context_lines":[{"line_number":258,"context_line":"                                                           connector)"},{"line_number":259,"context_line":"        if \u0027serial\u0027 not in connection_info:"},{"line_number":260,"context_line":"            connection_info[\u0027serial\u0027] \u003d self.volume_id"},{"line_number":261,"context_line":"        connection_info[\u0027connector\u0027] \u003d connector"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        self._preserve_multipath_id(connection_info)"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_47301c08","line":261,"updated":"2016-12-08 03:18:12.000000000","message":"This is already done in volume_api.initialize_connection:\n\nhttps://github.com/openstack/nova/blob/1b785e5f0c8533b49590404d1463af80b8a1ba00/nova/volume/cinder.py#L386","commit_id":"688c08ed6a4e731474b1270b01d67b74332c2f6e"}]}
