[openstack-dev] [devstack][keystone] Don't use devstack master branch with stable/kilo
Chenhong Liu
liuchenhong at unitedstack.com
Sun May 17 12:45:16 UTC 2015
I encountered the same problem when I run keystone with eventlet server by
using *keystone-all* command.
The failure caused by func *load_driver* in *keystone.common.manager*.
try:
driver_manager = stevedore.DriverManager(namespace,
driver_name,
invoke_on_load=True,
invoke_args=args)
return driver_manager.driver
except RuntimeError:
# Ignore failure to load driver using stevedore and continue on.
pass
stevedore failed to load the module, and the RuntimeError's error message
is:
No 'keystone.identity' driver found, looking for 'sql'
while 'keystone.identity' is the value of namespace, and 'sql' is the value
of driver, boht of them are right. I also check the setup.cfg file, it
contains the right lines:
keystone.identity =
ldap = keystone.identity.backends.ldap:Identity
sql = keystone.identity.backends.sql:Identity
Then I build another environment by cloning newest repo and reinstall the
virtualenv. Then, the server starting successfully. *So, I don't know why
stevedore failed.*
But I indeed found there is a bug: If stevedore failed to load a driver,
the backward way doesn't help:
def _load_using_import(driver_name, *args):
return importutils.import_object(driver_name, *args)
# For backwards-compatibility, an unregistered class reference can
# still be used.
return _load_using_import(driver_name, *args)
These code will try to import a driver_name = 'sql', and it failed.
On Sun, May 17, 2015 at 4:25 PM Chenhong Liu <liuchenhong at unitedstack.com>
wrote:
>
> I encountered the same problem when I run keystone with eventlet server by
> using *keystone-all* command.
>
> The failure caused by func *load_driver* in *keystone.common.manager*.
>
> try:
> driver_manager = stevedore.DriverManager(namespace,
> driver_name,
> invoke_on_load=True,
> invoke_args=args)
> return driver_manager.driver
> except RuntimeError:
> # Ignore failure to load driver using stevedore and continue on.
> pass
>
> stevedore failed to load the module, and the RuntimeError's error message
> is:
> No 'keystone.identity' driver found, looking for 'sql'
> while 'keystone.identity' is the value of namespace, and 'sql' is the
> value of driver, boht of them are right. I also check the setup.cfg file,
> it contains the right lines:
>
> keystone.identity =
> ldap = keystone.identity.backends.ldap:Identity
> sql = keystone.identity.backends.sql:Identity
>
> Then I build another environment by cloning newest repo and reinstall the
> virtualenv. Then, the server starting successfully. *So, I don't know why
> stevedore failed.*
>
> But I indeed found there is a bug: If stevedore failed to load a driver,
> the backward way doesn't help:
>
> def _load_using_import(driver_name, *args):
> return importutils.import_object(driver_name, *args)
>
> # For backwards-compatibility, an unregistered class reference can
> # still be used.
> return _load_using_import(driver_name, *args)
>
> These code will try to import a driver_name = 'sql', and it failed.
>
> On Sun, May 17, 2015 at 6:55 AM Scott Drennan <scottd at nuagenetworks.net>
> wrote:
>
>> Perhaps an obvious statement, but devstack master was working with
>> stable/kilo until recently, and as of today, it isn't any more (at least
>> for me).
>>
>> The devstack commit "Use stevedore for keystone backends" on 2014-05-15
>> changes the way backends are set, and when I did a fresh install today I
>> ended up with keystone.conf entries like this:
>>
>> [assignment]
>> driver = sql
>> ...
>> [identity]
>> driver = sql
>> ...
>> [token]
>> driver = sql
>>
>>
>> rather than fully specified module names (e.g. "driver =
>> keystone.identity.backends.sql.Identity")
>>
>> This caused keystone to fail, with errors
>> in /var/log/apache2/keystone.log like this:
>>
>> 2015-05-16 21:16:25.786955 mod_wsgi (pid=9296): Exception occurred
>> processing WSGI script '/var/www/keystone/main'.
>> 2015-05-16 21:16:25.787114 Traceback (most recent call last):
>> 2015-05-16 21:16:25.787189 File "/var/www/keystone/main", line 25, in
>> <module>
>> 2015-05-16 21:16:25.787409 application =
>> wsgi_server.initialize_application(name)
>> 2015-05-16 21:16:25.787437 File
>> "/opt/stack/keystone/keystone/server/wsgi.py", line 51, in
>> initialize_application
>> 2015-05-16 21:16:25.787600 startup_application_fn=loadapp)
>> 2015-05-16 21:16:25.787625 File
>> "/opt/stack/keystone/keystone/server/common.py", line 41, in setup_backends
>> 2015-05-16 21:16:25.787769 drivers = backends.load_backends()
>> 2015-05-16 21:16:25.787795 File
>> "/opt/stack/keystone/keystone/backends.py", line 39, in load_backends
>> 2015-05-16 21:16:25.787946 _IDENTITY_API = identity.Manager()
>> 2015-05-16 21:16:25.789345 File
>> "/opt/stack/keystone/keystone/common/dependency.py", line 131, in
>> __wrapped_init__
>> 2015-05-16 21:16:25.789519 init(self, *args, **kwargs)
>> 2015-05-16 21:16:25.789544 File
>> "/opt/stack/keystone/keystone/common/dependency.py", line 193, in wrapper
>> 2015-05-16 21:16:25.789570 self.__wrapped_init__(*args, **kwargs)
>> 2015-05-16 21:16:25.789584 File
>> "/opt/stack/keystone/keystone/identity/core.py", line 412, in __init__
>> 2015-05-16 21:16:25.790098 super(Manager,
>> self).__init__(CONF.identity.driver)
>> 2015-05-16 21:16:25.790124 File
>> "/opt/stack/keystone/keystone/common/manager.py", line 70, in __init__
>> 2015-05-16 21:16:25.790203 self.driver =
>> importutils.import_object(driver_name)
>> 2015-05-16 21:16:25.790226 File
>> "/usr/local/lib/python2.7/dist-packages/oslo_utils/importutils.py", line
>> 38, in import_object
>> 2015-05-16 21:16:25.790312 return import_class(import_str)(*args,
>> **kwargs)
>> 2015-05-16 21:16:25.790335 File
>> "/usr/local/lib/python2.7/dist-packages/oslo_utils/importutils.py", line
>> 27, in import_class
>> 2015-05-16 21:16:25.790358 __import__(mod_str)
>> 2015-05-16 21:16:25.790384 ValueError: Empty module name
>>
>>
>> After much head-scratching, since I'm not that familiar with keystone, I
>> figured out what was going on, corrected keystone.conf, and then went back
>> to devstack:stable/kilo, which behaves normally. I don't think there's an
>> issue here, but wanted to share in case someone else hits the same problem.
>>
>> cheers,
>> Scott
>> __________________________________________________________________________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe:
>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20150517/09f43212/attachment.html>
More information about the OpenStack-dev
mailing list