Public bug reported: https://review.openstack.org/#/c/151375/ introduced a check for avoiding loading an extension if its module name was already scanned previously.
While this is generally fine, it does not take into account that different extensions might have the same module name, even if different paths. This applies for instance in this case: salvatore@ubuntu:/opt/stack/neutron$ find ./neutron -name qos.py ./neutron/plugins/cisco/extensions/qos.py ./neutron/plugins/vmware/extensions/qos.py both cisco and vmware plugins declare extensions in a module named 'qos'. However, such extensions are completely different as they have a different alias (and in this case can hardly work together in the same deployment). In this specific case, the vmware plugin is the one for which the extension is not being loaded since the cisco plugin's module is read first. While this does not break the plugin, it does break unit tests as for some reason the cisco's plugin extension path info is not removed once the cisco unit tests complete running. It should be however noted that in general it might be ok to have distinct extensions in modules with the same name. Extension aliases are instead supposed to be unique and should be used to discriminate ** Affects: neutron Importance: High Assignee: Salvatore Orlando (salvatore-orlando) Status: In Progress -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/1417180 Title: Unable to load extensions with same module name Status in OpenStack Neutron (virtual network service): In Progress Bug description: https://review.openstack.org/#/c/151375/ introduced a check for avoiding loading an extension if its module name was already scanned previously. While this is generally fine, it does not take into account that different extensions might have the same module name, even if different paths. This applies for instance in this case: salvatore@ubuntu:/opt/stack/neutron$ find ./neutron -name qos.py ./neutron/plugins/cisco/extensions/qos.py ./neutron/plugins/vmware/extensions/qos.py both cisco and vmware plugins declare extensions in a module named 'qos'. However, such extensions are completely different as they have a different alias (and in this case can hardly work together in the same deployment). In this specific case, the vmware plugin is the one for which the extension is not being loaded since the cisco plugin's module is read first. While this does not break the plugin, it does break unit tests as for some reason the cisco's plugin extension path info is not removed once the cisco unit tests complete running. It should be however noted that in general it might be ok to have distinct extensions in modules with the same name. Extension aliases are instead supposed to be unique and should be used to discriminate To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1417180/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp