Currently, PluginInterface provides an issubclass() hook that returns True for issubclass(A, B) call, if all abstract methods of B (stored in B.__abstractmethods__) can be found in the A.__mro__ tuple of classes. But there is an edge case, when B doesn't have any abstract methods, which leads to issubclass(A, B) call returning True even if A and B are not related all. E.g. issubclass(NeutronPluginPLUMgridV2, NsxPlugin) returns True, while these two are different core plugins. And it gets even more trickier when superclasses are involved: e.g. SecurityGroupDbMixin is a superclass of NsxPlugin, so depending on the fact whether the python module with NsxPlugin class is imported or not, issubclass(NeutronPluginPLUMgridV2, SecurityGroupDbMixin) will return either False or True accordingly. Closes-Bug: #1308489 Change-Id: I92711a00a19b89729ccdba9cbd8a2e7a2d2868ed
28 KiB
28 KiB