ERROR oslo_messaging.rpc.dispatcher [req-xxxxx]消息处理期间的异常:“元数据”

问题描述 投票:0回答:2

我在Centos7上安装了Openstack(Kilo)

添加安全组规则时发生错误

我正在使用Nova-network。

我从nova-compute.log获得此错误表格

2015-07-31 16:55:05.669 5950错误oslo_messaging.rpc.dispatcher [req-76584058-8dbd-4860-a048-e9dbad712779 843c47b4a71b4ac3a6c4375d558aa423 3f4e979ea9b9409a9425442a8b096457----]消息处理期间的异常:“元数据”2015-07-31 16:55:05.669 5950 TRACE oslo_messaging.rpc.dispatcher追溯(最近一次通话):2015-07-31 16:55:05.669 5950 TRACE oslo_messaging.rpc.dispatcher文件“ /usr/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py”,第142行,位于_dispatch_and_reply中2015-07-31 16:55:05.669 5950 TRACE oslo_messaging.rpc.dispatcher executor_callback))2015-07-31 16:55:05.669 5950 TRACE oslo_messaging.rpc.dispatcher文件“ /usr/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py”,第186行,_dispatch中2015-07-31 16:55:05.669 5950 TRACE oslo_messaging.rpc.dispatcher executor_callback)2015-07-31 16:55:05.669 5950 TRACE oslo_messaging.rpc.dispatcher文件“ /usr/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py”,第130行,_do_dispatch中2015-07-31 16:55:05.669 5950跟踪oslo_messaging.rpc.dispatcher结果= func(ctxt,** new_args)2015-07-31 16:55:05.669 5950 TRACE oslo_messaging.rpc.dispatcher文件“ /usr/lib/python2.7/site-packages/nova/compute/manager.py”,行6716,在refresh_instance_security_rules中2015-07-31 16:55:05.669 5950跟踪oslo_messaging.rpc.dispatcher返回self.manager.refresh_instance_security_rules(ctxt,实例)2015-07-31 16:55:05.669 5950 TRACE oslo_messaging.rpc.dispatcher文件“ /usr/lib/python2.7/site-packages/nova/compute/manager.py”,行434,位于装饰性函数中2015-07-31 16:55:05.669 5950 TRACE oslo_messaging.rpc.dispatcher args =(_load_instance(args [0]),)+ args [1:]2015-07-31 16:55:05.669 5950 TRACE oslo_messaging.rpc.dispatcher文件“ /usr/lib/python2.7/site-packages/nova/compute/manager.py”,第425行,在_load_instance中2015-07-31 16:55:05.669 5950 TRACE oslo_messaging.rpc.dispatcher Expected_attrs = metas)2015-07-31 16:55:05.669 5950 TRACE oslo_messaging.rpc.dispatcher文件“ /usr/lib/python2.7/site-packages/nova/objects/instance.py”,第492行,在_from_db_object中2015-07-31 16:55:05.669 5950 TRACE oslo_messaging.rpc.dispatcher instance ['metadata'] = utils.instance_meta(db_inst)2015-07-31 16:55:05.669 5950 TRACE oslo_messaging.rpc.dispatcher文件“ /usr/lib/python2.7/site-packages/nova/utils.py”,行816,在instance_meta中2015-07-31 16:55:05.669 5950跟踪oslo_messaging.rpc.dispatcher if isinstance(instance ['metadata'],dict):2015-07-31 16:55:05.669 5950跟踪oslo_messaging.rpc.dispatcher KeyError:'metadata'2015-07-31 16:55:05.669 5950跟踪oslo_messaging.rpc.dispatcher

谢谢你热心!

openstack openstack-nova
2个回答
0
投票

我也遇到了同样的错误。

尝试先将规则添加到安全组,然后再创建实例。它对我有用。

这仅是一种解决方法。由于我没有足够的权限发表评论,因此我将其添加为答案。

如果我了解任何解决方案,我会在这里发布。


0
投票

尽管已经有4年了,但也许没人在乎根本原因,但我还是把它放在这里了,因为我做了一些(重新)搜索。

object_compat装饰器希望通过以下方式获取Instance对象'metadata'和'system_metadata'属性,但如果这些属性不在数据库实例字典对象Instance._from_db_object将失败并显示KeyError。

在基洛,这是根据refresh_instance_security_rules发生的,因为在计算API代码,将实例传递给refresh_instance_security_rules来自调用以获取在实例列上加入的安全组,但是不加入实例的metadata / system_metadata字段。因此,当实例到达计算管理器中的object_compat时,db instance dict将转换为Instance对象,它期望不在字典中的字段,我们得到KeyError。

有关详细信息,请参见以下代码提交。

https://opendev.org/openstack/nova/commit/9369aab04e37b7818d49b00e65857be8b3564e9e

© www.soinside.com 2019 - 2024. All rights reserved.