We are psyched to announce the release of: networking-odl 3.0.0: OpenStack Networking Download the package from: https://tarballs.openstack.org/networking-odl/ For more details, please see below. 3.0.0 ^^^^^ Host Configuration data population from agentless OpenDayLight. Full sync supports and ODL controller with no Neutron resources on it. This support is for the V2 driver, as V1 driver already supports this. Journal recovery for the V2 driver handles failed journal entries. Maintenance thread for the V2 driver. Remove LbaaS v1 driver, as LbaaS removed v1 API. Agentless Port binding controller using agentdb for persistency with ODL provided host configuration. QoS Driver V1 for networking-odl. Networking SFC V1 driver for networking-odl. Support for vlan-transparency. New Features ************ * This configuration is used to get the information about physical host type and other config data like supported vnic types stored in ovsdb. Networking-odl can fetch this info from OpenDaylight via REST API request and feed agents_db table in neutron, which will be used by neutron scheduler. * The full sync process looks for a "canary" network on the ODL controller side. If such a network is found, it doesn't do anything. If the network is missing then all the neutron resources are re- created on ODL. This supports cases when ODL controller comes online with no Neutron resources on it (also referred to as "cold reboot", but can happen on various cases). * The journal recovery mechanism handles failed journal entries by inspecting ODL and deciding on the correct course of action. This support should be sufficient for the majority of entry failures. * The maintenance thread was introduced in the V2 driver in order to perform various journal maintenance tasks, such as * Stale lock release * Completed entry cleanup * Full sync * Journal recovery The thread runs in a configurable interval and is HA safe so at most one will be executing regardless of how many threads are running concurrently. * Reads host configuration from ODL using a REST/get and stores the information in Neutron agentdb for persistency. This host configuration is read back from agentdb and applied during port binding. Without this feature several out-of-sync race conditions were caused due to incorrect host information. * A new driver to integrate OpenStack neutron QoS API with OpenDayLight backend. It supports CRUD operations for QoS policy and its associated rules. The QoS driver in tree is of version v1, which does not log the operation request in journal table. * First version of the driver to support networking-sfc API through OpenDaylight controller. This driver support CRUD operation for flow classifier, port-pair, port-pair-group and port-pair-chain. This is version 1 driver and does not support the journal based implementation. * The extension *vlan-transparent* is supported for Newton release, unconditionally only vxlan is considered to support its extension independent of ODL openstack provider. It's future work to allow ODL openstack provider to report list of supported network types at start up statically. Known Issues ************ * Currently only network type of VXLAN is statically considered to support vlan-transparent independently of OpenDaylight openstack provider. It should use capability report by OpenDaylight openstack provider statically instead of static hard code. Upgrade Notes ************* * Maintenace lock table was added to synchronize multiple threads. * Upgrade to use LBaaS v2 driver and migrate to use LBaaS v2 driver. Deprecation Notes ***************** * LBaaS v1 API driver for ODL is removed. * LBaaS v2 API driver Bug Fixes ********* * Includes the following bug fixes Bug 1608659 - pseudo_agentdb_binding AttributeError. Other Notes *********** * For details please read 'VLAN trunking networks for NFV <https://specs.openstack.org/openstack/neutron-specs/specs/kilo/nfv- vlan-trunks.html>'_. Changes in networking-odl 2.0.0..3.0.0 -------------------------------------- 1ddf9e2 update Boron release definitions since SR1 release da51856 devstack: create public network connectivity eb53b78 mech v2: bug/1546910 work around 4787bc1 Excluding Tempest from Rally job to avoid failure fd1f23f Updated from global requirements 2e633d3 Fix the implementation of ODLMemberManager in lbaas driver_v2 9194396 devstack: enable force config drive 9ca422f Fix set_ovs_hostconfigs exit issue 9d625aa Fix few typographical errors. 5020fc5 Add a reference to Neutron Devref and Apiref 1d398e5 Remove last vestiges of oslo-incubator f1d1eb5 Add grenade plugin 2066b64 secgroup: pushdown default secgroup rules to ODL b4427ed Fix up some documentation quirks 90401fc sort values for OVERRIDE_ENABLED_SERVICES 702ea75 Updated from global requirements c35b318 follow up for https://review.openstack.org/#/c/268820/ 767e23a Journal recovery for syncing with ODL ed6594a Add developer docs for ODL drivers 3969f03 Added maintenance devref 3ec40af tools: catch up neutron-lbaas change 101bcd9 releasenotes: deprecate lbaasv1 driver 43982cd releasenotes: vlan-transparency 320d67f Adding a line space for proper rendering of doc da87af6 Remove call to configure_neutron_odl in case of odl-compute and non-pseudo-agent port binding. 90dec81 Change import statement to not rename the module f90f5ee alembic: db migration fails 6f6428f OpenStack Networking-SFC driver for OpenDaylight 2951f5a Updated from global requirements 23de6fb Journal recovery release notes added a88853e Full sync release notes added 284d832 Maintenace thread release notes added 99d9c4e Modify the "create" and "update" method in lbaas driver_v2 d0843c9 Release notes for psuedo agent port binding c17d14e Add instructions to enable qos 19e270d Release notes for Host Config 32a2b6e Imported Translations from Zanata 10167f5 add test_migrations test 5b4319b tox: use ostestr 5b78b03 stop doing any magic cloning of neutron during CI bcc8f5b devstack: exclude tests that uses ssh dc85678 bug/1614766 work around 0fee200 Wrapper method for client#sendjson 4ca4296 Bug 1608659 - pseudo_agentdb_binding AttributeError 5d4b8a5 transparent_vlan support d36e0bf trivial fix 781cdc0 devstack: call odl-ovs-hostconfig conditionally 7035ed9 Remove dependency from neutron and move main() to the end. 005ff32 Improve README a5cd639 journal: filter.py: AttributeError: 'NoneType' 612266b Fix typo in DB migration script 2a9e319 journal: created_at of second is too coarse 3438033 Enable release notes translation 4888228 Updated from global requirements 3b92aad devstack: setup hostconfig on compute node 088e0c4 Cloud admin script auto-config hostconfig defaults f808127 Fix a typo in documentation b666462 Add E123,E125 check and Solve several problems 33d5444 Add Apache 2.0 license to source file db70637 Fix a typo in override-defaults fda3164 Updated from global requirements 3c4d625 remove add/remove router interface to ODL d480baf Updated from global requirements 7fd14d1 Include alembic migrations in module 416a5c7 security group rule: convert unknown protocol name cf0068c Update homepage with developer documentation page 392ca38 simplify odl release definition a674707 use v2 driver for v2 test 8b24c81 rest client: move parameter check to rest client 99756f3 update odl release definitions for Boron 0.5.0 9f91a0e Journal recovery for basic scenarios c8f747a unbreak test_l3_odl failure 69139fb sqlite: datetime should be second precision 2f87ffd test: journal/maintenance db clean up properly c287676 test_maintenance: cleanup looping call 74a8c3f populate json with both 'project_id', 'tenant_id' 0dc8397 models: use neutron_lib.db.model_base 42aaa8b more bug work around of Moxy bug of 475475 3765725 Sync Security Groups and SG Rules before other resources 1c70751 journal.record should use callers plugin context aad8b20 Revert "Temporary fix for gate" 7647d95 tests/unit: consolidate journal db setup logic 539274c Add qos extension to devstack override defaults 5e8ec3a Temporary fix for gate 0dc831e Treat ODL's 404 hostconfigs, as an empty list On pseudo agent db, when odl response with 404 not_found for hostconfigs, treat it as an empty list rather then an error. Issue a debug log in this flow 15806f5 ml2 v1 driver: work around full_sync 9c15508 Updated from global requirements 8a2f804 nuke lbaasv1 driver 411ccc6 devstack: make NEXUSPATH configurable 59e668a ODL QoS driver of v1 Type. c627647 Pass OptGroup variable for RequiredOptError 83f1b14 Remove reference to neutron.i18n 401a927 Fix the members name in OpenDaylightLbaasDriverV2 1e122ca Change the OpenDaylightManager url_path 3ff8809 wrap_db_retry: retry_on_request was deprecated df084e1 add the synchronization between neutron and ODL in driver_v1 18521cf use carbon snapshot as default odl-release 4a7f003 devstack: add carbon snapshot to odl-releases b519fa6 Enable DeprecationWarning in test environments aeea7ff test_pseudo_agentdb_binding.py: adopt neutron_lib e5fcabe journal: port::securitygroup needs only ids ff29bb6 db: add Mitaka tag for alembic migration revisions 4613fcc devstack: refactor ODL_L3 logic depending on used feature 7876f08 Revert "devstack: setup hostconfig in ovsdb" f92e215 Updated from global requirements 73122ca pseudo agent, devstack: hostconf_uri is set to '' 2cd9a1a Run set_ovs_hostconfigs as root with neutron-utils 2cd5575 devstack:ovsdbd doesn't understand localhost 5807e57 Add Python 3.5 classifier and venv cc2e5e9 pseudo agent fails to load with unit test f92c9a2 devstack: remove the definition of lithium snapshot 647be73 devstack: setup hostconfig in ovsdb 20f9d65 legacy_port_binding: teach VNIC type 848ec84 pep8, unittest: unbreak gate failure 9ba7a22 tox: add doc8 check c610d16 devstack: the definition of beryllium snapshot 0.4.4 4c64284 devstack: add definition of beryllium SR3 221dd51 devstack: add more gate jobs 3a8c40b settings.odl: eliminate 0.4.2-snapshot which was deleted 36a9987 Add releasenotes support with reno c8c22a1 various update for tox.ini 9e29720 devstack: configurable ODL repositories paths bd04835 devstack: add specific ODL snapshot functionality 6d5e43d devstack: allow to enable v2 driver 9c447be devstack: remove beryllium snapshot 0.4.2 2a5be4f devstack: load neutron-northbound-service first 3647f28 refactor odl-release definition de049fb Replace assertEqual(None, *) with assertIsNone in tests 5312d3e Remove discover from test-requirements a212821 Fix bug in call to get_network - missing network_id param b064cb7 devstack: remove optional bridge configuration 35a5d83 Fix the order of arguments in assertEqual faed158 Support for ovs-dpdk, vpp in port binding 868924a Updated from global requirements 1c4304d fix _enrich_port() to return the modified "data" 0076400 Add name property to ENUM type e614620 Fix devstack README indentation eebb124 Corrects pep8 failure in set_ovs_hostconfigs.py 3c29197 Add __ne__ built-in function dedafa6 Fix tox unit test issue 770a4e4 Switch-agnostic ODL port binding controller 329dff0 Add Spec for QoS driver 8380f40 Adding Host Config doc 7c64b27 devstack: support bridge configuration, for vpnservice-openstack 9f4a278 make dependency validator dynamically registerable c2450f4 create dir, doc/specs, for spec d8c6dd2 Updated from global requirements 5f756e9 Fix db error when running python34 Unit tests a40b9d9 adopt neutron_lib for constants and exceptions 9a1ac1e Remove unused Params 6b20850 Fixed test_mechanism_odl.py due to functions map deprecation in ML2 6e7249f Full Sync for L3 resources 19d8a78 Add a hook for test debug fccd53a more bug work around of Java MOXy bug of 475475 c1e69f1 Use already defined constants 3abe55a Revert "Workaround to fix gate py27 and py34 issue." 1d19555 Spec for journal recovery 18f98a9 Updated from global requirements 22751d3 drop unnecessary exec permission 46336ec Refactor SG callbacks 5475a0d beryllium SR2 definition e3f8769 Simplify filtering logic b1821fb ODL v2: Full sync resources f1d19b6 Complete port details by journal instead of mech driver e1d1fed [Trivial Fix] Correct log.debug() format fbff52b Add cleanup operation to maintenance thread 153bc13 Journal entries can get stuck forever causing busy wait b7f5d99 Add journal maintenance thread 4c52e58 Updated from global requirements Diffstat (except docs and test files) ------------------------------------- .gitignore | 3 + .pylintrc | 7 +- .testr.conf | 2 +- MANIFEST.in | 9 +- README.rst | 35 +- TESTING.rst | 13 + devstack/README.rst | 60 ++- devstack/devstackgaterc | 21 +- devstack/entry_points | 86 +++- devstack/functions | 46 +-- devstack/odl-releases/beryllium-0.4.0 | 10 +- devstack/odl-releases/beryllium-0.4.1-SR1 | 10 +- devstack/odl-releases/beryllium-0.4.2-SR2 | 1 + devstack/odl-releases/beryllium-0.4.3-SR3 | 1 + devstack/odl-releases/beryllium-snapshot-0.4.2 | 9 - devstack/odl-releases/beryllium-snapshot-0.4.4 | 2 + devstack/odl-releases/boron-0.5.0 | 1 + devstack/odl-releases/boron-0.5.1-SR1 | 1 + devstack/odl-releases/boron-snapshot-0.5.0 | 9 - devstack/odl-releases/boron-snapshot-0.5.2 | 2 + devstack/odl-releases/carbon-snapshot-0.6.0 | 2 + devstack/odl-releases/common | 18 + devstack/odl-releases/helium-0.2.3-SR3 | 7 +- devstack/odl-releases/lithium-0.3.1-SR1 | 7 +- devstack/odl-releases/lithium-0.3.2-SR2 | 7 +- devstack/odl-releases/lithium-0.3.3-SR3 | 7 +- devstack/odl-releases/lithium-0.3.4-SR4 | 7 +- devstack/odl-releases/lithium-snapshot-0.3.5 | 9 - devstack/override-defaults | 18 +- devstack/plugin.sh | 14 +- devstack/post_test_hook.sh | 4 + devstack/pre_test_hook.sh | 55 ++- devstack/settings.odl | 37 +- devstack/upgrade/resources.sh | 0 devstack/upgrade/settings | 16 + devstack/upgrade/upgrade.sh | 0 etc/neutron/plugins/ml2/ml2_conf_odl.ini | 19 + networking_odl/cmd/__init__.py | 0 networking_odl/cmd/set_ovs_hostconfigs.py | 458 +++++++++++++++++++++ networking_odl/cmd/test_setup_hostconfigs.sh | 3 + networking_odl/common/cache.py | 3 + networking_odl/common/callback.py | 123 +++--- networking_odl/common/client.py | 73 +++- networking_odl/common/config.py | 24 +- networking_odl/common/constants.py | 23 +- networking_odl/common/exceptions.py | 2 +- networking_odl/common/filters.py | 289 +++++++------ networking_odl/common/lightweight_testing.py | 5 +- networking_odl/db/db.py | 122 ++++-- networking_odl/db/head.py | 24 ++ .../alembic_migrations/versions/CONTRACT_HEAD | 2 +- .../alembic_migrations/versions/EXPAND_HEAD | 2 +- .../contract/383acb0d38a0_initial_contract.py | 4 + ...87ae5_opendaylight_neutron_mechanism_driver_.py | 10 +- .../fa0c536252a5_update_opendayligut_journal.py | 45 ++ .../3d560427d776_add_sequence_number_to_journal.py | 49 +++ .../703dbf02afde_add_journal_maintenance_table.py | 52 +++ networking_odl/db/models.py | 25 +- networking_odl/journal/cleanup.py | 46 +++ networking_odl/journal/dependency_validations.py | 61 ++- networking_odl/journal/full_sync.py | 94 +++++ networking_odl/journal/journal.py | 76 ++-- networking_odl/journal/maintenance.py | 83 ++++ networking_odl/journal/recovery.py | 102 +++++ networking_odl/l3/l3_odl.py | 57 +-- networking_odl/l3/l3_odl_v2.py | 40 +- networking_odl/lbaas/driver_v1.py | 93 ----- networking_odl/lbaas/driver_v2.py | 62 ++- networking_odl/ml2/legacy_port_binding.py | 9 +- networking_odl/ml2/mech_driver.py | 190 ++++++--- networking_odl/ml2/mech_driver_v2.py | 253 ++++++++---- networking_odl/ml2/network_topology.py | 14 +- networking_odl/ml2/ovsdb_topology.py | 6 +- networking_odl/ml2/port_binding.py | 3 +- networking_odl/ml2/pseudo_agentdb_binding.py | 276 +++++++++++++ networking_odl/qos/__init__.py | 0 networking_odl/qos/qos_driver.py | 121 ++++++ networking_odl/sfc/__init__.py | 0 networking_odl/sfc/flowclassifier/__init__.py | 0 .../sfc/flowclassifier/sfc_flowclassifier_v1.py | 66 +++ networking_odl/sfc/sfc_driver_v1.py | 101 +++++ .../unit/journal/test_dependency_validations.py | 44 ++ .../flowclassifier/test_sfc_flowclassifier_v1.py | 57 +++ rally-jobs/plugins/README.rst | 2 +- releasenotes/notes/.placeholder | 0 .../notes/add-host-config-8fb45d7f9732a795.yaml | 11 + releasenotes/notes/full-sync-f6b7ec1bd9ea0e52.yaml | 15 + .../notes/journal-recovery-88e583ad2db22bcc.yaml | 10 + .../notes/maintenance-thread-e54c3b4bd7c03546.yaml | 20 + .../nuke-lbaasv1-driver-fce366522350fe21.yaml | 9 + ...pseudo-agent-port-binding-0a3d1d193b99293e.yaml | 16 + .../notes/qos-driver-v1-711698186ca693c4.yaml | 9 + .../notes/sfc-driver-v1-d11fd5fd17114f2c.yaml | 10 + .../notes/vlan-transparency-63c153d310eacc5d.yaml | 21 + releasenotes/source/_static/.placeholder | 0 releasenotes/source/_templates/.placeholder | 0 releasenotes/source/conf.py | 267 ++++++++++++ releasenotes/source/index.rst | 14 + .../source/locale/fr/LC_MESSAGES/releasenotes.po | 26 ++ releasenotes/source/unreleased.rst | 5 + requirements.txt | 6 +- setup.cfg | 24 +- test-requirements.txt | 13 +- tools/i18n_cfg.py | 12 + tools/ostestr_compat_shim.sh | 8 + tools/tox_install.sh | 21 + tools/tox_install_project.sh | 73 ++++ tox.ini | 49 ++- 159 files changed, 6800 insertions(+), 1479 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 7034336..ff54ed4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,3 +6,3 @@ pbr>=1.6 # Apache-2.0 -Babel!=2.3.0,!=2.3.1,!=2.3.2,!=2.3.3,>=1.3 # BSD -stevedore>=1.5.0 # Apache-2.0 -neutron-lib>=0.1.0 # Apache-2.0 +Babel>=2.3.4 # BSD +stevedore>=1.17.1 # Apache-2.0 +neutron-lib>=1.0.0 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index e13bb5e..d1b3e9c 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -7,2 +7,2 @@ hacking<0.11,>=0.10.0 -coverage>=3.6 # Apache-2.0 -discover # BSD +coverage>=4.0 # Apache-2.0 +doc8 # Apache-2.0 @@ -10,2 +10,2 @@ python-subunit>=0.0.18 # Apache-2.0/BSD -sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2 # BSD -oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0 +sphinx!=1.3b1,<1.4,>=1.2.1 # BSD +oslosphinx>=4.7.0 # Apache-2.0 @@ -12,0 +13 @@ oslotest>=1.10.0 # Apache-2.0 +os-testr>=0.8.0 # Apache-2.0 @@ -13,0 +15 @@ testrepository>=0.0.18 # Apache-2.0/BSD +testresources>=0.2.4 # Apache-2.0/BSD @@ -16,0 +19,3 @@ testtools>=1.4.0 # MIT + +# releasenotes +reno>=1.8.0 # Apache-2.0