race condition between multiple plugins for neutron-api (ovn + arista)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Neutron API Arista Plugin Charm |
New
|
Undecided
|
Unassigned | ||
OpenStack Neutron API Charm |
New
|
Undecided
|
Unassigned |
Bug Description
When deploying both ovn and arista plugins for neutron-api, there's a race condition that prevents one or the other from appearing in the enabled mechanisms list.
Neutron-api and ovn are the standard/production ones from openstack deployments. Arista charm is only in edge channel currently: https:/
Please see attached example bundle.
After deploying both plugins, the ml2 configuration is the following:
[ml2]
extension_
type_drivers = geneve,
tenant_
mechanism_drivers = ovn
It was expected to see "mechanism_drivers = ovn,arista". If I add that manually, arista plugin works (so it seems otherwise correctly configured).
Looking at relation data, it seems that the plugins are in a race condition where they take the current list of mechanisms, insert themselves in the list and send the list back, making it possible for the last one to overwrite the first one.
I tested removing the arista plugin from the bundle, then deploying it, waiting for everything to settle and then manually deploying only the arista plugin afterwards, it worked.
Example bundle. (you need an arista switch at the specified IP for it to really communicate, but I think this is not really needed for this specific fix).
This bundle installs Ussuri / focal.