[Openstack-operators] Normal user operated Live Migration

Alvise Dorigo alvise.dorigo at pd.infn.it
Mon Aug 4 07:00:48 UTC 2014


Hi,
I experienced the impossibility for a normal user to (Live)Migrate 
her/his virtual instances from a compute node (eventually failed or not) 
to another one:

ERROR: Live migration of instance b2c60d5a-831e-4fa6-856c-ddf3d8d287ce 
to host compute-01.cloud.pd.infn.it failed (HTTP 400) (Request-ID: 
req-d32ebc3f-d74a-41a3-821e-149009ea2cbb)

In the controller node I see this in the conductor.log:

2014-08-04 08:56:35.988 2346 ERROR nova.openstack.common.rpc.common 
[req-d32ebc3f-d74a-41a3-821e-149009ea2cbb 
ca9b92d86e184def8e4d651ced8f67eb a6c9f4d7e973430db7f9615fe2a2bfec] 
['Traceback (most recent call last):\n', '  File 
"/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/amqp.py", 
line 461, in _process_data\n    **args)\n', '  File 
"/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/dispatcher.py", 
line 172, in dispatch\n    result = getattr(proxyobj, method)(ctxt, 
**kwargs)\n', '  File 
"/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/common.py", 
line 439, in inner\n    return catch_client_exception(exceptions, func, 
*args, **kwargs)\n', '  File 
"/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/common.py", 
line 420, in catch_client_exception\n    return func(*args, 
**kwargs)\n', '  File 
"/usr/lib/python2.6/site-packages/nova/conductor/manager.py", line 645, 
in migrate_server\n    block_migration, disk_over_commit)\n', '  File 
"/usr/lib/python2.6/site-packages/nova/conductor/manager.py", line 747, 
in _live_migrate\n    ex, request_spec, self.db)\n', '  File 
"/usr/lib/python2.6/site-packages/nova/conductor/manager.py", line 719, 
in _live_migrate\n    block_migration, disk_over_commit)\n', ' File 
"/usr/lib/python2.6/site-packages/nova/conductor/tasks/live_migrate.py", 
line 205, in execute\n    return task.execute()\n', '  File 
"/usr/lib/python2.6/site-packages/nova/conductor/tasks/live_migrate.py", 
line 59, in execute\n    self._check_host_is_up(self.source)\n', ' File 
"/usr/lib/python2.6/site-packages/nova/conductor/tasks/live_migrate.py", 
line 90, in _check_host_is_up\n    service = 
db.service_get_by_compute_host(self.context, host)\n', '  File 
"/usr/lib/python2.6/site-packages/nova/db/api.py", line 151, in 
service_get_by_compute_host\n    return 
IMPL.service_get_by_compute_host(context, host)\n', '  File 
"/usr/lib/python2.6/site-packages/nova/db/sqlalchemy/api.py", line 107, 
in wrapper\n    nova.context.require_admin_context(args[0])\n', '  File 
"/usr/lib/python2.6/site-packages/nova/context.py", line 195, in 
require_admin_context\n    raise exception.AdminRequired()\n', 
'AdminRequired: User does not have admin privileges\n']


This seems to be strictly related to other restrictions (like "nova 
host-list" or the missing compute node in the output of "nova show 
<server>").
I tried to live-migrate VM using the admin user and it worked fine. But 
of course admin doesn't see regular user's VM.

I'm wondering what the live migration is for, if it cannot be used by 
regular users ... If a compute node fails there seems to be no chance to 
restore your work seamlessly.

Even after modification of /etc/nova/policy.json, the situation haven't 
changed.
After a quick search on google, I've found this bug 
https://review.openstack.org/#/c/26972/: I tried to implemented the fix 
(el_context.elevate()), but for example the command "nova host-list" 
still gives up with privilege problem.

Is there a way to perform the important task of VM migration ?

thanks,

     Alvise



More information about the OpenStack-operators mailing list