compute: Rework attach_volume waiters and cleanup

This change reworks both the waiters while attaching a volume *and* the
ordering of the waiters when detaching.

This is done to ensure the wait_for_volume_attachment_remove_from_server
waiter is called first as this  uses the servers client and is able to
dump the contents of the instance console when we hit a timeout.  The
contents of the instance console being incredibly useful to debug issues
within the guestOS when detaching devices as seen in bug #.

The wait_for_volume_attachment_remove_from_server waiter is also
extended to ignore missing Nova volume attachments as this can easily
happen if tests have manually detached volumes ahead of the cleanups
being called.

TODOs are also left to move away from using the volume status to
determine when a given volume has been attached and instead use the
state of volume attachments both in Nova and Cinder.

Related-Bug: #1931702
Change-Id: I8f7986dc6d8689d569b7fba74cca38de4236c6d6
3 files changed