Ceilometer fails when specifying alternative sqlalchemy mysql driver

Bug #1359049 reported by Clark Boylan
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ceilometer
Fix Released
Medium
Clark Boylan

Bug Description

See http://logs.openstack.org/95/115495/1/check/check-tempest-dsvm-full/9323c20/logs/devstacklog.txt.gz#_2014-08-20_05_45_43_205 for the full log.

When setting sqlalcheny to use the pymysql driver via a mysql+pymysql:// url string ceilometer dies. This appears to happen because ceilometer is using stevedore to load the driver without properly parsing the url. I am not sure why ceilometer/stevedore do this as sqlalchemy should do this for us right?

2014-08-20 05:45:43.205 | 2014-08-20 05:45:43.205 26430 DEBUG ceilometer.storage [-] looking for 'mysql+pymysql' driver in 'ceilometer.metering.storage' get_connection /opt/stack/new/ceilometer/ceilometer/storage/__init__.py:89
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 CRITICAL ceilometer [-] RuntimeError: No 'ceilometer.metering.storage' driver found, looking for 'mysql+pymysql'
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer Traceback (most recent call last):
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer File "/usr/local/bin/ceilometer-dbsync", line 10, in
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer sys.exit(dbsync())
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer File "/opt/stack/new/ceilometer/ceilometer/cmd/storage.py", line 32, in dbsync
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer storage.get_connection_from_config(cfg.CONF).upgrade()
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer File "/opt/stack/new/ceilometer/ceilometer/storage/__init__.py", line 82, in get_connection_from_config
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer return get_connection(url, namespace)
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer File "/opt/stack/new/ceilometer/ceilometer/storage/__init__.py", line 90, in get_connection
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer mgr = driver.DriverManager(namespace, engine_name)
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer File "/usr/local/lib/python2.7/dist-packages/stevedore/driver.py", line 45, in __init__
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer verify_requirements=verify_requirements,
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer File "/usr/local/lib/python2.7/dist-packages/stevedore/named.py", line 56, in __init__
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer self._init_plugins(extensions)
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer File "/usr/local/lib/python2.7/dist-packages/stevedore/driver.py", line 97, in _init_plugins
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer (self.namespace, name))
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer RuntimeError: No 'ceilometer.metering.storage' driver found, looking for 'mysql+pymysql'
2014-08-20 05:45:43.248 | 2014-08-20 05:45:43.247 26430 TRACE ceilometer

I am pretty sure this will affect all sqlalchemy driver specs done in this way.

gordon chung (chungg)
Changed in ceilometer:
status: New → Triaged
importance: Undecided → Medium
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ceilometer (master)

Fix proposed to branch: master
Review: https://review.openstack.org/115787

Changed in ceilometer:
assignee: nobody → Clark Boylan (cboylan)
status: Triaged → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ceilometer (master)

Reviewed: https://review.openstack.org/115787
Committed: https://git.openstack.org/cgit/openstack/ceilometer/commit/?id=3ebbdec7eeb29258ae6a535562073b48d5b051d0
Submitter: Jenkins
Branch: master

commit 3ebbdec7eeb29258ae6a535562073b48d5b051d0
Author: Clark Boylan <email address hidden>
Date: Wed Aug 20 14:18:44 2014 -0700

    Handle sqlalchemy connection strings with drivers

    SqlAlchemy connection strings may specify a driver using the +foo suffix
    syntax in the url scheme. Ceilometer should accomodate this type of
    schema when looking up sqlalchemy drivers with the stevedore driver
    manager.

    Fix this by splitting connection string schemes on '+' and retrieving
    only the first element in the resulting list. Doing the entrypoint
    lookup on this element will preserve the existing behavior in loading
    sqlalchemy drivers and should be a noop for other backend types.

    Change-Id: Ieec5a4c47e8498a533d4e6954682a9bbe10bd4d9
    Fixes-bug: 1359049

Changed in ceilometer:
status: In Progress → Fix Committed
Eoghan Glynn (eglynn)
Changed in ceilometer:
milestone: none → juno-3
Thierry Carrez (ttx)
Changed in ceilometer:
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in ceilometer:
milestone: juno-3 → 2014.2
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.