Wallaby Series Release Notes

2.10.2-7

Other Notes

  • Parent resource mapping was added to EXT_PARENT_RESOURCE_MAPPING in neutron_lib.services.constants for the qos plugin.

2.10.2

Bug Fixes

  • Enforce policy for ‘qos_policy_id’ attribute of port, network and fip so only authorized users can set/unset it. For more info see bug LP#1957175.

2.9.1

Other Notes

  • Add the neutron_lib.plugins.constants.PLACEMENT_REPORT constant so that it can be used elsewhere related to the placement_report service plugin.

2.9.0

New Features

  • Added API definition for rbac-address-group extension, which allows sharing address groups between tenants via the network RBAC mechanism.

2.8.0

New Features

  • Add constants for RBAC sharing actions: ACCESS_SHARED, ACCESS_EXTERNAL, and a new action ACCESS_READONLY.

  • New API definition: port-device-profile. The new field added to ports API, device_profile, represents a Cyborg device profile and is a named set of user requirements for one or more accelerators.

2.7.0

New Features

  • Add new constant BROADCAST_MAC which has value FF:FF:FF:FF:FF:FF and represents broadcast MAC address.

  • A new vnic type vdpa has been added to allow requesting port that utilize a vhost-vdpa offload. vhost-vdpa is simpler to vhost-user or kernel vhost offload but utilizes the newly added vdpa bus introduced in the Linux 5.7 kernel. vdpa interface can be implemented in software or hardware, when implemented in hardware they provide equivalent performance to sr-iov or hardware offloaded ovs while have two main advantages over both sriov and hardware offloaded ovs. Unlike the alternatives vhost-vdpa enable live migration of instance transparently and provides a standard virtio-net interface to the guest avoiding the need to install vendor specific drivers in the guest.

2.6.0

New Features

  • Add an API extension security-groups-remote-address-group that adds the new field remote_address_group_id in security group rules. This allows users to easily manage SG rules for aggregated IP address blocks.

    • Bump PlacementAPIClient's max supported microversion to 1.28, as from that version allocations API handles generations in a general way.

    • Add list_allocations, update_allocation and update_qos_minbw_allocation methods.

  • Add source_ip_prefix and destination_ip_prefix to Neutron metering label rules.

Deprecation Notes

  • The parameter ‘remote_ip_prefix’ in metering label rules has been deprecated. Its name expresses the opposite of what does when used, and the lack of documentation confuses people. Moreover, an alternative method has been proposed and approved to enable operators to create metering rules using both source and destination IP addresses.

2.5.0

New Features

  • Add an API extension address-groups that enables users to aggregate IP address blocks into an address group object which can be later referenced when creating other resources.

  • Add an API extension security-groups-normalized-cidr that adds new, read-only attribute normalized_cidr to the security group rules.

  • Add keyword is_sort_key to agents. Make the agent’s attribute can be used as a sort key for sorting list result.

  • Add supported_extensions method to MechanismDriver. This method provides an standard API to implement, per mechanism driver, a way to filter the supported extensions. By default, this method will return the same set of extensions passed.

  • New API definition: port-numa-affinity-policy. The new field added to ports API, numa_affinity_policy, represents the NUMA affinity policy requested by this port during the virtual machine scheduling. Values: None, “required”, “preferred”, “legacy”.

  • The API extension uplink-status-propagation has changed the default value of propagate_uplink_status from False to True. Now, when this extension is enabled, the VF link state will be set, by default, to “auto”, following the PF link state. This change will affect only new ports; existing ports will keep their current value.

2.4.0

New Features

  • Add API extension dns-integration-domain-keywords. This extension indicates if the server supports usage of keywords like project_id, project_name, user_id and user_name in the network’s DNS domain name.

  • The abstract class LinuxInterfaceDriver is now defined in neutron-lib.agent.linux.interface. It contains only the abstract methods and the class variables.

  • The timecost decorator is available in neutron_lib.utils.helpers now. This permits functions to be decorated with functionality that will emit a debug log with the time it took to execute the function.

Bug Fixes

  • The DHCP port numbers for IPv4 were defined incorrectly in neutron_lib.constants, they are now correct - 68 (client) and 67 (server).

2.2.0

New Features

  • Added API definition for rbac-address-scope extension, which allows sharing address scope between tenants via the network RBAC mechanism.

  • Added API definition for rbac-subnetpool extension, which allows sharing subnetpool between tenants via the network RBAC mechanism.

2.0.0

New Features

  • The tag-ports-during-bulk-creation shim extension API definition has been added to enable the tagging of ports during bulk creation.

Upgrade Notes

  • Python 2.7 support has been dropped. The minimum version of Python now supported by neutron-lib is Python 3.6.

1.31.0

New Features

  • Add field qos_port_network_policy_id to the port definition. This read only parameter contains the QoS policy of the network where the port is plugged.

Other Notes

  • Bump the microversion used by PlacementAPIClient from 1.20 to 1.23 in order to have access to the code attribute of JSON error responses (Placement API changelog). Both 1.20 and 1.23 were released in the Rocky version of Placement therefore we expect no upgrade impact.

1.30.0

New Features

  • Add a new field description in floating ip portforwardings that can be used to help users to manage/find easily theirs rules.

  • The API defintion for the stateful-security-group extension is now available in neutron_lib.api.definitions.stateful_security_group.

Other Notes

  • Removes the definition of interconnection API extension for neutron-interconnection project. Neutron-interconnection project was removed from Neutron stadium due to lack of activity for long time so there is no need to keep the API definition in the official Neutron’s API definitions.

1.29.1

New Features

  • The extraroute-atomic api-def’s ACTION_MAP is changed so we add the new member actions (add_extraroutes and remove_extraroutes) while we also keep the router extension’s member actions (add_router_interface and remove_router_interface).

1.29.0

New Features

  • Router API is modified through a regime API extension to neutron-lib that enforces the admin state of a router be DOWN (admin_state_up=False) prior to modifying the distributed attribute of the router.

  • A new API validation type type:ethertype has been added and validates ethertypes either as a valid two byte octet or as ‘IPv4’ and ‘IPv6’ based on the sg_filter_ethertypes configuration setting.

  • New API definition: extraroute-atomic.

Bug Fixes

  • Fixes an issue in the l3-conntrack-helper API definition. The validation for the helper field passed a string validation method instead of the maximum length of the string. This caused a TypeError when running under python3.

1.28.0

New Features

  • A new exception named NetworkAddressScopeAffinityError has been added in neutron_lib/exceptions/address_scope.py. This is to be raised by consumers when network / address scope affinity constraints are violated on subnet creation and subnet pool updates.

  • Added two new parameters in portbindings.port.vif_details:

    • connectivity: a string informing about the back-end connectivity level (l2, l3 or not specified).

    • bound_drivers: a dictionary mapping the binding level to the driver name.

  • The SqlFixture and StaticSqlFixture are now available in neutron_lib.fixtures.

  • The subnet-dns-publish-fixed-ip API extension is added. It adds the dns_publish_fixed_ip attribute to subnets, indicating whether to publish DNS records for fixed IPs from this subnet in an external DNS service. For details see [bug 1784879].

  • Add ETHERTYPE_RARP constant which represents RARP protocol to support live-migration.

Bug Fixes

  • Static route validator should verify that routed CIDR isn’t a loopback. Loopback addresses should not be routable. Bug: 1834012

Other Notes

  • Parent resource mapping was added to EXT_PARENT_RESOURCE_MAPPING in neutron_lib.services.constants for the l3-conntrack-helper extension.

1.27.0

New Features

  • A new method retrieve_valid_sort_keys was added to neutron_lib.api.attributes. This method can help retrieve valid sort keys from a given resource attribute map.

  • The l3-conntrack-helper API definition for Router is introduced, which allows conntrack helper target rules to be set for a Router.

  • Introduced expose-l3-conntrack-helper API extension for exposing conntrack_helpers field in Router API response. This extension requires the router and conntrack_helper service plugins.

Other Notes

  • Since commit, an AssociationProxy proxy instance is an AssociationProxyInstance derivative object. In order to import versions SQLAlchemy>=1.3.x, we need to handle both implementations.

1.26.0

New Features

  • Introduce the ML2 type driver abstract methods initialize_network_segment_range_support and update_network_segment_range_allocations for the network segment range support when the extension is loaded.

  • The WarningsFixture is now available in neutron_lib.fixture and its constructor accepts additional module’s to use with filterwarnings.

  • The model_query function is now available in neutron_lib.db.utils.

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

  • The get_random_EUI and get_random_ip_network functions are now available in neutron_lib.tests.tools.

  • The AuthenticIPNetwork and AuthenticEUI classes are now available in neutron_lib.utils.net.

  • The neutron.objects.logapi.events_types module is now available as neutron_lib.objects.logapi.events_types.

  • The neutron.services.logapi.common.constants module is now available as neutron_lib.services.logapi.constants.

  • The neutron.objects.extensions.standardattributes module is now available as neutron_lib.objects.extensions.standardattributes.

  • The function provider_network_attribute_updates_supported is now available in neutron_lib.plugins.ml2.api.MechanismDriver.

  • The neutron_lib.db.standard_attr module is now available for use.

  • The subnet-service-types extension is now available in neutron_lib.api.definitions.subnet_service_types.

  • The InvalidSubnetServiceType and InvalidInputSubnetServiceType exceptions are now available in neutron_lib.exceptions.

  • The validation type list_of_subnet_service_types is now available.

  • The OpenFixture class is now available in neutron_lib.fixtures.

  • The reset_random_seed function is now available in neutron_lib.tests.tools.

Other Notes

  • Add new PORT_FORWARDING_FLOATINGIP_KEY constant.

  • IP and HOPOPT keywords were added to neutron_lib.constants.IP_PROTOCOL_MAP. This allows the use of these keywords to be used when creating security group rules to describe either all IP protocols (for IPv4), or Hop-by-Hop Options (for IPv6), instead of having to use the number zero (0) for this purpose.

  • Add NoAuthClient for placement.client to enable fullstack testing of placement reporting service plugin.

1.25.0

New Features

  • Add NetworkSegmentRangeOverlaps exception to prevent overlapping network segment ranges on creation.

  • Adds API definition for rbac-security-groups extension, which allows sharing security groups between tenants via the network RBAC mechanism.

  • Adds new L3 exception RouterNotFoundInRouterFactory in neutron_lib.exceptions.l3.

  • Adds definition of interconnection API extension for neutron-interconnection project.

  • Adds subnetpool-prefix-ops API definition to neutron-lib. This extension introduces API’s that provide explicit support for removing prefixes from a subnet pool and adding subnets to a subnet pool.

  • The remaining neutron.common.constants are now available in neutron_lib.constants with the exception of EXT_PARENT_RESOURCE_MAPPING that is now available in neutron_lib.services.constants.

  • The neutron_lib.tests._tools module is now public and named tools.

  • The sqlalchemytypes module is now available in neutron_lib.db.

  • The trunk service constants are now available in neutron_lib.services.trunk.constants, but now have the constant name prefixed with TRUNK_.

  • neutron_lib.worker.BaseWorker will now set the process title on process start, if it is a new process. By default, the name will be “neutron-server”, and the description will be the name of the worker class, followed by the original process title. Both fields are customizable via the name and desc arguments to BaseWorker.start(), and the change can be disabled via the set_proctitle argument to the __init__ function. neutron.conf will have a setting for disabling this functionality for all in-tree workers, but by default, all out of tree plugin workers will set their name at fork time. Available settings are ‘on’ (described above, and the default), ‘off’ (same as today), or ‘brief’, which settings the process name to just name and description. ‘brief’ is probably most useful/simple for deployers, but ‘on’ is the default in order to prevent as many script related breakages as possible.

  • Adds traffic control related constants:

    • Qdisc types: htb, tbf and ingress, used in Neutron tc_lib

    • Qdisc ID: for ingress type, because this one is specific only for ingress traffic.

    • Qdisc parents: for root and ingress types.

Upgrade Notes

  • Any plugin which forks worker processes from neutron-server will have its proctitle set to “neutron-server” plus a classname in ps output. Any tool used for monitoring/maintenance that watches the process table should be modified to only look for the string neutron-server. On the plus side, it will now be possible to distinguish which process belongs to which plugin, based on the new naming. Note that the original process string is still in the proctitle, so as long as the scripting is not looking for a perfect string match, it should continue to work.

Other Notes

  • Base class for upgrade checks used in checks in neutron-status upgrade check tool is now available in neutron_lib.utils.upgrade_checks and can be reused by other projects.

  • Add the neutron_lib.plugins.constants.NETWORK_SEGMENT_RANGE constant so that it can be used elsewhere related to the network_segment_range service plugin.

  • For technical reasons the floatingip-autodelete-internal extension no longer requires the router extension.

  • New module neutron_lib.policy was added. It contains constants: RULE_ADMIN_OR_OWNER, RULE_ADMIN_ONLY, RULE_ANY, RULE_ADVSVC, RULE_ADMIN_OR_NET_OWNER, RULE_ADMIN_OR_NET_OWNER_OR_ADVSVC and RULE_ADMIN_OR_PARENT_OWNER. It contains also helper functions policy_and and policy_or. Those constants and functions can be used in policy modules in Neutron related projects.

  • Module neutron_lib.db is now removed from db profiling projects so database calls done from this module will not be tracked in osprofiler results. All db calls which are tracked by osprofiler are comming from Neutron and this avoids having each call logged twice in osprofiler report.

1.24.0

New Features

  • New shim API extension: floatingip-autodelete-internal.

  • New exception classes: UnknownResourceProvider and AmbiguousResponsibilityForResourceProvider.

  • The SUBPORTS, TRUNK and TRUNK_PLUGIN constants are now available in neutron_lib.callbacks.resources for defining Trunk related callback resources.

1.23.0

New Features

  • Maximum rpc timeout is now configurable by rpc_response_max_timeout from Neutron config instead of being calculated as 10 * rpc_response_timeout value.

  • The agent-resources-synced extension introduces a new agent attribute named resources_synced that tracks the success of the resource view synchronization to Placement.

  • Extend the ML2 type driver abstract methods reserve_provider_segment and allocate_tenant_segment with filters that is used as search criteria for the segment allocation support when network-segment-range extension is loaded.

Bug Fixes

  • The oslo.db wrap_db_retry function now supports randomized time jitter in its retry algorithm. Add support for that feature, if the installed version of oslo.db supports it.

Other Notes

  • The neutron_lib.api.definitions.network_segment_range.NETWORK_SEGMENT_RANGE_TYPE_LIST constant was moved to neutron_lib.constants and renamed to NETWORK_SEGMENT_RANGE_TYPES so that it can be used elsewhere.

  • This change removes the ONBOARD_SUBNETS_SPECS attribute extension from the subnet onboard extension descriptor. This has been deemed to be an unnecessary attribute extension during implementation and has been removed. Because subnet onboard is not yet a completed Neutron feature, the API definition is being updated to reflect this.

1.22.0

New Features

  • Adds new traffic control exceptions TcLibQdiscNeededArguments and TcLibQdiscTypeError in neutron-lib.exceptions.qos.

  • A new function named validate_route_cidr was introduced which is used to validate if destination of routes and destination of host_routes is a network address of a destination subnet or an IP address of a destination.

  • Add API definition for the new network-segment-range extension.

  • The following exceptions from neutron.common.exceptions have been rehomed into neutron-lib; PortBindingAlreadyActive, PortBindingAlreadyExists, PortBindingError, ProcessExecutionError, RouterQosBindingNotFound, RouterQosBindingError.

  • The private ORM event listener functions from neutron.db.api are now in neutron_lib.db.api and are automatically loaded when importing any neutron-lib module.

  • Add smart-nic VNIC type for Smart NIC ports.

1.21.0

New Features

  • Add can_port_be_bound_to_virtual_bridge function in neutron_lib.plugins.utils. This function checks if a port, depending on the VNIC type, can be bound to a virtual bridge.

  • Add method get_values in neutron_lib.db.model_query. This method allow callers to fetch specific column from a database model. Add keyword parameter field to method query_with_hooks. The default value of this parameter is None. Callers can set this parameter to query specific column.

  • The get_updatable_fields function from neutron.objects.base is now available in neutron_lib.object.utils.

Bug Fixes

  • The gateway , allocation_pools and cidr attributes of a Subnet with IPv6 addresses are now converted to IPv6 canonical format to address. bug 1531103

  • Directly updating some L3-related port IP addresses does not have any effect on the L3 agent side. As a consequence, these L3-related ports should not allow changing of their IP address. A new shim extension has been added called l3-port-ip-change-not-allowed to prevent such IP address change. For more information please see bug 1796824.

  • The qos-rules-alias API extension wrongly attempted to re-define bandwidth_limit_rules, dscp_marking_rules and minimum_bandwidth_rules as first level API resources, leading to conflicts in the QoS API. We now define alias_bandwidth_limit_rules, alias_dscp_marking_rules and alias_minimum_bandwidth_rules that will enable users to perform GET, PUT and DELETE operations on the corresponding QoS rules without having to specify the associated policy ID.

Other Notes

  • The Placement client previously swallowed a few exceptions (but logged a warning when doing this). In order to let the user of the client choose to handle or ignore the error condition the client no longer does this. Also to avoid losing error information we catch and re-throw HTTP 4xx exceptions with better messages.

1.20.0

Prelude

This release adds support for custom filtering in versioned object.

New Features

  • The qos-rules-alias API extension is introduced to enable users to perform GET, PUT and DELETE operations on bandwidth_limit_rules, dscp_marking_rules and minimum_bandwidth_rules as though they are first level resources. In other words, the user will not have to specify the QoS policy ID.

  • The neutron.db._resource_extend is now available as neutron_lib.db.resource_extend along with a new DBResourceExtendFixture that allows tests to modify the map of registered resource functions.

  • A class called FilterObj is introduced. This is the base class from which the custom filter class should inherit. This release also implements two filter class: NotIn and NotEqual. The class StringMatchingFilterObj is now a subclass of FilterObj.

Bug Fixes

  • Bug 1796854 is fixed by validating if advsvc context is used.

  • Neutron API should not allow user to set zero for floating IP port forwarding internal or external port number. Directly modify the floating-ip-port-forwarding extension to change external_port and internal_port minimum value to 1. Then API and port forwarding object will make consistent for these attributes.

  • Change API to enforce policy rules for subnet entities with specified segment_ids, to fix a broken implementation of that policy enforcement. Bug: 1784259

1.19.0

New Features

  • The project-default-networks extension is now available and adds a new attribute project_default into the network resource. This attribute will be used to indicate if a network is a project default network.

  • Add new extension qos-gateway-ip which extends the router_gw_info with new attribute qos_policy_id.

  • Introduced neutron_lib.utils.net.random_mac_generator(basemac). It allows you to get a mac address string Python generator from the same kind of basemac that neutron_lib.utils.net.get_random_mac(basemac) expects. If there are a lot of macs to get, this will speed the process up significantly over generating single macs and testing for collisions.

  • New methods available in Placement client: update_resource_provider and ensure_resource_provider.

  • New constants module for Placement: neutron_lib.placement.constants.

  • neutron-lib now has a new module: neutron_lib.placement.utils. This module contains logic that is to be shared between in-tree Neutron components and possibly out-of-tree Neutron agents that want to support features involving the Placement service (for example guaranteed minimum bandwidth).

  • policy-in-code support in neutron-lib is added. The default policies for ‘context_is_admin’ and ‘context_is_advsvc’ are now implemented as embeded policies. (Note that the main policy-in-code support will be implemented in the main neutron codebase.)

  • The new extension port-resource-request adds the resource_request attribute to port responses. This attribute enables Neutron to communicate to Nova resources needed by the port, such as physnet, VNIC type and bandwidth. If the port requested by Nova boot has the resource_request attribute, then the Nova Scheduler will try to allocate the VM in a host that can satisfy those requirements.

  • New extension qos-bw-minimum-ingress for extending qos_minimum_bandwidth_rule with ingress direction for placement based enforcement.

  • New MechanismDriver API class property: resource_provider_uuid5_namespace. Mechanism drivers wanting to support resource provider information reporting to Placement (eg. reporting resource providers to guarantee some minimum bandwidth allocated on them later) must set this class property to a UUID object unique to that mechanism driver. It will be used as a UUID v5 namespace in generating UUIDs for resource providers. The default implementation sets it to None, meaning that the mechanism driver does not support resource provider information reporting to Placement. Unaffected drivers need not be changed.

  • New MechanismDriver API method: responsible_for_ports_allocation. Mechanism drivers wanting to support resource allocations for ports in Placement (eg. wanting to guarantee some minimum bandwidth allocated on the resource provider in the port’s binding:profile.allocation) must implement this method. The default implementation reports not being responsible for any resource providers, therefore unaffected drivers need not be changed.

Bug Fixes

  • Increase the DB retry interval and max retry times for the retry_db_errors decorator in neutron_lib.db.api to 0.5 seconds and 20 times, respectively. For those actions which have a higher chance for DBDeadlock, users should have a higher success rate due to the larger random range and retry times. For more information see bug 1777968

Other Notes

  • Add two fields columns and value to exception NeutronDbObjectDuplicateEntry. These two fields are populated from the corresponding db exception.

  • Bump PlacementAPIClient's max supported microversion to 1.20, as from that microversion placement API returns json body for POST /resource_providers.

  • The PlacementAPIClient class is moved from neutron_lib.clients.placement to neutron_lib.placement.client in order to consolidate all Placement related logic under sub-package neutron_lib.placement.

  • The resource_provider_generation parameters of the following methods of PlacementAPIClient are now optional: update_resource_provider_inventories, update_resource_provider_inventory and update_resource_provider_traits. You may call the methods without this parameter or pass None with the meaning to ignore resource provider generations. That is the client will (in quick succession) get the object and update it supplying the same generation.

  • The create_resource_provider and associate_aggregates methods of PlacementAPIClient now return the parsed body of the respective responses. Since these methods returned None previously this is unlikely to break anything. On the other hand callers of these methods now have a chance to simplify their code.

  • This release removes the description from the segment extension’s attribute map as well as adds the standard-attr-description as required dependency and standard-attr-segment as an optional dependency.

1.18.0

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.

1.17.0

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.

1.16.0

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.

1.15.0

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

1.14.0

Prelude

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/placement.py 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/placement.py 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.

1.13.0

New Features

  • Add ip-substring-filtering API extension. This extension provides the ability to filter ports with an IP address substring.

  • Updated fwaas API extension definition to include previously missing ability to specify remote firewall groups for ingress and egress traffic. When a firewall group rule specifies a remote group, for example an ingress rule in fwgA specifies a remote group of fwgB, that means only packets from fwgB could match this ingress rule.

  • This adds two new events PRECOMMIT_ADD_ASSOCIATION, PRECOMMIT_DELETE_ASSOCIATIONS and a resource ROUTER_CONTROLLER.

  • Moving the leftover DVR related constants from neutron.common.constants. The constants L3_AGENT_MODE_DVR_NO_EXTERNAL and DVR_SNAT_BOUND are now available in neutron_lib.constants.

  • The publically consumed API’s from neutron.plugins.common.utils are now available in neutron_lib.plugins.utils.

  • The NetworkVlanRangeError and PhysicalNetworkNameError exception classes are now available in neutron_lib.exceptions.

  • The qos-rule-type-details extension’s API definition is now available in neutron_lib.api.definitions.qos_rule_type_details.

  • The revision-if-match extension’s API definition is now available in neutron_lib.api.definitions.revisionifmatch.

  • The router-service-type extension’s API definition is now available in neutron_lib.api.definitions.routerservicetype.

  • The segment extension’s API definition is now available in neutron_lib.api.definitions.segment.

  • The SHARED constant is now available in neutron_lib.constants.

  • The sorting extension’s API definition is now available in neutron_lib.api.definitions.sorting.

  • The public constants and get_topic_name function from neutron.common.topics are now available in neutron_lib.agent.topics.

1.12.0

New Features

  • Adds the IP-in-IP protocol under the name ipip to the list of protocols supported in security group rules.

  • A new PORT_BINDING resource definition has been added to neutron_lib.callbacks.resources, to enable the multiple port binding service plugin to notify the core plugin and other subscribers when create, update and delete operations are performed on a port binding.

  • A new abstract method ha_state_change has been added to L3AgentExtension.

  • The multi-provider extension’s API definition is available in neutron_lib.api.defintions.multiprovidernet.

  • Exceptions for the multi-provider extension can be found in neutron_lib.exceptions.multiprovidernet.

  • The validation type type:network_segments is now available for API attribute validation.

  • The neutron placement API client is now available as neutron_lib.clients.placement.

  • A new fixture for testing placement API calls has been added as neutron_lib.fixtures.PlacementAPIClientFixture.

  • The qos-default extension’s API definition is now available in neutron_lib.api.definitions.qos_default.

  • The rbac-policy callback resource now available as neutron_lib.callbacks.resources.RBAC_POLICY.

  • The service-type extension’s API definition is now available in neutron_lib.api.definitions.servicetype.

  • The vlan-transparent extension’s API definition is now available in neutron_lib.api.definitions.vlantransparent.

  • The get_vlan_transparent function from the vlan-transparent extension is available in neutron_lib.api.definitions.vlantransparent.

  • The subnet_onboard API definition now supports creating and updating subnets

  • All methods defined in APIExtensionDescriptor are now class methods. This allows consumers to call them without a reference to an actual extension object instance.

Bug Fixes

  • Bug 1738371 is fixed by comparing min port and max port in port range specification as integers instead of strings, during port range validation.

  • The get_extended_resources method of the APIExtensionDescriptor was updated to also include the underlying API definition’s SUB_RESOURCE_ATTRIBUTE_MAP in the returned dict. As a result, the update_attributes_map method now also includes the sub-resources if no extension_attrs_map is passed to it.

1.11.0

New Features

  • The bgpvpn-vni API extension adds the vni optional attribute to bgpvpn objects to control the VXLAN VNI when VXLAN encapsulation is used.

  • The flavors API definition is now available in neutron_lib.api.definitions.flavors.

  • A new type:service_plugin_type validator has been added that allows a service plugin to be validated at runtime by checking the neutron_lib.plugins.directory.

  • Exceptions related to the flavor API have been added to neutron_lib.exceptions.flavors except for InvalidFlavorServiceType which is now a generic InvalidServiceType in neutron_lib.exceptions.

  • The PROVISIONAL_IPV6_PD_PREFIX constant is now available in neutron_lib.constants.

Bug Fixes

  • Fixes BGPVPN Interconnection API to not allow the definition of an empty string Route Target (allowing it was simply wrong and unintentional).

1.10.0

New Features

  • A new converter convert_to_string into neutron_lib.api.converters. This method can convert an argument which is not None into string value.

  • The new net-mtu-writable extension API definition has been added as neutron_lib.api.definitions.network_mtu_writable. The new extension indicates that the network mtu attribute is writeable. Plugins supporting the new extension are expected to also support net-mtu.

  • API reference for extended port bindings extension for port resource.

  • The allowed-address-pairs API definition is now available in neutron_lib.api.definitions.allowedaddresspairs.

  • The address pair validation is now available via the type:allowed_address_pairs validation type.

  • Address pair API definition exceptions are available in neutron_lib.exceptions.allowedaddresspairs.

  • The availability_zone extension’s API definition is now available in neutron_lib.api.definitions.availability_zone.

  • A new API validation type type:availability_zone_hint_list has been added and validates a list of availability zone hints.

  • Exceptions for the availability_zone are now available in neutron_lib.exceptions.availability_zone.

  • The constant AZ_HINTS_DB_LEN has been added to neutron_lib.db.constants.

  • The API definition for neutron extension default-subnetpools is now available in neutron_lib.api.definitions.default_subnetpools.

  • The API definition for the dvr extension is now available in neutron_lib.api.defintions.dvr.

  • The two MacAddressGenerationFailure exceptions are now available as HostMacAddressGenerationFailure and NetworkMacAddressGenerationFailure for host and network MAC address generation errors respectively.

  • The external-net API extension’s API definition is now available in neutron_lib.api.definitions.external_net.

  • External network related exceptions are now available in neutron_lib.exceptions.external_net.

  • The API definition for the extraroute extension is now available in neutron_lib.api.defintions.extraroute.

  • Exceptions related to the extraroute extension are now available in neutron_lib.exceptions.extraroute.

  • The ip_allocation extension’s API definition is now available in neutron_lib.api.definitions.ip_allocation.

  • The l2_adjacency extension’s API definition is now available in neutron_lib.api.definitions.l2_adjacency.

  • The API definition for the ext-gw-mode extension is now available in neutron_lib.api.definitions.l3_ext_gw_mode.

  • The l3-ha extension’s API definition is now available in neutron_lib.api.definitions.l3_ext_ha_mode.

  • Exceptions related to the l3-ha extension are available in neutron_lib.api.exceptions.l3_ext_ha_mode.

  • The l3-flavors extension’s API definition is now available in neutron_lib.api.definitions.l3_flavors.

  • The metering extension’s API is now available in neutron_lib.api.definitions.metering.

  • Exceptions for the metering extension are available in neutron_lib.exceptions.metering.

  • The ExtensionDriver class in neutron_lib.plugins.ml2.api now contains the extension_aliases property to match neutron’s implementation.

  • The API definition for neutron’s network_availability_zone extension is now available in neutron_lib.api.definitions.network_availability_zone.

  • The network-ip-availability extension’s API definition is now available in neutron_lib.api.definitions.network_ip_availability.

  • The pagination API extension’s API definition is now available in neutron_lib.api.definitions.pagination.

  • The project-id API extension’s API definition is now available in neutron_lib.api.definitions.project_id.

  • The API definition for neutron’s qos extension is now available in neutron_lib.api.definitions.qos.

  • Neutron’s router_availability_zone extension API definition is now available in neutron_lib.api.definitions.router_availability_zone.

  • Adds subnet_onboard API definition to neutron-lib.

1.9.1

New Features

  • The FAULT_MAP dictionary from neutron.api.v2.base has been rehomed to neutron_lib.api.faults with the same name.

1.9.0

New Features

  • A VIF type for Agilio OVS (VIF_TYPE_AGILIO_OVS) has been added to portbindings. This links the external Neutron plugin to the external OS-VIF plugin in Nova.

  • The VNIC_VIRTIO_FORWARDER VNIC type has been added to portbindings. This VNIC type is intended to request a low-latency virtio port inside the instance, likely backed by hardware acceleration. Currently the Agilio OVS external plugin provides support for this, with support from other vendors following soon.

  • The exception classes have migrated from neutron_fwaas to neutron_lib as mentioned below:

    • neutron_fwaas.extensions.firewall -> neutron_lib.exceptions.firewall_v1

    • neutron_fwaas.extensions.firewallrouterinsertion -> neutron_lib.exceptions.firewall_v1

    • neutron_fwaas.extensions.firewall_v2 -> neutron_lib.exceptions.firewall_v2

  • API definition for the logging extension for security_group resource.

  • The net-mtu extension API definition has been added as neutron_lib.api.definitions.network_mtu.

  • Added validator range_or_none.

  • The neutron address-scope extension’s API definition is now available as neutron_lib.api.definitions.address_scope.

  • The neutron agent extension’s API definition is now available as neutron_lib.api.definitions.agent.

  • The neutron auto-allocated-topology extension’s API definition is now available as neutron_lib.api.definitions.auto_allocated_topology.

  • Contexts may now have transaction constraints set on them to be enforced by the revision plugin in Neutron for generalized compare-and-swap updates. Calling set_transaction_constraint on the context before performing a resource mutation will setup the constraint. This is also exposed to users via the HTTP API with if-match headers and the API layer sets the constraint on the context.

Bug Fixes

  • Update hacking check N536. Current implementation recognizes self.assertEqual((None, None), A) as invalid incorrectly while (None, None) is not None.

1.8.0

New Features

  • A new neutron_lib.validators package is now available where the existing definitions from the validators module are now in neutron_lib.validators.__init__ and subsequent per-component validators can be created in their own validators sub-module.

  • The bgpvpn-routes-control API extension is introduced to enrich the base bgpvpn extension. It allows to control BGPVPN connectivity at the granularity of a port and the advertisement into a BGPVPN of routes corresponding to destination reachable via a given port (static routes, BGPVPN route leaking).

  • The DNS Integration extension API definition has been added as neutron_lib.api.definitions.dns.

  • The validate_dns_name, validate_fip_dns_name, and validate_dns_domain are now available as neutron-lib validators.

  • The dns-domain-ports extension API definition has been added as neutron_lib.api.definitions.dns_domain_ports.

  • API reference for the logging extension for security_group resource.

  • Constants from neutron.common.constants are now available in neutron-lib. Note that consumers using ROUTER_STATUS_ACTIVE or ROUTER_STATUS_ERROR should now just use ACTIVE and ERROR from neutron_lib.constants.

  • The public APIs from neutron.plugins.ml2.driver_api are now in neutron_lib.plugins.ml2.api.

  • The neutron versioned object exceptions from neutron.objects.exceptions are now available in neutron_lib.objects.exceptions.

  • The DriverBase class from neutron.services.qos.drivers.base is now available in the neutron_lib.services.qos.base module.

  • The constants defined in neutron.services.qos.qos_consts are now available in neutron_lib.services.qos.constants.

  • The load_class_by_alias_or_classname function from neutron.common.utils is now available in neutron_lib.utils.runtime.

  • The synchronized decorator from neutron.common.utils is now available in neutron_lib.utils.runtime.

Other Notes

  • The deprecated N523 hacking check that ensures proper oslo namespace imports has been removed.

1.7.0

New Features

  • The constants VALID_BLANK_EXTRA_DHCP_OPTS and DHCP_OPT_VALUE_MAX_LEN are now public in the neutron_lib.api.definitions.extra_dhcp_opt API definition module.

1.6.0

New Features

  • A bulk of the neutron.api.v2.attributes functionality is now available in neutron_lib.api.attributes. A new AttributeInfo class is available in that acts as a wrapper for an API resource’s attribute dict and allows consumers to perform operations with the underlying attribute dict. The populate_project_info function is now available. The global attribute map RESOURCES is now available and will take the place of neutron’s global RESOURCE_ATTRIBUTE_MAP.

  • The neutron_lib.fixture.APIDefinitionFixture has been updated to handle backing-up and restoring the global RESOURCES dict. By default the constructor now also uses all API definitions if none are passed to it’s constructor. This is the default behavior almost all consumers need and is thus a convenience change.

1.5.0

New Features

  • The ACTION_STATUS is added to API definitions for neutron extension has specific action_status.

  • A new converter is added to facilitate converting IPv6 CIDRs to canonical format. This way IPv6 CIDRs can be specified in multiple formats but would be handled in their canonical format.

  • New N537 hacking check is introduced that enforces no logging message translations, in any logging level. The check is enabled by default. Also, the N533 hacking check is now removed because it is covered by N537.

  • The network, port, subnet and subnetpool API definitions are now available in neutron_lib.api.definitions.

  • The extra_dhcp_opt API extension definition from neutron.extensions has been rehomed to neutron_lib.api.definitions with the same name.

  • A new validator validate_any_key_specs_or_none has been added for the corresponding validation type type:list_of_any_key_specs_or_none. This validator can be used to check that a list of dicts match at least 1 key spec allowing consumers the ability to define multiple formats for their validated data.

  • The neutron.common.utils function is_port_trusted is now available in neutron_lib.utils.net.

Upgrade Notes

  • FWaaS has renamed the public attribute to shared to be in-sync with Openstack nomenclature based on the functionality the shared attribute provides.

  • Library consumers may need to adopt their code to new requirements of N537 hacking check, removing translation markers from all logging messages. If for some reason it doesn’t fit the project, consumers can disable the new hacking check using ignore statement in flake8 section of their tox.ini file, or by other means.

1.4.0

New Features

  • A new fixture for testing with neutron-lib API definitions has been added as neutron_lib.fixtures.APIDefinitionFixture. This fixture can be used anytime extension plugins are being tested that modify resource attribute maps and ensures the single global API definition attribute map is copied and restored.

  • The neutron_lib.api.extensions.APIExtensionDescriptor class now defines update_attributes_map that uses the API definitions attribute map if none is given. This is the default behavior in most all extensions today and thus is collapsed into the base class for convenience.

  • Many of the constants from neutron.plugins.common.constants are now available in neutron_lib.plugins.constants and neutron_lib.constants.

  • The NeutronWorker class from the neutron.worker module is now available as BaseWorker in neutron_lib.worker.

Bug Fixes

  • The oslo.db context manager returned by db.api.get_context_manager() will be configured with flush_on_subtransaction=True to more closely match the behavior of the previous session.begin(subtransactions=True) pattern we used everywhere before. See bug 1664643 for more details.

1.3.0

New Features

  • API reference for the networking-bgpvpn extension.

  • The APIExtensionDescriptor was added to neutron_lib.api.extensions and can be used with extensions that have an API definition in neutron-lib to minimize the boilplate code needed in the extension definition class. For more details, see the dev-ref.

  • API definition and reference documentation for the port data plane status extension.

  • The neutron_lib.api.extensions.ExtensionDescriptor class’s get_plugin_interface method now formally only supports neutron_lib.services.base.ServicePluginBase. This change reflects the existing usage by consumers as almost all are returning instances of ServicePluginBase already.

  • The class WorkerBase is now available and provides the same functionality that’s provided by neutron.worker.WorkerSupportServiceMixin.

  • The ML2 MechanismDriver class from neutron.plugins.ml2.driver_api is now available in neutron_lib.plugins.ml2.api.

  • The port security extension API definition has been rehomed from neutron to neutron_lib.api.definitions.port_security. The related exceptions can be found in the neutron_lib.exceptions.port_security module.

Other Notes

  • The hacking check factory function neutron_lib.hacking.checks.incubating_factory has been removed. All consumers should use neutron_lib.hacking.checks.factory as per the usage dev-ref.

1.2.0

New Features

  • A new neutron_lib.exceptions package is now available where the existing definitions from the exceptions module are now in neutron_lib.exceptions.__init__ and subsequent per-component exceptions can be created in their own exceptions sub-module.

  • Rehome the validation for checking if an extension is supported by the plugin. The method is_extension_supported will now be part of neutron_lib.api.extensions.

  • API definition for the networking-bgpvpn extension.

  • Adds new validator validate_list_of_regex_or_none.

  • neutron_lib.db has a public module api that provides accessor functions for transactional context manager services.

  • neutron_lib.fixture has a new SqlFixture available.

  • API reference and definition for networking-midonet’s fip64 extension.

  • Added hacking check N536. This hacking check is added to the incubating checks.

  • The exception classes from neutron.extensions.l3 have been rehomed into neutron_lib.exceptions.l3.

  • API reference and definition for networking-midonet’s logging-resource extension.

  • API reference and definition for networking-midonet’s router-interface-fip extension.

1.1.0

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()
        self.useFixture(fixture.PluginDirectoryFixture(
            plugin_directory=self._plugin_directory))
    
  • 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.

1.0.0

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.opendev.org/#/c/386845/

  • API reference for the trunk extension.

Other Notes