We jubilantly announce the release of: octavia 3.0.0: OpenStack Octavia Scalable Load Balancer as a Service This release is part of the rocky release series. Download the package from: https://pypi.org/project/octavia For more details, please see below. 3.0.0 ^^^^^ Deprecation Notes ***************** * Finally completely the remove user_group option, as it was deprecated in Pike. Security Issues *************** * Adds a configuration option, "reserved_ips" that allows the operator to block addresses from being used in load balancer members. The default setting blocks the nova metadata service address. Changes in octavia 2.0.0.0rc1..3.0.0 ------------------------------------ 8d74497 Remove user_group option d089851 Fix Octavia for host host routes 53fab8d Disable KVM at OVH f746732 Fix neutron "tenat_id" compatibility 0957d25 Allow blocking IPs from member addresses 50ea748 "Resolve" bandit issue with sha1 hashes f108038 Update UPPER_CONSTRAINTS_FILE for stable/rocky de9ddb1 Update .gitreview for stable/rocky 5022588 Fix UDP release note for CentOS a166c89 [UDP] Fix failed member always in DRAIN status cc97397 Followup patch for UDP support 4c6846a UDP for [3][5][6] a890f2b UDP for [2] aaa7fbc Clarify that the driver support library is interim 008ccb6 UDP jinja template a4b1783 Delete amphora regardless of status 97017bf Fix the bionic gate to actually run Ubuntu bionic 47bafec Updates the amphora driver for new commit model c3813d9 Automatically set Barbican ACLs aa5e5be Add listener_id to the pool provider object bd0206a Correct naming for quota resources 4688739 Add baseline object in the drivers update callbacks ee1ed74 Init provider drivers at app setup 88649d9 Fix DIB_REPOREF_amphora_agent not set on Git !=1.8.5 cfae79c Fixing Octavia generating json named file containing yaml 0139f12 Fix failover when multiple amphora have failed 9ca61f2 Temporarily disable flow diagraming 73ddf9d Correct the usage on listing neutron ports b9e050c Update pypi url to new url 294e0fc Fixes unlimited listener connection limit 1924369 Use object instead of object id in the drivers delete callbacks 5785b97 Cleanup Octavia create VIP ports on LB delete 0871dfc Add lb_id comment to amp haproxy listener config 1c4004c Translate expected package names to installed ones 2a7f1e5 Fix package version querying on non-dpkg distros 7edad93 Add release note for HMAC python3 fix 1e4155f Add a config to surpress amphora logging 8ef1b13 Add the missing markup for the hyperlink title 5b747c5 Use openstack client command to replace nova client fa73085 Allow setting load balancer topology in Devstack 4a9f83d Implement provider drivers - Driver Library 0e5c471 [doc] Add the missing markup for the hyperlink title 195aba3 Follow the new PTI for document build 87fca27 Fix version discovery for the Octavia API 32ceaec [doc]Use openstack client commands to replace nova client d959dab Add the missing markup for the hyperlink title 0ca412e Improve resource quota response message 464d8f9 Introduce ipvsadm to the amphora image 81f2ebb Ignore a port not found when deleting an LB 1fa91ab [amphora-agent] add local net to routing table 1 fd20d06 Fix fields translation on filtering 5021e0f Enable oslo_config mutable configurations 14cb07f Move from platform.linux_distribution to distro.id 16cb360 Re-enable KVM 0322cbc fix tox python3 overrides 7128d73 Add exception handling for housekeeping service 86e5b93 Add upgrade guide f591509 Clarify IPv6 support for the lb-mgmt-net c64a457 Exclude amphora instances already DELETED when failover loadbalancer 7564834 Fix configured haproxy restarts caf6535 Providers: propose changes to create pool API bfba887 Change tox.ini coverage to always generate html bd59e6f Make octavia-grenade job voting 6a8799c Add error logging for amphora agent exceptions 5cef93d Fix health manager to be spare amphora aware d3f0a50 Adding support for the octavia listener X-Forwarded-Proto header insertion. e1e1640 Add health monitor API validation 5cbf974 Exclude limestone from running with kvm 58b7d9a Stop logging API not found as ERROR 5af7133 Align logging on oslo_log 13eab15 Add grenade support 852191f Allow using spaces for primary common name in SSL certificates 1417f6f Improve the error logging for zombie amphora 254d4d4 When SG delete fails on vip deallocate, try harder 52eaaa7 Amend the spelling error of a word 596a600 Remove a duplicated key in unit test dict 96cce3e Fix amp failover where failover already failed 97a168c Providers: propose changes to API 6349976 Implement provider drivers - Cleanup 0fd2d35 Implement provider drivers - L7 Rules 1bcd5ef Fix listener update race with default pool removal 9ba10b0 Implement provider drivers - L7 Policy ef7a56d Implement provider drivers - Health Monitor 48e8556 Allow DB retries on controller_worker creates fdc96d9 Use HMAC.hexdigest to avoid non-ascii characters for package data 190f682 Fix requirements gate + add local tox profile 77b6e1b Octavia devstack plugin API mode 438084c Implement provider drivers - Members 5a78051 Add coverage.xml output for PTI compliance 0acb622 Implement provider drivers - Pool 7a24b08 Implement provider drivers - Listener 7b2621f Implement provider drivers - Load Balancer 00f2bc4 Add release notes link to README 4e3810c Fix amphora failover API to work with spares 9b98197 Mark LBs in failover PENDING_UPDATE d28d311 Add config for disabling creation of PING type HMs f8ec935 Fix releasenotes build in tox 505543f Fix typo d786bf4 Add tenant_id back to objects for backwards compat bdd9c6f Replace port 35357 with 5000 for "auth_url" 6e2668d Increase devstack neutron secgroups quota to 100 7153c4a Trivial: Update pypi url to new url 344967a Let healthmanager process shutdown cleanly (again) 9c6e9e3 Fix sphinx-docs job for sphinx >1.7 c6ff859 Create disabled members in haproxy 7a702fc Add raw format support to image creator script. 13d0afc Use openstack client commands to replace neutron client 931a531 Devstack plugin: Check for IPv6 support 267114f Healthmanager shouldn't update NO_MONITOR members ea9aa51 Slightly reorder member flows 6ebb0d5 Fix periodic job 777a845 Updates the docs with new admin tips 84ef448 Allow fields filter on single object GETs b0a8455 Update HAProxy version for Centos fe92dab Correct field filtering for member/l7rule/amphora 8e2f751 Improve Health Manager error handling 3ab7723 Create noop provider driver and data model 8b94afd Creates provider driver base class and exceptions b4632d7 Remove PluggedVIPNotFound references aa1b32d Fix keepalived vrrp check script to be in PATH 7293dd9 Fix lower-constraints to actually match our reqs 791f523 Health Monitor url_path requires leading slash 555c057 Pool PUT should validate name/description length 86da7a8 Correct flavor to flavor_id in LB API 97c0eab Fix calls to "DELETED" items c5c7770 Add sos element to Red Hat family images 240478a Adding Gophercloud to the SDKs list 655c31d Trivial: fix syntax error in command examples 7b8ad36 Add Octavia v2 tempest plugin jobs to Octavia f935a51 Switch to ubuntu-minimal for default amphora image be505cd Fix statistics update typo f66f08f Install client from pip if not in LIBS_FROM_GIT dda45f0 Add pool session persistence validation cf296c2 Update auth_uri option to www_authenticate_uri 68e425e Improve some log messages in health_monitor.py 922c79f Add API alias for '/statuses' ae1ab56 Move o-hm0 dhcp config under /etc/dhcp b1b62d3 Update introduction documention page 093d60d Add debug timing logging to amphora health update d4474e8 Make keepalived initialization more predictable 1ed8f30 Minor refactor of health_sender.py 798be31 Defend against neutron error response missing keys bb0447e Expose timeout options 54f590b Fix revert method for batch member update 315bc24 Correctly validate member subnet_id in batches e819e45 Allow members to be set as "backup" aab5e66 Update API-REF for x-forwarded-port is string 538cfdd Fix a no-op network driver bug on plug_port 592d179 Set lower-constraint to run unit and functional c8918b4 Add deadlock retry wrapper for inital quota create 02a60c7 Fix logging level for keystone auth bypass 24f7ebc Fixes the directory we copy the image to f7f8050 Don't failover amphora with LB in PENDING_* 026b8e5 The MarkL7PolicyActiveInDB is not necessary when l7policy deleted ca6ef76 add lower-constraints job 1a35d6d Fix health manager edge case with zombie amphora e5491df Switch multinode tests to non-voting 2a94e10 Change used keystone token provider in devstack 02c7a1d Rename python-openstacksdk to openstacksdk cf97a40 Updated from global requirements b3b5a42 fix a typo in documentation 8ae92fd Updated from global requirements 949261f Add a devstack variable for legacy RBAC e5f0a1c Periodic job to build + publish diskimage c2dbd82 Updated from global requirements 24cd007 Log health manager exceptions 414eeb6 Log output of subprocess check_output() errors 388f6a8 Reduce runtime for l7rule too_many_rules test 75a15c7 Updated from global requirements a1e443c Properly test access to tls_refs in the API layer 53dc41d Devstack plugin image build option quoting fix 9ec8c65 Fix functional jobs dd5c693 Change import order d871c2a Reduce stestr concurrency to 1 for tempest jobs 649b33d Add license for empty __init__.py 6eb4c1f Rename q- to neutron- services c71298a Move scenario-lxd over to experimental 303b339 Split up extra init steps and start processes ad196ef Updated from global requirements 1020a3b Fix kvm-centos.7 gate 7f3506b Migrate to stestr 7152fc2 Updated from global requirements a35637c Imported Translations from Zanata 6ee20b2 Add image_id to amphora table 2e7d9c6 Add timestamps to amphora table bf9dffc Update configuration samples (QoS) d1e9c56 Fix network no-op driver get_network_configs f9dafb9 Overhaul HealthManager update threading 06f1dcd Updated from global requirements a6896f2 Fix filtering by admin_state_up 8cca5de Fix load balancers using IPv6 for the VIP subnet 2d20628 Updates API for deleting "DELETED" objects 4120ad7 Fix missing test-requirement and cleanup docs 0a8808b Update reno for stable/queens 5f9c2c3 Enable hacking-extensions H204, H205 579eaaf Do not install pip in amphora when using distribution packages Diffstat (except docs and test files) ------------------------------------- .gitreview | 1 + .pylintrc | 8 +- .testr.conf | 5 - README.rst | 5 +- api-ref/source/examples/versions-get-resp.json | 37 +- api-ref/source/index.rst | 16 +- api-ref/source/parameters.yaml | 120 +- api-ref/source/v1/octaviaapi.rst | 4 +- api-ref/source/v2/amphora.inc | 12 +- api-ref/source/v2/examples/amphora-failover-curl | 2 +- api-ref/source/v2/examples/amphora-list-curl | 2 +- .../source/v2/examples/amphora-list-response.json | 10 +- api-ref/source/v2/examples/amphora-show-curl | 2 +- .../source/v2/examples/amphora-show-response.json | 5 +- .../source/v2/examples/healthmonitor-create-curl | 2 +- .../source/v2/examples/healthmonitor-delete-curl | 2 +- api-ref/source/v2/examples/healthmonitor-list-curl | 2 +- api-ref/source/v2/examples/healthmonitor-show-curl | 2 +- .../source/v2/examples/healthmonitor-update-curl | 2 +- api-ref/source/v2/examples/l7policies-list-curl | 2 +- api-ref/source/v2/examples/l7policy-create-curl | 2 +- api-ref/source/v2/examples/l7policy-delete-curl | 2 +- api-ref/source/v2/examples/l7policy-show-curl | 2 +- api-ref/source/v2/examples/l7policy-update-curl | 2 +- api-ref/source/v2/examples/l7rule-create-curl | 2 +- api-ref/source/v2/examples/l7rule-delete-curl | 2 +- api-ref/source/v2/examples/l7rule-show-curl | 2 +- api-ref/source/v2/examples/l7rule-update-curl | 2 +- api-ref/source/v2/examples/l7rules-list-curl | 2 +- api-ref/source/v2/examples/listener-create-curl | 2 +- .../v2/examples/listener-create-request.json | 6 +- .../v2/examples/listener-create-response.json | 6 +- api-ref/source/v2/examples/listener-delete-curl | 2 +- api-ref/source/v2/examples/listener-show-curl | 2 +- .../source/v2/examples/listener-show-response.json | 6 +- api-ref/source/v2/examples/listener-stats-curl | 2 +- api-ref/source/v2/examples/listener-update-curl | 2 +- .../v2/examples/listener-update-request.json | 6 +- .../v2/examples/listener-update-response.json | 6 +- api-ref/source/v2/examples/listeners-list-curl | 2 +- .../v2/examples/listeners-list-response.json | 6 +- .../source/v2/examples/loadbalancer-create-curl | 2 +- .../v2/examples/loadbalancer-create-response.json | 2 +- .../source/v2/examples/loadbalancer-delete-curl | 2 +- .../source/v2/examples/loadbalancer-failover-curl | 2 +- .../examples/loadbalancer-full-create-request.json | 2 +- .../loadbalancer-full-create-response.json | 2 +- api-ref/source/v2/examples/loadbalancer-show-curl | 2 +- .../v2/examples/loadbalancer-show-response.json | 2 +- api-ref/source/v2/examples/loadbalancer-stats-curl | 2 +- .../source/v2/examples/loadbalancer-status-curl | 2 +- .../source/v2/examples/loadbalancer-update-curl | 2 +- .../v2/examples/loadbalancer-update-response.json | 2 +- api-ref/source/v2/examples/loadbalancers-list-curl | 2 +- .../v2/examples/loadbalancers-list-response.json | 2 +- .../source/v2/examples/member-batch-update-curl | 2 +- api-ref/source/v2/examples/member-create-curl | 2 +- .../source/v2/examples/member-create-request.json | 3 +- .../source/v2/examples/member-create-response.json | 1 + api-ref/source/v2/examples/member-delete-curl | 2 +- api-ref/source/v2/examples/member-show-curl | 2 +- .../source/v2/examples/member-show-response.json | 1 + api-ref/source/v2/examples/member-update-curl | 2 +- .../source/v2/examples/member-update-request.json | 3 +- .../source/v2/examples/member-update-response.json | 1 + api-ref/source/v2/examples/members-list-curl | 2 +- .../source/v2/examples/members-list-response.json | 1 + api-ref/source/v2/examples/pool-create-curl | 2 +- api-ref/source/v2/examples/pool-delete-curl | 2 +- api-ref/source/v2/examples/pool-show-curl | 2 +- api-ref/source/v2/examples/pool-update-curl | 2 +- api-ref/source/v2/examples/pools-list-curl | 2 +- api-ref/source/v2/examples/provider-list-curl | 1 + .../source/v2/examples/provider-list-response.json | 12 + api-ref/source/v2/examples/quota-reset-curl | 2 +- api-ref/source/v2/examples/quota-show-curl | 2 +- api-ref/source/v2/examples/quota-update-curl | 2 +- .../source/v2/examples/quota-update-request.json | 4 +- .../source/v2/examples/quota-update-response.json | 4 +- api-ref/source/v2/examples/quotas-defaults-curl | 2 +- .../v2/examples/quotas-defaults-response.json | 4 +- api-ref/source/v2/examples/quotas-list-curl | 2 +- .../source/v2/examples/quotas-list-response.json | 4 +- .../source/v2/examples/quotas-show-response.json | 4 +- api-ref/source/v2/general.inc | 64 +- api-ref/source/v2/healthmonitor.inc | 14 +- api-ref/source/v2/index.rst | 11 +- api-ref/source/v2/l7policy.inc | 14 +- api-ref/source/v2/l7rule.inc | 12 +- api-ref/source/v2/listener.inc | 70 +- api-ref/source/v2/loadbalancer.inc | 42 +- api-ref/source/v2/member.inc | 23 +- api-ref/source/v2/pool.inc | 16 +- api-ref/source/v2/provider.inc | 51 + api-ref/source/v2/quota.inc | 30 +- devstack/contrib/new-octavia-devstack.sh | 6 +- devstack/files/debs/octavia | 1 + devstack/files/rpms/octavia | 1 + devstack/plugin.sh | 217 +-- devstack/samples/multinode/local-2.conf | 8 +- devstack/samples/multinode/local.conf | 16 +- devstack/samples/singlenode/local.conf | 18 +- devstack/settings | 10 +- devstack/upgrade/resources.sh | 128 ++ devstack/upgrade/settings | 11 + devstack/upgrade/shutdown.sh | 24 + devstack/upgrade/upgrade.sh | 70 + devstack/upgrade/vm_user_data.sh | 4 + diskimage-create/diskimage-create.sh | 35 +- elements/amphora-agent/element-deps | 1 - .../75-amphora-agent-install | 15 +- elements/amphora-agent/package-installs.yaml | 42 + elements/amphora-agent/pkg-map | 3 +- elements/haproxy-octavia/package-installs.json | 3 +- elements/haproxy-octavia/pkg-map | 6 + .../post-install.d/20-haproxy-tune-kernel | 7 +- .../haproxy-octavia/pre-install.d/01-backports | 8 + elements/ipvsadmin/README.rst | 3 + elements/ipvsadmin/element-deps | 2 + elements/ipvsadmin/package-installs.json | 3 + elements/ipvsadmin/svc-map | 2 + .../finalise.d/98-rebind-sshd-after-dhcp | 1 + elements/sos/README.rst | 11 + elements/sos/element-deps | 2 + elements/sos/package-installs.yaml | 1 + elements/sos/pkg-map | 10 + etc/octavia.conf | 46 +- etc/policy/octavia-policy-generator.conf | 3 +- lower-constraints.txt | 171 ++ octavia/__init__.py | 3 +- octavia/amphorae/__init__.py | 11 + octavia/amphorae/backends/__init__.py | 11 + octavia/amphorae/backends/agent/__init__.py | 11 + octavia/amphorae/backends/agent/agent_jinja_cfg.py | 6 +- .../backends/agent/api_server/amphora_info.py | 121 +- .../agent/api_server/haproxy_compatibility.py | 3 +- .../backends/agent/api_server/keepalived.py | 25 +- .../backends/agent/api_server/keepalivedlvs.py | 357 ++++ .../amphorae/backends/agent/api_server/listener.py | 79 +- .../amphorae/backends/agent/api_server/osutils.py | 111 +- octavia/amphorae/backends/agent/api_server/plug.py | 22 +- .../amphorae/backends/agent/api_server/server.py | 39 +- .../api_server/templates/amphora-netns.systemd.j2 | 6 + .../api_server/templates/keepalived.systemd.j2 | 7 +- .../api_server/templates/keepalived.sysvinit.j2 | 4 + .../api_server/templates/keepalived.upstart.j2 | 4 + .../templates/keepalived_lvs_check_script.sh.j2 | 21 + .../api_server/templates/plug_port_ethX.conf.j2 | 8 + .../api_server/templates/plug_vip_ethX.conf.j2 | 22 +- .../rh_plug_port_eth_ifdown_local.conf.j2 | 19 + .../templates/rh_plug_port_eth_ifup_local.conf.j2 | 19 + .../api_server/templates/rh_route_ethX.conf.j2 | 1 + .../agent/api_server/templates/systemd.conf.j2 | 26 +- .../backends/agent/api_server/udp_listener_base.py | 123 ++ octavia/amphorae/backends/agent/api_server/util.py | 134 +- .../agent/templates/amphora_agent_conf.template | 2 +- .../amphorae/backends/health_daemon/__init__.py | 11 + .../backends/health_daemon/health_daemon.py | 35 +- .../backends/health_daemon/health_sender.py | 23 +- .../backends/health_daemon/status_message.py | 45 +- octavia/amphorae/backends/utils/__init__.py | 11 + .../amphorae/backends/utils/keepalivedlvs_query.py | 421 +++++ octavia/amphorae/backends/utils/udp_check.sh | 4 + octavia/amphorae/driver_exceptions/__init__.py | 11 + octavia/amphorae/drivers/__init__.py | 11 + octavia/amphorae/drivers/driver_base.py | 21 +- octavia/amphorae/drivers/haproxy/__init__.py | 11 + octavia/amphorae/drivers/haproxy/data_models.py | 2 +- octavia/amphorae/drivers/haproxy/exceptions.py | 11 + .../amphorae/drivers/haproxy/rest_api_driver.py | 177 +- octavia/amphorae/drivers/health/__init__.py | 11 + octavia/amphorae/drivers/health/heartbeat_udp.py | 53 +- octavia/amphorae/drivers/keepalived/__init__.py | 11 + .../amphorae/drivers/keepalived/jinja/__init__.py | 11 + .../drivers/keepalived/vrrp_rest_driver.py | 5 +- octavia/amphorae/drivers/noop_driver/__init__.py | 11 + octavia/amphorae/drivers/noop_driver/driver.py | 13 + octavia/api/__init__.py | 11 + octavia/api/app.py | 10 + octavia/api/common/__init__.py | 11 + octavia/api/common/pagination.py | 4 +- octavia/api/common/types.py | 31 + octavia/api/config.py | 5 +- octavia/api/drivers/__init__.py | 11 + octavia/api/drivers/amphora_driver/__init__.py | 11 + octavia/api/drivers/amphora_driver/driver.py | 254 +++ octavia/api/drivers/data_models.py | 261 +++ octavia/api/drivers/driver_factory.py | 50 + octavia/api/drivers/driver_lib.py | 155 ++ octavia/api/drivers/exceptions.py | 148 ++ octavia/api/drivers/noop_driver/__init__.py | 11 + octavia/api/drivers/noop_driver/driver.py | 335 ++++ octavia/api/drivers/provider_base.py | 481 ++++++ octavia/api/drivers/utils.py | 405 +++++ octavia/api/handlers/__init__.py | 11 + .../api/handlers/controller_simulator/__init__.py | 11 + .../api/handlers/controller_simulator/handler.py | 4 +- octavia/api/handlers/queue/__init__.py | 11 + octavia/api/root_controller.py | 53 +- octavia/api/v1/__init__.py | 11 + octavia/api/v1/controllers/base.py | 3 +- octavia/api/v1/controllers/health_monitor.py | 11 +- octavia/api/v1/controllers/l7policy.py | 9 +- octavia/api/v1/controllers/l7rule.py | 6 +- octavia/api/v1/controllers/listener.py | 18 +- octavia/api/v1/controllers/load_balancer.py | 6 +- octavia/api/v1/controllers/member.py | 10 +- octavia/api/v1/controllers/pool.py | 20 +- octavia/api/v1/controllers/quotas.py | 3 +- octavia/api/v1/types/__init__.py | 11 + octavia/api/v2/__init__.py | 11 + octavia/api/v2/controllers/__init__.py | 6 +- octavia/api/v2/controllers/amphora.py | 55 +- octavia/api/v2/controllers/base.py | 84 +- octavia/api/v2/controllers/health_monitor.py | 309 ++-- octavia/api/v2/controllers/l7policy.py | 205 ++- octavia/api/v2/controllers/l7rule.py | 180 +- octavia/api/v2/controllers/listener.py | 290 +++- octavia/api/v2/controllers/load_balancer.py | 219 ++- octavia/api/v2/controllers/member.py | 243 +-- octavia/api/v2/controllers/pool.py | 260 ++- octavia/api/v2/controllers/provider.py | 50 + octavia/api/v2/controllers/quotas.py | 3 +- octavia/api/v2/types/__init__.py | 11 + octavia/api/v2/types/amphora.py | 3 + octavia/api/v2/types/health_monitor.py | 19 +- octavia/api/v2/types/listener.py | 48 + octavia/api/v2/types/load_balancer.py | 15 +- octavia/api/v2/types/member.py | 4 + octavia/api/v2/types/pool.py | 24 +- octavia/api/v2/types/provider.py | 26 + octavia/api/v2/types/quotas.py | 25 +- octavia/certificates/__init__.py | 11 + octavia/certificates/common/__init__.py | 11 + octavia/certificates/common/auth/__init__.py | 11 + octavia/certificates/common/auth/barbican_acl.py | 50 +- octavia/certificates/common/barbican.py | 20 + octavia/certificates/common/pkcs12.py | 1 + octavia/certificates/generator/__init__.py | 11 + octavia/certificates/manager/__init__.py | 11 + octavia/certificates/manager/barbican.py | 8 + octavia/certificates/manager/barbican_legacy.py | 56 +- octavia/certificates/manager/castellan_mgr.py | 10 + octavia/certificates/manager/cert_mgr.py | 19 +- octavia/certificates/manager/local.py | 8 + octavia/cmd/__init__.py | 11 + octavia/cmd/haproxy_vrrp_check.py | 2 +- octavia/cmd/health_manager.py | 33 +- octavia/cmd/house_keeping.py | 28 +- octavia/cmd/octavia_worker.py | 2 +- octavia/common/__init__.py | 11 + octavia/common/config.py | 54 +- octavia/common/constants.py | 77 +- octavia/common/data_models.py | 42 +- octavia/common/exceptions.py | 40 +- octavia/common/jinja/__init__.py | 11 + octavia/common/jinja/haproxy/__init__.py | 11 + octavia/common/jinja/haproxy/jinja_cfg.py | 47 +- octavia/common/jinja/haproxy/templates/base.j2 | 10 +- .../common/jinja/haproxy/templates/haproxy.cfg.j2 | 3 +- octavia/common/jinja/haproxy/templates/macros.j2 | 33 +- octavia/common/jinja/lvs/__init__.py | 0 octavia/common/jinja/lvs/jinja_cfg.py | 200 +++ octavia/common/jinja/lvs/templates/base.j2 | 21 + .../jinja/lvs/templates/keepalivedlvs.cfg.j2 | 28 + octavia/common/jinja/lvs/templates/macros.j2 | 110 ++ octavia/common/keystone.py | 19 +- octavia/common/policy.py | 3 +- octavia/common/stats.py | 2 +- octavia/common/tls_utils/__init__.py | 11 + octavia/common/tls_utils/cert_parser.py | 15 +- octavia/common/utils.py | 18 +- octavia/common/validate.py | 47 +- octavia/compute/__init__.py | 11 + octavia/compute/drivers/__init__.py | 11 + octavia/compute/drivers/noop_driver/__init__.py | 11 + octavia/compute/drivers/nova_driver.py | 3 +- octavia/controller/__init__.py | 11 + octavia/controller/healthmanager/__init__.py | 11 + .../healthmanager/health_drivers/__init__.py | 0 .../healthmanager/health_drivers/update_base.py | 27 + .../healthmanager/health_drivers/update_db.py | 452 +++++ .../healthmanager/health_drivers/update_logging.py | 29 + octavia/controller/healthmanager/health_manager.py | 38 +- octavia/controller/healthmanager/update_db.py | 377 ---- octavia/controller/housekeeping/__init__.py | 11 + octavia/controller/housekeeping/house_keeping.py | 20 +- octavia/controller/queue/__init__.py | 11 + octavia/controller/worker/__init__.py | 11 + octavia/controller/worker/controller_worker.py | 237 ++- octavia/controller/worker/flows/__init__.py | 11 + octavia/controller/worker/flows/amphora_flows.py | 86 +- .../worker/flows/health_monitor_flows.py | 4 - octavia/controller/worker/flows/l7policy_flows.py | 6 - octavia/controller/worker/flows/l7rule_flows.py | 4 - octavia/controller/worker/flows/listener_flows.py | 6 - .../controller/worker/flows/load_balancer_flows.py | 6 - octavia/controller/worker/flows/member_flows.py | 24 +- octavia/controller/worker/flows/pool_flows.py | 4 - octavia/controller/worker/task_utils.py | 2 +- octavia/controller/worker/tasks/__init__.py | 11 + .../worker/tasks/amphora_driver_tasks.py | 66 +- octavia/controller/worker/tasks/compute_tasks.py | 14 +- .../controller/worker/tasks/controller_tasks.py | 50 - octavia/controller/worker/tasks/database_tasks.py | 26 +- octavia/controller/worker/tasks/lifecycle_tasks.py | 1 - octavia/controller/worker/tasks/network_tasks.py | 56 +- octavia/db/__init__.py | 11 + octavia/db/base_models.py | 15 +- octavia/db/migration/__init__.py | 11 + octavia/db/migration/alembic_migrations/env.py | 5 - .../versions/034756a182a2_amphora_add_image_id.py | 35 + .../versions/0f242cf02c74_add_provider_column.py | 37 + .../0fd2c131923f_add_timeout_fields_to_listener.py | 50 + .../10d38216ad34_add_timestamps_to_amphora.py | 39 + .../76aacf2e176c_extend_support_udp_protocol.py | 62 + .../ba35e0fb88e1_add_backup_field_to_member.py | 34 + ...72b4e5e_add_octavia_owned_vip_column_to_vip_.py | 34 + octavia/db/migration/cli.py | 4 + octavia/db/models.py | 12 +- octavia/db/prepare.py | 32 +- octavia/db/repositories.py | 191 ++- octavia/distributor/__init__.py | 11 + octavia/distributor/drivers/__init__.py | 11 + .../distributor/drivers/noop_driver/__init__.py | 11 + octavia/hacking/__init__.py | 11 + octavia/hacking/checks.py | 19 +- octavia/network/__init__.py | 11 + octavia/network/base.py | 8 +- octavia/network/data_models.py | 1 + octavia/network/drivers/__init__.py | 11 + octavia/network/drivers/neutron/__init__.py | 11 + .../drivers/neutron/allowed_address_pairs.py | 93 +- octavia/network/drivers/neutron/base.py | 10 + octavia/network/drivers/noop_driver/__init__.py | 11 + octavia/network/drivers/noop_driver/driver.py | 30 +- octavia/policies/__init__.py | 2 + octavia/policies/amphora.py | 9 +- octavia/policies/healthmonitor.py | 15 +- octavia/policies/l7policy.py | 15 +- octavia/policies/l7rule.py | 13 +- octavia/policies/listener.py | 17 +- octavia/policies/loadbalancer.py | 21 +- octavia/policies/member.py | 13 +- octavia/policies/pool.py | 15 +- octavia/policies/provider.py | 30 + octavia/policies/quota.py | 15 +- .../functional/amphorae/backend/agent/__init__.py | 11 + .../amphorae/backend/agent/api_server/__init__.py | 11 + .../backend/agent/api_server/test_keepalivedlvs.py | 466 +++++ .../backend/agent/api_server/test_server.py | 250 ++- .../amphorae/backends/agent/api_server/__init__.py | 11 + .../backends/agent/api_server/test_amphora_info.py | 218 +++ .../agent/api_server/test_haproxy_compatibility.py | 35 +- .../agent/api_server/test_keepalivedlvs.py | 66 + .../backends/agent/api_server/test_listener.py | 10 +- .../backends/agent/api_server/test_osutils.py | 49 +- .../backends/agent/api_server/test_plug.py | 46 +- .../backends/agent/api_server/test_util.py | 196 +++ .../backends/agent/test_agent_jinja_cfg.py | 49 +- .../amphorae/backends/health_daemon/__init__.py | 11 + .../backends/health_daemon/test_envelope.py | 17 + .../backends/health_daemon/test_health_daemon.py | 60 + .../backends/health_daemon/test_health_sender.py | 8 +- .../backends/utils/test_keepalivedlvs_query.py | 393 +++++ .../unit/amphorae/drivers/haproxy/__init__.py | 11 + .../drivers/haproxy/test_rest_api_driver.py | 235 ++- .../amphorae/drivers/health/test_heartbeat_udp.py | 84 +- .../unit/amphorae/drivers/keepalived/__init__.py | 11 + .../amphorae/drivers/keepalived/jinja/__init__.py | 11 + .../test_noop_amphoraloadbalancer_driver.py | 15 + .../unit/api/drivers/amphora_driver/__init__.py | 11 + .../drivers/amphora_driver/test_amphora_driver.py | 422 +++++ .../unit/api/drivers/test_provider_noop_driver.py | 307 ++++ .../unit/api/v2/types/test_health_monitors.py | 19 +- .../unit/certificates/common/auth/__init__.py | 11 + .../certificates/common/auth/test_barbican_acl.py | 43 +- .../unit/certificates/manager/test_barbican.py | 11 + .../certificates/manager/test_barbican_legacy.py | 64 +- .../unit/common/jinja/haproxy/test_jinja_cfg.py | 392 ++++- .../unit/common/jinja/lvs/test_lvs_jinja_cfg.py | 258 +++ .../unit/common/sample_configs/sample_certs.py | 1 + .../unit/common/sample_configs/sample_configs.py | 273 ++- .../unit/common/tls_utils/test_cert_parser.py | 21 +- .../unit/controller/healthmanager/__init__.py | 11 + .../healthmanager/health_drivers/__init__.py | 0 .../health_drivers/test_update_base.py | 38 + .../healthmanager/health_drivers/test_update_db.py | 1244 ++++++++++++++ .../health_drivers/test_update_logging.py | 44 + .../controller/healthmanager/test_update_db.py | 1057 ------------ .../controller/housekeeping/test_house_keeping.py | 77 +- .../controller/worker/flows/test_amphora_flows.py | 25 +- .../worker/tasks/test_amphora_driver_tasks.py | 65 +- .../controller/worker/tasks/test_compute_tasks.py | 6 +- .../worker/tasks/test_controller_tasks.py | 80 - .../controller/worker/tasks/test_database_tasks.py | 84 + .../worker/tasks/test_lifecycle_tasks.py | 4 +- .../controller/worker/tasks/test_network_tasks.py | 64 + .../controller/worker/test_controller_worker.py | 168 +- .../drivers/neutron/test_allowed_address_pairs.py | 148 +- .../unit/network/drivers/neutron/test_base.py | 17 +- .../network/drivers/test_network_noop_driver.py | 29 +- playbooks/image-build/post.yaml | 10 + playbooks/image-build/run.yaml | 47 + .../legacy/grenade-devstack-octavia/post.yaml | 15 + playbooks/legacy/grenade-devstack-octavia/run.yaml | 60 + .../octavia-v1-dsvm-scenario-kvm-centos.7/run.yaml | 2 +- .../Add-UDP-protocol-support-9c011a23525092a1.yaml | 19 + ...f-listener-timeout-values-9a7600c4e21364e3.yaml | 11 + ...mbers-to-be-set-as-backup-e68e46bc52f2fc1f.yaml | 7 + ...aming-for-quota-resources-8e4309a839208cd1.yaml | 7 + ...ity-setting-barbican-acls-85f36747d4284035.yaml | 8 + .../notes/add-sos-element-5d6677471341e7f2.yaml | 3 + .../add-x-forwarded-proto-19a1d971cf43b795.yaml | 4 + ...d_provider_driver_support-7523f130dd5025af.yaml | 44 + ...disable-ping-healthchecks-42fd8c3b88edaf35.yaml | 5 + ...m_eventstreamer_queue_url-7a98bd6a7e92e9de.yaml | 2 +- .../notes/deleted-404-2cdd751e7afbe036.yaml | 7 + .../notes/disable_logging-3b50f388ee2b8127.yaml | 18 + ...ble-mutable-configuration-1d7f62a133148767.yaml | 6 + ...x-multi-amp-down-failover-952618fb8d3d8ae6.yaml | 5 + .../notes/fix-route-table-b2ec0aa7b92d2abc.yaml | 5 + ...nlimited-connection-limit-48079688de033c1a.yaml | 7 + .../notes/new-amphora-fields-fa3ffc5801b5e551.yaml | 5 + .../notes/octavia_v2_RBAC-0eb2b51aa6278435.yaml | 2 +- .../notes/py3-hmac-digest-81696f6b176e7ae4.yaml | 11 + .../remove_user_group_option-56ba749d0064a394.yaml | 5 + ...-make-statuses-consistent-69189f71da2e02e8.yaml | 12 + .../notes/reserved-ips-7ef3a63ab0b6b28a.yaml | 6 + .../notes/statuses_alias-27559e3d74b9eaf0.yaml | 5 + releasenotes/source/index.rst | 1 + .../locale/en_GB/LC_MESSAGES/releasenotes.po | 21 +- releasenotes/source/queens.rst | 6 + requirements.txt | 20 +- setup.cfg | 31 +- specs/version0.5/network-driver-interface.rst | 3 +- specs/version1.0/flavors.rst | 6 +- specs/version1.1/enable-provider-driver.rst | 401 +++-- test-requirements.txt | 7 +- tools/coding-checks.sh | 2 +- tools/create_flow_docs.py | 5 +- tools/ostestr_compat_shim.sh | 8 - tox.ini | 79 +- zuul.d/jobs.yaml | 46 + zuul.d/projects.yaml | 69 +- 553 files changed, 23418 insertions(+), 4617 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 63295b8..a067bd0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13 +13 @@ rfc3986>=0.3.1 # Apache-2.0 -keystoneauth1>=3.3.0 # Apache-2.0 +keystoneauth1>=3.4.0 # Apache-2.0 @@ -15 +15 @@ keystonemiddleware>=4.17.0 # Apache-2.0 -python-neutronclient>=6.3.0 # Apache-2.0 +python-neutronclient>=6.7.0 # Apache-2.0 @@ -19 +19 @@ stevedore>=1.20.0 # Apache-2.0 -oslo.config>=5.1.0 # Apache-2.0 +oslo.config>=5.2.0 # Apache-2.0 @@ -32 +32 @@ PyMySQL>=0.7.6 # MIT License -python-barbicanclient!=4.5.0,!=4.5.1,>=4.0.0 # Apache-2.0 +python-barbicanclient>=4.5.2 # Apache-2.0 @@ -35 +35 @@ python-novaclient>=9.1.0 # Apache-2.0 -pyOpenSSL>=16.2.0 # Apache-2.0 +pyOpenSSL>=17.1.0 # Apache-2.0 @@ -37 +37 @@ WSME>=0.8.0 # MIT -Jinja2!=2.9.0,!=2.9.1,!=2.9.2,!=2.9.3,!=2.9.4,>=2.8 # BSD License (3 clause) +Jinja2>=2.10 # BSD License (3 clause) @@ -41,0 +42,2 @@ castellan>=0.16.0 # Apache-2.0 +tenacity>=4.9.0 # Apache-2.0 +distro>=1.2.0 # Apache-2.0 @@ -44 +46 @@ castellan>=0.16.0 # Apache-2.0 -Flask!=0.11,<1.0,>=0.10 # BSD +Flask!=0.11,>=0.10 # BSD @@ -46,2 +48,2 @@ netifaces>=0.10.4 # MIT -ipaddress>=1.0.16;python_version<'3.3' # PSF -cryptography!=2.0,>=1.9 # BSD/Apache-2.0 +ipaddress>=1.0.17;python_version<'3.3' # PSF +cryptography>=2.1 # BSD/Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index b0ac223..e28d2d9 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -5 +5 @@ hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 -requests-mock>=1.1.0 # Apache-2.0 +requests-mock>=1.2.0 # Apache-2.0 @@ -11 +11,2 @@ oslotest>=3.2.0 # Apache-2.0 -pylint==1.4.5 # GPLv2 +oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0 +pylint==1.9.2 # GPLv2 @@ -20 +21 @@ tempest>=17.1.0 # Apache-2.0 -sphinx!=1.6.6,>=1.6.2 # BSD +sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD
participants (1)
-
no-reply@openstack.org