Hi! I was testing packstack --allinone on "RDO test day Juno milestone 3" and i cannot start nova-network. OS: CentOS7 Openstack version: juno-1 Packstack cmd: packstack --allinone --os-neutron-install=n --os-heat-cfn-install=y --os-heat-install=y --use-epel=y Error: 2014-10-01 18:17:53.853 6108 AUDIT nova.service [-] Starting network node (version 2014.2-0.4.b3.el7.centos) 2014-10-01 18:17:54.055 6108 ERROR nova.openstack.common.threadgroup [-] Failed to add interface: can't add lo to bridge br100: Invalid argument 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup Traceback (most recent call last): 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/openstack/common/threadgroup.py", line 125, in wait 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup x.wait() 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/openstack/common/threadgroup.py", line 47, in wait 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup return self.thread.wait() 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/eventlet/greenthread.py", line 173, in wait 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup return self._exit_event.wait() 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/eventlet/event.py", line 121, in wait 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup return hubs.get_hub().switch() 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/eventlet/hubs/hub.py", line 293, in switch 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup return self.greenlet.switch() 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/eventlet/greenthread.py", line 212, in main 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup result = function(*args, **kwargs) 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/openstack/common/service.py", line 492, in run_service 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup service.start() 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/service.py", line 164, in start 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup self.manager.init_host() 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/network/manager.py", line 1776, in init_host 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup super(FlatDHCPManager, self).init_host() 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/network/manager.py", line 334, in init_host 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup self._setup_network_on_host(ctxt, network) 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/network/manager.py", line 1785, in _setup_network_on_host 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup self._initialize_network(network) 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/network/manager.py", line 1451, in _initialize_network 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup self.l3driver.initialize_gateway(network) 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/network/l3.py", line 105, in initialize_gateway 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup gateway=(network_ref['gateway'] is not None)) 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/network/linux_net.py", line 1411, in plug 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup return _get_interface_driver().plug(network, mac_address, gateway) 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/network/linux_net.py", line 1460, in plug 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup network, gateway) 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/openstack/common/lockutils.py", line 325, in inner 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup return f(*args, **kwargs) 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/network/linux_net.py", line 1575, in ensure_bridge 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup raise exception.NovaException(msg) 2014-10-01 18:17:54.055 6108 TRACE nova.openstack.common.threadgroup NovaException: Failed to add interface: can't add lo to bridge br100: Invalid argument
Basically the parameter flat_interface=lo is wrong. If you comment this parameter on nova.conf it takes 'lo' as default. The only way to overcome this is by forcing empty string for the interface on the code. interface = '' if interface: msg = _('Adding interface %(interface)s to bridge %(bridge)s') LOG.debug(msg, {'interface': interface, 'bridge': bridge}) out, err = _execute('brctl', 'addif', bridge, interface, check_exit_code=False, run_as_root=True) if (err and err != "device %s is already a member of a bridge; " "can't enslave it to bridge %s.\n" % (interface, bridge)): msg = _('Failed to add interface: %s') % err raise exception.NovaException(msg) out, err = _execute('ip', 'link', 'set', interface, 'up', check_exit_code=False, run_as_root=True)
I can also reproduce this on: openstack-nova-network.noarch 2014.2-0.7.rc2.el7.centos @openstack-juno
I opened a bug (https://bugs.launchpad.net/nova/+bug/1376596) before on upstream but it was rejected as a misconfiguration. So maybe it should be changed on the puppet module...
What's the conclusion here? Is it nova, puppet-nova or packstack issue? AFAICT this only affects allinone, so workaround could be force neutron networking for allinone?
I think the fix should come from nova.... But if that is not the case packstack should put in place the workaround on this bug https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=1153079 to fix this. Basically create a dummy interface and fix the allinone configuration to change the loopback to the newly created dummy interface.
The bug is in how packstack configures allinone for nova networking. The private interfaces should be empty for allinone. Bridging lo is kind of bogus and completely unnecessary for allinone. I believe this should be reassigned to packstack.
Ah, just realized it IS assigned to packstack. An additional note, the 'lo' is set in single_step_aio_install() in installer/run_setup.py. Unfortunately, just changing or removing those lines doesn't do what's required - it reverts to the internal default of eth1. As an aside, you cannot set it the *_PRIVIF to an empty value in the answer file either - which is wrong. A more successful approach would be for the PRIVIF's to default to empty and then only validate for empty if multiple compute nodes are specified - in which event not providing an actual physical network for "private" tenant traffic would be an error.
Added new upstream BZ against packstack.
This bug was accidentally moved from POST to MODIFIED via an error in automation, please see mmccune with any questions
This bug is against a Version which has reached End of Life. If it's still present in supported release (http://releases.openstack.org), please update Version and reopen.