yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #59070
[Bug 1639239] Re: ValueError for Invalid InitiatorConnector in s390
Reviewed: https://review.openstack.org/395067
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=57f46c1c28a2e3ba1f12ec8f883cf99ccd9979db
Submitter: Jenkins
Branch: master
commit 57f46c1c28a2e3ba1f12ec8f883cf99ccd9979db
Author: Matt Riedemann <mriedem@xxxxxxxxxx>
Date: Tue Nov 8 11:22:42 2016 -0500
libvirt: handle os-brick InvalidConnectorProtocol on init
On init the LibvirtDriver imports it's volume drivers into
a registry for later access during volume operations. Several
of the libvirt volume drivers are using os-brick for the connector.
os-brick can raise an exception when loading a connector class
under certain conditions, e.g. s390x + ISER is not a supported
mapping in os-brick. This in turn causes the LibvirtDriver to
fail to load which causes nova-compute to crash.
This change handles the os-brick specific InvalidConnectorProtocol
exception when importing volume drivers, logs a debug message but
doesn't fail to init the LibvirtDriver.
As part of this change the driver_dict_from_config helper method
is integrated with the _get_volume_drivers method as that was
the only thing using it, and it's cleaner if those are just a
single method.
Depends-On: I7183a479bc12c4e5509f52bf7fdd0fa7ccaa7247
Change-Id: I61376469a409dc5475886e6c79486b815129392a
Closes-Bug: #1639239
** Changed in: nova
Status: In Progress => Fix Released
--
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/1639239
Title:
ValueError for Invalid InitiatorConnector in s390
Status in OpenStack Compute (nova):
Fix Released
Status in os-brick:
Fix Released
Bug description:
Description
===========
Calling the InitiatorConnector factory results in a ValueError for unsupported protocols, which goes unhandled and may crash a calling service.
Steps to reproduce
==================
- clone devstack
- make stack
Expected result
===============
The nova compute service should run.
Actual result
=============
A ValueError is thrown, which, in the case of the nova libvirt driver, is not handled appropriately. The compute service crashes.
Environment
===========
os|distro=kvmibm1
os|vendor=kvmibm
os|release=1.1.3-beta4.3
git|cinder|master[f6ab36d]
git|devstack|master[928b3cd]
git|nova|master[56138aa]
pip|os-brick|1.7.0
Logs & Configs
==============
[...]
2016-11-03 17:56:57.204 46141 INFO nova.virt.driver [req-fb30a5af-e87c-4ee0-903c-a5aa7d3ad5e3 - -] Loading compute driver 'libvirt.LibvirtDriver'
2016-11-03 17:56:57.442 46141 DEBUG os_brick.initiator.connector [req-fb30a5af-e87c-4ee0-903c-a5aa7d3ad5e3 - -] Factory for ISCSI on s390x factory /usr/lib/python2.7/site-packages/os_brick/initiator/connector.py:261
2016-11-03 17:56:57.444 46141 DEBUG os_brick.initiator.connector [req-fb30a5af-e87c-4ee0-903c-a5aa7d3ad5e3 - -] Factory for ISCSI on s390x factory /usr/lib/python2.7/site-packages/os_brick/initiator/connector.py:261
2016-11-03 17:56:57.445 46141 DEBUG os_brick.initiator.connector [req-fb30a5af-e87c-4ee0-903c-a5aa7d3ad5e3 - -] Factory for ISER on s390x factory /usr/lib/python2.7/site-packages/os_brick/initiator/connector.py:261
2016-11-03 17:56:57.445 46141 CRITICAL nova [req-fb30a5af-e87c-4ee0-903c-a5aa7d3ad5e3 - -] ValueError: Invalid InitiatorConnector protocol specified ISER
2016-11-03 17:56:57.445 46141 ERROR nova Traceback (most recent call last):
2016-11-03 17:56:57.445 46141 ERROR nova File "/usr/bin/nova-compute", line 10, in <module>
2016-11-03 17:56:57.445 46141 ERROR nova sys.exit(main())
2016-11-03 17:56:57.445 46141 ERROR nova File "/opt/stack/nova/nova/cmd/compute.py", line 56, in main
2016-11-03 17:56:57.445 46141 ERROR nova topic=CONF.compute_topic)
2016-11-03 17:56:57.445 46141 ERROR nova File "/opt/stack/nova/nova/service.py", line 216, in create
2016-11-03 17:56:57.445 46141 ERROR nova periodic_interval_max=periodic_interval_max)
2016-11-03 17:56:57.445 46141 ERROR nova File "/opt/stack/nova/nova/service.py", line 91, in __init__
2016-11-03 17:56:57.445 46141 ERROR nova self.manager = manager_class(host=self.host, *args, **kwargs)
2016-11-03 17:56:57.445 46141 ERROR nova File "/opt/stack/nova/nova/compute/manager.py", line 537, in __init__
2016-11-03 17:56:57.445 46141 ERROR nova self.driver = driver.load_compute_driver(self.virtapi, compute_driver)
2016-11-03 17:56:57.445 46141 ERROR nova File "/opt/stack/nova/nova/virt/driver.py", line 1625, in load_compute_driver
2016-11-03 17:56:57.445 46141 ERROR nova virtapi)
2016-11-03 17:56:57.445 46141 ERROR nova File "/usr/lib/python2.7/site-packages/oslo_utils/importutils.py", line 44, in import_object
2016-11-03 17:56:57.445 46141 ERROR nova return import_class(import_str)(*args, **kwargs)
2016-11-03 17:56:57.445 46141 ERROR nova File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 356, in __init__
2016-11-03 17:56:57.445 46141 ERROR nova self._get_volume_drivers(), self._host)
2016-11-03 17:56:57.445 46141 ERROR nova File "/opt/stack/nova/nova/virt/driver.py", line 44, in driver_dict_from_config
2016-11-03 17:56:57.445 46141 ERROR nova driver_registry[driver_type] = driver_class(*args, **kwargs)
2016-11-03 17:56:57.445 46141 ERROR nova File "/opt/stack/nova/nova/virt/libvirt/volume/iser.py", line 34, in __init__
2016-11-03 17:56:57.445 46141 ERROR nova transport=self._get_transport())
2016-11-03 17:56:57.445 46141 ERROR nova File "/usr/lib/python2.7/site-packages/os_brick/initiator/connector.py", line 285, in factory
2016-11-03 17:56:57.445 46141 ERROR nova raise ValueError(msg)
2016-11-03 17:56:57.445 46141 ERROR nova ValueError: Invalid InitiatorConnector protocol specified ISER
2016-11-03 17:56:57.445 46141 ERROR nova
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1639239/+subscriptions
References