← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1417180] [NEW] Unable to load extensions with same module name

 

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


Follow ups

References