Description of problem: neutron-dhcp-agent always tries to import openvswitch.common, but it may not be installed if you opted to not use openvswitch in your packstack answer file. Version-Release number of selected component (if applicable): openstack-neutron-2013.2-0.12.rc1.el6.noarch How reproducible: always Steps to Reproduce: 1. install openstack via packstack without openvswitch support 2. service neutron-dhcp-agent start Actual results: neutron-dhcp-agent fails to start Expected results: neutron-dhcp-agent starts Additional info: -bash-4.1$ rpm -qa | grep neutron | sort openstack-neutron-2013.2-0.12.rc1.el6.noarch openstack-neutron-bigswitch-2013.2-0.12.rc1.el6.noarch openstack-neutron-brocade-2013.2-0.12.rc1.el6.noarch openstack-neutron-cisco-2013.2-0.12.rc1.el6.noarch openstack-neutron-hyperv-2013.2-0.12.rc1.el6.noarch openstack-neutron-linuxbridge-2013.2-0.12.rc1.el6.noarch openstack-neutron-mellanox-2013.2-0.12.rc1.el6.noarch openstack-neutron-metaplugin-2013.2-0.12.rc1.el6.noarch openstack-neutron-midonet-2013.2-0.12.rc1.el6.noarch openstack-neutron-ml2-2013.2-0.12.rc1.el6.noarch openstack-neutron-nec-2013.2-0.12.rc1.el6.noarch openstack-neutron-nicira-2013.2-0.12.rc1.el6.noarch openstack-neutron-plumgrid-2013.2-0.12.rc1.el6.noarch openstack-neutron-ryu-2013.2-0.12.rc1.el6.noarch openstack-neutron-vpn-agent-2013.2-0.12.rc1.el6.noarch python-neutron-2013.2-0.12.rc1.el6.noarch python-neutronclient-2.3.1-1.el6.noarch -bash-4.1$ neutron-dhcp-agent -h Traceback (most recent call last): File "/usr/bin/neutron-dhcp-agent", line 6, in <module> from neutron.agent.dhcp_agent import main File "/usr/lib/python2.6/site-packages/neutron/agent/dhcp_agent.py", line 27, in <module> from neutron.agent.linux import interface File "/usr/lib/python2.6/site-packages/neutron/agent/linux/interface.py", line 25, in <module> from neutron.agent.linux import ovs_lib File "/usr/lib/python2.6/site-packages/neutron/agent/linux/ovs_lib.py", line 27, in <module> from neutron.plugins.openvswitch.common import constants ImportError: No module named openvswitch.common -bash-4.1$ sudo yum -q -y install openstack-neutron-openvswitch [sudo] password for parsonsa: -bash-4.1$ neutron-dhcp-agent -h usage: neutron-dhcp-agent [-h] [--config-dir DIR] [--config-file PATH] [--debug] [--log-config PATH] [--log-date-format DATE_FORMAT] [--log-dir LOG_DIR] ...
Can you confirm that this is still an issue with the updated packages currently in RDO?
Yes, the Requires: is still not there in openstack-neutron-2013.2.1-1.el6.noarch.rpm
Behavior is as described, and is caused by the following in neutron/agent/linux_ovs_lib.py: # TODO(JLH) Should we remove the explicit include of the ovs plugin here from neutron.plugins.openvswitch.common import constants This import still exists in neutron master, so for now we can just unilaterally include the openstack-neutron-openvswitch package unilaterally and add an appropriate Requires: to openstack-neutron.
The fix is not to depend on openstack-neutron-openvswitch, but to move all python files back to python-neutron, so as to avoid any hidden import dependencies being broken by python code split among plugin packages.