Rocky Series Release Notes


New Features

  • Add API extension sort-key-validation. This extension indicates if the server supports validation on sorting.

  • Add API extension filter-validation. This extension indicates if the server supports validation on filter parameters of the list requests.

  • Introduced expose-port-forwarding-in-fip API extension for exposing port_forwardings field in FloatingIP API response. This extension requires the router and port_forwarding service plugins.

  • The neutron.common.rpc module is now available as neutron_lib.rpc and automatically exposes all exception modules from neutron_lib.exceptions for RPC usage.

  • Exceptions from neutron.common.exceptions are now available in the neutron_lib.exceptions package whereupon exceptions are now in their respective module (e.g. L3 exceptions are in neutron_lib.exceptions.l3, etc.).

  • The neutron.tests.fake_notifier is now available as neutron_lib.tests.unit.fake_notifier.

  • The neutron_lib.utils.runtime.list_package_modules function is now available for listing all modules in a said package.

  • The RPCFixture is now available in neutron_lib.fixtures for setting up RPC based unit tests.

  • The get_port_binding_by_status_and_host function is now available in neutron_lib.plugins.utils.

  • Adds api-extension segments-peer-subnet-host-routes. Adds host routes to subnets on a routed network (segments). RFE: 1766380.

Other Notes

  • API extension sort-key-validation relies on the is_sort_key keyword in the RESOURCE_ATTRIBUTE_MAP to judge if an attribute can be used as sort key. Neutron plugins which want to support sort key validation needs to set is_sort_key to True for each attribute in their resource attribute map.

  • API extension filter-validation relies on the is_filter keyword in the RESOURCE_ATTRIBUTE_MAP to judge if an attribute can be used as filter. Neutron plugins which want to support filter validation needs to set is_filter to True for each attribute in their resource attribute map.

  • The convert_list_to and default parameters of external_fixed_ips have been removed from l3 and l3_ext_gw_mode API definitions.


New Features

  • Add floatingip-pools API extension. This extension provides API endpoint for listing floatingip pools.

  • Adds api extension port-mac-address-regenerate. Also adds converter convert_to_mac_if_none used by api extenstion port-mac-address-regenerate. When passing 'null' (None) as the mac_address on port update the converter will generate a new mac address that will be assigned to the port. RFE: #1768690.

  • The API defintion for the port-security-groups-filtering extension is now available in neutron_lib.api.definitions.security_groups_port_filtering.

Upgrade Notes

  • The CORE and L3 service type name constants have been removed from neutron_lib.constants. These constants are duplicates of those in neutron_lib.plugin.constants and consumers should use the latter.

Other Notes

  • Add a shim extension availability_zone_filter to indicate if availability_zone resource supports filter parameters.


New Features

  • Add an API extension uplink-status-propagation to indicate if the server support propagating uplink status. This extension adds an attribute propagate_uplink_status to port. This attribute can be implemented for VF port. If it is set to True, the VF link state can follow that of PF. The default is False which is the current behavior.

Other Notes

  • Add a shim extension standard-attr-segment to indicate if segment resource contains standard attributes.


New Features

  • Add empty-string-filtering API extension. This extension indicates if the server supports filtering attributes with empty value.

  • New PORT_BINDING, ACTIVATE and DEACTIVATE definitions have been added to neutron_lib.agent.topics, to enable plug-ins to notify agents when a port binding has been activated or de-activated.

  • The portforwarding API definition for FloatingIP``is introduced, which allows a ``FloatingIP:Port to forward packets back to a VM’s Internal IP:Port .

  • Add the definitions for the sfc and flowclassifier API extensions of the networking-sfc project.

  • Add a convert_uppercase_ip converter, convenient to easily accept for instance Ipv4, IPv4 and ipv4 independently of the case of the first two letters.

  • And add a convert_prefix_forced_case converter, to allow forcing the case of a string prefix

  • Add a uuid_list_non_empty validator, that will validate that the value is a non-empty list of UUIDs

  • Add API extensions to advertise the support of standard attributes with BGPVPN resources: standard-attr-bgpvpn, standard-attr-bgpvpn-network-association, standard-attr-bgpvpn-router-association and standard-attr-bgpvpn-port-association.

Bug Fixes

  • For Infiniband support, Ironic needs to send the client-id DHCP option as a number in order for IP address assignment to work. This is now supported in Neutron, and can be specified as option number 61 as defined in RFC 4776. For more information see bug 1770932



Change create_inventory in placement client to update_resource_provider_inventories and update_inventory to update_resource_provider_inventory

New Features

  • Add a new keyword is_filter to attribute maps. This keyword indicates that the attribute can be used for filtering result on list requests.

  • Add a new keyword is_sort_key to attribute maps. This keyword indicates that the attribute can be used as a sort key for sorting list result.

  • The neutron_lib.utils.runtime.NamespacedPlugins class is now available and wraps a stevedore namespace of plugins.

  • The neutron_lib.objects.registry module is now available for loading neutron versioned object classes registered as entry points with the NEUTRON_OBJECT_NAMESPACE namespace therein. This global registry can be used by consumers to access references to neutron versioned object classes and instances so there’s no need to import neutron.objects.

  • Add fip-port-details API extension. This extension add port_details attribute to the Floating IP resource.

  • Introduced priority to callback subscription. An integer value can be associated with each callback so that callbacks can be executed in specified order for same resources and events. Every callback will have priority value by default. To execute callbacks in specified order, priorities should be defined explicitly, lower priority value would be executed first.

  • A new flag can be used in API definition: default_overrides_none. When enabled, the default value for the attribute will be used, including if the attribute was explicitly defined as null.

  • Added list_resource_providers function to the Placement API client, which allows to retrieve a list of Resource Providers filtering by UUID or parent UUID. It requires at least version 1.3 of placement API for listing resource providers that are members of any of the list of aggregates provided. It requires at least version 1.14 of placement API for listing nested resource providers.

  • Added get_resource_provider function to the Placement API client, which allows to retrieve an specific Resource Provider by its UUID.

  • Added PlacementAPIVersionIncorrect exception class which can be raised when requested placement API version is incorect and doesn’t support requested API feature.

  • A new dict_populate_defaults flag can be used in API definition for a dictionary attribute, which will results in default values for the keys to be filled in. This can also be used on values of a dictionary attribute if they are dictionaries as well.

  • The public APIs from neutron.db.api are now available in the neutron_lib.db.api module.

  • The CONTEXT_READER and CONTEXT_WRITER global database contexts are available in neutron_lib.db.api for convenient access as decorators.

  • The DBRetryErrorsFixture and DBAPIContextManagerFixture test fixtures are now available in neutron_lib.fixture allowing consumers to patch out retry error values and the gobal context manager.

  • The public functions of neutron.db._model_query are now available in neutron_lib.db.model_query with the same name. While these modules can be used, forward looking projects should start moving to versioned objects and after which point we can remove this module.

  • A new fixture named DBQueryHooksFixture is provided for testing purposes allowing consumers to patch-out the model_query filter hooks.

  • The make_weak_ref and resolve_ref functions from neutron are now available in neutron_lib.utils.helpers.

  • The TenantIdProjectIdFilterConflict exception is now available in neutron_lib.exceptions.

  • The neutron.objects.utils module is now available in neutron_lib.objects.utils.

  • The database utility functions get_marker_obj, filter_non_model_columns, model_query_scope_is_project and resource_fields are now available in neutron_lib.db.utils.

  • The dhcp_agent_scheduler extension’s API defintion is now available in neutron_lib.api.definitions.dhcpagentscheduler and the corresponding exceptions in neutron_lib.exceptions.dhcpagentscheduler.

  • The neutron.plugins.common.utils.get_deployment_physnet_mtu function is now available in neutron_lib.plugins.utils with the same name.

  • The create_network, create_subnet and create_port functions from neutron.plugins.common.utils are now available in neutron_lib.plugins.utils.

  • The qos-bw-limit-direction extension’s API definition is now available in neutron_lib.api.definitions.qos_bw_limit_direction.

  • The unstable_test decorator from neutron.tests.base is now available in neutron-lib in neutron_lib.utils.test.

  • Make segment_id of subnet resource writable. Enables the possibility to migrate a non-routed network to a routed network.

  • Adds neutron-vpnaas API definitions to neutron-lib, including vpnaas, vpn-endpoint-groups and vpn-flavors.

  • Migrate user facing exceptions into neutron-lib along with the API definitions.

  • A new validator for type type:list_of_subnets_or_none to validate data is a list of subnet dicts or None is added too.

Known Issues

  • Placement API has no POST method for creating resource provider inventories but instead has PUT to update the inventories of a resource provider.

  • Placement API has method to update the inventory for a given resource_provider.

Upgrade Notes

  • Consumers using the global context_manager from neutron.db.api should now use the get_context_manager() function in the neutron_lib.db.api module or the global CONTEXT_READER and CONTEXT_WRITER if needed.

  • The deprecated neutron_libutils.file.ensure_dir function is removed. Consumers can use ensure_tree(path, 0o755) from oslo_utils.fileutils instead.

  • The neutron_lib.api.utils module has been removed. The single populate_project_info function therein is available in neutron_lib.api.attributes and has been marked as a moved function in the utils module for some time now.

Bug Fixes

  • Change the method name create_inventory in clients/ to update_resource_provider_inventories as that represents what is on the placement side.

  • Change the POST call to /resource_providers/{uuid}/inventories to PUT.

  • Change the method name update_inventory in clients/ to update_resource_provider_inventory as that represents that the method updates the inventory of a resource_provider.

Other Notes

  • The LABEL variable, which was uselessly duplicating ALIAS, has been removed from API definition modules.