---
fixes:
  - |
    Fixes `bug 1581230`_ by removing the internal ``check_attach`` call from
    the Nova code as it can cause race conditions and the checks are handled by
    ``reserve_volume`` in Cinder. ``reserve_volume`` is called in every volume
    attach scenario to provide the necessary checks and volume state validation
    on the Cinder side.
other:
  - |
    By removing the ``check_attach`` internal call from Nova, small behavioral
    changes were introduced.

    ``reserve_volume`` call was added to the boot from volume scenario. In case
    a failure occurs while building the instance, the instance goes into ERROR
    state while the volume stays in ``attaching`` state. The volume state will
    be set back to ``available`` when the instance gets deleted.

    Additional availability zone check is added to the volume attach flow,
    which results in an availability zone check when an instance gets
    unshelved. In case the deployment is not sensitive to availability zones
    and not using the AvailabilityZoneFilter scheduler filter the current
    default settings (cross_az_attach=True) are allowing to perform unshelve
    the same way as before this change without additional configuration.

    .. _`bug 1581230`: https://bugs.launchpad.net/nova/+bug/1581230