We are gleeful to announce the release of: octavia 5.0.0: OpenStack Octavia Scalable Load Balancer as a Service This release is part of the train 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.0 ^^^^^ Security Issues * Correctly require two-way certificate authentication to connect to the amphora agent API (CVE-2019-17134). Changes in octavia 4.0.0.0rc1..5.0.0 ------------------------------------ 6f54167b Fix urgent amphora two-way auth security bug de492103 Fix healthmonitor message v2 for UDP listeners 39b8f821 Update TOX/UPPER_CONSTRAINTS_FILE for stable/train 6e0fd89e Update .gitreview for stable/train d7f0c819 Validate supported LB algorithm in Amphora provider drivers d5ffd2ca Fix new pep8/pylint errors a0f4335c Improve the error message for bad pkcs12 bundles cf901539 loadbalancer vip-network-id IP availability check 97058e92 Generate PDF documentation fbe32839 Fix the diskimage-create tox "build" environment a7766733 Validate server_certs_key_passphrase is 32 chars b9d357ac Fix 'additive_only' parameter api-ref 5defc1e8 Fix the amphora no-op driver 926179c9 Fix openstack port show content handling 8685bba5 Fix the tips job for octavia-lib 2eac7a78 Add new algorithm SOURCE_IP_PORT f3b48bc2 Add VIP access control list 05f52570 Fix a few nits from the main volume-based patch 78b12632 Add long-running provider agent support a4da3ef2 Fix cleanup of expired load balancer entries 42df031e Fix building configs for multiple listeners 4b907b06 Add `additive_only` parameter to Batch Member call 93b509cf Support create amphora instance from volume based. 8577b3af Move to using octavia-lib constants 09efc2a4 Add get method support to the driver-agent f20dc158 Fix base (VRRP) port abandoned on revert 950faea6 Use dual intermediate CAs for devstack 90549916 Fix template that generates vrrp check script c4c7387f worker: Re-add FailoverPreparationForAmphora 3b5a19c3 Standardizes terminology in Listener documentation 0978c776 Switch TaskFlow engine to parallel 37b50c1f Set Libvirt hw_rng for devstack 0720397d Work around strptime threading issue 6af536ec Fix provider driver utils 36afa82d Fix L7 repository create methods 2529fa33 Lookup interfaces by MAC directly b42a64a0 Allow listeners for different protocols on the same port 1a26ba4a Use the infra pypi mirror for DIB a04e3e37 Remove amphora-agent build deps afa917a3 Change amphora logging to dedicated socket 5e9d72b9 Fixed typos and bad markup style in maintenance guide 2ad55b14 Add unit test for failover of spare amphorae 51824181 Re-enable the py36 tox environment 4544078a Clarify that an example is not an actual list 262a89c7 Add missing lib dependencies to requirements.txt 50c168e8 Fix wrong package names or versions for centos-minimal images 6e57e6fd Install missing packages in nodepool instance b1a4758f Fix listener deletion in ACTIVE/STANDBY topology 58961705 Add Octavia tox "tips" jobs f8d4f8ae Add the DIB_REPO* variables to the README.rst b32064cd Fix a unit test for new octavia-lib ec83c693 Add support for oslo_middleware http_proxy_to_wsgi 2504c109 Force DIB Python version for py2 in diskimage-create 0a9f5870 Fixed down server issue after reloading keepalived 4decb6d5 Fixed pool and members status with UDP loadbalancers 65e132a7 Add support for monitor_{address,port} in UDP members ab8a2636 Fix flavor profile API handling of None updates e4e7b4a8 Fix l7rule API handling of None updates 52485738 Correcting typo in healthmonitors-list-response.json - http_vesion to http_version. 93e06a92 Add failover logging to show the amphora details. 262ffaa9 Build amphora image using centos-minimal element bd80cef6 Remove octavia-v2-dsvm-scenario-ubuntu-bionic job 24fc7d61 Make Ubuntu bionic the default for amphora images 06ce4777 Fix multi-listener load balancers a84352af Add missing test requirement "fixtures" 45cf2f32 Add project_id to all of the provider objects bc19e079 Update api-ref location 6b056dac Bump the openstackdocstheme extension to 1.20 2bb2f918 Fix cryptsetup --pbkdf-memory failures b12e5bb2 Add cloud-init-datasources DIB element a70db6bf Blacklist sphinx 2.1.0 (autodoc bug) 5114a9a4 elements: add arch property for ``open-vm-tools`` 2b598570 Add active-standby scenario jobs to check queue 48371c98 Add warning log if auth_strategy is not keystone 6c075686 Fix dhclient enter hook path on RHEL-based amps e3aacb67 Switch the default Ubuntu kernel to -virtual 56bb1e13 Prevent UDP LBs to use different IP protocol versions in amphora driver f8a2560e Add Python 3 Train unit tests de30dbb6 Update tox.ini for new upper constraints strategy feaa1ce0 only rollback DB when we have a connection to the DB cd50ae5c Specify the linux-image-kvm kernel for ubuntu 09733a0c Add bindep.txt for Octavia a144e512 Switch python3 versions of test jobs to match Train PTI 624a63dc Workaround pyroute2 platform-dependent imports f1542afb Add a note about nova hardware architectures dc459e22 Fix a python3 issue in the amphora-agent 83af850e Fix TCP listener logging bug 0eaab450 Fix allocate_and_associate DB deadlock 686303e7 Amphora logging 80ddbaee Align logging in the amphora 88217373 Add RHEL 8 amphora support 4007d56b Limit cryptsetup key RAM usage 0ab16921 Create Amphora V2 provider driver 6d2e2be8 Remove references to OpenStack Anchor d3c3f148 Clarify that the certificate guide should be used a95f7481 Fix health monitor API handling of None updates fc9163fc Fix member API handling of None/null updates 3ee0f521 Rename review.openstack.org to review.opendev.org e2defa6d Fix catching driver exceptions ee0b566d Document health monitor UDP-CONNECT type 135d999f Fix tox for functional py36 and py37 1d76a3e2 Correct OVN driver feature matrix 89f7d349 Delete unused files in tests/contrib 9ecc7abf Enable fail-fast on the gate queue 7971b8ab db: add missing primary key in spares_pool table 88c4b9bb Remove tempest.test_plugins from setup.cfg e5d8a1a3 Add provider feature support matrix f9455cd9 Remove tests/tempest path from devstack and tox db212fc3 Fix pool API handling of None/null updates ff50886d Update hacking version to latest 5b831f2a Force amp-agent communication to TLSv1.2 c4faac25 Add Python 3.7 support 2c99d010 Cap to sphinx 2.0.0 on Python 2.7 1910f024 Replace git.openstack.org URLs with opendev.org URLs 29d4340e Remove v1 API and associated code 24e77d60 Performance improvement for non-udp health checks 1a87298a Bandit test exclusions syntax change 3fc6b93d Ignore .vscode directory 0000412c Make sure amphora logging works the same on py2 and py3 28f4f9e4 Fix missing INCLUDEPKGS var in haproxy element 57d653cc Make amphora cert validity time configurable b9e8f7e2 Update some octavia documentation b1f3d949 Removing an erroneous comment 5f16d221 Update operator maintenance doc 930a3236 Fix listener API handling of None/null updates f0776e0c Remove python3.5 jobs for Train 01269183 OpenDev Migration Patch 4c9097c6 Adding changes to support ppc64le amphora builds with CentOS a509710a Fix spare amphora failover c987140f Update documentation about rotating amphorae 7d1bdc31 Fix missing REDIRECT_PREFIX in the api-ref b274355e Constraint networkx to <2.3 for Python 2 41ff4313 Fix the amphora base port coming up 951afb9a Fix IPv6 in Active/Standby topology on CentOS 0b468090 Fix spare amphora check and creation 5fb79c94 Fix invalid query selector with list_ports e0c45ce4 Fix setting of VIP QoS policy 95a872fc Fix VIP plugging on CentOS-based amphorae 31741aa4 Add support to the Python Visual Studio Debugger 23a41141 Fix ifup failures on member interfaces with IPv6 962f5f26 Adds server_certs_key_passphrase to octavia.conf b0bc17a2 Replace openstack.org git:// URLs with https:// 811ec10f Make sure the expected codes list is sorted 7736eead Update master for stable/stein dc5a708d Fix initialization of Barbican client 6c0af86e Add error-handling for permission of /etc/octavia d1518c5c Fix diskimage-create tox, add ``build`` and ``test`` targets 5fb46835 Install DIB binary dependencies from bindep.txt Diffstat (except docs and test files) ------------------------------------- .gitignore | 1 + .gitreview | 3 +- .pylintrc | 4 +- README.rst | 2 +- api-ref/source/conf.py | 15 - api-ref/source/examples/versions-get-resp.json | 8 - api-ref/source/index.rst | 5 - api-ref/source/parameters.yaml | 56 +- api-ref/source/v1/octaviaapi.rst | 2280 ---------------- .../v2/examples/healthmonitors-list-response.json | 2 +- api-ref/source/v2/examples/listener-create-curl | 2 +- .../v2/examples/listener-create-request.json | 6 +- .../v2/examples/listener-create-response.json | 6 +- .../source/v2/examples/listener-show-response.json | 6 +- api-ref/source/v2/examples/listener-update-curl | 2 +- .../v2/examples/listener-update-request.json | 6 +- .../v2/examples/listener-update-response.json | 6 +- .../v2/examples/listeners-list-response.json | 6 +- api-ref/source/v2/listener.inc | 6 + api-ref/source/v2/member.inc | 8 + api-ref/source/v2/pool.inc | 7 +- bin/create_certificates.sh | 84 - bin/create_dual_intermediate_CA.sh | 161 ++ bin/create_single_CA_intermediate_CA.sh | 116 + bin/openssl.cnf | 144 ++ bindep.txt | 27 + devstack/README.md | 2 +- devstack/contrib/new-octavia-devstack.sh | 6 +- .../etc/rsyslog/10-octavia-log-offloading.conf | 11 + devstack/files/debs/octavia | 1 + devstack/files/rpms-suse/octavia | 1 + devstack/files/rpms/octavia | 1 + devstack/plugin.sh | 122 +- devstack/pregenerated/certs/client.key | 28 - .../certs/{ca_01.pem => client_ca.cert.pem} | 0 devstack/pregenerated/certs/private/cakey.pem | 30 - .../client.cert-and-key.pem} | 0 .../pregenerated/certs/private/server_ca.key.pem | 30 + .../pregenerated/certs/server_ca-chain.cert.pem | 22 + devstack/pregenerated/certs/server_ca.cert.pem | 22 + devstack/samples/multinode/Vagrantfile | 4 +- devstack/samples/multinode/local-2.conf | 4 +- devstack/samples/multinode/local.conf | 8 +- devstack/samples/singlenode/Vagrantfile | 2 +- devstack/samples/singlenode/local.conf | 8 +- devstack/settings | 11 +- devstack/upgrade/settings | 4 +- diskimage-create/README.rst | 73 +- diskimage-create/diskimage-create.sh | 87 +- diskimage-create/tox.ini | 21 +- .../feature-matrix-healthmonitor.ini | 168 ++ .../feature-matrix-l7policy.ini | 127 + .../feature-matrix-l7rule.ini | 167 ++ .../feature-classification/feature-matrix-lb.ini | 114 + .../feature-matrix-listener.ini | 279 ++ .../feature-matrix-member.ini | 111 + .../feature-classification/feature-matrix-pool.ini | 203 ++ elements/amphora-agent/element-deps | 1 + elements/amphora-agent/package-installs.yaml | 2 + elements/amphora-agent/pkg-map | 19 +- .../post-install.d/10-enable-network-scripts | 12 + .../post-install.d/90-remove-build-deps | 27 + .../amphora-agent/source-repository-amphora-agent | 4 +- .../static/etc/rsyslog.d/55-octavia-socket.conf | 4 + elements/certs-ramfs/element-deps | 1 + .../init-scripts/systemd/certs-ramfs.service | 2 +- elements/certs-ramfs/init-scripts/sysv/certs-ramfs | 9 +- .../init-scripts/upstart/certs-ramfs.conf | 9 +- .../certs-ramfs/static/usr/local/bin/certfs-ramfs | 19 + elements/haproxy-octavia/pkg-map | 8 +- .../haproxy-octavia/pre-install.d/01-backports | 24 +- .../finalise.d/99-disable-resolv-conf | 4 +- etc/octavia.conf | 159 +- lower-constraints.txt | 10 +- octavia/amphorae/backends/agent/agent_jinja_cfg.py | 6 +- .../amphorae/backends/agent/api_server/__init__.py | 2 +- .../backends/agent/api_server/amphora_info.py | 14 +- .../agent/api_server/haproxy_compatibility.py | 2 +- .../backends/agent/api_server/keepalived.py | 10 +- .../backends/agent/api_server/keepalivedlvs.py | 57 +- .../api_server/{listener.py => loadbalancer.py} | 251 +- .../amphorae/backends/agent/api_server/osutils.py | 22 +- octavia/amphorae/backends/agent/api_server/plug.py | 26 +- .../amphorae/backends/agent/api_server/server.py | 74 +- .../api_server/templates/keepalived.systemd.j2 | 4 +- .../api_server/templates/keepalived.sysvinit.j2 | 4 +- .../api_server/templates/keepalived.upstart.j2 | 4 +- .../templates/keepalived_check_script.conf.j2 | 2 +- .../api_server/templates/rh_plug_vip_ethX.conf.j2 | 2 + .../backends/agent/api_server/udp_listener_base.py | 17 - octavia/amphorae/backends/agent/api_server/util.py | 127 +- .../agent/templates/amphora_agent_conf.template | 5 + .../backends/health_daemon/health_daemon.py | 101 +- .../backends/health_daemon/health_sender.py | 2 +- octavia/amphorae/backends/utils/haproxy_query.py | 6 +- .../amphorae/backends/utils/keepalivedlvs_query.py | 56 +- octavia/amphorae/drivers/driver_base.py | 95 +- .../amphorae/drivers/haproxy/rest_api_driver.py | 587 +++-- .../amphorae/drivers/keepalived/jinja/jinja_cfg.py | 2 +- .../drivers/keepalived/vrrp_rest_driver.py | 15 +- octavia/amphorae/drivers/noop_driver/driver.py | 82 +- octavia/api/app.py | 3 + octavia/api/common/pagination.py | 4 +- octavia/api/common/types.py | 19 +- .../amphora_driver/v1}/__init__.py | 0 .../api/drivers/amphora_driver/{ => v1}/driver.py | 43 +- .../amphora_driver/v2}/__init__.py | 0 octavia/api/drivers/amphora_driver/v2/driver.py | 385 +++ octavia/api/drivers/driver_agent/driver_get.py | 82 + .../api/drivers/driver_agent/driver_listener.py | 49 +- octavia/api/drivers/noop_driver/agent.py | 26 + octavia/api/drivers/utils.py | 95 +- octavia/api/handlers/abstract_handler.py | 67 - .../api/handlers/controller_simulator/handler.py | 478 ---- octavia/api/handlers/queue/producer.py | 241 -- octavia/api/root_controller.py | 90 +- octavia/api/v1/controllers/__init__.py | 36 - octavia/api/v1/controllers/base.py | 141 - octavia/api/v1/controllers/health_monitor.py | 200 -- octavia/api/v1/controllers/l7policy.py | 187 -- octavia/api/v1/controllers/l7rule.py | 170 -- octavia/api/v1/controllers/listener.py | 282 -- octavia/api/v1/controllers/listener_statistics.py | 42 - octavia/api/v1/controllers/load_balancer.py | 306 --- .../api/v1/controllers/load_balancer_statistics.py | 40 - octavia/api/v1/controllers/member.py | 196 -- octavia/api/v1/controllers/pool.py | 258 -- octavia/api/v1/controllers/quotas.py | 101 - octavia/api/v1/types/health_monitor.py | 66 - octavia/api/v1/types/l7policy.py | 87 - octavia/api/v1/types/l7rule.py | 57 - octavia/api/v1/types/listener.py | 112 - octavia/api/v1/types/load_balancer.py | 78 - octavia/api/v1/types/load_balancer_statistics.py | 50 - octavia/api/v1/types/member.py | 60 - octavia/api/v1/types/pool.py | 114 - octavia/api/v1/types/quotas.py | 73 - octavia/api/v2/controllers/base.py | 2 + octavia/api/v2/controllers/flavor_profiles.py | 30 +- octavia/api/v2/controllers/flavors.py | 4 +- octavia/api/v2/controllers/health_monitor.py | 43 +- octavia/api/v2/controllers/l7rule.py | 5 + octavia/api/v2/controllers/listener.py | 110 +- octavia/api/v2/controllers/load_balancer.py | 51 +- octavia/api/v2/controllers/member.py | 64 +- octavia/api/v2/controllers/pool.py | 16 +- octavia/api/v2/types/health_monitor.py | 6 +- octavia/api/v2/types/listener.py | 12 +- octavia/api/v2/types/member.py | 6 +- octavia/certificates/common/auth/barbican_acl.py | 5 +- octavia/certificates/common/barbican.py | 3 +- octavia/certificates/common/cert.py | 4 - octavia/certificates/common/local.py | 12 +- octavia/certificates/common/pkcs12.py | 6 +- octavia/certificates/generator/anchor.py | 66 - octavia/certificates/generator/cert_gen.py | 2 - octavia/certificates/manager/barbican.py | 2 + octavia/certificates/manager/local.py | 15 +- octavia/cmd/agent.py | 16 +- octavia/cmd/api.py | 6 + octavia/cmd/driver_agent.py | 98 +- octavia/cmd/health_manager.py | 4 + octavia/cmd/octavia_worker.py | 11 +- octavia/common/base_taskflow.py | 3 + octavia/common/clients.py | 42 + octavia/common/config.py | 221 +- octavia/common/constants.py | 143 +- octavia/common/data_models.py | 81 +- octavia/common/exceptions.py | 18 +- .../jinja/haproxy/combined_listeners/__init__.py | 0 .../jinja/haproxy/combined_listeners/jinja_cfg.py | 499 ++++ .../haproxy/combined_listeners/templates/base.j2 | 52 + .../combined_listeners/templates/haproxy.cfg.j2 | 40 + .../haproxy/combined_listeners/templates/macros.j2 | 370 +++ .../jinja/haproxy/split_listeners/__init__.py | 0 .../haproxy/{ => split_listeners}/jinja_cfg.py | 34 +- .../{ => split_listeners}/templates/base.j2 | 4 +- .../{ => split_listeners}/templates/haproxy.cfg.j2 | 0 .../{ => split_listeners}/templates/macros.j2 | 9 +- octavia/common/jinja/logging/__init__.py | 0 octavia/common/jinja/logging/logging_jinja_cfg.py | 66 + .../logging/templates/10-rsyslog.conf.template | 27 + octavia/common/jinja/lvs/jinja_cfg.py | 4 +- octavia/common/jinja/lvs/templates/macros.j2 | 10 +- octavia/common/tls_utils/cert_parser.py | 46 +- octavia/common/utils.py | 13 + octavia/common/validate.py | 9 + octavia/compute/compute_base.py | 9 - octavia/compute/drivers/nova_driver.py | 53 +- .../healthmanager/health_drivers/update_db.py | 297 ++- octavia/controller/healthmanager/health_manager.py | 6 +- .../controller/healthmanager/update_serializer.py | 47 - octavia/controller/housekeeping/house_keeping.py | 2 +- octavia/controller/queue/event_queue.py | 76 - .../queue => controller/queue/v1}/__init__.py | 0 octavia/controller/queue/{ => v1}/consumer.py | 4 +- .../queue/{endpoint.py => v1/endpoints.py} | 2 +- .../{api/v1 => controller/queue/v2}/__init__.py | 0 octavia/controller/queue/v2/consumer.py | 65 + octavia/controller/queue/v2/endpoints.py | 156 ++ .../v1/types => controller/worker/v1}/__init__.py | 0 .../worker/{ => v1}/controller_worker.py | 47 +- .../controller/worker/{ => v1}/flows/__init__.py | 0 .../worker/{ => v1}/flows/amphora_flows.py | 21 +- .../worker/{ => v1}/flows/health_monitor_flows.py | 14 +- .../worker/{ => v1}/flows/l7policy_flows.py | 14 +- .../worker/{ => v1}/flows/l7rule_flows.py | 14 +- .../worker/{ => v1}/flows/listener_flows.py | 18 +- .../worker/{ => v1}/flows/load_balancer_flows.py | 20 +- .../worker/{ => v1}/flows/member_flows.py | 18 +- .../controller/worker/{ => v1}/flows/pool_flows.py | 14 +- .../controller/worker/{ => v1}/tasks/__init__.py | 0 .../worker/{ => v1}/tasks/amphora_driver_tasks.py | 67 +- .../controller/worker/{ => v1}/tasks/cert_task.py | 3 +- .../worker/{ => v1}/tasks/compute_tasks.py | 9 +- .../worker/{ => v1}/tasks/database_tasks.py | 6 +- .../worker/{ => v1}/tasks/lifecycle_tasks.py | 0 .../worker/{ => v1}/tasks/model_tasks.py | 0 .../worker/{ => v1}/tasks/network_tasks.py | 15 +- .../api/v1 => controller/worker/v2}/__init__.py | 0 octavia/controller/worker/v2/controller_worker.py | 989 +++++++ .../worker/v2/flows}/__init__.py | 0 .../controller/worker/v2/flows/amphora_flows.py | 602 +++++ .../worker/v2/flows/health_monitor_flows.py | 105 + .../controller/worker/v2/flows/l7policy_flows.py | 92 + octavia/controller/worker/v2/flows/l7rule_flows.py | 98 + .../controller/worker/v2/flows/listener_flows.py | 128 + .../worker/v2/flows/load_balancer_flows.py | 341 +++ octavia/controller/worker/v2/flows/member_flows.py | 209 ++ octavia/controller/worker/v2/flows/pool_flows.py | 127 + .../worker/v2/tasks}/__init__.py | 0 .../worker/v2/tasks/amphora_driver_tasks.py | 364 +++ octavia/controller/worker/v2/tasks/cert_task.py | 51 + .../controller/worker/v2/tasks/compute_tasks.py | 258 ++ .../controller/worker/v2/tasks/database_tasks.py | 2707 +++++++++++++++++++ .../controller/worker/v2/tasks/lifecycle_tasks.py | 173 ++ octavia/controller/worker/v2/tasks/model_tasks.py | 41 + .../controller/worker/v2/tasks/network_tasks.py | 659 +++++ octavia/db/base_models.py | 17 +- octavia/db/migration/alembic_migrations/env.py | 1 + .../392fb85b4419_add_primary_key_to_spares_pool.py | 47 + .../46d914b2a5e5_seed_the_spares_pool_table.py | 47 + .../versions/6ffc710674ef_spares_pool_table.py | 2 +- .../a5762a99609a_add_protocol_in_listener_keys.py | 35 + .../da371b422669_allowed_cidr_for_listeners.py | 40 + ...dcf88e59aae4_add_lb_algorithm_source_ip_port.py | 67 + octavia/db/models.py | 25 +- octavia/db/prepare.py | 2 +- octavia/db/repositories.py | 60 +- octavia/distributor/drivers/driver_base.py | 7 - octavia/hacking/checks.py | 4 +- octavia/network/base.py | 36 +- octavia/network/data_models.py | 14 + .../drivers/neutron/allowed_address_pairs.py | 97 +- octavia/network/drivers/neutron/base.py | 23 +- octavia/network/drivers/neutron/utils.py | 9 + octavia/network/drivers/noop_driver/driver.py | 25 + octavia/opts.py | 1 - .../sample_configs => common}/sample_certs.py | 0 .../backend/agent/api_server/test_keepalivedlvs.py | 66 +- .../backend/agent/api_server/test_server.py | 445 ++-- .../v1 => functional/api/drivers}/__init__.py | 0 .../api/drivers/driver_agent}/__init__.py | 0 .../api/drivers/driver_agent/test_driver_agent.py | 344 +++ .../functional/api/v1/test_listener_statistics.py | 51 - .../api/v1/test_load_balancer_statistics.py | 57 - .../functional/api/v2/test_flavor_profiles.py | 21 +- .../tempest/v1/clients/health_monitors_client.py | 60 - .../tempest/v1/clients/load_balancers_client.py | 101 - .../tempest/v1/scenario/test_listener_basic.py | 46 - .../v1/scenario/test_load_balancer_tree_minimal.py | 46 - .../backends/agent/api_server/test_amphora_info.py | 46 +- .../agent/api_server/test_haproxy_compatibility.py | 22 +- .../agent/api_server/test_keepalivedlvs.py | 8 - .../backends/agent/api_server/test_listener.py | 192 -- .../backends/agent/api_server/test_loadbalancer.py | 279 ++ .../backends/agent/api_server/test_plug.py | 84 +- .../backends/agent/api_server/test_util.py | 106 +- .../backends/agent/test_agent_jinja_cfg.py | 42 +- .../backends/health_daemon/test_health_daemon.py | 68 +- .../amphorae/backends/utils/test_haproxy_query.py | 49 +- .../backends/utils/test_keepalivedlvs_query.py | 87 +- ...t_api_driver.py => test_rest_api_driver_0_5.py} | 651 ++--- .../drivers/haproxy/test_rest_api_driver_1_0.py | 1379 ++++++++++ .../drivers/keepalived/test_vrrp_rest_driver.py | 22 +- .../test_noop_amphoraloadbalancer_driver.py | 35 +- .../api/drivers/amphora_driver/v1}/__init__.py | 0 .../amphora_driver/{ => v1}/test_amphora_driver.py | 162 +- .../api/drivers/amphora_driver}/v2/__init__.py | 0 .../amphora_driver/v2/test_amphora_driver.py | 634 +++++ .../api/drivers/driver_agent/test_driver_get.py | 121 + .../drivers/driver_agent/test_driver_listener.py | 55 +- .../unit/api/drivers/test_provider_noop_agent.py} | 26 +- .../unit/api/v1/types/test_health_monitors.py | 139 - .../certificates/common/auth/test_barbican_acl.py | 4 +- .../unit/certificates/common/test_barbican.py | 2 +- .../unit/certificates/generator/test_anchor.py | 47 - .../unit/certificates/generator/test_local.py | 4 +- .../unit/certificates/manager/test_barbican.py | 22 +- .../certificates/manager/test_barbican_legacy.py | 2 +- .../jinja/haproxy/combined_listeners/__init__.py | 0 .../haproxy/combined_listeners/test_jinja_cfg.py | 1207 +++++++++ .../jinja/haproxy/split_listeners/__init__.py | 0 .../{ => split_listeners}/test_jinja_cfg.py | 382 +-- .../common/jinja/logging/test_logging_jinja_cfg.py | 61 + .../unit/common/jinja/lvs/test_lvs_jinja_cfg.py | 111 +- .../sample_configs/sample_configs_combined.py | 1092 ++++++++ .../{sample_configs.py => sample_configs_split.py} | 102 +- .../unit/common/tls_utils/test_cert_parser.py | 25 +- .../healthmanager/health_drivers/test_update_db.py | 316 ++- .../healthmanager/test_health_manager.py | 24 +- .../healthmanager/test_update_serializer.py | 39 - .../controller/housekeeping/test_house_keeping.py | 6 +- .../controller/queue/v1}/__init__.py | 0 .../controller/queue/{ => v1}/test_consumer.py | 6 +- .../{test_endpoint.py => v1/test_endpoints.py} | 14 +- .../controller/queue/v2}/__init__.py | 0 .../unit/controller/queue/v2/test_consumer.py | 72 + .../unit/controller/queue/v2/test_endpoints.py | 182 ++ .../handlers => controller/worker/v1}/__init__.py | 0 .../worker/v1/flows}/__init__.py | 0 .../worker/{ => v1}/flows/test_amphora_flows.py | 2 +- .../{ => v1}/flows/test_health_monitor_flows.py | 2 +- .../worker/{ => v1}/flows/test_l7policy_flows.py | 2 +- .../worker/{ => v1}/flows/test_l7rule_flows.py | 2 +- .../worker/{ => v1}/flows/test_listener_flows.py | 2 +- .../{ => v1}/flows/test_load_balancer_flows.py | 5 +- .../worker/{ => v1}/flows/test_member_flows.py | 2 +- .../worker/{ => v1}/flows/test_pool_flows.py | 2 +- .../v1 => controller/worker/v1/tasks}/__init__.py | 0 .../{ => v1}/tasks/test_amphora_driver_tasks.py | 119 +- .../worker/{ => v1}/tasks/test_cert_task.py | 8 +- .../worker/{ => v1}/tasks/test_compute_tasks.py | 29 +- .../worker/{ => v1}/tasks/test_database_tasks.py | 4 +- .../{ => v1}/tasks/test_database_tasks_quota.py | 2 +- .../worker/{ => v1}/tasks/test_lifecycle_tasks.py | 2 +- .../worker/{ => v1}/tasks/test_model_tasks.py | 2 +- .../worker/{ => v1}/tasks/test_network_tasks.py | 2 +- .../worker/{ => v1}/test_controller_worker.py | 132 +- .../v1/types => controller/worker/v2}/__init__.py | 0 .../controller/worker/{ => v2}/flows/__init__.py | 0 .../worker/v2/flows/test_amphora_flows.py | 422 +++ .../worker/v2/flows/test_health_monitor_flows.py | 72 + .../worker/v2/flows/test_l7policy_flows.py | 67 + .../worker/v2/flows/test_l7rule_flows.py | 67 + .../worker/v2/flows/test_listener_flows.py | 90 + .../worker/v2/flows/test_load_balancer_flows.py | 228 ++ .../worker/v2/flows/test_member_flows.py | 88 + .../controller/worker/v2/flows/test_pool_flows.py | 77 + .../controller/worker/{ => v2}/tasks/__init__.py | 0 .../worker/v2/tasks/test_amphora_driver_tasks.py | 637 +++++ .../controller/worker/v2/tasks/test_cert_task.py | 47 + .../worker/v2/tasks/test_compute_tasks.py | 481 ++++ .../worker/v2/tasks/test_database_tasks.py | 2727 ++++++++++++++++++++ .../worker/v2/tasks/test_database_tasks_quota.py | 322 +++ .../worker/v2/tasks/test_lifecycle_tasks.py | 401 +++ .../controller/worker/v2/tasks/test_model_tasks.py | 44 + .../worker/v2/tasks/test_network_tasks.py | 801 ++++++ .../controller/worker/v2/test_controller_worker.py | 1511 +++++++++++ .../drivers/neutron/test_allowed_address_pairs.py | 76 +- .../unit/network/drivers/neutron/test_base.py | 21 +- .../unit/network/drivers/neutron/test_utils.py | 18 +- .../unit/volume/drivers/test_cinder_driver.py | 99 + .../unit/volume/drivers/test_volume_noop_driver.py | 46 + octavia/volume/__init__.py | 0 octavia/volume/drivers/__init__.py | 0 octavia/volume/drivers/cinder_driver.py | 123 + octavia/volume/drivers/noop_driver/__init__.py | 0 octavia/volume/drivers/noop_driver/driver.py | 60 + octavia/volume/volume_base.py | 46 + playbooks/image-build/run.yaml | 5 +- playbooks/legacy/grenade-devstack-octavia/run.yaml | 10 +- .../legacy/octavia-v1-dsvm-py3x-scenario/post.yaml | 19 - .../legacy/octavia-v1-dsvm-py3x-scenario/run.yaml | 68 - .../legacy/octavia-v1-dsvm-scenario/post.yaml | 19 - playbooks/legacy/octavia-v1-dsvm-scenario/run.yaml | 67 - ...-driver-agent-get-methods-b624a1342c3e6d0f.yaml | 4 + .../notes/Add-log-offloading-233cd8612c0dd2b5.yaml | 12 + ...dd-provider-agent-support-a735806c4da4c470.yaml | 6 + .../Fix-API-update-null-None-1b400962017a3d56.yaml | 6 + ...DB-Rollback-no-connection-2664c4f7823ecaec.yaml | 5 + ...te_and_associate-deadlock-3ff1464421c1d464.yaml | 4 + ...Fix-ifup-on-member-create-5b405d98eb036718.yaml | 4 + ...evert-abandoned-vrrp-port-efff14edce62ad75.yaml | 5 + ...irtual-kernel-for-Amphora-a1e8af8bc7893011.yaml | 7 + ...-algorithm-source-ip-port-ff86433143e43136.yaml | 16 + .../notes/add-ptvsd-debugger-33bb632bccf494bb.yaml | 5 + .../notes/add-rhel-amphora-ab4a7bada2fa3eb7.yaml | 4 + .../notes/add-vip-acl-4a7e20d167fe4a49.yaml | 5 + ...client-auth-vulnerability-6803f4bac2508e4c.yaml | 5 + ...-active-standby-in-centos-4e47140e0e139de8.yaml | 4 + .../notes/fix-driver-errors-81d33948288bf8cf.yaml | 4 + .../notes/fix-eth1-ip-flush-7fadda4bdca387b5.yaml | 11 + ...d-attribute-for-filtering-d2ddb95a1acbded2.yaml | 4 + .../None-fde2ffab82e783a4.yaml | 7 + ...x-loadbalancer-db-cleanup-61ee81a4fd597067.yaml | 5 + ...lvconf-rhel-dhclient-hook-36a1c3b1a3b03a3d.yaml | 5 + ...fix-provider-driver-utils-b75485785dcd6462.yaml | 6 + ...mphora-check-and-creation-3adf939b45610155.yaml | 4 + ...s-and-port-in-udp-members-ff83395544f228cf.yaml | 6 + .../fix-udp-members-status-ef3202849bfda29b.yaml | 6 + ...fix-udp-server-status-bug-db4d3e38bcdf0554.yaml | 12 + ...p-network-ip-availability-2e924f32abf01052.yaml | 7 + .../fix-vip-plug-centos-74c2fe7099964b08.yaml | 3 + ...-policy-extension-enabled-3e16e1c23a7d7ae5.yaml | 7 + ...ed-spare-amphora-rotation-007ba406411a313d.yaml | 4 + ...mmunication-to-use-tls1.2-1c4adf72d2ce5a82.yaml | 6 + .../haproxy-single-process-b17a3af3a97accea.yaml | 11 + ...rver_certs_key_passphrase-6a9dfc190c9deba8.yaml | 6 + ...ert-validity-configurable-7defc508b1174f89.yaml | 9 + ...atch-member-call-additive-4785163e625fed1a.yaml | 6 + ...e-deprecated-v1-resources-6360da3de27b74d3.yaml | 10 + .../same-port-listeners-41198368d470e821.yaml | 5 + ...leware-http_proxy_to_wsgi-928c6fc5ec3d421c.yaml | 8 + ...-taskflow-engine-parallel-8bf743eca15a0253.yaml | 10 + ...ame-ip-protocol-in-udp-lb-2813b545131097ec.yaml | 7 + .../volume-based-amphora-9a1899634f5244b0.yaml | 14 + releasenotes/source/conf.py | 22 - releasenotes/source/index.rst | 1 + releasenotes/source/stein.rst | 6 + requirements.txt | 13 +- setup.cfg | 24 +- specs/version0.5/controller.rst | 2 +- specs/version0.5/tls-data-security.rst | 4 +- specs/version0.8/active_passive_loadbalancer.rst | 2 +- specs/version0.9/stats_api.rst | 2 +- specs/version1.0/flavors.rst | 2 +- specs/version1.1/enable-provider-driver.rst | 12 +- test-requirements.txt | 9 +- tools/create_flow_docs.py | 33 +- tools/flow-list.txt | 54 +- tox.ini | 74 +- zuul.d/jobs.yaml | 71 +- zuul.d/projects.yaml | 45 +- 526 files changed, 32755 insertions(+), 21386 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index fb25bd33..239b8f99 100644 --- a/requirements.txt +++ b/requirements.txt @@ -24 +24 @@ oslo.log>=3.36.0 # Apache-2.0 -oslo.messaging>=5.29.0 # Apache-2.0 +oslo.messaging>=6.3.0 # Apache-2.0 @@ -36,0 +37 @@ python-novaclient>=9.1.0 # Apache-2.0 +python-cinderclient>=3.3.0 # Apache-2.0 @@ -44 +45 @@ castellan>=0.16.0 # Apache-2.0 -tenacity>=4.9.0 # Apache-2.0 +tenacity>=5.0.4 # Apache-2.0 @@ -48 +49,4 @@ debtcollector>=1.19.0 # Apache-2.0 -octavia-lib>=1.1.1 # Apache-2.0 +octavia-lib>=1.3.1 # Apache-2.0 +netaddr>=0.7.19 # BSD +simplejson>=3.13.2 # MIT +setproctitle>=1.1.10 # BSD @@ -56 +60,2 @@ pyroute2>=0.4.21;sys_platform!='win32' # Apache-2.0 (+ dual licensed GPL2) -gunicorn>=19.0.0 # MIT +gunicorn>=19.9.0 # MIT +Werkzeug>=0.14.1 # BSD License diff --git a/test-requirements.txt b/test-requirements.txt index bc3205fa..8e8b4466 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -4 +4 @@ -hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 +hacking>=1.1.0 # Apache-2.0 @@ -6,0 +7 @@ coverage!=4.4,>=4.0 # Apache-2.0 +fixtures>=3.0.0 # Apache-2.0/BSD @@ -11 +12,2 @@ oslotest>=3.2.0 # Apache-2.0 -pylint==1.9.2 # GPLv2 +pylint==1.9.2;python_version<'3.0' # GPLv2 +pylint>=1.9.2;python_version>='3.0' # GPLv2 @@ -20 +22,2 @@ tempest>=17.1.0 # Apache-2.0 -sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD +sphinx!=1.6.6,!=1.6.7,>=1.6.2,<2.0.0;python_version=='2.7' # BSD +sphinx!=1.6.6,!=1.6.7,>=1.6.2;python_version>='3.4' # BSD
participants (1)
-
no-reply@openstack.org