[openstack-dev] [nova][libvirt] Is there anything blocking the libvirt driver from implementing the host_maintenance_mode API?

Chris Friesen chris.friesen at windriver.com
Mon Feb 24 17:07:53 UTC 2014


On 02/20/2014 11:38 AM, Matt Riedemann wrote:
>
>
> On 2/19/2014 4:05 PM, Matt Riedemann wrote:
>> The os-hosts OS API extension [1] showed up before I was working on the
>> project and I see that only the VMware and XenAPI drivers implement it,
>> but was wondering why the libvirt driver doesn't - either no one wants
>> it, or there is some technical reason behind not implementing it for
>> that driver?
>>
>> [1]
>> http://docs.openstack.org/api/openstack-compute/2/content/PUT_os-hosts-v2_updateHost_v2__tenant_id__os-hosts__host_name__ext-os-hosts.html

> By the way, am I missing something when I think that this extension is
> already covered if you're:
>
> 1. Looking to get the node out of the scheduling loop, you can just
> disable it with os-services/disable?
>
> 2. Looking to evacuate instances off a failed host (or one that's in
> "maintenance mode"), just use the evacuate server action.

In compute/api.py the API.evacuate() routine errors out if 
self.servicegroup_api.service_is_up(service) is true, which means that 
you can't evacuate from a compute node that is "disabled", you need to 
migrate instead.

So, the alternative is basically to disable the service, then get a list 
of all the servers on the compute host, then kick off the migration 
(either cold or live) of each of the servers.  Then because migration 
uses a "cast" instead of a "call" you need to poll all the migrations 
for success or late failures.  Once you have no failed migrations and no 
servers running on the host then you're good.

Chris



More information about the OpenStack-dev mailing list