yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #33455
[Bug 1462239] [NEW] libvirt: thrown NotImplementedError when running "nova root-password"
Public bug reported:
libvirt: thrown NotImplementedError when running "nova root-password"
As we all know, the command “nova root-password” is used to change the root password for a server,
but libvirt driver does not support this function at present.
The following is the description of the error:
1. run "nova root-password" on controler.
2. returning 501 error. nova-api log:
2015-06-05 14:34:11.588 3993 INFO nova.api.openstack.wsgi [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 None] HTTP exception thrown: Unable to set password on instance
2015-06-05 14:34:11.589 3993 DEBUG nova.api.openstack.wsgi [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 None] Returning 501 to user: Unable to set password on instance _call_ /usr/lib/python2.6/site-packages/nova/api/openstack/wsgi.py:1217
2015-06-05 14:34:11.591 3993 INFO nova.osapi_compute.wsgi.server [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 None] 172.40.0.2 "POST /v
2/8e3d0869585d486daf23865ebc85449b/servers/12d57f28-8d00-47d3-876c-ebdba7145ddf/action HTTP/1.1" status: 501 len: 282 time: 3.0169549
3. thrown NotImplementedError. nova-compute log:
2015-06-05 14:34:10.654 13446 WARNING nova.compute.manager [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 None] [instance: 12d57f28-8d00-
47d3-876c-ebdba7145ddf] set_admin_password is not implemented by this driver or guest instance.
2015-06-05 14:34:11.532 13446 ERROR oslo.messaging.rpc.dispatcher [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 ] Exception during messa
ge handling: set_admin_password is not implemented by this driver or guest instance.
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher Traceback (most recent call last):
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispat
cher.py", line 133, in _dispatch_and_reply
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher incoming.message))
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispat
cher.py", line 176, in _dispatch
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher return self._do_dispatch(endpoint, method, ctxt, args)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispat
cher.py", line 122, in _do_dispatch
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher result = getattr(endpoint, method)(ctxt, **new_args)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 403, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/exception.py", line
88, in wrapped
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher payload)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/openstack/common/exc
utils.py", line 68, in _exit_
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher six.reraise(self.type_, self.value, self.tb)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/exception.py", line
71, in wrapped
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher return f(self, context, *args, **kw)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 284, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/openstack/common/exc
utils.py", line 68, in _exit_
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher six.reraise(self.type_, self.value, self.tb)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 270, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 337, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 313, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/openstack/common/exc
utils.py", line 68, in _exit_
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher six.reraise(self.type_, self.value, self.tb)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 300, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 2919, in set_admin_password
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher NotImplementedError: set_admin_password is not implemented by this
driver or guest instance.
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher
2015-06-05 14:34:11.579 13446 ERROR oslo.messaging._drivers.common [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 ] Returning exception s
et_admin_password is not implemented by this driver or guest instance. to caller
2015-06-05 14:34:11.579 13446 ERROR oslo.messaging._drivers.common [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 ] ['Traceback (most rec
ent call last):\n', ' File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispatcher.py", line 133, in _dispatch_and_reply\n
incoming.message))\n', ' File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispatcher.py", line 176, in _dispatch\n r
eturn self._do_dispatch(endpoint, method, ctxt, args)\n', ' File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispatcher.py
", line 122, in _do_dispatch\n result = getattr(endpoint, method)(ctxt, **new_args)\n', ' File "/usr/lib/python2.6/site-packages
/nova/compute/manager.py", line 403, in decorated_function\n', ' File "/usr/lib/python2.6/site-packages/nova/exception.py", line 88
, in wrapped\n payload)\n', ' File "/usr/lib/python2.6/site-packages/nova/openstack/common/excutils.py", line 68, in _exit_\n
six.reraise(self.type_, self.value, self.tb)\n', ' File "/usr/lib/python2.6/site-packages/nova/exception.py", line 71, in wrappe
d\n return f(self, context, *args, **kw)\n', ' File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 284, in dec
orated_function\n', ' File "/usr/lib/python2.6/site-packages/nova/openstack/common/excutils.py", line 68, in _exit_\n six.rera
ise(self.type_, self.value, self.tb)\n', ' File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 270, in decorated_
function\n', ' File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 337, in decorated_function\n', ' File "/usr/l
ib/python2.6/site-packages/nova/compute/manager.py", line 313, in decorated_function\n', ' File "/usr/lib/python2.6/site-packages/n
ova/openstack/common/excutils.py", line 68, in _exit\n six.reraise(self.type, self.value, self.tb)\n', ' File "/usr/lib/pyth
on2.6/site-packages/nova/compute/manager.py", line 300, in decorated_function\n', ' File "/usr/lib/python2.6/site-packages/nova/com
pute/manager.py", line 2919, in set_admin_password\n', 'NotImplementedError: set_admin_password is not implemented by this driver or
guest instance.\n']
4.Here is the code.
nova/compute/manager.py ComputeManager.set_admin_password()
def set_admin_password(self, context, instance, new_pass):
"""Set the root/admin password for an instance on this host.
This is generally only called by API password resets after an
image has been built.
@param context: Nova auth context.
@param instance: Nova instance object.
@param new_pass: The admin password for the instance.
"""
context = context.elevated()
if new_pass is None:
# Generate a random password
new_pass = utils.generate_password()
current_power_state = self._get_power_state(context, instance)
expected_state = power_state.RUNNING
if current_power_state != expected_state:
instance.task_state = None
instance.save(expected_task_state=task_states.UPDATING_PASSWORD)
_msg = _('instance %s is not running') % instance.uuid
raise exception.InstancePasswordSetFailed(
instance=instance.uuid, reason=_msg)
try:
self.driver.set_admin_password(instance, new_pass)
LOG.info(_LI("Root password set"), instance=instance)
instance.task_state = None
instance.save(
expected_task_state=task_states.UPDATING_PASSWORD)
except NotImplementedError:
LOG.warning(_LW('set_admin_password is not implemented '
'by this driver or guest instance.'),
instance=instance)
instance.task_state = None
instance.save(
expected_task_state=task_states.UPDATING_PASSWORD)
raise NotImplementedError(_('set_admin_password is not '
'implemented by this driver or guest '
'instance.'))
except exception.UnexpectedTaskStateError:
# interrupted by another (most likely delete) task
# do not retry
raise
except Exception:
# Catch all here because this could be anything.
LOG.exception(_LE('set_admin_password failed'),
instance=instance)
self._set_instance_obj_error_state(context, instance)
# We create a new exception here so that we won't
# potentially reveal password information to the
# API caller. The real exception is logged above
_msg = _('error setting admin password')
raise exception.InstancePasswordSetFailed(
instance=instance.uuid, reason=_msg)
** Affects: nova
Importance: Undecided
Assignee: javeme (javaloveme)
Status: New
** Tags: libvirt
** Description changed:
libvirt: thrown NotImplementedError when running "nova root-password"
As we all know, the command “nova root-password” is used to change the root password for a server,
but libvirt driver does not support this function at present.
The following is the description of the error:
1. run "nova root-password" on controler.
- 2. return 501 error. nova-api log:
+ 2. returning 501 error. nova-api log:
2015-06-05 14:34:11.588 3993 INFO nova.api.openstack.wsgi [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 None] HTTP exception thrown: Unable to set password on instance
2015-06-05 14:34:11.589 3993 DEBUG nova.api.openstack.wsgi [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 None] Returning 501 to user: Unable to set password on instance _call_ /usr/lib/python2.6/site-packages/nova/api/openstack/wsgi.py:1217
2015-06-05 14:34:11.591 3993 INFO nova.osapi_compute.wsgi.server [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 None] 172.40.0.2 "POST /v
2/8e3d0869585d486daf23865ebc85449b/servers/12d57f28-8d00-47d3-876c-ebdba7145ddf/action HTTP/1.1" status: 501 len: 282 time: 3.0169549
3. thrown NotImplementedError. nova-compute log:
2015-06-05 14:34:10.654 13446 WARNING nova.compute.manager [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 None] [instance: 12d57f28-8d00-
47d3-876c-ebdba7145ddf] set_admin_password is not implemented by this driver or guest instance.
2015-06-05 14:34:11.532 13446 ERROR oslo.messaging.rpc.dispatcher [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 ] Exception during messa
ge handling: set_admin_password is not implemented by this driver or guest instance.
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher Traceback (most recent call last):
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispat
cher.py", line 133, in _dispatch_and_reply
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher incoming.message))
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispat
cher.py", line 176, in _dispatch
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher return self._do_dispatch(endpoint, method, ctxt, args)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispat
cher.py", line 122, in _do_dispatch
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher result = getattr(endpoint, method)(ctxt, **new_args)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 403, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/exception.py", line
88, in wrapped
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher payload)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/openstack/common/exc
utils.py", line 68, in _exit_
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher six.reraise(self.type_, self.value, self.tb)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/exception.py", line
71, in wrapped
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher return f(self, context, *args, **kw)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 284, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/openstack/common/exc
utils.py", line 68, in _exit_
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher six.reraise(self.type_, self.value, self.tb)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 270, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 337, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 313, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/openstack/common/exc
utils.py", line 68, in _exit_
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher six.reraise(self.type_, self.value, self.tb)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 300, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 2919, in set_admin_password
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher NotImplementedError: set_admin_password is not implemented by this
driver or guest instance.
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher
2015-06-05 14:34:11.579 13446 ERROR oslo.messaging._drivers.common [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 ] Returning exception s
et_admin_password is not implemented by this driver or guest instance. to caller
2015-06-05 14:34:11.579 13446 ERROR oslo.messaging._drivers.common [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 ] ['Traceback (most rec
- ent call last):\n', ' File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispatcher.py", line 133, in _dispatch_and_reply\n
+ ent call last):\n', ' File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispatcher.py", line 133, in _dispatch_and_reply\n
incoming.message))\n', ' File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispatcher.py", line 176, in _dispatch\n r
eturn self._do_dispatch(endpoint, method, ctxt, args)\n', ' File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispatcher.py
", line 122, in _do_dispatch\n result = getattr(endpoint, method)(ctxt, **new_args)\n', ' File "/usr/lib/python2.6/site-packages
/nova/compute/manager.py", line 403, in decorated_function\n', ' File "/usr/lib/python2.6/site-packages/nova/exception.py", line 88
- , in wrapped\n payload)\n', ' File "/usr/lib/python2.6/site-packages/nova/openstack/common/excutils.py", line 68, in _exit_\n
+ , in wrapped\n payload)\n', ' File "/usr/lib/python2.6/site-packages/nova/openstack/common/excutils.py", line 68, in _exit_\n
six.reraise(self.type_, self.value, self.tb)\n', ' File "/usr/lib/python2.6/site-packages/nova/exception.py", line 71, in wrappe
d\n return f(self, context, *args, **kw)\n', ' File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 284, in dec
orated_function\n', ' File "/usr/lib/python2.6/site-packages/nova/openstack/common/excutils.py", line 68, in _exit_\n six.rera
ise(self.type_, self.value, self.tb)\n', ' File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 270, in decorated_
function\n', ' File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 337, in decorated_function\n', ' File "/usr/l
ib/python2.6/site-packages/nova/compute/manager.py", line 313, in decorated_function\n', ' File "/usr/lib/python2.6/site-packages/n
ova/openstack/common/excutils.py", line 68, in _exit\n six.reraise(self.type, self.value, self.tb)\n', ' File "/usr/lib/pyth
on2.6/site-packages/nova/compute/manager.py", line 300, in decorated_function\n', ' File "/usr/lib/python2.6/site-packages/nova/com
pute/manager.py", line 2919, in set_admin_password\n', 'NotImplementedError: set_admin_password is not implemented by this driver or
guest instance.\n']
+ 4.Here is the code.
+ nova/compute/manager.py ComputeManager.set_admin_password()
- 4.Here is the code.
- nova/compute/manager.py ComputeManager.set_admin_password()
+ def set_admin_password(self, context, instance, new_pass):
+ """Set the root/admin password for an instance on this host.
- def set_admin_password(self, context, instance, new_pass):
- """Set the root/admin password for an instance on this host.
+ This is generally only called by API password resets after an
+ image has been built.
- This is generally only called by API password resets after an
- image has been built.
+ @param context: Nova auth context.
+ @param instance: Nova instance object.
+ @param new_pass: The admin password for the instance.
+ """
- @param context: Nova auth context.
- @param instance: Nova instance object.
- @param new_pass: The admin password for the instance.
- """
+ context = context.elevated()
+ if new_pass is None:
+ # Generate a random password
+ new_pass = utils.generate_password()
- context = context.elevated()
- if new_pass is None:
- # Generate a random password
- new_pass = utils.generate_password()
+ current_power_state = self._get_power_state(context, instance)
+ expected_state = power_state.RUNNING
- current_power_state = self._get_power_state(context, instance)
- expected_state = power_state.RUNNING
+ if current_power_state != expected_state:
+ instance.task_state = None
+ instance.save(expected_task_state=task_states.UPDATING_PASSWORD)
+ _msg = _('instance %s is not running') % instance.uuid
+ raise exception.InstancePasswordSetFailed(
+ instance=instance.uuid, reason=_msg)
- if current_power_state != expected_state:
- instance.task_state = None
- instance.save(expected_task_state=task_states.UPDATING_PASSWORD)
- _msg = _('instance %s is not running') % instance.uuid
- raise exception.InstancePasswordSetFailed(
- instance=instance.uuid, reason=_msg)
-
- try:
- self.driver.set_admin_password(instance, new_pass)
- LOG.info(_LI("Root password set"), instance=instance)
- instance.task_state = None
- instance.save(
- expected_task_state=task_states.UPDATING_PASSWORD)
- except NotImplementedError:
- LOG.warning(_LW('set_admin_password is not implemented '
- 'by this driver or guest instance.'),
- instance=instance)
- instance.task_state = None
- instance.save(
- expected_task_state=task_states.UPDATING_PASSWORD)
- raise NotImplementedError(_('set_admin_password is not '
- 'implemented by this driver or guest '
- 'instance.'))
- except exception.UnexpectedTaskStateError:
- # interrupted by another (most likely delete) task
- # do not retry
- raise
- except Exception:
- # Catch all here because this could be anything.
- LOG.exception(_LE('set_admin_password failed'),
- instance=instance)
- self._set_instance_obj_error_state(context, instance)
- # We create a new exception here so that we won't
- # potentially reveal password information to the
- # API caller. The real exception is logged above
- _msg = _('error setting admin password')
- raise exception.InstancePasswordSetFailed(
- instance=instance.uuid, reason=_msg)
+ try:
+ self.driver.set_admin_password(instance, new_pass)
+ LOG.info(_LI("Root password set"), instance=instance)
+ instance.task_state = None
+ instance.save(
+ expected_task_state=task_states.UPDATING_PASSWORD)
+ except NotImplementedError:
+ LOG.warning(_LW('set_admin_password is not implemented '
+ 'by this driver or guest instance.'),
+ instance=instance)
+ instance.task_state = None
+ instance.save(
+ expected_task_state=task_states.UPDATING_PASSWORD)
+ raise NotImplementedError(_('set_admin_password is not '
+ 'implemented by this driver or guest '
+ 'instance.'))
+ except exception.UnexpectedTaskStateError:
+ # interrupted by another (most likely delete) task
+ # do not retry
+ raise
+ except Exception:
+ # Catch all here because this could be anything.
+ LOG.exception(_LE('set_admin_password failed'),
+ instance=instance)
+ self._set_instance_obj_error_state(context, instance)
+ # We create a new exception here so that we won't
+ # potentially reveal password information to the
+ # API caller. The real exception is logged above
+ _msg = _('error setting admin password')
+ raise exception.InstancePasswordSetFailed(
+ instance=instance.uuid, reason=_msg)
** Changed in: nova
Assignee: (unassigned) => javeme (javaloveme)
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1462239
Title:
libvirt: thrown NotImplementedError when running "nova root-password"
Status in OpenStack Compute (Nova):
New
Bug description:
libvirt: thrown NotImplementedError when running "nova root-password"
As we all know, the command “nova root-password” is used to change the root password for a server,
but libvirt driver does not support this function at present.
The following is the description of the error:
1. run "nova root-password" on controler.
2. returning 501 error. nova-api log:
2015-06-05 14:34:11.588 3993 INFO nova.api.openstack.wsgi [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 None] HTTP exception thrown: Unable to set password on instance
2015-06-05 14:34:11.589 3993 DEBUG nova.api.openstack.wsgi [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 None] Returning 501 to user: Unable to set password on instance _call_ /usr/lib/python2.6/site-packages/nova/api/openstack/wsgi.py:1217
2015-06-05 14:34:11.591 3993 INFO nova.osapi_compute.wsgi.server [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 None] 172.40.0.2 "POST /v
2/8e3d0869585d486daf23865ebc85449b/servers/12d57f28-8d00-47d3-876c-ebdba7145ddf/action HTTP/1.1" status: 501 len: 282 time: 3.0169549
3. thrown NotImplementedError. nova-compute log:
2015-06-05 14:34:10.654 13446 WARNING nova.compute.manager [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 None] [instance: 12d57f28-8d00-
47d3-876c-ebdba7145ddf] set_admin_password is not implemented by this driver or guest instance.
2015-06-05 14:34:11.532 13446 ERROR oslo.messaging.rpc.dispatcher [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 ] Exception during messa
ge handling: set_admin_password is not implemented by this driver or guest instance.
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher Traceback (most recent call last):
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispat
cher.py", line 133, in _dispatch_and_reply
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher incoming.message))
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispat
cher.py", line 176, in _dispatch
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher return self._do_dispatch(endpoint, method, ctxt, args)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispat
cher.py", line 122, in _do_dispatch
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher result = getattr(endpoint, method)(ctxt, **new_args)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 403, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/exception.py", line
88, in wrapped
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher payload)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/openstack/common/exc
utils.py", line 68, in _exit_
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher six.reraise(self.type_, self.value, self.tb)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/exception.py", line
71, in wrapped
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher return f(self, context, *args, **kw)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 284, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/openstack/common/exc
utils.py", line 68, in _exit_
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher six.reraise(self.type_, self.value, self.tb)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 270, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 337, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 313, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/openstack/common/exc
utils.py", line 68, in _exit_
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher six.reraise(self.type_, self.value, self.tb)
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 300, in decorated_function
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.6/site-packages/nova/compute/manager.py",
line 2919, in set_admin_password
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher NotImplementedError: set_admin_password is not implemented by this
driver or guest instance.
2015-06-05 14:34:11.532 13446 TRACE oslo.messaging.rpc.dispatcher
2015-06-05 14:34:11.579 13446 ERROR oslo.messaging._drivers.common [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 ] Returning exception s
et_admin_password is not implemented by this driver or guest instance. to caller
2015-06-05 14:34:11.579 13446 ERROR oslo.messaging._drivers.common [req-0dc1e6b2-e700-4dfb-a388-c3ddbc0db7e3 ] ['Traceback (most rec
ent call last):\n', ' File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispatcher.py", line 133, in _dispatch_and_reply\n
incoming.message))\n', ' File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispatcher.py", line 176, in _dispatch\n r
eturn self._do_dispatch(endpoint, method, ctxt, args)\n', ' File "/usr/lib/python2.6/site-packages/oslo/messaging/rpc/dispatcher.py
", line 122, in _do_dispatch\n result = getattr(endpoint, method)(ctxt, **new_args)\n', ' File "/usr/lib/python2.6/site-packages
/nova/compute/manager.py", line 403, in decorated_function\n', ' File "/usr/lib/python2.6/site-packages/nova/exception.py", line 88
, in wrapped\n payload)\n', ' File "/usr/lib/python2.6/site-packages/nova/openstack/common/excutils.py", line 68, in _exit_\n
six.reraise(self.type_, self.value, self.tb)\n', ' File "/usr/lib/python2.6/site-packages/nova/exception.py", line 71, in wrappe
d\n return f(self, context, *args, **kw)\n', ' File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 284, in dec
orated_function\n', ' File "/usr/lib/python2.6/site-packages/nova/openstack/common/excutils.py", line 68, in _exit_\n six.rera
ise(self.type_, self.value, self.tb)\n', ' File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 270, in decorated_
function\n', ' File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 337, in decorated_function\n', ' File "/usr/l
ib/python2.6/site-packages/nova/compute/manager.py", line 313, in decorated_function\n', ' File "/usr/lib/python2.6/site-packages/n
ova/openstack/common/excutils.py", line 68, in _exit\n six.reraise(self.type, self.value, self.tb)\n', ' File "/usr/lib/pyth
on2.6/site-packages/nova/compute/manager.py", line 300, in decorated_function\n', ' File "/usr/lib/python2.6/site-packages/nova/com
pute/manager.py", line 2919, in set_admin_password\n', 'NotImplementedError: set_admin_password is not implemented by this driver or
guest instance.\n']
4.Here is the code.
nova/compute/manager.py ComputeManager.set_admin_password()
def set_admin_password(self, context, instance, new_pass):
"""Set the root/admin password for an instance on this host.
This is generally only called by API password resets after an
image has been built.
@param context: Nova auth context.
@param instance: Nova instance object.
@param new_pass: The admin password for the instance.
"""
context = context.elevated()
if new_pass is None:
# Generate a random password
new_pass = utils.generate_password()
current_power_state = self._get_power_state(context, instance)
expected_state = power_state.RUNNING
if current_power_state != expected_state:
instance.task_state = None
instance.save(expected_task_state=task_states.UPDATING_PASSWORD)
_msg = _('instance %s is not running') % instance.uuid
raise exception.InstancePasswordSetFailed(
instance=instance.uuid, reason=_msg)
try:
self.driver.set_admin_password(instance, new_pass)
LOG.info(_LI("Root password set"), instance=instance)
instance.task_state = None
instance.save(
expected_task_state=task_states.UPDATING_PASSWORD)
except NotImplementedError:
LOG.warning(_LW('set_admin_password is not implemented '
'by this driver or guest instance.'),
instance=instance)
instance.task_state = None
instance.save(
expected_task_state=task_states.UPDATING_PASSWORD)
raise NotImplementedError(_('set_admin_password is not '
'implemented by this driver or guest '
'instance.'))
except exception.UnexpectedTaskStateError:
# interrupted by another (most likely delete) task
# do not retry
raise
except Exception:
# Catch all here because this could be anything.
LOG.exception(_LE('set_admin_password failed'),
instance=instance)
self._set_instance_obj_error_state(context, instance)
# We create a new exception here so that we won't
# potentially reveal password information to the
# API caller. The real exception is logged above
_msg = _('error setting admin password')
raise exception.InstancePasswordSetFailed(
instance=instance.uuid, reason=_msg)
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1462239/+subscriptions
Follow ups
References