[Nova] Suggestion needed for detach-boot-volume design
Matt Riedemann
mriedemos at gmail.com
Fri Jan 4 15:50:46 UTC 2019
On 1/2/2019 2:57 AM, Zhenyu Zheng wrote:
> I've been working on detach-boot-volume[1] in Stein, we got the initial
> design merged and while implementing we have meet some new problems and
> now I'm amending the spec to cover these new problems[2].
[2] is https://review.openstack.org/#/c/619161/
>
> The thing I want to discuss for wider opinion is that in the initial
> design, we planned to support detach root volume for only STOPPED and
> SHELVED/SHELVE_OFFLOADED instances. But then we found out that we
> allowed to detach volumes for RESIZED/PAUSED/SOFT_DELETED instances as
> well. Should we allow detaching root volume for instances in these
> status too? Cases like RESIZE could be complicated for the revert resize
> action, and it also seems unnecesary.
The full set of allowed states for attaching and detaching are here:
https://github.com/openstack/nova/blob/8ef3d253a/nova/compute/api.py#L4187
https://github.com/openstack/nova/blob/8ef3d253a/nova/compute/api.py#L4297
Concerning those other states:
RESIZED: There might be a case for attaching/detaching volumes based on
flavor during a resize, but I'm not sure about the root volume in that
case (that really sounds more like rebuild with a new image to me, which
is a different blueprint). I'm also not sure how much people know about
the ability to do this or what the behavior is on revert if you have
changed the volumes while the server is resized. If we consider that
when a user reverts a resize, they want to go back to the way things
were for the root disk image, then I would think we should not allow
changing out the root volume while resized.
PAUSED: First, I'm not sure how much anyone uses the pause API (or
suspend for that matter) although most of the virt drivers implement it.
At one point you could attach volumes to suspended servers as well, but
because libvirt didn't support it that was removed from the API (yay for
non-discoverable backend-specific API behavior changes):
https://review.openstack.org/#/c/83505/
Anyway, swapping the root volume on a paused instance seems dangerous to
me, so until someone really has a good use case for it, then I think we
should avoid that one as well.
SOFT_DELETED: I really don't understand the use case for
attaching/detaching volumes to/from a (soft) deleted server. If the
server is deleted and only hanging around because it hasn't been
reclaimed yet, there are really no guarantees that this would work, so
again, I would just skip this one for the root volume changes. If the
user really wants to play with the volumes attached to a soft deleted
server, they should restore it first.
So in summary, I think we should just not support any of those other
states for attach/detach root volumes and only focus on stopped or
shelved instances.
--
Thanks,
Matt
More information about the openstack-discuss
mailing list