← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1486861] [NEW] get_extensions_path fail to remove duplicate path when the path gets appended with a another path

 

Public bug reported:

get_extensions_path contains logic to eliminate duplicated paths.
However, in the case where the 'api_extensions_path' of config contains
multiple concatenated paths, it treats the concatenated list as one
extension path.

This could be a problem for Neutron services, specifically fwaas, lbaas
and vpnaas.  For these, their extension paths are automatically added in
get_extensions_paths.  If fwaas extension path is also specified in
CONF.api_extensions_path', for example, and if that path is appended
with a different extension path, the duplicated fwaas extension paths
are not recognized as duplicate.

In an offending case, you would have:

    paths = ['fw_ext_path', 'fw_ext_path:some_other_path']

and since 'fw_ext_path' != 'fw_ext_path:some_other_path', both
'fw_ext_path' remains, which causes error later on when Firewall
object's 'super' is called since the module containing the Firewall
class definition of Firewall was loaded twice (python doesn't like
this).

In the above scenario, the paths should have been evaluated as:

    paths = ['fw_ext_path', 'fw_ext_path', 'some_other_path']

** Affects: neutron
     Importance: Undecided
         Status: New

** Description changed:

  get_extensions_path contains logic to eliminate duplicated paths.
  However, in the case where the 'api_extensions_path' of config contains
  multiple concatenated paths, it treats the concatenated list as one
  extension path.
  
  This could be a problem for Neutron services, specifically fwaas, lbaas
  and vpnaas.  For these, their extension paths are automatically added in
  get_extensions_paths.  If fwaas extension path is also specified in
  CONF.api_extensions_path', for example, and if that path is appended
  with a different extension path, the duplicated fwaas extension paths
  are not recognized as duplicate.
  
  In an offending case, you would have:
  
-     paths = ['fw_ext_path', 'fw_ext_path:some_other_path']
+     paths = ['fw_ext_path', 'fw_ext_path:some_other_path']
  
  and since 'fw_ext_path' != 'fw_ext_path:some_other_path', both
  'fw_ext_path' remains, which causes error later on when Firewall
  object's 'super' is called since the module containing the Firewall
  class definition of Firewall was loaded twice (python doesn't like
  this).
  
  In the above scenario, the paths should have been evaluated as:
  
- paths = ['fw_ext_path', 'fw_ext_path', 'some_other_path']
+     paths = ['fw_ext_path', 'fw_ext_path', 'some_other_path']

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1486861

Title:
  get_extensions_path fail to remove duplicate path when the path gets
  appended with a another path

Status in neutron:
  New

Bug description:
  get_extensions_path contains logic to eliminate duplicated paths.
  However, in the case where the 'api_extensions_path' of config
  contains multiple concatenated paths, it treats the concatenated list
  as one extension path.

  This could be a problem for Neutron services, specifically fwaas,
  lbaas and vpnaas.  For these, their extension paths are automatically
  added in get_extensions_paths.  If fwaas extension path is also
  specified in CONF.api_extensions_path', for example, and if that path
  is appended with a different extension path, the duplicated fwaas
  extension paths are not recognized as duplicate.

  In an offending case, you would have:

      paths = ['fw_ext_path', 'fw_ext_path:some_other_path']

  and since 'fw_ext_path' != 'fw_ext_path:some_other_path', both
  'fw_ext_path' remains, which causes error later on when Firewall
  object's 'super' is called since the module containing the Firewall
  class definition of Firewall was loaded twice (python doesn't like
  this).

  In the above scenario, the paths should have been evaluated as:

      paths = ['fw_ext_path', 'fw_ext_path', 'some_other_path']

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1486861/+subscriptions


Follow ups