Bug 1120332

Summary: Neutron packaging breaks ML2 drivers that depend on another plugin
Product: Red Hat OpenStack Reporter: Kevin Benton <blak111>
Component: openstack-neutronAssignee: Ihar Hrachyshka <ihrachys>
Status: CLOSED CURRENTRELEASE QA Contact: Nir Magnezi <nmagnezi>
Severity: unspecified Docs Contact:
Priority: high    
Version: unspecifiedCC: breeler, chrisw, ihrachys, mlopes, nyechiel, sclewis, yeylon
Target Milestone: rc   
Target Release: 5.0 (RHEL 7)   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
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.
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-07-21 10:56:46 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

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.