We enthusiastically announce the release of: neutron-lib 1.1.0: Neutron shared routines and utilities This release is part of the ocata release series. The source is available from: http://git.openstack.org/cgit/openstack/neutron-lib Download the package from: https://pypi.python.org/pypi/neutron-lib Please report issues through launchpad: http://bugs.launchpad.net/neutron For more details, please see below. 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". * The "context" module has been made public. For example: from neutron_lib import context ctx = context.get_admin_context() For more examples, see: https://review.openstack.org/#/c/388157/ * 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". Changes in neutron-lib 1.0.0..1.1.0 ----------------------------------- cba0f9f Rehome providernet api-def 87e42f9 Rehome portbindings api-def into neutron-lib 9eb4d72 Rehome l3 API definitions into neutron-lib 2b354d1 api-ref: Fix api-ref for vpnaas a039966 Rehome ServicePluginBase 6cfa2c0 api-ref: Fix descriptions of sec-grp parameters 7c3be07 Follow-up review comments 0841296 FWaaS v2 API reference 6cc186f Migrate neutron-fwaas API definitions to neutron-lib c7871e8 Capture wider list of extension aliases 1902e2a Revisit exported policy module 6d5e550 Make neutron context available in neutron-lib 90809fd Add dummy API definitions for extension subresources fea8bb6 Expose/Improve callback notification interface 100bc4e Add validators/converters needed by neutron-fwaas f5620b8 Improve floatingip api-ref a02765c api-ref: Fix api-ref for metering 1c92b53 Add fixture for plugin directory 82eddcd Updated from global requirements 6f3a5c6 Removed incorrect docstring for Context 73adf55 Add FQDN_FIELD_SIZE constant 79edae5 api-ref: Adding request parameter for sec-grp-rule 0931c5c Remove discover from test-requirements f48adb0 Directory: fix concurreny issue 6a9e6d9 Removes unnecessary utf-8 encoding 4e4bffc Sync up bare minimum from neutron.db.api into lib 318a6b6 api-ref: project_id in req/resp body should be "body" 250551d Fix the status parameters in api-ref 1152f9d Modify API response information in API documents d742175 [api-ref] Add max number of characters for tag b6244f5 Migrate neutron agent extensions to neutron-lib bddc699 Add validator to check for IP or subnet or none c61976b Use new checks in hacking 0.12 189b98e Correcting Floating IPs 322ae30 Use constranits for api-ref target f19d8a8 Policy: reuse common code 906e5a1 Updated from global requirements d1a5ea0 Separate hacking check factories a3b5e86 Provide dummy API definition for documentation purposes a18de8b Add converter to convert IPv6 addresses to canonical format 380702c Sync latest neutron context into lib de7aff6 Remove README from docs build 5c638b5 Explain how to use the latest neutron-lib dashboard 77c4ddb api-ref: Fix api-ref for fwaas c26dc8d Add alembic branch constants ca99605 Typo in ExtensionDescriptor.get_request_extensions() ef5be1f [doc]Add sha256, sha384 and sha512 auth algorithms 3a7135e Show team and repo badges on README 4a78c72 Make the get_random_mac more versatile 4af5c97 Correcting Networking API v2.0 flavor extension 3eaa1c6 Revise status of VPNaaS in neutron 8b017d1 Update contributing doc 0c6dfdf Updated from global requirements 3193c6d Replace six.iteritems() with .items() f639d3e api-ref: Fix api-ref for lbaas-v2 e94547d Add is_bsd() to neutron-lib 60e9415 Use api/attributes.py instead of api/utils.py 3225a57 Doc olso config option approach dcff4ba Revert "Move wait_until_true to neutron-lib" afa7aed Move wait_until_true to neutron-lib 113af41 api-ref: Fix api-ref for subnetpools cabf52e Sync latest neutron callbacks into lib ee0f5b2 Move get_random_mac into neutron-lib 8dbdb02 api-ref: Correcting Network v2.0 API extensions 96b69b2 Add missing is_loaded() method on directory's interface a08ac59 TrivialFix: Perfect the unit test in test_utils 6178406 Fix typo for comparision => comparison 36b400a Updated from global requirements a3f7590 Add section headings to Neutron API Reference 75ae597 Updates to API report tooling 1090701 api-ref: Fix api-ref for subnets 3c41960 Fix doc build if git is absent 5f53e32 api-ref: Update local_id configuration Diffstat (except docs and test files) ------------------------------------- HACKING.rst | 1 - README.rst | 9 + api-ref/source/conf.py | 2 - api-ref/source/v2/extensions.inc | 44 +- api-ref/source/v2/flavors.inc | 528 +-- api-ref/source/v2/floatingips.inc | 127 +- api-ref/source/v2/fwaas-v2.inc | 847 ++++ api-ref/source/v2/fwaas.inc | 662 +-- api-ref/source/v2/index.rst | 53 +- api-ref/source/v2/lbaas-v1.inc | 24 +- api-ref/source/v2/lbaas-v2.inc | 746 ++-- api-ref/source/v2/metering.inc | 170 +- api-ref/source/v2/network-provider.inc | 8 +- api-ref/source/v2/networks-multi-provider-ext.inc | 6 +- .../source/v2/networks-vlan-transparency-ext.inc | 6 +- api-ref/source/v2/networks.inc | 10 +- api-ref/source/v2/parameters.yaml | 4435 ++++++++++++-------- api-ref/source/v2/ports.inc | 10 +- api-ref/source/v2/qos.inc | 12 +- api-ref/source/v2/quotas.inc | 8 +- api-ref/source/v2/routers.inc | 8 +- .../firewall-v2/firewall-group-create-request.json | 7 + .../firewall-group-create-response.json | 17 + .../firewall-v2/firewall-group-show-response.json | 14 + .../firewall-v2/firewall-group-update-request.json | 5 + .../firewall-group-update-response.json | 16 + .../firewall-v2/firewall-groups-list-response.json | 18 + .../firewall-policies-list-response.json | 16 + .../firewall-policy-create-request.json | 8 + .../firewall-policy-create-response.json | 14 + .../firewall-policy-insert-rule-request.json | 5 + .../firewall-policy-insert-rule-response.json | 12 + .../firewall-policy-remove-rule-request.json | 3 + .../firewall-policy-remove-rule-response.json | 10 + .../firewall-v2/firewall-policy-show-response.json | 14 + .../firewall-policy-update-request.json | 8 + .../firewall-policy-update-response.json | 15 + .../firewall-v2/firewall-rule-create-request.json | 9 + .../firewall-v2/firewall-rule-create-response.json | 18 + .../firewall-v2/firewall-rule-show-response.json | 20 + .../firewall-v2/firewall-rule-update-request.json | 5 + .../firewall-v2/firewall-rule-update-response.json | 20 + .../firewall-v2/firewall-rules-list-response.json | 22 + .../flavors/service-profiles-list-response.json | 4 +- .../floatingips/floating-ips-list-response.json | 8 + .../floatingips/floatingip-create-request.json | 6 +- .../floatingips/floatingip-create-response.json | 6 +- .../floatingip-disassociate-response.json | 6 +- .../floatingips/floatingip-show-response.json | 6 +- .../lbaas/healthmonitor-create-request.json | 1 + .../lbaas/loadbalancer-update-response.json | 2 + .../samples/lbaas/loadbalancers-list-response.json | 2 + .../v2/samples/lbaas/member-create-response.json | 4 +- .../v2/samples/lbaas/member-show-response.json | 4 +- .../v2/samples/lbaas/member-update-response.json | 4 +- .../v2/samples/lbaas/pool-create-request.json | 1 + .../qos/bandwidth_limit_rule-create-response.json | 5 +- .../qos/bandwidth_limit_rule-show-response.json | 5 +- .../qos/bandwidth_limit_rule-update-response.json | 5 +- .../qos/bandwidth_limit_rules-list-response.json | 5 +- .../qos/dscp_marking_rule-create-response.json | 3 +- .../qos/dscp_marking_rule-show-response.json | 3 +- .../qos/dscp_marking_rule-update-response.json | 3 +- .../qos/dscp_marking_rules-list-response.json | 3 +- .../v2/samples/qos/policies-list-response.json | 24 +- .../v2/samples/qos/policy-create-response.json | 1 + .../v2/samples/qos/policy-show-response.json | 18 +- .../security-group-rule-show-request-json-http.txt | 4 +- .../security-group-update-response.json | 2 +- .../v2/samples/subnets/subnet-create-request.json | 2 +- .../v2/samples/subnets/subnet-create-response.json | 10 +- .../v2/samples/subnets/subnet-show-response.json | 8 +- .../samples/subnets/subnetpool-show-response.json | 4 +- .../subnets/subnetpool-update-response.json | 4 +- .../samples/subnets/subnetpools-list-response.json | 8 +- .../subnets/subnets-create-bulk-response.json | 20 +- .../v2/samples/subnets/subnets-list-response.json | 20 +- api-ref/source/v2/security-group-rules.inc | 152 +- api-ref/source/v2/security-groups.inc | 203 +- api-ref/source/v2/subnetpools.inc | 72 +- api-ref/source/v2/subnets.inc | 235 +- api-ref/source/v2/tags.inc | 4 + api-ref/source/v2/trunk.inc | 12 +- api-ref/source/v2/vpnaas.inc | 1171 +++--- neutron_lib/__init__.py | 2 - neutron_lib/_callbacks/__init__.py | 0 neutron_lib/_callbacks/events.py | 44 - neutron_lib/_callbacks/exceptions.py | 58 - neutron_lib/_callbacks/manager.py | 169 - neutron_lib/_callbacks/registry.py | 48 - neutron_lib/_callbacks/resources.py | 31 - neutron_lib/_context.py | 142 - neutron_lib/_policy.py | 67 + neutron_lib/agent/__init__.py | 0 neutron_lib/agent/constants.py | 23 + neutron_lib/agent/extension.py | 48 + neutron_lib/agent/l2_extension.py | 55 + neutron_lib/agent/l3_extension.py | 53 + neutron_lib/api/attributes.py | 43 + neutron_lib/api/converters.py | 73 +- neutron_lib/api/definitions/_dummy.py | 115 + neutron_lib/api/definitions/base.py | 4 + neutron_lib/api/definitions/constants.py | 23 + neutron_lib/api/definitions/firewall.py | 174 + neutron_lib/api/definitions/firewall_v2.py | 190 + .../api/definitions/firewallrouterinsertion.py | 69 + neutron_lib/api/definitions/l3.py | 160 + neutron_lib/api/definitions/portbindings.py | 197 + neutron_lib/api/definitions/provider_net.py | 107 + neutron_lib/api/definitions/trunk.py | 3 + neutron_lib/api/definitions/trunk_details.py | 19 +- neutron_lib/api/extensions.py | 2 +- neutron_lib/api/utils.py | 37 +- neutron_lib/api/validators.py | 67 +- neutron_lib/callbacks/__init__.py | 0 neutron_lib/callbacks/events.py | 153 + neutron_lib/callbacks/exceptions.py | 58 + neutron_lib/callbacks/manager.py | 202 + neutron_lib/callbacks/registry.py | 54 + neutron_lib/callbacks/resources.py | 32 + neutron_lib/constants.py | 9 + neutron_lib/context.py | 161 + neutron_lib/db/_api.py | 36 +- neutron_lib/db/constants.py | 5 + neutron_lib/fixture.py | 61 + neutron_lib/hacking/checks.py | 40 +- neutron_lib/hacking/translation_checks.py | 30 - neutron_lib/plugins/directory.py | 7 +- neutron_lib/policy.py | 96 - neutron_lib/services/__init__.py | 0 neutron_lib/services/base.py | 92 + .../definitions/test_firewallrouterinsertion.py | 20 + .../unit/api/definitions/test_portbindings.py | 24 + .../unit/api/definitions/test_provider_net.py | 20 + .../unit/api/definitions/test_trunk_details.py | 1 + .../unit/callbacks/test_callback_exceptions.py | 4 +- neutron_lib/utils/helpers.py | 2 +- neutron_lib/utils/net.py | 16 + .../add-directory-is-loaded-e9da5b65824dddad.yaml | 5 + .../notes/agent_extensions-2b497ff33c6dc3e8.yaml | 3 + .../notes/alembic-branches-6d5947d141efd26e.yaml | 5 + .../notes/context-public-6df198b77027c224.yaml | 12 + .../deprecate-api-utils-4f86288591c95679.yaml | 5 + .../notes/directory-fixture-083c5c5f365670d6.yaml | 17 + ...enable-hacking-check-H904-f512ecc98c0a4033.yaml | 5 + ...-and-enhance-callback-api-714cce65a3c44fe7.yaml | 14 + .../notes/fwaas-api-def-a6f03db369177b4a.yaml | 3 + ...aas_converters_validators-c310900b4386146e.yaml | 5 + .../notes/ipv6_address_usage-ef3d65ad5aa5798b.yaml | 6 + .../notes/l3-apidefs-d028c708c22ef2a0.yaml | 5 + .../move-get-random-mac-98f47d81cb34483d.yaml | 4 + .../notes/policy-redux-25c26836219fd02d.yaml | 7 + .../portbindings-apidef-3d7893bcb94d7f61.yaml | 5 + .../provider-net-apidef-9ebe9f56840c79f7.yaml | 4 + ...eparate-hacking-factories-6fc36b38de95662a.yaml | 7 + .../service-plugin-base-a42c2241a2fe0d26.yaml | 4 + ...ator_ip_or_subnet_or_none-0175f906a9113954.yaml | 3 + releasenotes/source/conf.py | 1 - requirements.txt | 10 +- test-requirements.txt | 3 +- tools/api_report.sh | 4 +- tools/pyir.py | 40 +- tox.ini | 10 +- 198 files changed, 10575 insertions(+), 4476 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 788adf8..2e8887e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5 +5 @@ -pbr>=1.6 # Apache-2.0 +pbr>=1.8 # Apache-2.0 @@ -12 +12 @@ oslo.context>=2.9.0 # Apache-2.0 -oslo.db!=4.13.1,!=4.13.2,>=4.10.0 # Apache-2.0 +oslo.db>=4.15.0 # Apache-2.0 @@ -15,2 +15,2 @@ oslo.log>=3.11.0 # Apache-2.0 -oslo.messaging>=5.2.0 # Apache-2.0 -oslo.policy>=1.15.0 # Apache-2.0 +oslo.messaging>=5.14.0 # Apache-2.0 +oslo.policy>=1.17.0 # Apache-2.0 @@ -18 +18 @@ oslo.service>=1.10.0 # Apache-2.0 -oslo.utils>=3.17.0 # Apache-2.0 +oslo.utils>=3.18.0 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index fbbf5ca..44eee12 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -5 +5 @@ -hacking<0.12,>=0.11.0 # Apache-2.0 +hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 @@ -8 +7,0 @@ coverage>=4.0 # Apache-2.0 -discover # BSD