cinder fails with default key_manager/backend

Bug #1721236 reported by Alfredo Moralejo
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Cinder
New
Undecided
Unassigned

Bug Description

When leaving default options in key_manager/backend and key_manager/api_class, cinder-api fails with error:

2017-10-02 15:38:43.555 21311 ERROR cinder Traceback (most recent call last):
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/bin/cinder-api", line 10, in <module>
2017-10-02 15:38:43.555 21311 ERROR cinder sys.exit(main())
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/cinder/cmd/api.py", line 60, in main
2017-10-02 15:38:43.555 21311 ERROR cinder server = service.WSGIService('osapi_volume')
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/cinder/service.py", line 547, in __init__
2017-10-02 15:38:43.555 21311 ERROR cinder self.app = self.loader.load_app(name)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/oslo_service/wsgi.py", line 353, in load_app
2017-10-02 15:38:43.555 21311 ERROR cinder return deploy.loadapp("config:%s" % self.config_path, name=name)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 247, in loadapp
2017-10-02 15:38:43.555 21311 ERROR cinder return loadobj(APP, uri, name=name, **kw)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 272, in loadobj
2017-10-02 15:38:43.555 21311 ERROR cinder return context.create()
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 710, in create
2017-10-02 15:38:43.555 21311 ERROR cinder return self.object_type.invoke(self)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 144, in invoke
2017-10-02 15:38:43.555 21311 ERROR cinder **context.local_conf)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/paste/deploy/util.py", line 55, in fix_call
2017-10-02 15:38:43.555 21311 ERROR cinder val = callable(*args, **kw)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/cinder/api/__init__.py", line 43, in root_app_factory
2017-10-02 15:38:43.555 21311 ERROR cinder return paste.urlmap.urlmap_factory(loader, global_conf, **local_conf)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/paste/urlmap.py", line 25, in urlmap_factory
2017-10-02 15:38:43.555 21311 ERROR cinder app = loader.get_app(app_name, global_conf=global_conf)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 350, in get_app
2017-10-02 15:38:43.555 21311 ERROR cinder name=name, global_conf=global_conf).create()
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 710, in create
2017-10-02 15:38:43.555 21311 ERROR cinder return self.object_type.invoke(self)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 144, in invoke
2017-10-02 15:38:43.555 21311 ERROR cinder **context.local_conf)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/paste/deploy/util.py", line 55, in fix_call
2017-10-02 15:38:43.555 21311 ERROR cinder val = callable(*args, **kw)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/cinder/api/middleware/auth.py", line 57, in pipeline_factory
2017-10-02 15:38:43.555 21311 ERROR cinder app = loader.get_app(pipeline[-1])
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 350, in get_app
2017-10-02 15:38:43.555 21311 ERROR cinder name=name, global_conf=global_conf).create()
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 710, in create
2017-10-02 15:38:43.555 21311 ERROR cinder return self.object_type.invoke(self)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 146, in invoke
2017-10-02 15:38:43.555 21311 ERROR cinder return fix_call(context.object, context.global_conf, **context.local_conf)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/paste/deploy/util.py", line 55, in fix_call
2017-10-02 15:38:43.555 21311 ERROR cinder val = callable(*args, **kw)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/cinder/api/openstack/__init__.py", line 72, in factory
2017-10-02 15:38:43.555 21311 ERROR cinder return cls()
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/cinder/api/openstack/__init__.py", line 83, in __init__
2017-10-02 15:38:43.555 21311 ERROR cinder self._setup_routes(mapper, ext_mgr)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/cinder/api/v2/router.py", line 45, in _setup_routes
2017-10-02 15:38:43.555 21311 ERROR cinder self.resources['volumes'] = volumes.create_resource(ext_mgr)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/cinder/api/v2/volumes.py", line 338, in create_resource
2017-10-02 15:38:43.555 21311 ERROR cinder return wsgi.Resource(VolumeController(ext_mgr))
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/cinder/api/v2/volumes.py", line 49, in __init__
2017-10-02 15:38:43.555 21311 ERROR cinder self.volume_api = cinder_volume.API()
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/cinder/volume/__init__.py", line 30, in API
2017-10-02 15:38:43.555 21311 ERROR cinder return importutils.import_object(class_name, *args, **kwargs)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/oslo_utils/importutils.py", line 44, in import_object
2017-10-02 15:38:43.555 21311 ERROR cinder return import_class(import_str)(*args, **kwargs)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/cinder/volume/api.py", line 134, in __init__
2017-10-02 15:38:43.555 21311 ERROR cinder self.key_manager = key_manager.API(CONF)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/cinder/keymgr/__init__.py", line 29, in API
2017-10-02 15:38:43.555 21311 ERROR cinder cls = importutils.import_class(conf.key_manager.backend)
2017-10-02 15:38:43.555 21311 ERROR cinder File "/usr/lib/python2.7/site-packages/oslo_utils/importutils.py", line 30, in import_class
2017-10-02 15:38:43.555 21311 ERROR cinder __import__(mod_str)
2017-10-02 15:38:43.555 21311 ERROR cinder ValueError: Empty module name
2017-10-02 15:38:43.555 21311 ERROR cinder

Note that key_manager/backend default value is 'barbican'. While castellan resolves this to a class using stevedore, cinder loads it tries to load it directly [2], so it fails if the value o f backend or api_class is not set to a full class path as 'castellan.key_manager.barbican_key_manager:BarbicanKeyManager'.

[1] https://github.com/openstack/castellan/blob/master/castellan/key_manager/__init__.py#L38-L48
[2] https://github.com/openstack/cinder/blob/master/cinder/keymgr/__init__.py#L29

Tags: barbican
tags: added: barbican
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

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