Description of problem:
During live migration with attached volume, nova ignores initialize connection errors and does not roll back.
Version-Release number of selected component (if applicable):
Depends on simulating a initialize_connection failure during live migration.
Steps to Reproduce:
1. Create a nova instance
2. Attach a cinder volume
3. Perform ‘nova live-migration’ to a different backend
4. Cause a failure in the ‘initialize_connection’ call to the new host
5. Wait for nova to call ‘terminate_connection’ on the connection to the original host
Instance remains on original host with Cinder volume attached according to Cinder but no longer mapped on the backend. This removes connectivity from storage to the host and can cause data loss.
A clean roll back should occur on failure.
What seems to be happening is that Nova is not stopping the migration when receiving an error from Cinder and ends up calling terminate_connection for the src host when it should not be.