Ocata Series Release Notes


New Features

  • Introduced neutron_lib.plugins.directory.is_loaded(). This can be used in lieu of len(plugins()) or bool(plugins()) or plugins() alone.
  • Neutron agent extension abstract classes are moved from neutron.agent to neutron_lib.agent
  • The constants EXPAND_BRANCH and CONTRACT_BRANCH are now available in neutron_lib.db.constants. They should be used instead of the ones in neutron.db.migration.cli.
  • Introduced neutron_lib.fixture, and added fixture for plugin directory PluginDirectoryFixture. An example below:

    from neutron_lib.plugins import directory
    from neutron_lib import fixture
    def setup_test_directory_instance(self):
        """Give a private copy of the directory to each test."""
        self._plugin_directory = directory._PluginDirectory()
  • Neutron’s callback API found in neutron.callbacks.* is now exposed in neutron_lib.callbacks.*. In addition, a set of event payload objects are now available for use in transporting event payload data in a standardized way.
  • A test fixture is provided for isolating the global callback manager in neutron_lib.callbacks.registry. For more details see the comments in neutron_lib.fixture.CallbackRegistryFixture.
  • Adds neutron-fwaas API definitions to neutron-lib.
  • Added the converter convert_string_to_case_insensitive.
  • Added the converter convert_to_protocol.
  • Added the validator validate_port_range_or_none.
  • A converter convert_ip_to_canonical_format has been added to neutron-lib which allows IPv6 addresses to be stored and displayed in canonical format.
  • The floating_ip and router API definitions from neutron.extensions.l3 have been rehomed to neutron_lib.api.definitions as the module l3.
  • The get_random_mac utility function from neutron.common.utils is now in neutron_lib.utils.net with the same name, get_random_mac.
  • The API definition and associated constants have been rehomed from neutron.extensions.portbindings to neutron_lib.api.definitions.portbindings.
  • The Neutron Provider network extension API definition has been added as neutron_lib.api.definitions.provider_net.
  • The hacking check factory incubating_factory has been added to neutron_lib.hacking.checks allowing adopters to test compliance on incubating hacking checks. See the usage documentation for additional details.
  • The class neutron.services.service_base.ServicePluginBase is now available as neutron_lib.services.base.ServicePluginBase.
  • Added validator validate_ip_or_subnet_or_none

Deprecation Notes

  • The function neutron_lib.api.utils.populate_project_info has moved to neutron_lib.api.attributes.populate_project_info. It will be removed from the old location in the future.
  • The use of neutron_lib.callbacks.registry.notify() and neutron_lib.callbacks.manager.CallbacksManager.notify() is deprecated in favor of their publish() counterparts and will be removed in the “Queens” release time-frame.
  • policy.refresh() and policy.reset() have been removed. The library policy module is not meant for public consumption, and it should be considered in practice a private component of the library. If you use it, you will do so at your own risk, as it has been marked as a private module.

Other Notes

  • OpenStack dev hacking check H904 is now enabled in tox.ini via the enable-extensions configuration property. Neutron-lib adopters should also enable this hacking check in their tox.ini.


New Features

  • The ExtensionDescriptor class moved from neutron.api.extensions to neutron_lib.api.extensions.
  • Introduced neutron_lib.plugins.directory to get references for loaded plugins in a neutron server process. For example:

    from neutron_lib import constants
    from neutron_lib.plugins import directory
    core_plugin = directory.get_plugin()
    l3_plugin = directory.get_plugin(constants.L3)

    For more examples, see: https://review.openstack.org/#/c/386845/

  • API reference for the trunk extension.

Other Notes