Description of problem: All the swift services are running except the proxy. when I try and start the proxy the log shows this: [root@control ~]# cat /var/log/swift-startup.log Traceback (most recent call last): File "/usr/bin/swift-proxy-server", line 22, in <module> run_wsgi(conf_file, 'proxy-server', default_port=8080, **options) File "/usr/lib/python2.6/site-packages/swift/common/wsgi.py", line 119, in run_wsgi init_request_processor(conf_file, app_section, *args, **kwargs) File "/usr/lib/python2.6/site-packages/swift/common/wsgi.py", line 246, in init_request_processor app = loadapp('config:%s' % conf_file, global_conf={'log_name': log_name}) File "/usr/lib/python2.6/site-packages/PasteDeploy-1.5.0-py2.6.egg/paste/deploy/loadwsgi.py", line 247, in loadapp return loadobj(APP, uri, name=name, **kw) File "/usr/lib/python2.6/site-packages/PasteDeploy-1.5.0-py2.6.egg/paste/deploy/loadwsgi.py", line 271, in loadobj global_conf=global_conf) File "/usr/lib/python2.6/site-packages/PasteDeploy-1.5.0-py2.6.egg/paste/deploy/loadwsgi.py", line 296, in loadcontext global_conf=global_conf) File "/usr/lib/python2.6/site-packages/PasteDeploy-1.5.0-py2.6.egg/paste/deploy/loadwsgi.py", line 320, in _loadconfig return loader.get_context(object_type, name, global_conf) File "/usr/lib/python2.6/site-packages/PasteDeploy-1.5.0-py2.6.egg/paste/deploy/loadwsgi.py", line 450, in get_context global_additions=global_additions) File "/usr/lib/python2.6/site-packages/PasteDeploy-1.5.0-py2.6.egg/paste/deploy/loadwsgi.py", line 562, in _pipeline_app_context for name in pipeline[:-1]] File "/usr/lib/python2.6/site-packages/PasteDeploy-1.5.0-py2.6.egg/paste/deploy/loadwsgi.py", line 458, in get_context section) File "/usr/lib/python2.6/site-packages/PasteDeploy-1.5.0-py2.6.egg/paste/deploy/loadwsgi.py", line 517, in _context_from_explicit value = import_string(found_expr) File "/usr/lib/python2.6/site-packages/PasteDeploy-1.5.0-py2.6.egg/paste/deploy/loadwsgi.py", line 22, in import_string return pkg_resources.EntryPoint.parse("x=" + s).load(False) File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 1948, in load entry = __import__(self.module_name, globals(),globals(), ['__name__']) File "/usr/lib/python2.6/site-packages/keystoneclient/middleware/auth_token.py", line 155, in <module> import webob.exc ImportError: No module named webob.exc [root@control ~]# rpm -qa | grep webob python-webob1.2-1.2.3-2.1.el6ost.noarch python-webob1.0-1.0.8-3.el6.noarch Version-Release number of selected component (if applicable): Running the May 31st puddle, installed swift with packstack. this is python-keystoneclient-0.2.3-2.el6ost.noarch.rpm How reproducible: every time Steps to Reproduce: 1. install swift from the may31 puddle using packstack 2. 3. Actual results: swift proxy dies with the above stack track Expected results: swift proxy should start without a stack track Additional info:
solution we came to on the mailing list: On 06/04/2013 05:22 PM, Alan Pevec wrote: >>> if you have python-webob1.2 installed, please try adding >>> replace_dist("WebOb >= 1.2") >>> one line before replace_dist("PasteDeploy >= 1.5.0") >> >> The above works, because the dependencies in the spec are correct >> (indirectly -- since it's python-keystoneclient that wants WebOb, >> it requires python-webob, so python-webob1.2 is installed at Dan's >> box in the end). >> >> Do you prefer it in openstack-swift or python-keystoneclient? >> Both work, the first requires less code, the second is "more correct". > > Yeah, let's do the right thing - Dan, please file rhbz against python-keystoneclient, targeting 3.0 RC. > > Cheers, > Alan
Reproduced with python-keystoneclient-0.2.3-2.el6ost. > /etc/init.d/openstack-swift-proxy restart > Stopping openstack-swift-proxy: [ OK ] > Starting openstack-swift-proxy: [ OK ] > /etc/init.d/openstack-swift-proxy status > openstack-swift-proxy dead but pid file exists > # tail /var/log/swift-startup.log > section) > File "/usr/lib/python2.6/site-packages/PasteDeploy-1.5.0-py2.6.egg/paste/deploy/loadwsgi.py", line 517, in _context_from_explicit > value = import_string(found_expr) > File "/usr/lib/python2.6/site-packages/PasteDeploy-1.5.0-py2.6.egg/paste/deploy/loadwsgi.py", line 22, in import_string > return pkg_resources.EntryPoint.parse("x=" + s).load(False) > File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 1948, in load > entry = __import__(self.module_name, globals(),globals(), ['__name__']) > File "/usr/lib/python2.6/site-packages/keystoneclient/middleware/auth_token.py", line 155, in <module> > import webob.exc > ImportError: No module named webob.exc Verified with python-keystoneclient-0.2.3-4.el6ost. > # > /var/log/swift-startup.log > # /etc/init.d/openstack-swift-proxy restart > Stopping openstack-swift-proxy: [ OK ] > Starting openstack-swift-proxy: [ OK ] > # /etc/init.d/openstack-swift-proxy status > openstack-swift-proxy (pid 18834) is running... > # tail /var/log/swift-startup.log > # ls -l /var/log/swift-startup.log > -rw-r--r--. 1 root root 0 Jun 11 14:58 /var/log/swift-startup.log With only new webob installed: > Installed Packages > python-webob1.0-1.0.8-3.el6 > python-webob1.2-1.2.3-2.1.el6ost > Available Packages > python-webob-0.9.6.1-3.el6 so original simple import would have to fail: > # python -c 'import webob.exc' > Traceback (most recent call last): > File "<string>", line 1, in <module> > ImportError: No module named webob.exc
Another solution proposed upstream by Pete https://review.openstack.org/32825 "Drop webob from auth_token.py"
The upstream work needs cooking in regards to HEAD required not to send a body, so I took it to WIP status. We should use the fix as outlined in this bug.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHSA-2013-0992.html