Neutron Plugins and Drivers
Ensuring release quality through proper testing is an important tenant of the OpenStack community and Neutron team wants to do our part. We are introducing changes below provide more visibility into the quality and stability of vendor plugin and driver code. The policies described here are in effect immediately.
Code proposals for third party plugins have always presented a review challenge for the Neutron core team. In the early days, code was often proposed by core project contributors and our review process only validated whether the requirements were met for community coding style and unit testing. As Neutron has added new resources via extensions, it has become more difficult for Neutron reviewers to ensure the proposed code is functional. Many of the plugins and/or drivers require proprietary hardware and/or software to conduct such testing.
In addition to testing changes, the Neutron team is revising the requirements for the point of contact for third party code. The changes bring the written expectations for contacts in line with current practice.
Plugin and Driver Processes
Getting a plugin or driver merged upstream into Neutron allows you the benefit of being a part of the simultaneous release, and likely having your plugin or driver packaged with distributions which ship releases based on the simultaneous releases from upstream. However, this is not a "free ride", you should ideally be giving back more than you are taking by getting your code upstream. When you submit your code, you're putting a burden on the existing reviews and infrastructure. The same goes with subsequent bug fixes and backports to stable releases. Thus, you should have someone from your company or team reviewing other code upstream, participating in meetings, etc. The following is a list of requirements for inclusion of code upstream:
- Code which passes review, has adequate unit tests, and passes pep8 guidelines.
- A functioning CI system, which has been running successfully against your plugin/driver patches, and other patches as well.
- Participation in Neutron meetings, IRC channels, and email lists.
- A member of the plugin/driver team participating in code reviews of other upstream code.
Removal of Upstream Plugins or Drivers
If you fail to meet the criteria above, you risk having your plugin or driver removed from upstream. The core team will continue to evaluate third party CI systems to ensure they are running and correctly testing patches for third party plugins and drivers. If they fail to function, an email will be sent to the openstack-dev mailing list asking for the owner to fix this issue. Ideally, the owner will reply to the email thread, and will work with the Neutron and Infra teams to address the CI issue. If no reply is received or if adequate progress is not being made to address the issue within 2 weeks, a process to remove the plugin or driver from upstream will commence. To get your plugin or driver upstream after it has been removed will take a functioning third party CI system running for a month, correctly voting on changes upstream.
Point of Contact Requirements
Each third party plugin and/or driver shall designate a point of contact for each coordinated release cycle. The contact will serve as a liaison between the Neutron core team and the vendor or community supporting the plugin or driver. The contact shall:
- Attend weekly Neutron team IRC meetings
- Be an active reviewer and contributor
- Be an active participant on openstack-dev mailing list
- Assist the core team with triaging bugs specific to the plugin and/or driver
- Ensure OpenStack development deadlines are properly communicated back to their company and/or community
Existing Plugin and Drivers
Plugins and drivers currently in the Neutron project repository will be given a grace period until the Icehouse-2 milestone to implement external third party testing. At that time, the Neutron team will release a list of the compatible plugins and drivers (i.e. those that meet the testing requirements). Plugins and drivers that do not have external testing will be deprecated at the Icehouse release and will be candidates for removal when the J-release cycle opens.
The page ThirdPartySystems gathers information about all third party CI system (including Neutron related).
|Vendor||Plugin/Driver Name||Contact Name||Status||Recheck command||Notes|
|Neutron Team||ML2 - OVS/LB||Infra Team||Y||Covered by Infra (Jenkins)|
|A10 Networks||LBaaS Driver||Doug Wiegley||Y||redo-a10||None|
|Arista Networks||ML2 Driver||Sukhdev Kapur||Y||recheck/reverify no bug/bug #||None|
|Big Switch||Plugin||Kevin Benton||Y||recheck-bigswitch||None|
|Big Switch||ML2 Driver||Kevin Benton||Y||None|
|Brocade||Vyatta Plugin||Karthik Natarajan||Y||None|
|Brocade||ML2 Driver||Shiv Haris||Y||None|
|Cisco||Plugin - NXOS||Dane Leblanc||N||It is deprecated and It will be removed in Juno|
|Cisco||Plugin - N1Kv||Dane Leblanc||Y||recheck cisco-n1kv||None|
|Cisco||ML2 - APIC||Dane Leblanc||Y||recheck cisco-apic||None|
|Cisco||ML2 - DFA||Dane Leblanc||Y||None|
|Cisco||ML2 - NXOS||Dane Leblanc||Y||recheck cisco-ml2||None|
|Cisco||CSR1kv - router service plugin||Nikolay Fedotov, Richard Winters||Y||recheck cisco-csr1kv||None|
|Cisco||VPNaaS - Driver||Dane Leblanc||Y||recheck cisco-vpnaas||None|
|Cloudbase Solutions||Plugin - Hyper-V||Alessandro Pilotti||Y||check hyper-v||None|
|Embrane||Plugin||Ignacio Scopetta||N||embrane-recheck||CI fails for their own plugin commits: https://review.openstack.org/#/c/108226/|
|Embrane||LBaaS - Driver||Ignacio Scopetta||N||embrane-recheck||No CI in place. Candidate to be removed from Neutron|
|Freescale||ML2 - Driver||Trinath Somanchi||Y||recheck freescale||None|
|Freescale||FWaaS - Plugin||Trinath Somanchi||Y||recheck freescale||None|
|IBM||Plugin - SDN-VE||Daya Kamath||Y||None|
|Juniper||Plugin - Contrail||Rudra Rugge||Y||None|
|Mellanox||Plugin||Omri Marcovitch||N||recheck mlnx||It is deprecated. Will be removed in Kilo|
|Mellanox||ML2 - Driver||Omri Marcovitch||Y||recheck mlnx||None|
|Mellanox||ML2 - Sriovnic switch||Omri Marcovitch||Y||recheck mlnx||None|
|Metaplugin||Plugin - Multiple||NTT Team||Y||metaplugin-recheck||None|
|Midokura||Plugin - Midonet||Lucas Eznarriaga||Y||recheck midokura||None|
|NEC||Plugin - OpenFlow||Akihiro Motoki||Y||recheck-nec||None|
|Citrix NetScaler||LBaaS - Driver||Parikshit Manur||Y||None|
|Nuage Networks||Plugin - VSP||Sailaja Yanamandra||Y||recheck-nuage||None|
|OFAgent||ML2 - OF||Yamamoto Takashi||Y||ryu-recheck||None|
|One Convergence||Plugin - NVSD||Hemanth Ravi||Y||recheck oneconvergence||None|
|OpenDaylight||ML2 - ODL||Dave Tucker (dave_tucker) / Kyle Mestery (mestery)||Y||recheck-opendaylight||None|
|PLUMgrid||Plugin - Director||Fawad Khaliq||Y||None|
|Pluribus Networks||ML2 Driver- Pluribus||Prashanth Prahalad||Y||None|
|Ryu||Plugin - Ryu Controller||Yamamoto Takashi||Y||ryu-recheck||Deprecated. Will be removed in Kilo|
|Radware||LBaaS - Driver||Samuel Bercovici||N||CI does not exist. Should be removed from Neutron|
|Tail-f NCS||ML2 - NCS||Luke Gorrie||Y||recheck cisco-tailf||None|
|vArmour||FWaaS||Gary Duan||Y||recheck varmour||None|
|VMware||Plugin - NSX||Aaron Rosen||Y||vmware-recheck||None|