----- Original Message ----- > From: "Russell Bryant" <rbry...@redhat.com> > To: "David Kang" <dk...@isi.edu> > Cc: "OpenStack Development Mailing List" <openstack-dev@lists.openstack.org> > Sent: Tuesday, September 10, 2013 5:17:15 PM > Subject: Re: [openstack-dev] [nova] [pci device passthrough] fails with > "NameError: global name '_' is not defined" > On 09/10/2013 05:03 PM, David Kang wrote: > > > > ----- Original Message ----- > >> From: "Russell Bryant" <rbry...@redhat.com> > >> To: "OpenStack Development Mailing List" > >> <openstack-dev@lists.openstack.org> > >> Cc: "David Kang" <dk...@isi.edu> > >> Sent: Tuesday, September 10, 2013 4:42:41 PM > >> Subject: Re: [openstack-dev] [nova] [pci device passthrough] fails > >> with "NameError: global name '_' is not defined" > >> On 09/10/2013 03:56 PM, David Kang wrote: > >>> > >>> Hi, > >>> > >>> I'm trying to test pci device passthrough feature. > >>> Havana3 is installed using Packstack on CentOS 6.4. > >>> Nova-compute dies right after start with error "NameError: global > >>> name '_' is not defined". > >>> I'm not sure if it is due to misconfiguration of nova.conf or bug. > >>> Any help will be appreciated. > >>> > >>> Here is the info: > >>> > >>> /etc/nova/nova.conf: > >>> pci_alias={"name":"test", "product_id":"7190", "vendor_id":"8086", > >>> "device_type":"ACCEL"} > >>> > >>> pci_passthrough_whitelist=[{"vendor_id":"8086","product_id":"7190"}] > >>> > >>> With that configuration, nova-compute fails with the following > >>> log: > >>> > >>> File > >>> "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/amqp.py", > >>> line 461, in _process_data > >>> **args) > >>> > >>> File > >>> > >>> "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/dispatcher.py", > >>> line 172, in dispatch > >>> result = getattr(proxyobj, method)(ctxt, **kwargs) > >>> > >>> File > >>> "/usr/lib/python2.6/site-packages/nova/conductor/manager.py", > >>> line 567, in object_action > >>> result = getattr(objinst, objmethod)(context, *args, **kwargs) > >>> > >>> File "/usr/lib/python2.6/site-packages/nova/objects/base.py", > >>> line > >>> 141, in wrapper > >>> return fn(self, ctxt, *args, **kwargs) > >>> > >>> File > >>> "/usr/lib/python2.6/site-packages/nova/objects/pci_device.py", > >>> line 242, in save > >>> self._from_db_object(context, self, db_pci) > >>> > >>> NameError: global name '_' is not defined > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup Traceback (most recent call > >>> last): > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/openstack/common/threadgroup.py", > >>> line 117, in wait > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup x.wait() > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/openstack/common/threadgroup.py", > >>> line 49, in wait > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup return self.thread.wait() > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/eventlet/greenthread.py", line > >>> 166, in wait > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup return self._exit_event.wait() > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/eventlet/event.py", line 116, in > >>> wait > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup return hubs.get_hub().switch() > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/eventlet/hubs/hub.py", line 177, > >>> in switch > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup return self.greenlet.switch() > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/eventlet/greenthread.py", line > >>> 192, in main > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup result = function(*args, > >>> **kwargs) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/openstack/common/service.py", > >>> line 65, in run_service > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup service.start() > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/service.py", line 164, in > >>> start > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup self.manager.pre_start_hook() > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line > >>> 805, in pre_start_hook > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup > >>> self.update_available_resource(nova.context.get_admin_context()) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line > >>> 4773, in update_available_resource > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup > >>> rt.update_available_resource(context) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/openstack/common/lockutils.py", > >>> line 246, in inner > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup return f(*args, **kwargs) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/compute/resource_tracker.py", > >>> line 318, in update_available_resource > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup self._sync_compute_node(context, > >>> resources) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/compute/resource_tracker.py", > >>> line 347, in _sync_compute_node > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup self._update(context, resources, > >>> prune_stats=True) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/compute/resource_tracker.py", > >>> line 420, in _update > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup self.pci_tracker.save(context) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/pci/pci_manager.py", line > >>> 126, in save > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup dev.save(context) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/objects/base.py", line 134, > >>> in wrapper > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup ctxt, self, fn.__name__, args, > >>> kwargs) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/conductor/rpcapi.py", line > >>> 497, in object_action > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup objmethod=objmethod, args=args, > >>> kwargs=kwargs) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/rpcclient.py", line 85, in > >>> call > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup return > >>> self._invoke(self.proxy.call, ctxt, method, **kwargs) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/rpcclient.py", line 63, in > >>> _invoke > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup return cast_or_call(ctxt, msg, > >>> **self.kwargs) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/proxy.py", > >>> line 126, in call > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup result = rpc.call(context, > >>> real_topic, msg, timeout) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/__init__.py", > >>> line 139, in call > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup return _get_impl().call(CONF, > >>> context, topic, msg, timeout) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/impl_qpid.py", > >>> line 794, in call > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup > >>> rpc_amqp.get_connection_pool(conf, > >>> Connection)) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/amqp.py", > >>> line 574, in call > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup rv = list(rv) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/amqp.py", > >>> line 539, in __iter__ > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup raise result > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup NameError: global name '_' is > >>> not > >>> defined > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup Traceback (most recent call > >>> last): > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/amqp.py", > >>> line 461, in _process_data > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup **args) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/dispatcher.py", > >>> line 172, in dispatch > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup result = getattr(proxyobj, > >>> method)(ctxt, **kwargs) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/conductor/manager.py", line > >>> 567, in object_action > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup result = getattr(objinst, > >>> objmethod)(context, *args, **kwargs) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/objects/base.py", line 141, > >>> in wrapper > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup return fn(self, ctxt, *args, > >>> **kwargs) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup File > >>> "/usr/lib/python2.6/site-packages/nova/objects/pci_device.py", > >>> line > >>> 242, in save > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup self._from_db_object(context, > >>> self, db_pci) > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup > >>> 2013-09-10 12:52:23.774 14749 TRACE > >>> nova.openstack.common.threadgroup NameError: global name '_' is > >>> not > >>> defined > >> > >> Can you file a bug for this? > >> > >> Fix here: https://review.openstack.org/45949 > >> > >> -- > >> Russell Bryant > > > > > > > > Thanks, Russell. > > > > The bug is reported. > > https://bugs.launchpad.net/nova/+bug/1223559 > > > > But, another error happens after the patch is applied. "TypeError: > > expected string or buffer". > > > > ----- log message ----- > > > > File > > "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/amqp.py", > > line 461, in _process_data > > **args) > > > > File > > > > "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/dispatcher.py", > > line 172, in dispatch > > result = getattr(proxyobj, method)(ctxt, **kwargs) > > > > File "/usr/lib/python2.6/site-packages/nova/conductor/manager.py", > > line 567, in object_action > > result = getattr(objinst, objmethod)(context, *args, **kwargs) > > > > File "/usr/lib/python2.6/site-packages/nova/objects/base.py", line > > 141, in wrapper > > return fn(self, ctxt, *args, **kwargs) > > > > File > > "/usr/lib/python2.6/site-packages/nova/objects/pci_device.py", > > line 243, in save > > self._from_db_object(context, self, db_pci) > > > > File > > "/usr/lib/python2.6/site-packages/nova/objects/pci_device.py", > > line 150, in _from_db_object > > pci_device.extra_info = jsonutils.loads(extra_info) > > > > File > > "/usr/lib/python2.6/site-packages/nova/openstack/common/jsonutils.py", > > line 158, in loads > > return json.loads(s) > > > > File "/usr/lib64/python2.6/json/__init__.py", line 307, in loads > > return _default_decoder.decode(s) > > > > File "/usr/lib64/python2.6/json/decoder.py", line 319, in decode > > obj, end = self.raw_decode(s, idx=_w(s, 0).end()) > > > > TypeError: expected string or buffer > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup Traceback (most recent call last): > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/openstack/common/threadgroup.py", > > line 117, in wait > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup x.wait() > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/openstack/common/threadgroup.py", > > line 49, in wait > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup return self.thread.wait() > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/eventlet/greenthread.py", line > > 166, in wait > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup return self._exit_event.wait() > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/eventlet/event.py", line 116, in > > wait > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup return hubs.get_hub().switch() > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/eventlet/hubs/hub.py", line 177, > > in switch > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup return self.greenlet.switch() > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/eventlet/greenthread.py", line > > 192, in main > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup result = function(*args, **kwargs) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/openstack/common/service.py", > > line 65, in run_service > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup service.start() > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/service.py", line 164, in > > start > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup self.manager.pre_start_hook() > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line > > 805, in pre_start_hook > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup > > self.update_available_resource(nova.context.get_admin_context()) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line > > 4773, in update_available_resource > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup > > rt.update_available_resource(context) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/openstack/common/lockutils.py", > > line 246, in inner > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup return f(*args, **kwargs) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/compute/resource_tracker.py", > > line 318, in update_available_resource > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup self._sync_compute_node(context, > > resources) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/compute/resource_tracker.py", > > line 347, in _sync_compute_node > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup self._update(context, resources, > > prune_stats=True) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/compute/resource_tracker.py", > > line 420, in _update > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup self.pci_tracker.save(context) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/pci/pci_manager.py", line > > 126, in save > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup dev.save(context) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/objects/base.py", line 134, > > in wrapper > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup ctxt, self, fn.__name__, args, > > kwargs) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/conductor/rpcapi.py", line > > 497, in object_action > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup objmethod=objmethod, args=args, > > kwargs=kwargs) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/rpcclient.py", line 85, in > > call > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup return > > self._invoke(self.proxy.call, ctxt, method, **kwargs) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/rpcclient.py", line 63, in > > _invoke > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup return cast_or_call(ctxt, msg, > > **self.kwargs) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/proxy.py", > > line 126, in call > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup result = rpc.call(context, > > real_topic, msg, timeout) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/__init__.py", > > line 139, in call > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup return _get_impl().call(CONF, > > context, topic, msg, timeout) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/impl_qpid.py", > > line 794, in call > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup rpc_amqp.get_connection_pool(conf, > > Connection)) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/amqp.py", > > line 574, in call > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup rv = list(rv) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/amqp.py", > > line 539, in __iter__ > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup raise result > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup TypeError: expected string or > > buffer > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup Traceback (most recent call last): > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/amqp.py", > > line 461, in _process_data > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup **args) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/dispatcher.py", > > line 172, in dispatch > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup result = getattr(proxyobj, > > method)(ctxt, **kwargs) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/conductor/manager.py", line > > 567, in object_action > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup result = getattr(objinst, > > objmethod)(context, *args, **kwargs) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/objects/base.py", line 141, > > in wrapper > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup return fn(self, ctxt, *args, > > **kwargs) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/objects/pci_device.py", line > > 243, in save > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup self._from_db_object(context, > > self, db_pci) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/objects/pci_device.py", line > > 150, in _from_db_object > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup pci_device.extra_info = > > jsonutils.loads(extra_info) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib/python2.6/site-packages/nova/openstack/common/jsonutils.py", > > line 158, in loads > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup return json.loads(s) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib64/python2.6/json/__init__.py", line 307, in loads > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup return _default_decoder.decode(s) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup File > > "/usr/lib64/python2.6/json/decoder.py", line 319, in decode > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup obj, end = self.raw_decode(s, > > idx=_w(s, 0).end()) > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup > > 2013-09-10 13:56:35.366 16736 TRACE > > nova.openstack.common.threadgroup TypeError: expected string or > > buffer > > Try this: > > diff --git a/nova/objects/pci_device.py b/nova/objects/pci_device.py > index a83b8f3..d0a628a 100644 > --- a/nova/objects/pci_device.py > +++ b/nova/objects/pci_device.py > @@ -145,7 +145,7 @@ class PciDevice(base.NovaPersistentObject, > base.NovaObject): > if key != 'extra_info': > pci_device[key] = db_dev[key] > else: > - extra_info = db_dev.get("extra_info") > + extra_info = db_dev.get("extra_info", '{}') > pci_device.extra_info = jsonutils.loads(extra_info) > pci_device._context = context > pci_device.obj_reset_changes() > > > -- > Russell Bryant
The same error happens. The error message says "TypeError: expected string or buffer". David _______________________________________________ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev