Comment 7 for bug 1746609

Reviewed: https://review.openstack.org/539739
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=cafe3d066ef7021c18961d4b239a10f61db23f2d
Submitter: Zuul
Branch: master

commit cafe3d066ef7021c18961d4b239a10f61db23f2d
Author: Matt Riedemann <email address hidden>
Date: Wed Jan 31 19:06:46 2018 -0500

    libvirt: fix native luks encryption failure to find volume_id

    Not all volume types put a 'volume_id' entry in the
    connection_info['data'] dict. This change uses a new
    utility method to look up the volume_id in the connection_info
    data dict and if not found there, uses the 'serial' value
    from the connection_info, which we know at least gets set
    when the DriverVolumeBlockDevice code attaches the volume.

    This also has to update pre_live_migration since the connection_info
    dict doesn't have a 'volume_id' key in it. It's unclear what
    this code was expecting, or if it ever really worked, but since
    an attached volume represented by a BlockDeviceMapping here has
    a volume_id attribute, we can just use that. As that code path
    was never tested, this updates related unit tests and refactors
    the tests to actually use the type of DriverVolumeBlockDevice
    objects that the ComputeManager would be sending down to the
    driver pre_live_migration method. The hard-to-read squashed
    dicts in the tests are also re-formatted so a human can actually
    read them.

    Change-Id: Ie02d298cd92d5b5ebcbbcd2b0e8be01f197bfafb
    Closes-Bug: #1746609