Bug 2081478
| Summary: | [RFE] Multi vendor ML2 plugin for BMaaS usecase | ||
|---|---|---|---|
| Product: | Red Hat OpenStack | Reporter: | Harald Jensås <hjensas> |
| Component: | python-networking-baremetal | Assignee: | OSP Team <rhos-maint> |
| Status: | NEW --- | QA Contact: | mlammon |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 18.0 (Zed) | CC: | bfournie, dtantsur, hjensas, jkreger, rpittau |
| Target Milestone: | --- | Keywords: | FutureFeature |
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Enhancement | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 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: | |||
POC - Demo recording - https://asciinema.org/a/VbcTN2VZGC1lwiWX4daGfNdXT |
Description of problem: For multi-tenant BMaaS there is a need to configure the ToR network devices (Access/Edge Switches). Many vendors have abandoned their ML2 mechanism plug-ins which operator rely on to support this. Users are left with few options. Alternatives: - Networking Generic switch is available, it supports a lot of switching hardware but has limited features. - networking-ansible - this effort is no longer developed, the last patch was > 6-months ago. How can we solve this? This RFE proposes adding device configuration capabilities to networking-baremetal. Utilizing standards Netconf (rfc6242)[1] and YANG (rfc8040)[2] models. Netconf is a protocol defined by the IETF to “install, manipulate, and delete the configuration of network devices”, the standard is implemented by many vendors. YANG is a data modeling language used to model configuration, state data, and administrative actions manipulated by the NETCONF protocol. There are both vendor and open YANG models[3]. I am proposing to start with an opensource model OpenConfig[4][5] which has been implemented by multiple vendors. The YANG language maps easily to python, and only a small subset of what is defined in OpenConfig models is required to provide a good feature-set for the BMaaS use case. The patches below implements: create/delete/update VLAN tenant network, create/update/delete port, create/update/delete LACP link-aggregate and neutron Trunk port bind/unbind. The POC has been tested on Cisco Nexus and Arista vEOS virtual appliance switch emulators. https://review.opendev.org/835157 (OpenConfig classes for iface vlan plugging) https://review.opendev.org/835158 (OpenConfig classes for switch vlans) https://review.opendev.org/835159 (OpenConfig classes for network-instance) https://review.opendev.org/835160 (OpenConfig classes for interface aggregate) https://review.opendev.org/835161 (OpenConfig classes for LACP) https://review.opendev.org/835170 (Device management driver iface) https://review.opendev.org/835324 (netconf-openconfig device driver) https://review.opendev.org/835378 (LACP support to Netconf OpenConfig driver) https://review.opendev.org/c/openstack/networking-baremetal/+/836286 (Trunk support) Note: The PoC implements OpenConfig and Netconf, but the driver interface opens up to add other YANG models, and other configuration protocols such as Restconf and gNMI. [1] https://datatracker.ietf.org/doc/html/rfc6242 (Netconf) [2] https://datatracker.ietf.org/doc/html/rfc8040 (RESTConf) [3] https://github.com/YangModels/yang [4] https://www.openconfig.net/projects/models/ [5] https://github.com/openconfig/public