We are chuffed to announce the release of: octavia 5.0.3: OpenStack Octavia Scalable Load Balancer as a Service This release is part of the train stable release series. The source is available from: https://opendev.org/openstack/octavia Download the package from: https://pypi.org/project/octavia Please report issues through: https://storyboard.openstack.org/#!/project/908 For more details, please see below. 5.0.3 ^^^^^ Upgrade Notes ************* * The failover improvements do not require an updated amphora image, but updating existing amphora will minimize the failover outage time for standalone amphora on subsequent failovers. Bug Fixes ********* * Fixed an issue where setting of SNI containers were not being applied on listener update API calls. * Fixed an Octavia API validation on listener update where SNI containers could be set on non-TERMINATED_HTTPS listeners. * Fixed an issue where some columns could not be used for sort keys in API list calls. * Fix an issue when the barbican service enable TLS, we create the listerner failed. * Fixed an issue where amphora load balancers fail to create when Nova anti-affinity is enabled and topology is SINGLE. * Fixed an issue where listener "insert_headers" parameter was accepted for protocols that do not support header insertion. * Fixed code that configured the CentOS/Red Hat amphora images to use the correct names for the network 'ifcfg' files for static routes and routing rules. It was using the wrong name for the routes file, and did not support IPv6 in either file. For more information, see https://storyboard.openstack.org/#!/story/2007051 * Significantly improved the reliability and performance of amphora and load balancer failovers. This is especially true when the Nova service is experiencing failures. Changes in octavia 5.0.2..5.0.3 ------------------------------- 8c32d2e6 Fix API sort key for complex columns 0117d215 Fix accepting 'insert_headers' when unsupported 60ddeb65 Pin pylint for stable branches 40777222 Increase the devstack secuirty group rules quota 5dc98989 Fix haproxy user flow log format substitution b3113b33 Fix missing dependency in amphora create flow d9981d17 Prioritize policy validation b9dd0945 Fix listener update with SNI certificates d6a7eebb Remove install DIB from Git option dc47caa1 Fix missing params in amphora base and noop driver d285f517 Add missing reload method in amphora noop driver 8eaa660c Refactor the failover flows dad1357e Use retry for AmphoraComputeConnectivityWait 5954fe67 add the verify for the session c760678c Fix the interface filenames for Red Hat amphora images Diffstat (except docs and test files) ------------------------------------- devstack/plugin.sh | 12 +- etc/octavia.conf | 37 + lower-constraints.txt | 3 +- .../backends/agent/api_server/amphora_info.py | 75 +- .../backends/agent/api_server/keepalived.py | 4 + .../backends/agent/api_server/keepalivedlvs.py | 6 +- .../backends/agent/api_server/loadbalancer.py | 35 +- .../amphorae/backends/agent/api_server/osutils.py | 52 +- octavia/amphorae/backends/agent/api_server/util.py | 78 ++- .../amphorae/backends/utils/ip_advertisement.py | 183 +++++ .../amphorae/backends/utils/network_namespace.py | 50 ++ octavia/amphorae/backends/utils/network_utils.py | 86 +++ octavia/amphorae/driver_exceptions/exceptions.py | 6 + octavia/amphorae/drivers/driver_base.py | 71 +- octavia/amphorae/drivers/haproxy/exceptions.py | 7 +- .../amphorae/drivers/haproxy/rest_api_driver.py | 89 ++- .../drivers/keepalived/vrrp_rest_driver.py | 67 +- octavia/amphorae/drivers/noop_driver/driver.py | 49 +- octavia/api/common/pagination.py | 15 +- octavia/api/common/types.py | 8 + octavia/api/drivers/amphora_driver/v1/driver.py | 7 +- octavia/api/drivers/utils.py | 35 +- octavia/api/v2/controllers/health_monitor.py | 16 +- octavia/api/v2/controllers/l7policy.py | 28 +- octavia/api/v2/controllers/l7rule.py | 31 +- octavia/api/v2/controllers/listener.py | 11 +- octavia/api/v2/controllers/load_balancer.py | 57 +- octavia/api/v2/controllers/member.py | 14 +- octavia/api/v2/controllers/pool.py | 33 +- octavia/api/v2/types/listener.py | 1 + octavia/certificates/common/auth/barbican_acl.py | 4 +- octavia/common/config.py | 49 +- octavia/common/constants.py | 67 +- octavia/common/data_models.py | 8 + octavia/common/exceptions.py | 20 +- .../jinja/haproxy/combined_listeners/jinja_cfg.py | 4 +- .../jinja/haproxy/split_listeners/jinja_cfg.py | 4 +- octavia/common/utils.py | 23 + octavia/compute/drivers/noop_driver/driver.py | 8 +- octavia/compute/drivers/nova_driver.py | 40 +- octavia/controller/queue/v2/endpoints.py | 8 +- octavia/controller/worker/v1/controller_worker.py | 428 +++++++----- .../controller/worker/v1/flows/amphora_flows.py | 760 ++++++++++++--------- .../worker/v1/flows/load_balancer_flows.py | 450 ++++++++++-- .../worker/v1/tasks/amphora_driver_tasks.py | 212 ++++-- .../controller/worker/v1/tasks/compute_tasks.py | 82 ++- .../controller/worker/v1/tasks/database_tasks.py | 51 +- .../controller/worker/v1/tasks/network_tasks.py | 224 ++++-- octavia/controller/worker/v1/tasks/retry_tasks.py | 74 ++ .../controller/worker/v2/flows/amphora_flows.py | 20 +- .../worker/v2/tasks/amphora_driver_tasks.py | 30 +- octavia/db/models.py | 4 +- octavia/db/repositories.py | 15 +- octavia/network/base.py | 52 ++ octavia/network/data_models.py | 16 +- .../drivers/neutron/allowed_address_pairs.py | 281 ++++++-- octavia/network/drivers/neutron/base.py | 17 +- octavia/network/drivers/neutron/utils.py | 45 +- octavia/network/drivers/noop_driver/driver.py | 69 ++ octavia/opts.py | 1 + .../backend/agent/api_server/test_keepalivedlvs.py | 12 +- .../backend/agent/api_server/test_server.py | 22 +- .../backends/agent/api_server/test_loadbalancer.py | 48 +- .../backends/agent/api_server/test_osutils.py | 180 ++++- .../backends/agent/api_server/test_util.py | 128 ++++ .../backends/utils/test_ip_advertisement.py | 213 ++++++ .../backends/utils/test_network_namespace.py | 117 ++++ .../amphorae/backends/utils/test_network_utils.py | 140 ++++ .../amphorae/drivers/haproxy/test_exceptions.py | 52 ++ .../drivers/haproxy/test_rest_api_driver_0_5.py | 34 +- .../drivers/haproxy/test_rest_api_driver_1_0.py | 34 +- .../drivers/haproxy/test_rest_api_driver_common.py | 83 +++ .../drivers/keepalived/test_vrrp_rest_driver.py | 33 +- .../test_noop_amphoraloadbalancer_driver.py | 19 +- .../unit/controller/queue/v2/test_endpoints.py | 8 +- .../worker/v1/flows/test_amphora_flows.py | 223 ++++-- .../worker/v1/flows/test_load_balancer_flows.py | 234 ++++++- .../worker/v1/tasks/test_amphora_driver_tasks.py | 255 +++++-- .../worker/v1/tasks/test_compute_tasks.py | 70 +- .../worker/v1/tasks/test_database_tasks.py | 34 +- .../worker/v1/tasks/test_network_tasks.py | 415 ++++++++++- .../controller/worker/v1/tasks/test_retry_tasks.py | 47 ++ .../controller/worker/v1/test_controller_worker.py | 729 ++++++++++++++++---- .../worker/v2/tasks/test_amphora_driver_tasks.py | 11 +- .../drivers/neutron/test_allowed_address_pairs.py | 439 +++++++++++- .../unit/network/drivers/neutron/test_utils.py | 1 + .../network/drivers/test_network_noop_driver.py | 56 ++ ...ner-update-sni-containers-6595c52e2de1f621.yaml | 8 + .../notes/fix-api-sort-key-337f342d5cdce432.yaml | 5 + ...ix-barbican-client-verfiy-689be1b9389bd1d8.yaml | 5 + ...amphora-create-dependency-a954ded0d260d462.yaml | 5 + ...header-insertion-mismatch-e3aeb5f5fee0348b.yaml | 5 + ...ra-images-interface-files-5ba1be40c65940d9.yaml | 8 + .../refactor_failover_flow-9efcd854240f71ad.yaml | 11 + requirements.txt | 3 +- test-requirements.txt | 2 +- tools/create_flow_docs.py | 14 +- tools/flow-list.txt | 3 +- zuul.d/jobs.yaml | 1 - 110 files changed, 6988 insertions(+), 1517 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index c0f90407..6f803550 100644 --- a/requirements.txt +++ b/requirements.txt @@ -42 +42,2 @@ taskflow>=2.16.0 # Apache-2.0 -diskimage-builder!=1.6.0,!=1.7.0,!=1.7.1,>=1.1.2 # Apache-2.0 +diskimage-builder>=1.1.2,!=1.6.0,!=1.7.0,!=1.7.1,<3.0.0;python_version=='2.7' # Apache-2.0 +diskimage-builder>=1.26.0;python_version>='3.0' # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index 18e1edeb..de3ebd66 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -13 +13 @@ pylint==1.9.2;python_version<'3.0' # GPLv2 -pylint>=1.9.2;python_version>='3.0' # GPLv2 +pylint>=1.9.2,<=2.5.3;python_version>='3.0' # GPLv2