The Octavia team is happy to announce the 0.8.0 release of Octavia. octavia 0.8.0: OpenStack Octavia Scalable Load Balancer as a Service This release is for the mitaka release series. With source available at: http://git.openstack.org/cgit/openstack/octavia With package available at: https://pypi.python.org/pypi/octavia Release notes: http://docs.openstack.org/releasenotes/octavia/ Please report issues through launchpad: http://bugs.launchpad.net/octavia For more details, please see the 0.8.0 section below. Octavia is the reference implementation for Load Balancing as a Service (LBaaS) in the OpenStack Mitaka release. Thank you to the OpenStack community for all of your support. Michael 0.8.0 ^^^^^ New Features ************ * Adds support for Layer 7 switching and shared pools features to Octavia. This supports the equivalent feature added to Neutron LBaaS v2. * Layer 7 policies allow a tenant / user to define actions the load balancer may take other than routing requests to the default pool. * Layer 7 rules control the logic behind whether a given Layer 7 policy is followed. * Works for HTTP and TERMINATED_HTTPS listeners. * Shared pools allow listeners or Layer 7 REDIRECT_TO_POOL policies to share back-end pools. * Glance image containing the latest Amphora image can now be referenced using a Glance tag. To use the feature, set amp_image_tag in [controller_worker]. Note that amp_image_id should be unset for the new feature to take into effect. * Active/Standby support for Octavia. * When enabled in the configuration file, Octavia will boot an active and standby amphora for each load balancer. * Session persistence is maintained between the active and standby amphora. * Amphora failover is supported when active/standby is enabled. Should the master or backup amphora fail, the health manager will rebuild it. Upgrade Notes ************* * Upgrade requires a database migration. * Shared-pools introduces a new "load_balancer_id" column into the "pools" table. * "pools.load_balancer_id" column is populated from "listeners" data using ETL in the migration. * Two new tables are created to handle Layer 7 switching. These are "l7policy" and "l7rule". * amp_image_id option is deprecated and will be removed in one of the next releases. Operators are adviced to migrate to the new amp_image_tag option. * Upgrade requires a database migration. * Adds tables for active/standby. * Updates load balancer, listener, and amphora tables. Changes in octavia 0.5.2..0.8.0 ------------------------------- NOTE: Skipping requirement commits... ecfca34 Fix admin-state-up 7edd2ae Add VHD support in DIB 8e2c766 Updating unit testing 8d0b162 Add hacking check to ensure not use xrange() f828a9b Single-Create Documentation 89335a3 Change render_unsets default to False 57cdae6 Add unit tests for L7 data model additions 52cb3b0 Fix L7Policy update regression 571d874 Fix session_persistence deletion bug 26d850c Use consistent type checking of project_id in API 37c99a5 Use rfc3986 module for URL validations f4da51c Add CA Cert file config option to validate against SSL endpoints a9fde42 Remove an unused configuration option de41db2 Replace deprecated LOG.warn with LOG.warning 79f48e7 Add missing unit tests for L7 repo classes f6b527b Add unit tests for L7Policy API cb4df2f Add missing unit tests for L7Rule API df5f907 Fix default_pool_id type in l7policy API ad3423a Add maximum number of l7rules per l7policy c3bd87a Adds release notes for Active/Standby 8161b88 Update doc to make it consistent with the actual api d013927 Add pre_test_hook to run gate jobs 81c73bd Make SSH bind to management net only 0fac4f2 Better L7Policy API validations 5844f94 Remove swift related content in the sample local.conf c5c5082 Use "--pub-key" instead of "--pub_key" 61a9894 Add bandit baseline to tox 62cb739 Adds the Cascade Deelete REST API doc fb53fe2 glance: support relying on tags to extract image id feb7a37 Add release notes for L7 and shared pools 4a1acaf Get Me A Load Balancer Controller c7d6146 Get me a Load Balancer API c22bacc Cascading LB delete 06f50c0 Barbican Cert Manager fails to correctly parse intermediates ae82d21 Block deletion of pool in use by L7Policies 7ca43d2 Improved LoadBalancer Delete 428fee9 Use unique SNI identifier when building data model f0cc350 Fix LB/Listener status updates for HM/Member 07a608f Implements: blueprint anti-affinity server group 42c12d7 Remove old SSH specific config options from sample config 71c98e7 Fix health monitor URL in API documentation 90c465e Add a request timeout to the REST API driver fb7e835 Change HMAC compare to use constant_time_compare 4b45a10 Add listener stats API 6cd2ca5 Add L7 documentation 2fabcab Add L7 jinja template updates fbc4a0a Add L7 controller worker flows and tasks e4bdb86 Add L7 api - rules efeb204 Add L7 api - policies 240560b Update repos for L7 rules / validations da57069 Update repos for L7 policy / methods 038cd18 Add L7 database structures 1b992d1 Assign peer_port on listener creation 24ef5c9 Fix model update flows 2c50fd6 Trivial: cleanup unused conf and log variables 07b8c19 Reduce devstack build time by properly using pip caches 044535c Remove unused `paramiko` 0e0b77b Update flake8 exclude cc32f27 Fix improper egress security rule deletion 05b3f7d Fixed make sure to get IPv4 value by awk in sample local.sh file c1aeec1 project_id should not be UUIDType in API validation c31781b Stop using non-existent method of Mock 92046a4 Update data model conversion to be more complete 2e23ede Fix LB status updates d1c41e8 Improve test case test_upload_certificate_md5 042dfd4 Fix amphora failover after health monitor start ab83f5c Fix deleted amphora expiration check 2a0a094 Delete SSH amphora driver 15fdc0e Fix hacking rule of assert_equal_or_not_none 3879917 Stop logging amphora cert generation in debug 3cb4738 Fixes an intermittent load balancer delete failure 460db13 Octavia: API docs Entity Status Fix 025ec00 Allow user-data on amphora creation 4193191 Reverts a workaround that is impacting amp updates c887461 Adding "region and endpoint_type" parameters to barbican_acl.py 6e51606 Do not use __builtin__ in python3 22097dc Adds a parameter to specify endpoint type c7d8f12 Fix / and /v1 API uris 12828aa Use netifaces constants correctly in testing 0e78993 Remove dead code around certificate handling cc48f6e Revert "Fix for ssl context wrapper spam", add warning filter 02528f5 Fixes Octavia flows that are not reverting 4a460b3 Remove out-dated README file be8fa11 Default api_handler to queue_producer c3e97b7 Shared pools support c7f88bb Updates the failover flow for active/standby 2c2be96 Fix for ssl context wrapper spam 2966629 Fix event_queue entry in setup.cfg from EventStreamer break a2f02d3 Add SubjectAltName and KeyUsage for localcertgen 206f573 Fix misspellings b688c55 Use uppercase 'S' in word "OpenStack" 2d87bdb Replace depcrecated Nova networks with Nova interfaces 2409316 Add endpoint override conf option for neutron and nova 63111ac Fixes Octavia Amphora RHEL based images 9bf1d0a Amphora Create now fails when amphora goes into ERROR status e09563d Fix minor typo in warning message ea6fb75 Optimizations for tempest tests 54e8113 Fixes intermittend udp heartbeat test failure 4c96356 Add service name conf option for neutron and nova 6d7bb98 Let drivers decide to use region or not 65ab10a Use signing digest defined in config to sign CSR 158bb0d Make sample web server close connections 87c0cf4 Add APP_COOKIE session persistence type 259538d Change the length of name in the algorithm ae9dc12 Fix typo in migration README.rst c84021a Implementing EventStreamer 1e29270 Fix a typo in the comment d5f48e6 Disable amphora health monitoring on amp delete 1f5031f Remove unused logging import 226eaa5 Fix database_tasks log formating 9fc9eea Make Barbican the default certificate manager 32ebac9 Make pool.lb_algorithm field larger 2564f40 Case-sensitive string checking for Enum fields caecc4f Fix updating session persistence of a pool in DB 8c3e2e1 Disable default haproxy process in amphora image 080f610 Fix a problem of memebrs not deleted from pool 90dc020 Add debug testenv in tox 39aa0f8 Fixed revert of update LB 436ae33 Remove OpenSSL from cert_parser fc5f1d3 Replace deprecated library function os.popen() with subprocess 7e2b178 Fix some inconsistency in docstrings 8e24232 Setup health manager networking for devstack e035cc0 Fix minor inconsistency in models code e0dff5a Move docstrings to the first line of the function definition 5dedb6c Assign load_balancer in _port_to_vip() 835566e Test: make enforce_type=True in CONF.set_override 4a6e5a3 Make Consumer an oslo_service cd5a50a Fixes gate failure 'update_stats' called 0 times 12b1e57 Fix sysctl settings for amphora image f340cdc Use keystoneauth to prevent logging sensitive data 230c9b8 Database repository delete to use one() ce21995 Make Octavia devstack pass env settings to sudo pip install 1d0b76e Expose project_id in octavia api e260341 Rename tenant_id in the network models to project_id 608d0a3 Optimize Taskflow storage (remove some requires parameter) 52351a5 Refactor BarbicanAuth to allow for configurable auth method 8e31a1d Allow choice of upstart or sysvinit 969f811 Rename tenant_id to project_id 4c9e5aa Fix db error when running python34 Unit tests d80256e Add missing unit tests for cw/tasks/network_tasks 13dec23 Add nopreempt support for active/standby 8c741ba Add reno for release notes management 80865ff Add backport keepalived 6ef2cbb Un-pin the amphora-agent version 58cda71 Amphora Flows and Drivers for Active Standby d2072ae Anchor support to Octavia 19c7f93 Add cert tracking and rotating in Housekeeping 900e8a5 Fix api_server agent test that broke due to a dep change 3d1f10b Unify constants usage in flows tests e60244b Fix a test order issue with oslo_config fixture 5a9835c Stop nova driver delete failure on already deleted b7f1dbc Fixes interface_file jinja misconfiguration 2c2baa9 Add unit tests for cmd/house_keeping 21058fa REST Amp Agent: Handle interfaces file too d5e0811 Add Guru Meditation Report feature 48cc768 Get rid of unused dependencies in requirements.txt 6e66ba5 Get rid of unused dependencies in test-requirements.txt b985826 pyasn1 and pyasn1-modules modules no more needed 0d0853f Make amphora ssh access configurable a36f8f2 Fix a problem building spare amphora f9cfd2c New local certificate generator uses local time 88a62cf Use assertIs(Not)None instead of assert(Not)Equal 76e1e02 Removes the use of mutables as default args 456a07f Update HACKING.rst to reflect real syntax checks 1b20470 Fix log message formatting that cause log errors e2453a0 Consumer start log appears at appropriate time 4d12d47 Update Octavia’s Operator API Docs 5b4e4d8 chmod +x on local.sh to allow it to be executed by stack.sh afbade3 Launch consumer without calling oslo messaging wait 604ea75 Swap out pyOpenSSL for cryptography in LocalCertGenerator bbe1c9c Use oslo_config PortOpt type for port options f7a540b Set Hacking rules to check some tests assert cf12ba9 Stop checking if listener exists when uploading cert 734d61c Change assertTrue(isinstance()) by optimal assert a0cc839 Use oslo_config IPOpt support ef04c7c Revert "Add Pillow to docs-requirements.txt" 241c2bb Revert "Bypass listener check on cert deploy during create" e54a68c Bypass listener check on cert deploy during create 58899d9 REST Amp Agent: Compare lower case MAC Addresses 963491a Fixes TLS processing in the rest driver 6ff8907 Adds cert_manager option to octavia.conf dd561d1 Fix argument order for assertEqual 7525101 Use assertTrue instead of assertEqual(True, ***) 319c523 Use assertIn and assertNotIn f931d7c Mock module import standardisation 887012f Add environment varible to skip amp image build 0ac47cf Fixing help string for octavia.conf option 4ffa5b6 Fixes missing testresource dependency cf79c70 Minor restructuring of documentation tree cf19171 Add .eggs/ to .gitignore 811f7a5 Adding init.d script 6f7c635 Change amphora_id to compute_id in compute drivers 93f84e0 Unify constants usage in taskflow flows c287c9f Improve logging in octavia.controller 3d91ce4 Improve logging in octavia.common c656da7 Improve logging in octavia.amphorae eccb447 Improve logging in octavia.api 76437fd Improve logging in octavia.network 6f16648 Improve logging in octavia.cmd e7eaba1 Improve logging in octavia.certificates dd1e3c0 Replace wrong Nova references to Compute ones d41599e Add Pillow to docs-requirements.txt fc2e5b9 Update some release related texts 44f7131 Remove oslo-incubator files 33ca8f3 Unify constants usage final instalment 01abc3f Allow drivers to be overridden for devstack 0c80a3b Get noop drivers to function within flows Diffstat (except docs and test files) ------------------------------------- .gitignore | 4 + HACKING.rst | 18 +- README.rst | 13 + devstack/plugin.sh | 47 +- devstack/samples/local.conf | 21 +- devstack/samples/local.sh | 7 +- devstack/samples/webserver.sh | 5 +- devstack/settings | 6 + diskimage-create/README.rst | 2 +- diskimage-create/diskimage-create.sh | 31 +- elements/amphora-agent-ubuntu/README.rst | 3 + elements/amphora-agent-ubuntu/element-deps | 1 + .../install.d/75-run_setup_install | 13 + .../source-repository-amphora-agent | 2 + elements/amphora-agent-ubuntu/svc-map | 2 + .../amphora-agent/install.d/75-run_setup_install | 2 +- .../configure.d/20-haproxy-tune-kernel | 47 - .../post-install.d/20-disable-default-haproxy | 6 + .../post-install.d/20-haproxy-tune-kernel | 31 + .../configure.d/20-haproxy-tune-kernel | 47 - .../post-install.d/20-disable-default-haproxy | 7 + .../post-install.d/20-haproxy-tune-kernel | 31 + elements/keepalived-octavia-ubuntu/README.rst | 3 + elements/keepalived-octavia-ubuntu/element-deps | 2 + .../package-installs.json | 3 + .../pre-install.d/00-backports | 7 + elements/keepalived-octavia-ubuntu/svc-map | 2 + elements/keepalived-octavia/README.rst | 3 + elements/keepalived-octavia/element-deps | 2 + elements/keepalived-octavia/package-installs.json | 3 + .../post-install.d/20-enable-keepalived | 6 + elements/keepalived-octavia/svc-map | 2 + elements/no-resolvconf/README.rst | 9 + .../finalise.d/99-disable-resolv-conf | 7 + elements/rebind-sshd/README.rst | 8 + .../finalise.d/98-rebind-sshd-after-dhcp | 11 + elements/vrrp-octavia/README.rst | 3 - elements/vrrp-octavia/element-deps | 1 - elements/vrrp-octavia/install.d/77-vrrp | 9 - .../vrrp-octavia/source-repository-vrrp-octavia | 2 - elements/vrrp-octavia/svc-map | 2 - etc/initd/amphora-agent | 67 + etc/octavia.conf | 154 +- octavia/amphorae/backends/agent/agent_jinja_cfg.py | 3 + .../backends/agent/api_server/amphora_info.py | 26 + .../backends/agent/api_server/keepalived.py | 115 ++ .../amphorae/backends/agent/api_server/listener.py | 125 +- octavia/amphorae/backends/agent/api_server/plug.py | 4 +- .../amphorae/backends/agent/api_server/server.py | 28 +- .../agent/api_server/templates/haproxy.conf.j2 | 54 - .../agent/api_server/templates/keepalived.conf.j2 | 67 + .../templates/keepalived_check_script.conf.j2 | 26 + .../agent/api_server/templates/sysvinit.conf.j2 | 217 +++ .../agent/api_server/templates/upstart.conf.j2 | 56 + octavia/amphorae/backends/agent/api_server/util.py | 61 +- .../agent/templates/amphora_agent_conf.template | 4 + .../backends/health_daemon/status_message.py | 9 +- octavia/amphorae/backends/utils/haproxy_query.py | 12 +- octavia/amphorae/drivers/base.py | 0 octavia/amphorae/drivers/driver_base.py | 55 + octavia/amphorae/drivers/haproxy/exceptions.py | 14 +- octavia/amphorae/drivers/haproxy/jinja/__init__.py | 0 .../amphorae/drivers/haproxy/jinja/jinja_cfg.py | 270 --- .../drivers/haproxy/jinja/templates/__init__.py | 0 .../haproxy/jinja/templates/haproxy_base.template | 33 - .../jinja/templates/haproxy_listener.template | 27 - .../jinja/templates/haproxy_loadbalancer.template | 29 - .../jinja/templates/haproxy_proxies.template | 95 - .../amphorae/drivers/haproxy/rest_api_driver.py | 110 +- octavia/amphorae/drivers/haproxy/ssh_driver.py | 310 --- octavia/amphorae/drivers/health/heartbeat_udp.py | 7 +- octavia/amphorae/drivers/keepalived/__init__.py | 0 .../amphorae/drivers/keepalived/jinja/__init__.py | 0 .../amphorae/drivers/keepalived/jinja/jinja_cfg.py | 97 + .../drivers/keepalived/jinja/templates/__init__.py | 0 .../jinja/templates/keepalived_base.template | 56 + .../drivers/keepalived/vrrp_rest_driver.py | 92 + octavia/amphorae/drivers/noop_driver/driver.py | 25 +- octavia/api/app.py | 2 +- octavia/api/root_controller.py | 3 +- octavia/api/v1/controllers/__init__.py | 5 +- octavia/api/v1/controllers/base.py | 64 +- octavia/api/v1/controllers/health_monitor.py | 183 +- octavia/api/v1/controllers/l7policy.py | 185 ++ octavia/api/v1/controllers/l7rule.py | 169 ++ octavia/api/v1/controllers/listener.py | 183 +- octavia/api/v1/controllers/listener_statistics.py | 57 + octavia/api/v1/controllers/load_balancer.py | 171 +- octavia/api/v1/controllers/member.py | 165 +- octavia/api/v1/controllers/pool.py | 235 ++- octavia/api/v1/handlers/abstract_handler.py | 2 + .../v1/handlers/controller_simulator/handler.py | 224 ++- octavia/api/v1/handlers/queue/producer.py | 36 + octavia/api/v1/hooks.py | 16 +- octavia/api/v1/types/base.py | 28 +- octavia/api/v1/types/health_monitor.py | 10 +- octavia/api/v1/types/l7policy.py | 84 + octavia/api/v1/types/l7rule.py | 57 + octavia/api/v1/types/listener.py | 44 +- octavia/api/v1/types/listener_statistics.py | 25 + octavia/api/v1/types/load_balancer.py | 26 +- octavia/api/v1/types/member.py | 2 + octavia/api/v1/types/pool.py | 55 +- octavia/certificates/common/auth/__init__.py | 0 octavia/certificates/common/auth/barbican_acl.py | 50 + octavia/certificates/common/barbican.py | 34 +- octavia/certificates/common/cert.py | 2 +- octavia/certificates/generator/anchor.py | 68 + octavia/certificates/generator/barbican.py | 111 -- octavia/certificates/generator/local.py | 192 +- octavia/certificates/manager/barbican.py | 61 +- octavia/certificates/manager/cert_mgr.py | 13 +- octavia/certificates/manager/local.py | 167 -- octavia/cmd/agent.py | 7 +- octavia/cmd/api.py | 7 +- octavia/cmd/haproxy_vrrp_check.py | 64 + octavia/cmd/health_manager.py | 13 +- octavia/cmd/house_keeping.py | 34 +- octavia/cmd/octavia_worker.py | 18 +- octavia/common/clients.py | 86 +- octavia/common/config.py | 253 ++- octavia/common/constants.py | 150 +- octavia/common/context.py | 5 +- octavia/common/data_models.py | 338 +++- octavia/common/exceptions.py | 72 +- octavia/common/jinja/__init__.py | 0 octavia/common/jinja/haproxy/__init__.py | 0 octavia/common/jinja/haproxy/jinja_cfg.py | 334 ++++ octavia/common/jinja/haproxy/templates/__init__.py | 0 octavia/common/jinja/haproxy/templates/base.j2 | 35 + .../common/jinja/haproxy/templates/haproxy.cfg.j2 | 41 + octavia/common/jinja/haproxy/templates/macros.j2 | 204 ++ octavia/common/jinja/templates/__init__.py | 0 .../templates/user_data_config_drive.template | 34 + octavia/common/jinja/user_data_jinja_cfg.py | 41 + octavia/common/keystone.py | 9 +- octavia/common/service.py | 2 - octavia/common/tls_utils/cert_parser.py | 82 +- octavia/common/utils.py | 8 +- octavia/common/validate.py | 200 ++ octavia/compute/compute_base.py | 38 +- octavia/compute/drivers/noop_driver/driver.py | 114 +- octavia/compute/drivers/nova_driver.py | 149 +- octavia/controller/healthmanager/health_manager.py | 10 +- octavia/controller/healthmanager/update_db.py | 262 +++ .../healthmanager/update_health_mixin.py | 179 -- .../controller/healthmanager/update_serializer.py | 47 + .../controller/healthmanager/update_stats_mixin.py | 69 - octavia/controller/housekeeping/house_keeping.py | 36 +- octavia/controller/queue/consumer.py | 31 +- octavia/controller/queue/endpoint.py | 52 +- octavia/controller/queue/event_queue.py | 71 + octavia/controller/worker/controller_worker.py | 456 +++-- octavia/controller/worker/flows/amphora_flows.py | 386 +++- .../worker/flows/health_monitor_flows.py | 28 +- octavia/controller/worker/flows/l7policy_flows.py | 73 + octavia/controller/worker/flows/l7rule_flows.py | 73 + octavia/controller/worker/flows/listener_flows.py | 61 +- .../controller/worker/flows/load_balancer_flows.py | 253 ++- octavia/controller/worker/flows/member_flows.py | 30 +- octavia/controller/worker/flows/pool_flows.py | 41 +- .../worker/tasks/amphora_driver_tasks.py | 160 +- octavia/controller/worker/tasks/cert_task.py | 5 +- octavia/controller/worker/tasks/compute_tasks.py | 145 +- .../controller/worker/tasks/controller_tasks.py | 45 +- octavia/controller/worker/tasks/database_tasks.py | 678 +++++-- octavia/controller/worker/tasks/model_tasks.py | 3 +- octavia/controller/worker/tasks/network_tasks.py | 68 +- octavia/db/base_models.py | 87 +- octavia/db/migration/alembic_migrations/README.rst | 2 +- ...09101b9b_add_server_group_id_to_loadbalancer.py | 38 + ...c1d83044c_keepalived_configuration_datamodel.py | 85 + .../versions/29ff921a6eb_shared_pools.py | 76 + .../43287cd10fef_make_pool_lb_algorithm_larger.py | 43 + .../versions/458c9ee2a011_l7_policies_and_rules.py | 149 ++ ..._add_cert_expiration__infor_in_amphora_table.py | 37 + .../6abb04f24c5_tenant_id_to_project_id.py | 40 + octavia/db/models.py | 200 +- octavia/db/prepare.py | 142 ++ octavia/db/repositories.py | 412 +++- octavia/hacking/checks.py | 127 +- octavia/network/data_models.py | 12 +- octavia/network/drivers/neutron/README | 3 - .../drivers/neutron/allowed_address_pairs.py | 116 +- octavia/network/drivers/neutron/base.py | 21 +- octavia/network/drivers/neutron/utils.py | 10 +- octavia/network/drivers/noop_driver/driver.py | 45 +- octavia/openstack/__init__.py | 0 octavia/openstack/common/__init__.py | 0 octavia/openstack/common/_i18n.py | 45 - octavia/openstack/common/cache/__init__.py | 0 octavia/openstack/common/cache/backends.py | 250 --- octavia/openstack/common/cache/cache.py | 92 - octavia/opts.py | 1 + .../backend/agent/api_server/test_server.py | 169 +- .../agent/api_server/test_server_sysvinit.py | 709 +++++++ .../functional/api/v1/test_listener_statistics.py | 37 + .../backends/agent/api_server/test_keepalived.py | 48 + .../backends/agent/api_server/test_listener.py | 62 +- .../backends/agent/api_server/test_plug.py | 35 + .../backends/agent/api_server/test_utils.py | 37 + .../backends/agent/test_agent_jinja_cfg.py | 126 +- .../backends/health_daemon/test_envelope.py | 4 +- .../backends/health_daemon/test_health_daemon.py | 8 +- .../backends/health_daemon/test_health_sender.py | 6 +- .../amphorae/drivers/haproxy/jinja/__init__.py | 0 .../drivers/haproxy/jinja/test_jinja_cfg.py | 300 --- .../drivers/haproxy/test_rest_api_driver.py | 158 +- .../amphorae/drivers/haproxy/test_ssh_driver.py | 331 ---- .../amphorae/drivers/health/test_heartbeat_udp.py | 55 +- .../unit/amphorae/drivers/keepalived/__init__.py | 0 .../amphorae/drivers/keepalived/jinja/__init__.py | 0 .../drivers/keepalived/jinja/test_jinja_cfg.py | 105 + .../drivers/keepalived/test_vrrp_rest_driver.py | 64 + .../test_noop_amphoraloadbalancer_driver.py | 29 +- .../unit/api/v1/handlers/queue/test_producer.py | 63 +- .../unit/api/v1/types/test_health_monitors.py | 9 +- .../unit/certificates/common/auth/__init__.py | 0 .../certificates/common/auth/test_barbican_acl.py | 61 + .../unit/certificates/common/test_barbican.py | 58 +- .../unit/certificates/generator/test_anchor.py | 48 + .../unit/certificates/generator/test_barbican.py | 74 - .../unit/certificates/generator/test_local.py | 186 +- .../unit/certificates/manager/test_barbican.py | 114 +- .../unit/common/jinja/haproxy/test_jinja_cfg.py | 407 ++++ .../unit/common/jinja/test_user_data_jinja_cfg.py | 55 + .../unit/common/sample_configs/sample_configs.py | 418 +++- .../unit/common/tls_utils/test_cert_parser.py | 31 +- .../compute/drivers/test_compute_noop_driver.py | 32 +- .../healthmanager/test_health_manager.py | 8 +- .../controller/healthmanager/test_health_mixin.py | 361 ---- .../controller/healthmanager/test_update_db.py | 504 +++++ .../healthmanager/test_update_serializer.py | 39 + .../healthmanager/test_update_stats_mixin.py | 72 - .../controller/housekeeping/test_house_keeping.py | 82 +- .../controller/worker/flows/test_amphora_flows.py | 323 +++- .../worker/flows/test_health_monitor_flows.py | 34 +- .../controller/worker/flows/test_l7policy_flows.py | 67 + .../controller/worker/flows/test_l7rule_flows.py | 67 + .../controller/worker/flows/test_listener_flows.py | 54 +- .../worker/flows/test_load_balancer_flows.py | 216 ++- .../controller/worker/flows/test_member_flows.py | 33 +- .../controller/worker/flows/test_pool_flows.py | 44 +- .../worker/tasks/test_amphora_driver_tasks.py | 187 +- .../unit/controller/worker/tasks/test_cert_task.py | 2 +- .../controller/worker/tasks/test_compute_tasks.py | 230 ++- .../worker/tasks/test_controller_tasks.py | 47 +- .../controller/worker/tasks/test_database_tasks.py | 665 ++++++- .../controller/worker/tasks/test_model_tasks.py | 9 +- .../controller/worker/tasks/test_network_tasks.py | 127 +- .../controller/worker/test_controller_worker.py | 605 ++++-- .../drivers/neutron/test_allowed_address_pairs.py | 58 +- .../network/drivers/test_network_noop_driver.py | 6 +- openstack-common.conf | 6 - releasenotes/notes/.placeholder | 0 .../add-shared-pools-and-l7-ef9edf01bb9058e0.yaml | 26 + ...e-tags-for-amphora-images-28bd9df1ed4b9ca3.yaml | 9 + .../octavia-active-standby-cec5d2ad4fd214d8.yaml | 19 + releasenotes/source/_static/.placeholder | 0 releasenotes/source/_templates/.placeholder | 0 releasenotes/source/conf.py | 276 +++ releasenotes/source/index.rst | 9 + releasenotes/source/liberty.rst | 6 + releasenotes/source/unreleased.rst | 5 + requirements.txt | 70 +- setup.cfg | 14 +- specs/template.rst | 4 +- specs/version0.5/active_passive_loadbalancer.rst | 389 ---- specs/version0.5/controller-worker.rst | 2 +- specs/version0.5/tls-data-security.rst | 2 +- specs/version1/active_passive_loadbalancer.rst | 389 ++++ specs/version1/design.rst | 82 - .../version1/use_glance_tag_to_refer_to_image.rst | 147 ++ test-requirements.txt | 21 +- tox.ini | 22 +- 322 files changed, 25092 insertions(+), 9369 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index f8c023a..0ca772a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,15 +4,13 @@ -alembic>=0.8.0 -pecan>=1.0.0 -pbr>=1.6 -SQLAlchemy<1.1.0,>=0.9.9 -anyjson>=0.3.3 -Babel>=1.3 -eventlet>=0.17.4 -requests>=2.5.2 -iso8601>=0.1.9 -jsonrpclib -keystonemiddleware>=2.0.0 -netaddr!=0.7.16,>=0.7.12 -python-neutronclient>=2.6.0 -WebOb>=1.2.3 -six>=1.9.0 +alembic>=0.8.0 # MIT +pecan>=1.0.0 # BSD +pbr>=1.6 # Apache-2.0 +SQLAlchemy<1.1.0,>=1.0.10 # MIT +Babel>=1.3 # BSD +eventlet!=0.18.3,>=0.18.2 # MIT +requests!=2.9.0,>=2.8.1 # Apache-2.0 +rfc3986>=0.2.0 # Apache-2.0 +keystoneauth1>=2.1.0 # Apache-2.0 +keystonemiddleware!=4.1.0,>=4.0.0 # Apache-2.0 +python-neutronclient!=4.1.0,>=2.6.0 # Apache-2.0 +WebOb>=1.2.3 # MIT +six>=1.9.0 # MIT @@ -20 +18 @@ stevedore>=1.5.0 # Apache-2.0 -oslo.config>=2.3.0 # Apache-2.0 +oslo.config>=3.7.0 # Apache-2.0 @@ -22,5 +20,6 @@ oslo.context>=0.2.0 # Apache-2.0 -oslo.db>=2.4.1 # Apache-2.0 -oslo.i18n>=1.5.0 # Apache-2.0 -oslo.log>=1.8.0 # Apache-2.0 -oslo.messaging!=1.17.0,!=1.17.1,>=1.16.0 # Apache-2.0 -oslo.middleware>=2.8.0 # Apache-2.0 +oslo.db>=4.1.0 # Apache-2.0 +oslo.i18n>=2.1.0 # Apache-2.0 +oslo.log>=1.14.0 # Apache-2.0 +oslo.messaging>=4.0.0 # Apache-2.0 +oslo.middleware>=3.0.0 # Apache-2.0 +oslo.reports>=0.6.0 # Apache-2.0 @@ -28,2 +27,3 @@ oslo.rootwrap>=2.0.0 # Apache-2.0 -oslo.serialization>=1.4.0 # Apache-2.0 -oslo.utils>=2.0.0 # Apache-2.0 +oslo.serialization>=1.10.0 # Apache-2.0 +oslo.service>=1.0.0 # Apache-2.0 +oslo.utils>=3.5.0 # Apache-2.0 @@ -31,11 +31,7 @@ PyMySQL>=0.6.2 # MIT License -python-barbicanclient>=3.3.0 -python-keystoneclient>=1.6.0 -python-novaclient>=2.28.1 -pyOpenSSL>=0.14 -WSME>=0.7 -pyasn1 -pyasn1-modules -Jinja2>=2.6 # BSD License (3 clause) -paramiko>=1.13.0 -taskflow>=1.16.0 -networkx>=1.10 +python-barbicanclient>=3.3.0 # Apache-2.0 +python-glanceclient>=2.0.0 # Apache-2.0 +python-novaclient!=2.33.0,>=2.29.0 # Apache-2.0 +pyOpenSSL>=0.14 # Apache-2.0 +WSME>=0.8 # MIT +Jinja2>=2.8 # BSD License (3 clause) +taskflow>=1.26.0 # Apache-2.0 @@ -44,2 +40,2 @@ networkx>=1.10 -Flask<1.0,>=0.10 -netifaces>=0.10.4 +Flask<1.0,>=0.10 # BSD +netifaces>=0.10.4 # MIT @@ -47 +43 @@ netifaces>=0.10.4 -cryptography>=1.0 # Apache-2.0 +cryptography>=1.0 # BSD/Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index b1b921d..13fab87 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -5,5 +5,3 @@ hacking<0.10,>=0.9.1 -requests-mock>=0.6.0 # Apache-2.0 -cliff>=1.14.0 # Apache-2.0 -coverage>=3.6 -fixtures>=1.3.1 -mock>=1.2 +requests-mock>=0.7.0 # Apache-2.0 +coverage>=3.6 # Apache-2.0 +mock>=1.2 # BSD @@ -11,2 +9 @@ pyroute2>=0.3.10 # Apache-2.0 (+ dual licensed GPL2) -python-subunit>=0.0.18 -ordereddict +python-subunit>=0.0.18 # Apache-2.0/BSD @@ -14,3 +11,4 @@ oslotest>=1.10.0 # Apache-2.0 -testrepository>=0.0.18 -testtools>=1.4.0 -WebTest>=2.0 +testrepository>=0.0.18 # Apache-2.0/BSD +testtools>=1.4.0 # MIT +testresources>=0.2.4 # Apache-2.0/BSD +WebTest>=2.0 # MIT @@ -18 +16,2 @@ doc8 # Apache-2.0 - +reno>=0.1.1 # Apache2 +bandit>=0.17.3 # Apache-2.0