We are pumped to announce the release of: neutron-lib 1.21.0: Neutron shared routines and utilities This release is part of the stein release series. The source is available from: https://git.openstack.org/cgit/openstack/neutron-lib Download the package from: https://pypi.org/project/neutron-lib Please report issues through launchpad: https://bugs.launchpad.net/neutron For more details, please see below. 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 (https://bugs.launchpad.net/neutron/+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 (https://bugs.launchpad.net/neutron/+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. Changes in neutron-lib 1.20.0..1.21.0 ------------------------------------- ab28416 Fix QoS alias api definition ed54c93 Fix default value of subnet attribute for subnet onboard 5aad62c Support fetching specific db column in OVO 1e6a07c Placement client: improve Placement 4xx exceptions 5227491 Placement client: do not swallow exceptions 74600f1 Placement client: clean up docstrings f730a5e rehome get_updatable_fields into object utils fe389ee Add ipv6 canonical address converter to API 29f128c Check if a port can be bound to a virtual bridge 7061266 fix DBResourceExtendFixture fixture 0a6dcc5 Update min tox version to 2.3.2 b2ad103 Adapt to changed resource class names cd2c698 Add shim extension l3-port-ip-change-not-allowed e0d2712 api-ref: document floating ip pools endpoint Diffstat (except docs and test files) ------------------------------------- api-ref/source/v2/floatingippools.inc | 38 ++++++++++++ api-ref/source/v2/index.rst | 1 + api-ref/source/v2/parameters.yaml | 6 ++ api-ref/source/v2/qos.inc | 18 +++--- .../floating-ip-pools-list-response.json | 12 ++++ .../samples/ports/port-bind-create-response.json | 2 +- .../v2/samples/ports/port-bind-show-response.json | 2 +- .../samples/ports/port-bind-update-response.json | 2 +- .../v2/samples/ports/ports-bind-list-response.json | 2 +- neutron_lib/api/definitions/__init__.py | 2 + neutron_lib/api/definitions/base.py | 1 + .../definitions/l3_port_ip_change_not_allowed.py | 29 +++++++++ neutron_lib/api/definitions/qos_rules_alias.py | 24 +++++--- neutron_lib/api/definitions/subnet.py | 12 ++-- neutron_lib/api/definitions/subnet_onboard.py | 2 +- neutron_lib/db/model_query.py | 21 ++++++- neutron_lib/exceptions/placement.py | 4 ++ neutron_lib/fixture.py | 10 ++-- neutron_lib/objects/utils.py | 8 +++ neutron_lib/placement/client.py | 70 +++++++++++++++------- neutron_lib/placement/constants.py | 4 +- neutron_lib/plugins/utils.py | 10 ++++ .../test_l3_port_ip_change_not_allowed.py | 18 ++++++ .../unit/api/definitions/test_qos_rules_alias.py | 7 +-- ...e-bound-to-virtual-bridge-5d6db8785e58fcb9.yaml | 6 ++ ...ng-specific-column-in-OVO-81b764b203849776.yaml | 9 +++ .../ipv6-canonical-address-13900a784f847ce3.yaml | 6 ++ ...-port-ip-change-not-allow-2c98e13c08b5ee85.yaml | 9 +++ ...do-not-swallow-exceptions-c33c9a9224a27551.yaml | 8 +++ .../qos-rules-alias-ext-fix-3f3f7dd21837cfec.yaml | 11 ++++ ...home-get-updatable-fields-82fd87d402d63ca2.yaml | 4 ++ tox.ini | 2 +- 36 files changed, 338 insertions(+), 70 deletions(-)