[openstack-dev] [nova] why is evacuate marked as missing for libvirt?

Markus Zoeller mzoeller at de.ibm.com
Fri Apr 17 09:09:01 UTC 2015

"Daniel P. Berrange" <berrange at redhat.com> wrote on 04/15/2015 11:35:39 

> From: "Daniel P. Berrange" <berrange at redhat.com>
> To: "OpenStack Development Mailing List (not for usage questions)" 
> <openstack-dev at lists.openstack.org>
> Date: 04/15/2015 11:42 AM
> Subject: Re: [openstack-dev] [nova] why is evacuate marked as missing 
> for libvirt?
> On Tue, Apr 14, 2015 at 01:44:45PM -0400, Russell Bryant wrote:
> > On 04/14/2015 12:22 PM, Matt Riedemann wrote:
> > > This came up in IRC this morning, but the hypervisor support matrix 
> > > listing evacuate as 'missing' for the libvirt driver:
> > > 
> > > http://docs.openstack.org/developer/nova/support-
> matrix.html#operation_evacuate
> > > 
> > > 
> > > Does anyone know why that is?  The rebuild method in the compute 
> > > just re-uses other virt driver operations so by default it's 
> > > by all drivers.  The only one that overrides rebuild for evacuate is 
> > > ironic driver.
> > 
> > I think it's a case where there are a couple of different things
> > referred to with 'evacuate'.  I believe this was originally added to
> > track something that was effectively XenServer specific and the
> > description of the feature seems to reflect that.  We've since added 
> > more generic 'evacuate' API, so it's pretty confusing.  It should
> > probably be reworked to track which drivers work with the 'evacuate' 
> > call, and perhaps have a different entry for whatever this different
> > XenServer thing is (or was).
> Yep, if there's any mistakes or bizarre things in the support matrix
> just remember that the original wiki page had essentially zero 
> about what each feature item was referring to - just the two/three word
> feature name. When I turned it into formal docs I tried to add better
> explanations, but it is entirely possible my interpretations were wrong
> in places. So if in doubt assume the support matrix is wrong, and just
> send a review to update it to some saner state with better description
> of the feature. Pretty much all the features in the matrix could do
> with better explanations and/or being broken up into finer grained
> features - there's plenty of scope for people to submit patches to
> improve the granularity of items.

I think that the confusion is caused by something called the "host
maintenance mode" [1]. When this is enabled, an evacuate is triggered
by the underlying hypervisor. This can mode can be set by the CLI [2] 
and is not implemented by the libvirt driver.
The probably intented API for the feature "evacuate" is [3] which can 
be triggered via CLI with:
* nova evacuate <server>
* nova host-evacuate <host>
* nova host-evacuate-live <host>

The feature "evacuate" has hereby a dependency to "live-migration". As
the system z platform doesn't yet has [4] merged, "evacuate" is there 
"partial" [5] (TODO for me) whereas for x86 there should be "complete".
Please correct me if I'm wrong here.

Unfortunately I couldn't find any tempest tests for the "evacuate" 
feature, so I tested in manually.

[1] virt.driver.ComputeDriver.host_maintenance_mode(self, host, mode)
[2] Nova CLI; command "nova host-update"
[3] nova.api.openstack.compute.contrib.evacuate
[4] libvirt: handle NotSupportedError in compareCPU
[5] "Update hypervisor support matrix with column for kvm on system z"

Markus Zoeller (markus_z)

More information about the OpenStack-dev mailing list