Hi John, Here're my steps to reproduce: $ cat devstack/localrc ENABLED_SERVICES+=,-n-vol,cinder,c-api,c-sch,c-vol VOLUME_GROUP=stack-volumes CINDER_BRANCH=folsom-2 NOVA_BRANCH=folsom-2 GLANCE_BRANCH=folsom-2 KEYSTONE_BRANCH=folsom-2 HORIZON_BRANCH=folsom-2 $ nova boot vm1 ... $ nova volume-create --display_name volume1 1 - vm1 and volume1 are up and active/available - add manually record to cinder.volume_metadata linked to volume1 with (key=somekey, value=somevalue) $ nova volume-attach vm1 volume1 /dev/vdc ERROR: The server has either erred or is incapable of performing the requested operation. (HTTP 500) (Request-ID: req-d4690e16-fcfd-49e6-9f0b-6e4491ebf347) n-api logs show traceback 2012-07-10 21:04:36 ERROR nova.api.openstack [req-d4690e16-fcfd-49e6-9f0b-6e4491ebf347 admin admin] Caught error: too many values to unpack 2012-07-10 21:04:36 TRACE nova.api.openstack Traceback (most recent call last): 2012-07-10 21:04:36 TRACE nova.api.openstack File "/opt/stack/nova/nova/api/openstack/__init__.py", line 41, in __call__ 2012-07-10 21:04:36 TRACE nova.api.openstack return req.get_response(self.application) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1053, in get_response 2012-07-10 21:04:36 TRACE nova.api.openstack application, catch_exc_info=False) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1022, in call_application 2012-07-10 21:04:36 TRACE nova.api.openstack app_iter = application(self.environ, start_response) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 159, in __call__ 2012-07-10 21:04:36 TRACE nova.api.openstack return resp(environ, start_response) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/opt/stack/keystone/keystone/middleware/auth_token.py", line 185, in __call__ 2012-07-10 21:04:36 TRACE nova.api.openstack return self.app(env, start_response) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 159, in __call__ 2012-07-10 21:04:36 TRACE nova.api.openstack return resp(environ, start_response) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 159, in __call__ 2012-07-10 21:04:36 TRACE nova.api.openstack return resp(environ, start_response) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 159, in __call__ 2012-07-10 21:04:36 TRACE nova.api.openstack return resp(environ, start_response) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/usr/lib/pymodules/python2.7/routes/middleware.py", line 131, in __call__ 2012-07-10 21:04:36 TRACE nova.api.openstack response = self.app(environ, start_response) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 159, in __call__ 2012-07-10 21:04:36 TRACE nova.api.openstack return resp(environ, start_response) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 147, in __call__ 2012-07-10 21:04:36 TRACE nova.api.openstack resp = self.call_func(req, *args, **self.kwargs) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 208, in call_func 2012-07-10 21:04:36 TRACE nova.api.openstack return self.func(req, *args, **kwargs) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/opt/stack/nova/nova/api/openstack/wsgi.py", line 849, in __call__ 2012-07-10 21:04:36 TRACE nova.api.openstack content_type, body, accept) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/opt/stack/nova/nova/api/openstack/wsgi.py", line 897, in _process_stack 2012-07-10 21:04:36 TRACE nova.api.openstack action_result = self.dispatch(meth, request, action_args) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/opt/stack/nova/nova/api/openstack/wsgi.py", line 972, in dispatch 2012-07-10 21:04:36 TRACE nova.api.openstack return method(req=request, **action_args) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/opt/stack/nova/nova/api/openstack/compute/contrib/volumes.py", line 349, in create 2012-07-10 21:04:36 TRACE nova.api.openstack volume_id, device) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/opt/stack/nova/nova/compute/api.py", line 104, in wrapped 2012-07-10 21:04:36 TRACE nova.api.openstack return func(self, context, target, *args, **kwargs) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/opt/stack/nova/nova/compute/api.py", line 1563, in attach_volume 2012-07-10 21:04:36 TRACE nova.api.openstack volume = self.volume_api.get(context, volume_id) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/opt/stack/nova/nova/volume/cinder.py", line 124, in get 2012-07-10 21:04:36 TRACE nova.api.openstack return _untranslate_volume_summary_view(context, item) 2012-07-10 21:04:36 TRACE nova.api.openstack File "/opt/stack/nova/nova/volume/cinder.py", line 92, in _untranslate_volume_summary_view 2012-07-10 21:04:36 TRACE nova.api.openstack for k, v in vol.metadata: 2012-07-10 21:04:36 TRACE nova.api.openstack ValueError: too many values to unpack 2012-07-10 21:04:36 TRACE nova.api.openstack Where vol.metadata is a dictionary, not a list of tuples. vol.metadata.items() works for me Sorry for incomplete reproducing info