The 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.
Reviewed: https:/ /review. openstack. org/44921 github. com/openstack/ neutron/ commit/ cd17893dbce6002 8f0d946f9d30c3c 2afea0f2e3
Committed: http://
Submitter: Jenkins
Branch: master
commit cd17893dbce6002 8f0d946f9d30c3c 2afea0f2e3
Author: Dane LeBlanc <email address hidden>
Date: Tue Sep 3 13:34:42 2013 -0400
ML2 type and mech managers should use instance vars for drivers lists
Fixes bug 1220296
The ML2 plugin's type and mechanism managers currently maintain s/lists of type drivers, mechanism drivers, and ordered mechanism ordered- mechanism
dictionarie
drivers in (static) class variables. Once a type/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.
Change-Id: I3b5209640de229 899561e2a3ec7c6 dafe9a05e64