报错如下:
Apr 3 03:52:48 neutron neutron-linuxbridge-agent: elif tornado and tornado.gen.is_coroutine_function(f):
Apr 3 03:52:48 neutron neutron-linuxbridge-agent: AttributeError: 'module' object has no attribute 'is_coroutine_function'
Apr 3 03:52:48 neutron systemd: neutron-linuxbridge-agent.service: main process exited, code=exited, status=1/FAILURE
Apr 3 03:52:48 neutron systemd: Unit neutron-linuxbridge-agent.service entered failed state.
Apr 3 03:52:48 neutron systemd: neutron-linuxbridge-agent.service failed.
Apr 3 03:52:48 neutron systemd: neutron-linuxbridge-agent.service holdoff time over, scheduling restart.
Apr 3 03:52:48 neutron systemd: Starting OpenStack Neutron Linux Bridge Agent...
Apr 3 03:52:48 neutron neutron-enable-bridge-firewall.sh: net.bridge.bridge-nf-call-iptables = 1
Apr 3 03:52:48 neutron neutron-enable-bridge-firewall.sh: net.bridge.bridge-nf-call-ip6tables = 1
Apr 3 03:52:48 neutron systemd: Started OpenStack Neutron Linux Bridge Agent.
Apr 3 03:52:49 neutron neutron-linuxbridge-agent: Traceback (most recent call last):
Apr 3 03:52:49 neutron neutron-linuxbridge-agent: File "/usr/bin/neutron-linuxbridge-agent", line 6, in <module>
Apr 3 03:52:49 neutron neutron-linuxbridge-agent: from neutron.cmd.eventlet.plugins.linuxbridge_neutron_agent import main
Apr 3 03:52:49 neutron neutron-linuxbridge-agent: File "/usr/lib/python2.7/site-packages/neutron/cmd/eventlet/plugins/linuxbridge_neutron_agent.py", line 15, in <module>
Apr 3 03:52:49 neutron neutron-linuxbridge-agent: import \
Apr 3 03:52:49 neutron neutron-linuxbridge-agent: File "/usr/lib/python2.7/site-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py", line 47, in <module>
Apr 3 03:52:49 neutron neutron-linuxbridge-agent: from neutron.plugins.ml2.drivers.linuxbridge.agent import arp_protect
Apr 3 03:52:49 neutron neutron-linuxbridge-agent: File "/usr/lib/python2.7/site-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/arp_protect.py", line 229, in <module>
Apr 3 03:52:49 neutron neutron-linuxbridge-agent: def ebtables(comm, table='nat'):
Apr 3 03:52:49 neutron neutron-linuxbridge-agent: File "/usr/lib/python2.7/site-packages/tenacity/init.py", line 98, in wrap
Apr 3 03:52:49 neutron neutron-linuxbridge-agent: elif tornado and tornado.gen.is_coroutine_function(f):
Apr 3 03:52:49 neutron neutron-linuxbridge-agent: AttributeError: 'module' object has no attribute 'is_coroutine_function'
Apr 3 03:52:49 neutron systemd: neutron-linuxbridge-agent.service: main process exited, code=exited, status=1/FAILURE
Apr 3 03:52:49 neutron systemd: Unit neutron-linuxbridge-agent.service entered failed state.
Apr 3 03:52:49 neutron systemd: neutron-linuxbridge-agent.service failed.
现象是 neutron-linuxbridge-agent 不断重启,但是不生产日志文件,最后启动失败,坑了我2天,找到问题 "neutron-linuxbridge-agent: AttributeError: 'module' object has no attribute 'is_coroutine_function'"
找到/usr/lib/python2.7/site-packages/tenacity/init.py 里面找到这个代码注释掉。
如下:
以前是:
def wrap(f):
if asyncio and asyncio.iscoroutinefunction(f):
r = AsyncRetrying(*dargs,dkw) elif tornado and tornado.gen.is_coroutine_function(f): r = TornadoRetrying(*dargs, *dkw) else: r = Retrying(dargs,
return r.wraps(f)return wrap
改变后:
def wrap(f):
if asyncio and asyncio.iscoroutinefunction(f):
r = AsyncRetrying(*dargs, **dkw)
#elif tornado and tornado.gen.is_coroutine_function(f):
r = TornadoRetrying(*dargs, **dkw)
else:r = Retrying(*dargs, **dkw)return r.wraps(f)return wrap