Hi All!
We have users who use 'rebuild' on volume booted servers before nova
microversion 2.93, relying on the behavior that it keeps the volume as
is. And they would like to keep doing this even after the openstack
distro moves to a(n at least) zed base (sometime in the future).
As a naive user, it seems to me both behaviors make sense. I can
easily imagine use cases for rebuild with and without reimaging.
However since the implementation of
https://specs.openstack.org/openstack/nova-specs/specs/zed/implemented/volume-backed-server-rebuild.html
rebuild without reimaging is only possible using an old microversion
(<2.93). With that change merged, rebuild without reimaging seems to
be a somewhat less than fully supported feature. A few examples of
what I mean by that:
That's not really true : the new microversion just means we change the default behaviour, but you can still opt into the previous behaviour by requesting an older microversion.
That being said, I do understand your concerns, further below.
First, there's this warning:
https://opendev.org/openstack/python-openstackclient/src/commit/5eb89e4ca1cebad9245c27d58a0dafd7f363ece0/openstackclient/compute/v2/server.py#L3452-L3453
In which it is unclear to me what exactly will become an error in a
future release. Rebuild with a different image? Or any rebuild with
microversion <2.93?
The latter (in theory) : if you opt into a microversion older or equal than 2.93, you shouldn't expect your volume to *not* be rebuilt.
Then old nova microversions may get dropped. Though what I heard from
nova folks, this is unlikely to happen.
Correct, I never want to say never, but we don't have any plans in any subsequent futures to bump the minimum versions, for many many reasons, not only due to the tech debt but also and mainly because of the interoperatibility we must guarantee.
Then there are a few hypothetical situations like:
a) Rebuild gets a new api feature (in a new microversion) which can
never be combined with the do-not-reimage behavior.
b) Rebuild may have a bug, whose fix requires a microversion bump.
This again can never be combined with the old behavior.
What do you think, are these concerns purely theoretical or real?
If we would like to keep having rebuild without reimaging, can we rely
on the old microversion indefinitely?
Alternatively shall we propose and implement a nova spec to explicitly
expose the choice in the rebuild api (just to express the idea: osc
server rebuild --reimage|--no-reimage)?
I'm not opposed to challenge the usecases in a spec, for sure.
If the topic is worth further discussion beyond the ML, I can also
bring it to the nova ptg.
That's already the case. Add yourself to the courtesy ping list of that topic.
-Sylvain
Thanks in advance,
Bence Romsics (rubasov)
ps: I'll be afk for a few days, but I'll follow up next Tuesday.