We jubilantly announce the release of: neutron-lib 1.15.0: Neutron shared routines and utilities This release is part of the rocky 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.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 (https://bugs.launchpad.net/neutron/+bug/1770932) Changes in neutron-lib 1.14.0..1.15.0 ------------------------------------- 2b5d1fd Fix list_resource_providers filters e17b655 Switch to stestr a948801 Add DHCP_OPT_CLIENT_ID_NUM 1bca904 bgpvpn API definition: add API_PREFIX 0f625d4 Update api-ref to reflect update allowed for subnet segment_id 6ad1a62 api-ref: document sorting parameters for address scope 7f75b63 api-ref: add 'project_id' as sort_key 5730aa2 Add API extensions to advertise support of std attributes for BGPVPN 65da70c Adding tags to responses for relevant resources 61f8615 Documenting L3 agent scheduler 06fe7a9 api-ref: add filter parameters to agents b8be5da api-ref: add filter parameters to resource management 34b984e api-ref: several fixes on security group rules 2d99856 Adding qos policy to the different port and network operations 0de474f Introduce API definition of Floating IP Port Forwarding 47fed0e Add empty-string-filtering API extension 1c7d634 Documenting L3 External gateway mode e4d3946 Add timestamp attributes to standard resources 0d20694 api-ref: add filter parameters to rbac 341f8a1 api-ref: document sorting for resource management 1d645c8 Add port bindings to RPC topics resources a508fa1 'sfc' and 'flowclassifier' API extension definitions (networking-sfc) 67fc665 Add documentation for callback priority 5693e90 Trivial: Update pypi url to new url a24bf98 Add placement calls for bandwith resource provider Diffstat (except docs and test files) ------------------------------------- .gitignore | 1 + .testr.conf | 8 - api-ref/source/v2/address-scopes.inc | 1 + api-ref/source/v2/agents.inc | 14 +- api-ref/source/v2/flavors.inc | 16 + api-ref/source/v2/floatingips.inc | 17 + api-ref/source/v2/index.rst | 1 + api-ref/source/v2/intro.inc | 10 + api-ref/source/v2/l3-agent-scheduler.inc | 165 +++++++++ api-ref/source/v2/logging.inc | 14 + api-ref/source/v2/metering.inc | 31 +- api-ref/source/v2/networks.inc | 36 +- api-ref/source/v2/parameters.yaml | 408 +++++++++++++++++++-- api-ref/source/v2/ports.inc | 56 ++- api-ref/source/v2/qos.inc | 45 ++- api-ref/source/v2/rbac-policy.inc | 7 + api-ref/source/v2/routers.inc | 57 ++- .../agents/agent-l3-router-add-request.json | 3 + .../agents/agent-l3-router-remove-request.json | 3 + .../agents/agent-l3-routers-list-response.json | 75 ++++ .../agents/router-l3-agent-list-response.json | 32 ++ .../floatingips/floating-ips-list-response.json | 6 +- .../floatingips/floatingip-create-response.json | 3 +- .../floatingip-disassociate-response.json | 3 +- .../floatingips/floatingip-show-response.json | 3 +- .../floatingips/floatingip-update-response.json | 1 + .../v2/samples/logs/log-create-response.json | 2 + .../source/v2/samples/logs/log-list-response.json | 2 + .../source/v2/samples/logs/log-show-response.json | 2 + .../v2/samples/logs/log-update-response.json | 2 + .../samples/networks/network-create-response.json | 1 + .../networks/network-multi-create-response.json | 1 + .../networks/network-multi-show-response.json | 1 + .../networks/network-provider-create-response.json | 1 + .../networks/network-provider-show-response.json | 1 + .../v2/samples/networks/network-show-response.json | 1 + .../samples/networks/network-update-response.json | 1 + .../networks/networks-bulk-create-response.json | 2 + .../networks/networks-provider-list-response.json | 4 + .../v2/samples/ports/port-bind-create-request.json | 3 +- .../samples/ports/port-bind-create-response.json | 4 + .../v2/samples/ports/port-bind-show-response.json | 4 +- .../v2/samples/ports/port-bind-update-request.json | 3 +- .../samples/ports/port-bind-update-response.json | 4 + .../v2/samples/ports/port-create-request.json | 1 + .../v2/samples/ports/port-create-response.json | 4 +- .../v2/samples/ports/port-show-response.json | 4 +- .../v2/samples/ports/port-update-request.json | 3 +- .../v2/samples/ports/port-update-response.json | 4 + .../v2/samples/ports/ports-bind-list-response.json | 10 + .../samples/ports/ports-bulk-create-request.json | 3 +- .../samples/ports/ports-bulk-create-response.json | 8 + .../v2/samples/ports/ports-list-response.json | 8 + .../v2/samples/qos/policies-list-response.json | 5 +- .../v2/samples/qos/policy-create-response.json | 5 +- .../v2/samples/qos/policy-show-response.json | 5 +- .../v2/samples/qos/policy-update-response.json | 5 +- .../routers/router-add-interface-response.json | 3 +- .../v2/samples/routers/router-create-response.json | 5 +- .../routers/router-remove-interface-response.json | 1 + .../v2/samples/routers/router-show-response.json | 5 +- .../v2/samples/routers/router-update-response.json | 5 +- .../v2/samples/routers/routers-list-response.json | 10 +- .../security-group-create-response.json | 10 + .../security-group-rule-create-response.json | 2 + .../security-group-rule-show-response.json | 2 + .../security-group-rules-list-response.json | 8 + .../security-group-show-response.json | 15 + .../security-group-update-response.json | 5 +- .../security-groups-list-response.json | 15 + .../samples/segments/segment-create-response.json | 2 + .../v2/samples/segments/segment-show-response.json | 2 + .../samples/segments/segment-update-response.json | 2 + .../samples/segments/segments-list-response.json | 4 + .../v2/samples/subnets/subnet-create-response.json | 1 + .../v2/samples/subnets/subnet-show-response.json | 3 +- .../v2/samples/subnets/subnet-update-response.json | 5 +- .../subnets/subnetpool-create-response.json | 3 + .../samples/subnets/subnetpool-show-response.json | 3 +- .../subnets/subnetpool-update-response.json | 5 +- .../samples/subnets/subnetpools-list-response.json | 10 +- .../subnets/subnets-create-bulk-response.json | 2 + .../v2/samples/subnets/subnets-list-response.json | 2 + api-ref/source/v2/security-group-rules.inc | 25 +- api-ref/source/v2/security-groups.inc | 26 ++ api-ref/source/v2/segments.inc | 14 + api-ref/source/v2/subnetpools.inc | 35 +- api-ref/source/v2/subnets.inc | 58 ++- api-ref/source/v2/tags.inc | 3 +- api-ref/source/v2/trunk.inc | 21 ++ neutron_lib/agent/topics.py | 4 + neutron_lib/api/converters.py | 43 +++ neutron_lib/api/definitions/__init__.py | 16 + neutron_lib/api/definitions/base.py | 6 + neutron_lib/api/definitions/bgpvpn.py | 3 + neutron_lib/api/definitions/bgpvpn_stdattrs.py | 29 ++ .../api/definitions/bgpvpn_stdattrs_net_assoc.py | 29 ++ .../api/definitions/bgpvpn_stdattrs_port_assoc.py | 29 ++ .../definitions/bgpvpn_stdattrs_router_assoc.py | 29 ++ .../api/definitions/empty_string_filtering.py | 25 ++ neutron_lib/api/definitions/extra_dhcp_opt.py | 2 + .../api/definitions/floating_ip_port_forwarding.py | 129 +++++++ neutron_lib/api/definitions/flowclassifier.py | 173 +++++++++ neutron_lib/api/definitions/sfc.py | 281 ++++++++++++++ neutron_lib/api/validators/__init__.py | 26 +- neutron_lib/clients/placement.py | 226 +++++++++++- neutron_lib/constants.py | 3 + neutron_lib/exceptions/placement.py | 8 + neutron_lib/plugins/constants.py | 1 + .../definitions/test_bgpvpn_net_assoc_stdattrs.py | 18 + .../definitions/test_bgpvpn_port_assoc_stdattrs.py | 18 + .../test_bgpvpn_router_assoc_stdattrs.py | 18 + .../unit/api/definitions/test_bgpvpn_stdattrs.py | 18 + .../api/definitions/test_empty_string_filtering.py | 18 + .../test_floating_ip_port_forwarding.py | 23 ++ .../unit/api/definitions/test_flowclassifier.py | 30 ++ ...g-filtering-api-extension-44cb392025dc359c.yaml | 5 + ...ngs-resource-messages-rpc-1382ba9842561cdb.yaml | 5 + ...ent-id-number-dhcp-option-a099f927eb8f99af.yaml | 8 + ...floatingip-portforwarding-17c284080541bc78.yaml | 6 + .../notes/sfc-api-def-4f46632eadfe895a.yaml | 11 + .../std_attributes_bgpvpn-5a1c63f68d1ff6be.yaml | 8 + test-requirements.txt | 1 + tox.ini | 14 +- 129 files changed, 2803 insertions(+), 189 deletions(-) Requirements updates -------------------- diff --git a/test-requirements.txt b/test-requirements.txt index f54decc..792e907 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -13,0 +14 @@ reno>=2.5.0 # Apache-2.0 +stestr>=1.0.0 # Apache-2.0