[openstack-dev] [Nova] Future of nova-api operations that act on all servers on a host

John Garbutt john at johngarbutt.com
Mon Apr 22 16:50:49 UTC 2013


We discussed this at the summit. I just wanted to follow up on list.

nova-api operations that work across multiple servers should be
avoided and implemented client side, maybe in python-novaclient, or
some extension thereof.

We were thinking about these kinds of operations, evacuate all servers
on a host:

There are two big use cases:
- current host has died, all data lost
- current host is dying or going into maintenance (e.g. hypervisor upgrade)

What you want to do:
- migrate the server so the user doesn't notice (so live-migrate)
- keep as much data as you can ('cold'-migrate)
- rebuild instance on new host, because you lost the data (evacuate or

Current the API only supports the above operations action on an
individual server, rather than all servers on a host.

What I think we decided was:
- keep these operations outside nova-api

Reason why:
- keep orchestration out of nova and nova-api
- let the user decide what to do when it goes wrong half way through
- its hard to communicate all the error details if we do all that in nova
- we need to draw a line on how big the API gets (should we do then do
this per aggregate...)

The next question, we didn't really answer:
- Where do we put these operations now, if not in nova-api? How to
share this effort?

My thinking is:
- keep code where we can collaborate and share effort
- easy to call in a similar way to all other commands
- this probably means python-novaclient
- but let's not endlessly grow python-novaclient, such that non-admin
users get confused

So, maybe we put them in python-novaclient, but we look to split out
all operator operations into a separate "plugin" repo that can be
installed by administrators. Long term, we might want the "nova help"
list be dynamic based on the user's token.

Apologies for the length; there is lots of background that I think is useful,

More information about the OpenStack-dev mailing list