The Neutron ML2 plugin's type and mechanism managers currently maintain dictionaries/lists of type drivers, mechanism drivers, and ordered mechanism drivers in (static) class variables. Once a type/mechanism/ordered-mechanism driver of any given type is added to this list, then no new drivers of that type are allowed to be registered, and therefore no new configuration for that driver type is accepted.
This static nature of the driver dictionaries/lists is causing ML2 mechanism driver unit test cases to fail. For example, if a non-vendor-specific ML2 plugin test case configures a VLAN type driver with no VLAN range, and then a vendor specific test case attempts to configure a VLAN type driver with some test VLAN range, then the new VLAN configuration is ignored because of the previously (staticly) registered VLAN driver.
The proposed fix is to convert these driver dictionaries/lists to instance variables, and clear them upon each instantiation of an ML2 type manager or ML2 mechanism manager.
Fix proposed to branch: master /review. openstack. org/44921
Review: https:/