glance registry v2 image-list doesn't work due to bad JSON
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Glance |
Fix Released
|
Medium
|
Erno Kuvaja |
Bug Description
I can't get the glance-registry v2 image-list to work
I've set up rpdb and have found the problem (due to bug 1246968 it's really hard to debug)
When glance-api serialises the body of the request (in common.rpc bulk_request) to send to the registry it has the following data:
[{'command': 'image_get_all', 'kwargs': {'sort_dir': 'desc', 'filters': MultiDict(
It runs json.dumps(data, default=
*** ValueError: Circular reference detected
The problem is it can't serialise the 'filters': MultiDict(
Glance-reg v1 works fine but can't get glance-reg v2 working at all
summary: |
- glance registry v2 doesn't work due ValueError: Circular reference - detected + glance registry v2 image-list doesn't work due to bad JSON |
Changed in glance: | |
assignee: | nobody → Erno Kuvaja (jokke) |
status: | New → Confirmed |
Changed in glance: | |
importance: | Undecided → Medium |
Changed in glance: | |
milestone: | none → icehouse-rc1 |
status: | Fix Committed → Fix Released |
Changed in glance: | |
milestone: | icehouse-rc1 → 2014.1 |
OK I have a stack trace!
2013-11-11 16:06:54.905 12690 DEBUG eventlet. wsgi.server [4e91620a- a915-4973- bc8a-db6964d5e6 71 0a01a4d0aa5b430 f9dd8a7a0ea80b9 27 6f1a8103302543d 592964de0c826cc ae] Traceback (most recent call last): lib/python2. 7/dist- packages/ eventlet/ wsgi.py" , line 389, in handle_one_response n(self. environ, start_response) lib/python2. 7/dist- packages/ webob/dec. py", line 130, in __call__ lib/python2. 7/dist- packages/ webob/dec. py", line 195, in call_func glance/ common/ wsgi.py" , line 380, in __call__ response( self.applicatio n) lib/python2. 7/dist- packages/ webob/request. py", line 1296, in send info=False) lib/python2. 7/dist- packages/ webob/request. py", line 1260, in call_application self.environ, start_response) lib/python2. 7/dist- packages/ keystoneclient/ middleware/ auth_token. py", line 571, in __call__ lib/python2. 7/dist- packages/ webob/dec. py", line 130, in __call__ lib/python2. 7/dist- packages/ webob/dec. py", line 195, in call_func glance/ common/ wsgi.py" , line 380, in __call__ response( self.applicatio n) lib/python2. 7/dist- packages/ webob/request. py", line 1296, in send info=False) lib/python2. 7/dist- packages/ webob/request. py", line 1260, in call_application self.environ, start_response) lib/python2. 7/dist- packages/ paste/urlmap. py", line 203, in __call__ lib/python2. 7/dist- packages/ webob/dec. py", line 144, in __call__ lib/python2. 7/dist- packages/ routes/ middleware. py", line 131, in __call__ lib/python2. 7/dist- packages/ webob/dec. py", line 144, in __call__ lib/python2. 7/dist- packages/ webob/dec. py", line 130, in __call__ lib/python2. 7/dist- packages/ webob/dec. py", line 195, in call_func glance/ common/ wsgi.py" , line 612, in __call__ glance/ common/ wsgi.py" , line 631, in dispatch glance/ api/v2/ images. py", line 84, in index status= member_ status) glance/ api/authorizati on.py", line 71, in list repo.list( *args, **kwargs) glance/ domain/ proxy.py" , line 55, in list list(*args, **kwargs) glance/ api/policy. py", line ...
File "/usr/local/
result = self.applicatio
File "/usr/local/
resp = self.call_func(req, *args, **self.kwargs)
File "/usr/local/
return self.func(req, *args, **kwargs)
File "/opt/glance/
response = req.get_
File "/usr/local/
application, catch_exc_
File "/usr/local/
app_iter = application(
File "/usr/local/
return self.app(env, start_response)
File "/usr/local/
resp = self.call_func(req, *args, **self.kwargs)
File "/usr/local/
return self.func(req, *args, **kwargs)
File "/opt/glance/
response = req.get_
File "/usr/local/
application, catch_exc_
File "/usr/local/
app_iter = application(
File "/usr/local/
return app(environ, start_response)
File "/usr/local/
return resp(environ, start_response)
File "/usr/local/
response = self.app(environ, start_response)
File "/usr/local/
return resp(environ, start_response)
File "/usr/local/
resp = self.call_func(req, *args, **self.kwargs)
File "/usr/local/
return self.func(req, *args, **kwargs)
File "/opt/glance/
request, **action_args)
File "/opt/glance/
return method(*args, **kwargs)
File "/opt/glance/
member_
File "/opt/glance/
images = self.image_
File "/opt/glance/
items = self.base.
File "/opt/glance/