Bug 1120332 - Neutron packaging breaks ML2 drivers that depend on another plugin
Summary: Neutron packaging breaks ML2 drivers that depend on another plugin
Alias: None
Product: Red Hat OpenStack
Classification: Red Hat
Component: openstack-neutron
Version: unspecified
Hardware: Unspecified
OS: Unspecified
Target Milestone: rc
: 5.0 (RHEL 7)
Assignee: Ihar Hrachyshka
QA Contact: Nir Magnezi
Depends On:
TreeView+ depends on / blocked
Reported: 2014-07-16 18:40 UTC by Kevin Benton
Modified: 2016-04-26 15:52 UTC (History)
7 users (show)

Fixed In Version: openstack-neutron-2014.1.1-4.el6ost openstack-neutron-2014.1.1-4.el7ost
Doc Type: Bug Fix
Doc Text:
Previously, OpenStack Networking packaging split plugin specific Python files from common python-neutron packages into per-plugin packages. It turned out that some parts of the code that were split into separate packages are interdependent, and cannot work correctly without split counterparts. As a result some ML2 drivers fail to work if openstack-neutron-ml2 is installed without a driver-specific plugin. Now, all plugin specific Python code (except agent executables) were moved back into python-neutron. As a result, hidden interdependencies between miscellaneous plugins are no longer broken.
Clone Of:
Last Closed: 2014-07-21 10:56:46 UTC

Attachments (Terms of Use)

System ID Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2014:0936 normal SHIPPED_LIVE openstack-neutron bug-fix advisory 2014-07-24 21:22:04 UTC

Description Kevin Benton 2014-07-16 18:40:52 UTC
Description of problem:
The way the red hat packaging breaks apart the neutron software prevents ML2 drivers from working that depend on other plugin directories being present. For example, the Big Switch ML2 mechanism driver requires the Big Switch plugin directory to be present for some common code.

Steps to Reproduce:
1.Install the neutron ML2 package.
2.Try to use the Big Switch mechanism driver.
3.It will fail since the Big Switch plugin directory is not present.

Comment 2 Ihar Hrachyshka 2014-07-17 12:12:10 UTC
@Kevin, thanks for reporting the issue.

We've already experienced several issues due to python code being split into multiple packages (f.e. see bug 1120146). The original idea to fix it was to merge all plugin packages back to python-neutron. But then we've realised that we don't want to see unrelated agents and their config files unless user explicitly requested them to be installed.

Still, python code should not be split from python-neutron package, so plugin packages should not contain any site-packages/ contents.

The good thing is that we've already merged all python files back to python-neutron as a fix for bug 1120146. The fix is already present in RHOSP 4 and RHOSP 5 builds (of course, general availability is subject to the next Z-stream release date). It was also fixed in RDO (Icehouse packages already passed CI level1, Havana is in progress; updates to public repos are, again, subject to the next repo update date).

Comment 3 Kevin Benton 2014-07-17 17:22:48 UTC
Okay, so if I understand correctly, the python-neutron package will contain the full code base and the individual plugin packages will just contain the plugin configuration files and init scripts for the agents. Is that correct?

Comment 4 Ihar Hrachyshka 2014-07-17 19:49:30 UTC
@Kevin, basically yes. Plus agent executables, if applicable.
Is that solution ok for you?

Comment 5 Kevin Benton 2014-07-17 20:17:24 UTC
What do you mean by agent executables in this case? For example, the Big Switch agent resides in the Big Switch plugins directory so it would be included in the python-neutron package.

Comment 6 Ihar Hrachyshka 2014-07-18 09:16:20 UTC
@Kevin, some plugins have separate agent executables, f.e. for bigswitch it's neutron-restproxy-agent, for hyperv it's neutron-hyperv-agent. Those executables belong to corresponding plugin packages. As for the code in neutron/plugins, it all goes to python-neutron.

Comment 10 Kevin Benton 2014-07-18 18:59:07 UTC
@Ihar, the Big Switch agent is in the plugin directory. So the executable you are referring to in the Big Switch case would just be the init script referencing it, right?

Comment 11 Ihar Hrachyshka 2014-07-20 15:07:04 UTC
@Kevin, the agent code is left in python-neutron. The only thing that is moved to bigswitch plugin package is /usr/bin/neutron-restproxy-agent, which is just an executable to run agent's main().

Comment 12 Kevin Benton 2014-07-20 15:57:07 UTC
That's great. Thanks

Comment 15 Ihar Hrachyshka 2014-07-21 10:56:46 UTC
QA doesn't verify third party plugins, so moving it to CLOSED.

Note You need to log in before you can comment on or make changes to this bug.