Files
nova-specs/specs/ussuri/implemented/virt-bfv-instance-rescue.rst
Sean Mooney 4c147f1d6b move implemented specs in ussuri
This patch moves all specs that were implmented
in the ussuri release and sets up the redirects accordingly.

Change-Id: I7eddfab1d3b6aa5a23f47b6d8966760ca5648faa
2020-05-12 08:18:59 +00:00

186 lines
5.0 KiB
ReStructuredText

..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
=======================================================
Virtual instance rescue with boot from volume instances
=======================================================
https://blueprints.launchpad.net/nova/+spec/virt-bfv-instance-rescue
Building on the existing stable disk device rescue spec [1]_ this spec will
introduce support for rescuing boot from volume (BFV) instances and detail the
impact this will have on the API.
Problem description
===================
The original instance rescue implementation included a check in the compute API
to block any requests to rescue instances where the root BDM is a cinder volume
[2]_. Any such request would be rejected initially by an
``InstanceNotRescuable`` exception being raised back to the API that would then
result in a ``400`` error being returned to the caller.
Given the work being carried out as part of the stable disk device rescue spec
[1]_ we are now able to correctly wire up all disks during an instance rescue
and as a result can remove this check, accepting requests to rescue BFV
instances.
Use Cases
---------
* Tenant users would like to rescue BFV instances.
Proposed change
===============
The work outlined in the stable disk device rescue spec [1]_ will already allow
Nova to correctly wire up root cinder volumes during a rescue while booting
from the rescue device.
The only additional changes required to allow us to remove the current BFV
instance check from the compute API are a new compatibility trait, update to
``_get_rescue_image`` within the compute manager and a new API microversion.
A new ``COMPUTE_RESCUE_BFV`` trait will be introduced to os-traits, allowing a
compatibility check within the compute API to ensure the target compute service
is capable of rescuing BFV instances.
In the compute manager ``_get_rescue_image`` will be extended to attempt to
find a reference to the original image when a rescue image is not provided but
the instance is BFV. An ``InstanceNotRescuable`` exception will be raised if no
reference to the original can be found as we can't boot from the original root
disk as a rescue device while also attaching it again to the instance during a
rescue.
A new API microversion will be introduced to signal the change in behaviour
from the existing rescue implementation where attempts to rescue BFV instances
were rejected.
Alternatives
------------
None
Data model impact
-----------------
None
REST API impact
---------------
A new microversion will be introduced to signal the change in behaviour from
the original implementation. No other changes will be made to the API.
Security impact
---------------
None
Notifications impact
--------------------
None
Other end user impact
---------------------
Users attempting to use this feature will need to opt-in by using the newly
introduced microversion or later.
Performance Impact
------------------
None
Other deployer impact
---------------------
None
Developer impact
----------------
None
Upgrade impact
--------------
The ``COMPUTE_RESCUE_BFV`` compatibility trait will be used to ensure the
target compute service is capable of performing the requested rescue against a
BFV instance within the compute API. If this is not set the existing
``InstanceNotRescuable`` exception will be raised back to the API resulting in
a ``400`` error being returned to the caller.
The new microversion or later will be used by callers to opt-in to this new
behaviour. If this isn't provided the original behaviour of rejecting requests
to rescue BFV instances will be used.
Implementation
==============
Assignee(s)
-----------
Primary assignee:
lyarwood
Other contributors:
Feature Liaison
---------------
lyarwood
Work Items
----------
* Complete the initial stable device rescue spec. [1]_
* Introduce a new ``COMPUTE_RESCUE_BFV`` trait to os-traits
* Start reporting this trait from Nova's Libvirt driver.
* Introduce a new microversion signalling the API behaviour change.
* Start using the new ``COMPUTE_RESCUE_BFV`` trait and microversion in the REST
API to determine when to allow the Compute API to rescue a BFV instance.
Dependencies
============
As highlighted throughout this spec this all requires the initial stable disk
device rescue spec [1]_ to land before this could be implemented.
Testing
=======
Tempest and functional tests will be introduced to fully validate this new
behaviour.
Documentation Impact
====================
The new microversion will be documented and the existing rescue API
documentation updated to reference it.
References
==========
.. [1] Virtual instance rescue with stable disk devices https://review.opendev.org/#/c/693849/
.. [2] BFV instance compute API check https://github.com/openstack/nova/blob/7aa88029bbf6311033457c32801963da01e88ecb/nova/compute/api.py#L4044-L4053
History
=======
.. list-table:: Revisions
:header-rows: 1
* - Release Name
- Description
* - Ussuri
- Introduced