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 -- 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