Stein Series Release Notes¶
1.25.1-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.
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
inneutron_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 inneutron_lib.constants
with the exception ofEXT_PARENT_RESOURCE_MAPPING
that is now available inneutron_lib.services.constants
.
The
neutron_lib.tests._tools
module is now public and namedtools
.
The
sqlalchemytypes
module is now available inneutron_lib.db
.
The trunk service constants are now available in
neutron_lib.services.trunk.constants
, but now have the constant name prefixed withTRUNK_
.
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 thename
anddesc
arguments toBaseWorker.start()
, and the change can be disabled via theset_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
andingress
, used in Neutrontc_lib
Qdisc ID: for
ingress
type, because this one is specific only for ingress traffic.Qdisc parents: for
root
andingress
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 inneutron_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 thenetwork_segment_range
service plugin.
For technical reasons the
floatingip-autodelete-internal
extension no longer requires therouter
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
andRULE_ADMIN_OR_PARENT_OWNER
. It contains also helper functionspolicy_and
andpolicy_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
andAmbiguousResponsibilityForResourceProvider
.
The
SUBPORTS
,TRUNK
andTRUNK_PLUGIN
constants are now available inneutron_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 as10 * rpc_response_timeout
value.
The
agent-resources-synced
extension introduces a new agent attribute namedresources_synced
that tracks the success of the resource view synchronization to Placement.
Extend the ML2 type driver abstract methods
reserve_provider_segment
andallocate_tenant_segment
withfilters
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 toneutron_lib.constants
and renamed toNETWORK_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
andTcLibQdiscTypeError
inneutron-lib.exceptions.qos
.
A new function named
validate_route_cidr
was introduced which is used to validate ifdestination
ofroutes
anddestination
ofhost_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 inneutron_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 inneutron_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
inneutron_lib.db.model_query
. This method allow callers to fetch specific column from a database model. Add keyword parameterfield
to methodquery_with_hooks
. The default value of this parameter is None. Callers can set this parameter to query specific column.
The
get_updatable_fields
function fromneutron.objects.base
is now available inneutron_lib.object.utils
.
Bug Fixes¶
The
gateway
,allocation_pools
andcidr
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-definebandwidth_limit_rules
,dscp_marking_rules
andminimum_bandwidth_rules
as first level API resources, leading to conflicts in the QoS API. We now definealias_bandwidth_limit_rules
,alias_dscp_marking_rules
andalias_minimum_bandwidth_rules
that will enable users to performGET
,PUT
andDELETE
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 performGET
,PUT
andDELETE
operations onbandwidth_limit_rules
,dscp_marking_rules
andminimum_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 asneutron_lib.db.resource_extend
along with a newDBResourceExtendFixture
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
andNotEqual
. The classStringMatchingFilterObj
is now a subclass ofFilterObj
.
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 attributeproject_default
into thenetwork
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 thatneutron_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
andensure_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 theresource_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 theresource_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 extendingqos_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 toNone
, 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’sbinding: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 inneutron_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
andvalue
to exceptionNeutronDbObjectDuplicateEntry
. These two fields are populated from the corresponding db exception.
Bump
PlacementAPIClient's
max supported microversion to1.20
, as from that microversion placement API returns json body for POST /resource_providers.
The
PlacementAPIClient
class is moved fromneutron_lib.clients.placement
toneutron_lib.placement.client
in order to consolidate all Placement related logic under sub-packageneutron_lib.placement
.
The
resource_provider_generation
parameters of the following methods ofPlacementAPIClient
are now optional:update_resource_provider_inventories
,update_resource_provider_inventory
andupdate_resource_provider_traits
. You may call the methods without this parameter or passNone
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
andassociate_aggregates
methods ofPlacementAPIClient
now return the parsed body of the respective responses. Since these methods returnedNone
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 thestandard-attr-description
as required dependency andstandard-attr-segment
as an optional dependency.