[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