octavia 14.0.0.0rc1__py3-none-any.whl → 15.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- octavia/amphorae/backends/agent/agent_jinja_cfg.py +1 -4
- octavia/amphorae/backends/agent/api_server/amphora_info.py +5 -5
- octavia/amphorae/backends/agent/api_server/keepalived.py +26 -53
- octavia/amphorae/backends/agent/api_server/keepalivedlvs.py +44 -83
- octavia/amphorae/backends/agent/api_server/loadbalancer.py +94 -112
- octavia/amphorae/backends/agent/api_server/lvs_listener_base.py +1 -1
- octavia/amphorae/backends/agent/api_server/osutils.py +11 -8
- octavia/amphorae/backends/agent/api_server/plug.py +12 -13
- octavia/amphorae/backends/agent/api_server/server.py +4 -3
- octavia/amphorae/backends/agent/api_server/templates/keepalived_lvs_check_script.sh.j2 +0 -4
- octavia/amphorae/backends/agent/api_server/util.py +23 -68
- octavia/amphorae/backends/agent/templates/amphora_agent_conf.template +0 -3
- octavia/amphorae/backends/health_daemon/health_daemon.py +6 -7
- octavia/amphorae/backends/health_daemon/health_sender.py +2 -2
- octavia/amphorae/backends/utils/haproxy_query.py +3 -6
- octavia/amphorae/backends/utils/interface.py +11 -50
- octavia/amphorae/backends/utils/interface_file.py +29 -16
- octavia/amphorae/backends/utils/ip_advertisement.py +1 -1
- octavia/amphorae/backends/utils/keepalivedlvs_query.py +7 -8
- octavia/amphorae/backends/utils/network_namespace.py +3 -3
- octavia/amphorae/backends/utils/nftable_utils.py +33 -11
- octavia/amphorae/drivers/driver_base.py +2 -2
- octavia/amphorae/drivers/haproxy/rest_api_driver.py +26 -38
- octavia/amphorae/drivers/health/heartbeat_udp.py +1 -1
- octavia/amphorae/drivers/keepalived/jinja/jinja_cfg.py +1 -2
- octavia/amphorae/drivers/keepalived/jinja/templates/keepalived_base.template +0 -1
- octavia/amphorae/drivers/noop_driver/driver.py +1 -1
- octavia/api/app.py +1 -2
- octavia/api/common/pagination.py +16 -22
- octavia/api/common/types.py +1 -1
- octavia/api/drivers/amphora_driver/v2/driver.py +6 -6
- octavia/api/drivers/driver_agent/driver_listener.py +3 -3
- octavia/api/drivers/driver_agent/driver_updater.py +1 -1
- octavia/api/drivers/noop_driver/driver.py +1 -1
- octavia/api/root_controller.py +2 -2
- octavia/api/v2/controllers/base.py +2 -4
- octavia/api/v2/controllers/health_monitor.py +5 -3
- octavia/api/v2/controllers/listener.py +2 -2
- octavia/api/v2/controllers/load_balancer.py +7 -0
- octavia/api/v2/controllers/member.py +12 -2
- octavia/api/v2/types/amphora.py +1 -1
- octavia/api/v2/types/availability_zone_profile.py +1 -2
- octavia/api/v2/types/availability_zones.py +1 -2
- octavia/api/v2/types/flavor_profile.py +1 -1
- octavia/api/v2/types/flavors.py +1 -1
- octavia/api/v2/types/health_monitor.py +1 -1
- octavia/api/v2/types/l7policy.py +1 -1
- octavia/api/v2/types/l7rule.py +1 -1
- octavia/api/v2/types/listener.py +3 -3
- octavia/api/v2/types/load_balancer.py +3 -3
- octavia/api/v2/types/member.py +2 -2
- octavia/api/v2/types/pool.py +2 -2
- octavia/api/v2/types/quotas.py +2 -2
- octavia/certificates/common/barbican.py +1 -1
- octavia/certificates/common/cert.py +1 -1
- octavia/certificates/generator/cert_gen.py +1 -1
- octavia/certificates/generator/local.py +5 -5
- octavia/certificates/manager/cert_mgr.py +1 -1
- octavia/certificates/manager/local.py +20 -20
- octavia/cmd/agent.py +3 -3
- octavia/cmd/driver_agent.py +2 -3
- octavia/cmd/health_checker.py +4 -4
- octavia/cmd/interface.py +4 -4
- octavia/cmd/prometheus_proxy.py +11 -13
- octavia/common/base_taskflow.py +3 -3
- octavia/common/clients.py +4 -4
- octavia/common/config.py +18 -24
- octavia/common/constants.py +28 -35
- octavia/common/data_models.py +2 -2
- octavia/common/jinja/haproxy/combined_listeners/jinja_cfg.py +5 -5
- octavia/common/jinja/logging/logging_jinja_cfg.py +1 -1
- octavia/common/jinja/lvs/jinja_cfg.py +1 -1
- octavia/common/jinja/user_data_jinja_cfg.py +1 -1
- octavia/common/keystone.py +1 -1
- octavia/common/policy.py +2 -3
- octavia/common/stats.py +1 -1
- octavia/common/tls_utils/cert_parser.py +2 -1
- octavia/common/utils.py +3 -3
- octavia/common/validate.py +9 -13
- octavia/compute/compute_base.py +1 -1
- octavia/compute/drivers/noop_driver/driver.py +1 -1
- octavia/compute/drivers/nova_driver.py +1 -1
- octavia/controller/healthmanager/health_manager.py +1 -1
- octavia/controller/housekeeping/house_keeping.py +2 -2
- octavia/controller/queue/v2/consumer.py +1 -2
- octavia/controller/queue/v2/endpoints.py +1 -1
- octavia/controller/worker/amphora_rate_limit.py +6 -6
- octavia/controller/worker/task_utils.py +1 -1
- octavia/controller/worker/v2/controller_worker.py +3 -3
- octavia/controller/worker/v2/flows/amphora_flows.py +15 -4
- octavia/controller/worker/v2/flows/flow_utils.py +6 -5
- octavia/controller/worker/v2/flows/health_monitor_flows.py +1 -1
- octavia/controller/worker/v2/flows/l7policy_flows.py +1 -1
- octavia/controller/worker/v2/flows/l7rule_flows.py +1 -1
- octavia/controller/worker/v2/flows/listener_flows.py +18 -6
- octavia/controller/worker/v2/flows/load_balancer_flows.py +1 -1
- octavia/controller/worker/v2/flows/member_flows.py +12 -19
- octavia/controller/worker/v2/flows/pool_flows.py +1 -1
- octavia/controller/worker/v2/taskflow_jobboard_driver.py +17 -3
- octavia/controller/worker/v2/tasks/compute_tasks.py +1 -3
- octavia/controller/worker/v2/tasks/network_tasks.py +3 -4
- octavia/db/base_models.py +21 -9
- octavia/db/migration/alembic_migrations/versions/034756a182a2_amphora_add_image_id.py +2 -2
- octavia/db/migration/alembic_migrations/versions/034b2dc2f3e0_modernize_l7policy_fields.py +31 -31
- octavia/db/migration/alembic_migrations/versions/0f242cf02c74_add_provider_column.py +2 -2
- octavia/db/migration/alembic_migrations/versions/10d38216ad34_add_timestamps_to_amphora.py +4 -4
- octavia/db/migration/alembic_migrations/versions/11e4bb2bb8ef_fix_ipv6_vip.py +1 -1
- octavia/db/migration/alembic_migrations/versions/13500e2e978d_update_url_and_name_size.py +6 -6
- octavia/db/migration/alembic_migrations/versions/14892634e228_update_vip.py +5 -5
- octavia/db/migration/alembic_migrations/versions/186509101b9b_add_server_group_id_to_loadbalancer.py +2 -2
- octavia/db/migration/alembic_migrations/versions/1afc932f1ca2_l7rule_support_client_cert.py +3 -3
- octavia/db/migration/alembic_migrations/versions/1e4c1d83044c_keepalived_configuration_datamodel.py +26 -26
- octavia/db/migration/alembic_migrations/versions/2351ea316465_adding_terminate_https_tls_ref_support.py +4 -4
- octavia/db/migration/alembic_migrations/versions/256852d5ff7c_add_lb_network_ip_to_amphora.py +2 -2
- octavia/db/migration/alembic_migrations/versions/27e54d00c3cd_add_monitor_address_and_port_to_member.py +4 -4
- octavia/db/migration/alembic_migrations/versions/298eac0640a7_add_amphora_vrrp_port_id_and_ha_port_id.py +4 -4
- octavia/db/migration/alembic_migrations/versions/29ff921a6eb_shared_pools.py +3 -3
- octavia/db/migration/alembic_migrations/versions/2ad093f6353f_add_listener_client_ca_tls_certificate_.py +2 -2
- octavia/db/migration/alembic_migrations/versions/31f7653ded67_allow_multiple_vips_per_loadbalancer.py +10 -10
- octavia/db/migration/alembic_migrations/versions/32e5c35b26a8_add_l7policy_and_l7rule_quota.py +4 -4
- octavia/db/migration/alembic_migrations/versions/357d17a6d5ac_update_lb_and_amphora_data_model_for_.py +20 -20
- octavia/db/migration/alembic_migrations/versions/35dee79d5865_initial_create.py +185 -185
- octavia/db/migration/alembic_migrations/versions/36b94648fef8_add_timestamp.py +2 -2
- octavia/db/migration/alembic_migrations/versions/392fb85b4419_add_primary_key_to_spares_pool.py +1 -1
- octavia/db/migration/alembic_migrations/versions/3a1e1cdb7b27_rename_amphora_host_id.py +1 -1
- octavia/db/migration/alembic_migrations/versions/3b199c848b96_create_no_monitor_operational_status.py +1 -1
- octavia/db/migration/alembic_migrations/versions/3e5b37a0bdb9_add_vrrp_ip_and_ha_ip_to_amphora.py +4 -4
- octavia/db/migration/alembic_migrations/versions/3f8ff3be828e_create_quotas_table.py +12 -12
- octavia/db/migration/alembic_migrations/versions/43287cd10fef_make_pool_lb_algorithm_larger.py +6 -6
- octavia/db/migration/alembic_migrations/versions/443fe6676637_add_network_id_to_vip.py +2 -2
- octavia/db/migration/alembic_migrations/versions/44a2414dd683_adding_name_column_to_member_and_health_.py +1 -1
- octavia/db/migration/alembic_migrations/versions/458c9ee2a011_l7_policies_and_rules.py +57 -57
- octavia/db/migration/alembic_migrations/versions/46d914b2a5e5_seed_the_spares_pool_table.py +2 -2
- octavia/db/migration/alembic_migrations/versions/48660b6643f0_add_new_states_for_amphora.py +3 -3
- octavia/db/migration/alembic_migrations/versions/4aeb9e23ad43_add_draining_operating_status.py +1 -1
- octavia/db/migration/alembic_migrations/versions/4c094013699a_update_load_balancer_amphora.py +9 -9
- octavia/db/migration/alembic_migrations/versions/4f65b4f91c39_amphora_add_flavor_id.py +2 -2
- octavia/db/migration/alembic_migrations/versions/4faaa983e7a9_update_member_address_column.py +1 -1
- octavia/db/migration/alembic_migrations/versions/4fe8240425b4_update_vip_add_subnet_id.py +2 -2
- octavia/db/migration/alembic_migrations/versions/52377704420e_add_timestamps_to_healthmonitor.py +9 -9
- octavia/db/migration/alembic_migrations/versions/5309960964f8_add_proxy_protocol_for_pool.py +3 -3
- octavia/db/migration/alembic_migrations/versions/543f5d8e4e56_add_a_column_busy_in_table_amphora_health.py +2 -2
- octavia/db/migration/alembic_migrations/versions/55874a4ceed6_add_l7policy_action_redirect_prefix.py +5 -5
- octavia/db/migration/alembic_migrations/versions/5a3ee5472c31_add_cert_expiration__infor_in_amphora_table.py +4 -4
- octavia/db/migration/alembic_migrations/versions/62816c232310_fix_migration_for_mysql_5_7.py +1 -1
- octavia/db/migration/alembic_migrations/versions/6742ca1b27c2_add_l7policy_redirect_http_code.py +2 -2
- octavia/db/migration/alembic_migrations/versions/6ac558d7fc21_add_prometheus_listener_protocol.py +3 -3
- octavia/db/migration/alembic_migrations/versions/6ffc710674ef_spares_pool_table.py +2 -2
- octavia/db/migration/alembic_migrations/versions/7432f1d4ea83_add_http_host_head_inject_for_http_health_check.py +4 -4
- octavia/db/migration/alembic_migrations/versions/74aae261694c_extend_pool_for_backend_ca_and_crl.py +4 -4
- octavia/db/migration/alembic_migrations/versions/76aacf2e176c_extend_support_udp_protocol.py +3 -3
- octavia/db/migration/alembic_migrations/versions/80dba23a159f_tags_support.py +3 -3
- octavia/db/migration/alembic_migrations/versions/82b9402e71fd_update_vip_address_size.py +1 -1
- octavia/db/migration/alembic_migrations/versions/8ac4ed24df3a_add_availability_zone_to_lb.py +4 -4
- octavia/db/migration/alembic_migrations/versions/8b47b2546312_sctp_support.py +2 -2
- octavia/db/migration/alembic_migrations/versions/8c0851bdf6c3_change_tls_container_id_length_in_sni_.py +1 -1
- octavia/db/migration/alembic_migrations/versions/92fe9857279_create_healthmanager_table.py +3 -3
- octavia/db/migration/alembic_migrations/versions/9b5473976d6d_add_provisioning_status_to_objects.py +10 -10
- octavia/db/migration/alembic_migrations/versions/a1f689aecc1d_extend_pool_for_support_backend_reencryption.py +2 -2
- octavia/db/migration/alembic_migrations/versions/a7f187cd221f_add_tls_boolean_type_for_reencryption.py +2 -2
- octavia/db/migration/alembic_migrations/versions/b9c703669314_add_flavor_and_flavor_profile_table.py +18 -18
- octavia/db/migration/alembic_migrations/versions/ba35e0fb88e1_add_backup_field_to_member.py +2 -2
- octavia/db/migration/alembic_migrations/versions/bf171d0d91c3_amphora_add_cached_zone.py +2 -2
- octavia/db/migration/alembic_migrations/versions/c761c8a71579_add_availability_zone_table.py +15 -15
- octavia/db/migration/alembic_migrations/versions/d85ca7258d21_modernize_l7rule.py +13 -13
- octavia/db/migration/alembic_migrations/versions/da371b422669_allowed_cidr_for_listeners.py +7 -7
- octavia/db/migration/alembic_migrations/versions/dcf88e59aae4_add_lb_algorithm_source_ip_port.py +3 -3
- octavia/db/migration/alembic_migrations/versions/e37941b010db_add_lb_flavor_constraint.py +11 -11
- octavia/db/migration/alembic_migrations/versions/e6672bda93bf_add_ping_and_tlshello_monitor_types.py +3 -3
- octavia/db/migration/alembic_migrations/versions/e6ee84f0abf3_add_proxy_v2_pool_protocol.py +3 -3
- octavia/db/migration/alembic_migrations/versions/ebbcc72b4e5e_add_octavia_owned_vip_column_to_vip_.py +2 -2
- octavia/db/migration/alembic_migrations/versions/f21ae3f21adc_add_client_auth_option.py +6 -6
- octavia/db/migration/alembic_migrations/versions/fc5582da7d8a_create_amphora_build_rate_limit_tables.py +11 -11
- octavia/db/migration/alembic_migrations/versions/ffad172e98c1_add_certificate_revoke_list_option.py +2 -2
- octavia/db/models.py +1 -1
- octavia/db/repositories.py +3 -3
- octavia/distributor/drivers/driver_base.py +1 -1
- octavia/distributor/drivers/noop_driver/driver.py +1 -1
- octavia/hacking/checks.py +4 -4
- octavia/image/drivers/noop_driver/driver.py +1 -1
- octavia/image/image_base.py +1 -1
- octavia/network/base.py +1 -1
- octavia/network/drivers/neutron/allowed_address_pairs.py +11 -9
- octavia/network/drivers/neutron/base.py +3 -3
- octavia/network/drivers/noop_driver/driver.py +1 -1
- octavia/policies/amphora.py +6 -12
- octavia/policies/availability_zone.py +5 -10
- octavia/policies/availability_zone_profile.py +5 -15
- octavia/policies/base.py +1 -20
- octavia/policies/flavor.py +5 -10
- octavia/policies/flavor_profile.py +5 -10
- octavia/policies/healthmonitor.py +6 -12
- octavia/policies/l7policy.py +6 -12
- octavia/policies/l7rule.py +5 -10
- octavia/policies/listener.py +7 -14
- octavia/policies/loadbalancer.py +9 -18
- octavia/policies/member.py +5 -10
- octavia/policies/pool.py +6 -12
- octavia/policies/provider.py +1 -2
- octavia/policies/provider_availability_zone.py +1 -3
- octavia/policies/provider_flavor.py +1 -2
- octavia/policies/quota.py +6 -12
- octavia/statistics/stats_base.py +1 -1
- octavia/tests/common/constants.py +1 -1
- octavia/tests/common/data_model_helpers.py +10 -10
- octavia/tests/common/sample_data_models.py +1 -1
- octavia/tests/common/sample_haproxy_prometheus +17 -17
- octavia/tests/common/sample_octavia_prometheus +6 -6
- octavia/tests/common/utils.py +2 -2
- octavia/tests/functional/amphorae/backend/agent/api_server/test_keepalivedlvs.py +36 -62
- octavia/tests/functional/amphorae/backend/agent/api_server/test_server.py +135 -296
- octavia/tests/functional/api/drivers/driver_agent/test_driver_agent.py +10 -11
- octavia/tests/functional/api/v2/base.py +2 -3
- octavia/tests/functional/api/v2/test_amphora.py +6 -6
- octavia/tests/functional/api/v2/test_availability_zone_profiles.py +13 -14
- octavia/tests/functional/api/v2/test_availability_zones.py +19 -19
- octavia/tests/functional/api/v2/test_flavor_profiles.py +19 -20
- octavia/tests/functional/api/v2/test_flavors.py +25 -25
- octavia/tests/functional/api/v2/test_health_monitor.py +35 -18
- octavia/tests/functional/api/v2/test_l7policy.py +11 -11
- octavia/tests/functional/api/v2/test_l7rule.py +19 -20
- octavia/tests/functional/api/v2/test_listener.py +26 -28
- octavia/tests/functional/api/v2/test_load_balancer.py +17 -17
- octavia/tests/functional/api/v2/test_member.py +53 -21
- octavia/tests/functional/api/v2/test_pool.py +11 -11
- octavia/tests/functional/api/v2/test_provider.py +7 -7
- octavia/tests/functional/api/v2/test_quotas.py +9 -9
- octavia/tests/functional/db/test_models.py +1 -1
- octavia/tests/functional/db/test_repositories.py +2 -2
- octavia/tests/unit/amphorae/backends/agent/api_server/test_amphora_info.py +60 -61
- octavia/tests/unit/amphorae/backends/agent/api_server/test_keepalived.py +3 -3
- octavia/tests/unit/amphorae/backends/agent/api_server/test_keepalivedlvs.py +1 -19
- octavia/tests/unit/amphorae/backends/agent/api_server/test_loadbalancer.py +94 -34
- octavia/tests/unit/amphorae/backends/agent/api_server/test_osutils.py +19 -21
- octavia/tests/unit/amphorae/backends/agent/api_server/test_plug.py +9 -11
- octavia/tests/unit/amphorae/backends/agent/api_server/test_util.py +11 -25
- octavia/tests/unit/amphorae/backends/agent/test_agent_jinja_cfg.py +0 -13
- octavia/tests/unit/amphorae/backends/health_daemon/test_health_daemon.py +10 -10
- octavia/tests/unit/amphorae/backends/utils/test_haproxy_query.py +1 -1
- octavia/tests/unit/amphorae/backends/utils/test_interface.py +33 -94
- octavia/tests/unit/amphorae/backends/utils/test_interface_file.py +32 -32
- octavia/tests/unit/amphorae/backends/utils/test_network_namespace.py +4 -6
- octavia/tests/unit/amphorae/backends/utils/test_nftable_utils.py +28 -22
- octavia/tests/unit/amphorae/drivers/haproxy/test_rest_api_driver_1_0.py +77 -118
- octavia/tests/unit/amphorae/drivers/health/test_heartbeat_udp.py +8 -8
- octavia/tests/unit/amphorae/drivers/keepalived/jinja/test_jinja_cfg.py +0 -4
- octavia/tests/unit/api/common/test_pagination.py +84 -14
- octavia/tests/unit/api/v2/types/test_availability_zone_profile.py +1 -1
- octavia/tests/unit/api/v2/types/test_availability_zones.py +1 -1
- octavia/tests/unit/api/v2/types/test_flavor_profile.py +1 -1
- octavia/tests/unit/api/v2/types/test_flavors.py +1 -1
- octavia/tests/unit/api/v2/types/test_health_monitor.py +1 -1
- octavia/tests/unit/api/v2/types/test_listener.py +1 -1
- octavia/tests/unit/api/v2/types/test_load_balancer.py +1 -1
- octavia/tests/unit/api/v2/types/test_pool.py +1 -1
- octavia/tests/unit/base.py +1 -0
- octavia/tests/unit/certificates/generator/local_csr.py +1 -1
- octavia/tests/unit/certificates/generator/test_local.py +5 -5
- octavia/tests/unit/certificates/manager/test_barbican.py +2 -3
- octavia/tests/unit/certificates/manager/test_barbican_legacy.py +1 -1
- octavia/tests/unit/certificates/manager/test_local.py +13 -14
- octavia/tests/unit/cmd/test_health_checker.py +1 -1
- octavia/tests/unit/cmd/test_prometheus_proxy.py +8 -1
- octavia/tests/unit/common/jinja/haproxy/combined_listeners/test_jinja_cfg.py +171 -216
- octavia/tests/unit/common/jinja/logging/test_logging_jinja_cfg.py +1 -1
- octavia/tests/unit/common/sample_configs/sample_configs_combined.py +1 -2
- octavia/tests/unit/common/test_base_taskflow.py +1 -1
- octavia/tests/unit/common/test_decorators.py +2 -2
- octavia/tests/unit/common/test_policy.py +3 -6
- octavia/tests/unit/common/tls_utils/test_cert_parser.py +4 -1
- octavia/tests/unit/controller/worker/v2/flows/test_listener_flows.py +10 -15
- octavia/tests/unit/controller/worker/v2/flows/test_load_balancer_flows.py +4 -6
- octavia/tests/unit/controller/worker/v2/tasks/test_network_tasks.py +6 -2
- octavia/tests/unit/controller/worker/v2/tasks/test_retry_tasks.py +1 -1
- octavia/tests/unit/controller/worker/v2/test_controller_worker.py +56 -1
- octavia/tests/unit/controller/worker/v2/test_taskflow_jobboard_driver.py +348 -0
- octavia/tests/unit/hacking/test_checks.py +3 -3
- octavia/tests/unit/image/drivers/noop_driver/test_driver.py +1 -1
- octavia/tests/unit/image/drivers/test_glance_driver.py +1 -1
- octavia/tests/unit/network/drivers/neutron/test_base.py +1 -1
- octavia/tests/unit/statistics/drivers/test_update_db.py +1 -1
- octavia/tests/unit/statistics/test_stats_base.py +1 -1
- octavia/volume/drivers/noop_driver/driver.py +1 -1
- octavia/volume/volume_base.py +1 -1
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/AUTHORS +6 -0
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/METADATA +3 -5
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/RECORD +302 -305
- octavia-15.0.0.dist-info/pbr.json +1 -0
- octavia/amphorae/backends/agent/api_server/templates/keepalived.sysvinit.j2 +0 -87
- octavia/amphorae/backends/agent/api_server/templates/keepalived.upstart.j2 +0 -29
- octavia/amphorae/backends/agent/api_server/templates/sysvinit.conf.j2 +0 -232
- octavia/amphorae/backends/agent/api_server/templates/upstart.conf.j2 +0 -71
- octavia-14.0.0.0rc1.dist-info/pbr.json +0 -1
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/LICENSE +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/README.rst +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/README.rst +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/diskimage-create.sh +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/image-tests.sh +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/requirements.txt +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/test-requirements.txt +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/tox.ini +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/version.txt +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/scripts/octavia-wsgi +0 -0
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/LICENSE +0 -0
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/WHEEL +0 -0
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/entry_points.txt +0 -0
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/top_level.txt +0 -0
@@ -70,7 +70,7 @@ class TestHaproxyAmphoraLoadBalancerDriverTest(base.TestCase):
|
|
70
70
|
'api_version': API_VERSION}
|
71
71
|
self.driver.clients[
|
72
72
|
API_VERSION].get_info.return_value = {
|
73
|
-
'haproxy_version':
|
73
|
+
'haproxy_version': '1.6.3-1ubuntu0.1',
|
74
74
|
'api_version': API_VERSION}
|
75
75
|
self.driver.jinja_combo = mock.MagicMock()
|
76
76
|
self.driver.lvs_jinja = mock.MagicMock()
|
@@ -356,7 +356,7 @@ class TestHaproxyAmphoraLoadBalancerDriverTest(base.TestCase):
|
|
356
356
|
self.driver.cert_manager.get_secret.return_value = fake_secret
|
357
357
|
ref_md5 = md5(fake_secret, usedforsecurity=False).hexdigest() # nosec
|
358
358
|
ref_id = hashlib.sha1(fake_secret).hexdigest() # nosec
|
359
|
-
ref_name = '{
|
359
|
+
ref_name = f'{ref_id}.pem'
|
360
360
|
|
361
361
|
result = self.driver._process_secret(
|
362
362
|
sample_listener, sample_listener.client_ca_tls_certificate_id,
|
@@ -419,10 +419,9 @@ class TestHaproxyAmphoraLoadBalancerDriverTest(base.TestCase):
|
|
419
419
|
fake_pem = b'fake pem'
|
420
420
|
mock_build_pem.return_value = fake_pem
|
421
421
|
ref_md5 = md5(fake_pem, usedforsecurity=False).hexdigest() # nosec
|
422
|
-
ref_name = '{id}.pem'
|
423
|
-
ref_path = '{
|
424
|
-
|
425
|
-
name=ref_name)
|
422
|
+
ref_name = f'{pool_cert.id}.pem'
|
423
|
+
ref_path = (f'{fake_cert_dir}/{sample_listener.load_balancer.id}/'
|
424
|
+
f'{ref_name}')
|
426
425
|
ref_ca_name = 'fake_ca.pem'
|
427
426
|
ref_ca_path = '{cert_dir}/{lb_id}/{name}'.format(
|
428
427
|
cert_dir=fake_cert_dir, lb_id=sample_listener.load_balancer.id,
|
@@ -637,7 +636,7 @@ class TestHaproxyAmphoraLoadBalancerDriverTest(base.TestCase):
|
|
637
636
|
# Ensure that at least one call in each pair has been seen
|
638
637
|
if (dcp_calls[0] not in mock_calls and
|
639
638
|
dcp_calls[1] not in mock_calls):
|
640
|
-
raise Exception("
|
639
|
+
raise Exception(f"{dcp_calls} not found in {mock_calls}")
|
641
640
|
|
642
641
|
# Now just make sure we did an update and not a delete
|
643
642
|
self.driver.clients[API_VERSION].delete_listener.assert_not_called()
|
@@ -951,7 +950,7 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
951
950
|
@requests_mock.mock()
|
952
951
|
def test_get_api_version(self, mock_requests):
|
953
952
|
ref_api_version = {'api_version': '0.1'}
|
954
|
-
mock_requests.get('{
|
953
|
+
mock_requests.get(f'{self.base_url}/',
|
955
954
|
json=ref_api_version)
|
956
955
|
result = self.driver.get_api_version(self.amp)
|
957
956
|
self.assertEqual(ref_api_version, result)
|
@@ -960,7 +959,7 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
960
959
|
def test_get_info(self, m):
|
961
960
|
info = {"hostname": "some_hostname", "version": "some_version",
|
962
961
|
"api_version": "1.0", "uuid": FAKE_UUID_1}
|
963
|
-
m.get("{
|
962
|
+
m.get(f"{self.base_url_ver}/info",
|
964
963
|
json=info)
|
965
964
|
information = self.driver.get_info(self.amp)
|
966
965
|
self.assertEqual(info, information)
|
@@ -969,7 +968,7 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
969
968
|
def test_get_info_with_timeout_dict(self, m):
|
970
969
|
info = {"hostname": "some_hostname", "version": "some_version",
|
971
970
|
"api_version": "1.0", "uuid": FAKE_UUID_1}
|
972
|
-
m.get("{
|
971
|
+
m.get(f"{self.base_url_ver}/info",
|
973
972
|
json=info)
|
974
973
|
timeout_dict = {
|
975
974
|
constants.CONN_MAX_RETRIES: 100,
|
@@ -980,27 +979,27 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
980
979
|
|
981
980
|
@requests_mock.mock()
|
982
981
|
def test_get_info_unauthorized(self, m):
|
983
|
-
m.get("{
|
982
|
+
m.get(f"{self.base_url_ver}/info",
|
984
983
|
status_code=401)
|
985
984
|
self.assertRaises(exc.Unauthorized, self.driver.get_info, self.amp)
|
986
985
|
|
987
986
|
@requests_mock.mock()
|
988
987
|
def test_get_info_missing(self, m):
|
989
|
-
m.get("{
|
988
|
+
m.get(f"{self.base_url_ver}/info",
|
990
989
|
status_code=404,
|
991
990
|
headers={'content-type': 'application/json'})
|
992
991
|
self.assertRaises(exc.NotFound, self.driver.get_info, self.amp)
|
993
992
|
|
994
993
|
@requests_mock.mock()
|
995
994
|
def test_get_info_server_error(self, m):
|
996
|
-
m.get("{
|
995
|
+
m.get(f"{self.base_url_ver}/info",
|
997
996
|
status_code=500)
|
998
997
|
self.assertRaises(exc.InternalServerError, self.driver.get_info,
|
999
998
|
self.amp)
|
1000
999
|
|
1001
1000
|
@requests_mock.mock()
|
1002
1001
|
def test_get_info_service_unavailable(self, m):
|
1003
|
-
m.get("{
|
1002
|
+
m.get(f"{self.base_url_ver}/info",
|
1004
1003
|
status_code=503)
|
1005
1004
|
self.assertRaises(exc.ServiceUnavailable, self.driver.get_info,
|
1006
1005
|
self.amp)
|
@@ -1011,34 +1010,34 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1011
1010
|
"api_version": "1.0", "uuid": FAKE_UUID_1,
|
1012
1011
|
"network_tx": "some_tx", "network_rx": "some_rx",
|
1013
1012
|
"active": True, "haproxy_count": 10}
|
1014
|
-
m.get("{
|
1013
|
+
m.get(f"{self.base_url_ver}/details",
|
1015
1014
|
json=details)
|
1016
1015
|
amp_details = self.driver.get_details(self.amp)
|
1017
1016
|
self.assertEqual(details, amp_details)
|
1018
1017
|
|
1019
1018
|
@requests_mock.mock()
|
1020
1019
|
def test_get_details_unauthorized(self, m):
|
1021
|
-
m.get("{
|
1020
|
+
m.get(f"{self.base_url_ver}/details",
|
1022
1021
|
status_code=401)
|
1023
1022
|
self.assertRaises(exc.Unauthorized, self.driver.get_details, self.amp)
|
1024
1023
|
|
1025
1024
|
@requests_mock.mock()
|
1026
1025
|
def test_get_details_missing(self, m):
|
1027
|
-
m.get("{
|
1026
|
+
m.get(f"{self.base_url_ver}/details",
|
1028
1027
|
status_code=404,
|
1029
1028
|
headers={'content-type': 'application/json'})
|
1030
1029
|
self.assertRaises(exc.NotFound, self.driver.get_details, self.amp)
|
1031
1030
|
|
1032
1031
|
@requests_mock.mock()
|
1033
1032
|
def test_get_details_server_error(self, m):
|
1034
|
-
m.get("{
|
1033
|
+
m.get(f"{self.base_url_ver}/details",
|
1035
1034
|
status_code=500)
|
1036
1035
|
self.assertRaises(exc.InternalServerError, self.driver.get_details,
|
1037
1036
|
self.amp)
|
1038
1037
|
|
1039
1038
|
@requests_mock.mock()
|
1040
1039
|
def test_get_details_service_unavailable(self, m):
|
1041
|
-
m.get("{
|
1040
|
+
m.get(f"{self.base_url_ver}/details",
|
1042
1041
|
status_code=503)
|
1043
1042
|
self.assertRaises(exc.ServiceUnavailable, self.driver.get_details,
|
1044
1043
|
self.amp)
|
@@ -1047,21 +1046,21 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1047
1046
|
def test_get_all_listeners(self, m):
|
1048
1047
|
listeners = [{"status": "ONLINE", "provisioning_status": "ACTIVE",
|
1049
1048
|
"type": "PASSIVE", "uuid": FAKE_UUID_1}]
|
1050
|
-
m.get("{
|
1049
|
+
m.get(f"{self.base_url_ver}/listeners",
|
1051
1050
|
json=listeners)
|
1052
1051
|
all_listeners = self.driver.get_all_listeners(self.amp)
|
1053
1052
|
self.assertEqual(listeners, all_listeners)
|
1054
1053
|
|
1055
1054
|
@requests_mock.mock()
|
1056
1055
|
def test_get_all_listeners_unauthorized(self, m):
|
1057
|
-
m.get("{
|
1056
|
+
m.get(f"{self.base_url_ver}/listeners",
|
1058
1057
|
status_code=401)
|
1059
1058
|
self.assertRaises(exc.Unauthorized, self.driver.get_all_listeners,
|
1060
1059
|
self.amp)
|
1061
1060
|
|
1062
1061
|
@requests_mock.mock()
|
1063
1062
|
def test_get_all_listeners_missing(self, m):
|
1064
|
-
m.get("{
|
1063
|
+
m.get(f"{self.base_url_ver}/listeners",
|
1065
1064
|
status_code=404,
|
1066
1065
|
headers={'content-type': 'application/json'})
|
1067
1066
|
self.assertRaises(exc.NotFound, self.driver.get_all_listeners,
|
@@ -1069,95 +1068,85 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1069
1068
|
|
1070
1069
|
@requests_mock.mock()
|
1071
1070
|
def test_get_all_listeners_server_error(self, m):
|
1072
|
-
m.get("{
|
1071
|
+
m.get(f"{self.base_url_ver}/listeners",
|
1073
1072
|
status_code=500)
|
1074
1073
|
self.assertRaises(exc.InternalServerError,
|
1075
1074
|
self.driver.get_all_listeners, self.amp)
|
1076
1075
|
|
1077
1076
|
@requests_mock.mock()
|
1078
1077
|
def test_get_all_listeners_service_unavailable(self, m):
|
1079
|
-
m.get("{
|
1078
|
+
m.get(f"{self.base_url_ver}/listeners",
|
1080
1079
|
status_code=503)
|
1081
1080
|
self.assertRaises(exc.ServiceUnavailable,
|
1082
1081
|
self.driver.get_all_listeners, self.amp)
|
1083
1082
|
|
1084
1083
|
@requests_mock.mock()
|
1085
1084
|
def test_start_loadbalancer(self, m):
|
1086
|
-
m.put("{
|
1087
|
-
base=self.base_url_ver, loadbalancer_id=FAKE_UUID_1))
|
1085
|
+
m.put(f"{self.base_url_ver}/loadbalancer/{FAKE_UUID_1}/start")
|
1088
1086
|
self.driver.start_listener(self.amp, FAKE_UUID_1)
|
1089
1087
|
self.assertTrue(m.called)
|
1090
1088
|
|
1091
1089
|
@requests_mock.mock()
|
1092
1090
|
def test_start_loadbalancer_missing(self, m):
|
1093
|
-
m.put("{
|
1094
|
-
|
1095
|
-
|
1096
|
-
headers={'content-type': 'application/json'})
|
1091
|
+
m.put(f"{self.base_url_ver}/loadbalancer/{FAKE_UUID_1}/start",
|
1092
|
+
status_code=404,
|
1093
|
+
headers={'content-type': 'application/json'})
|
1097
1094
|
self.assertRaises(exc.NotFound, self.driver.start_listener,
|
1098
1095
|
self.amp, FAKE_UUID_1)
|
1099
1096
|
|
1100
1097
|
@requests_mock.mock()
|
1101
1098
|
def test_start_loadbalancer_unauthorized(self, m):
|
1102
|
-
m.put("{
|
1103
|
-
|
1104
|
-
status_code=401)
|
1099
|
+
m.put(f"{self.base_url_ver}/loadbalancer/{FAKE_UUID_1}/start",
|
1100
|
+
status_code=401)
|
1105
1101
|
self.assertRaises(exc.Unauthorized, self.driver.start_listener,
|
1106
1102
|
self.amp, FAKE_UUID_1)
|
1107
1103
|
|
1108
1104
|
@requests_mock.mock()
|
1109
1105
|
def test_start_loadbalancer_server_error(self, m):
|
1110
|
-
m.put("{
|
1111
|
-
|
1112
|
-
status_code=500)
|
1106
|
+
m.put(f"{self.base_url_ver}/loadbalancer/{FAKE_UUID_1}/start",
|
1107
|
+
status_code=500)
|
1113
1108
|
self.assertRaises(exc.InternalServerError, self.driver.start_listener,
|
1114
1109
|
self.amp, FAKE_UUID_1)
|
1115
1110
|
|
1116
1111
|
@requests_mock.mock()
|
1117
1112
|
def test_start_loadbalancer_service_unavailable(self, m):
|
1118
|
-
m.put("{
|
1119
|
-
|
1120
|
-
status_code=503)
|
1113
|
+
m.put(f"{self.base_url_ver}/loadbalancer/{FAKE_UUID_1}/start",
|
1114
|
+
status_code=503)
|
1121
1115
|
self.assertRaises(exc.ServiceUnavailable, self.driver.start_listener,
|
1122
1116
|
self.amp, FAKE_UUID_1)
|
1123
1117
|
|
1124
1118
|
@requests_mock.mock()
|
1125
1119
|
def test_delete_listener(self, m):
|
1126
|
-
m.delete("{
|
1127
|
-
base=self.base_url_ver, listener_id=FAKE_UUID_1), json={})
|
1120
|
+
m.delete(f"{self.base_url_ver}/listeners/{FAKE_UUID_1}", json={})
|
1128
1121
|
self.driver.delete_listener(self.amp, FAKE_UUID_1)
|
1129
1122
|
self.assertTrue(m.called)
|
1130
1123
|
|
1131
1124
|
@requests_mock.mock()
|
1132
1125
|
def test_delete_listener_missing(self, m):
|
1133
|
-
m.delete("{
|
1134
|
-
|
1135
|
-
|
1136
|
-
headers={'content-type': 'application/json'})
|
1126
|
+
m.delete(f"{self.base_url_ver}/listeners/{FAKE_UUID_1}",
|
1127
|
+
status_code=404,
|
1128
|
+
headers={'content-type': 'application/json'})
|
1137
1129
|
self.driver.delete_listener(self.amp, FAKE_UUID_1)
|
1138
1130
|
self.assertTrue(m.called)
|
1139
1131
|
|
1140
1132
|
@requests_mock.mock()
|
1141
1133
|
def test_delete_listener_unauthorized(self, m):
|
1142
|
-
m.delete("{
|
1143
|
-
|
1144
|
-
status_code=401)
|
1134
|
+
m.delete(f"{self.base_url_ver}/listeners/{FAKE_UUID_1}",
|
1135
|
+
status_code=401)
|
1145
1136
|
self.assertRaises(exc.Unauthorized, self.driver.delete_listener,
|
1146
1137
|
self.amp, FAKE_UUID_1)
|
1147
1138
|
|
1148
1139
|
@requests_mock.mock()
|
1149
1140
|
def test_delete_listener_server_error(self, m):
|
1150
|
-
m.delete("{
|
1151
|
-
|
1152
|
-
status_code=500)
|
1141
|
+
m.delete(f"{self.base_url_ver}/listeners/{FAKE_UUID_1}",
|
1142
|
+
status_code=500)
|
1153
1143
|
self.assertRaises(exc.InternalServerError, self.driver.delete_listener,
|
1154
1144
|
self.amp, FAKE_UUID_1)
|
1155
1145
|
|
1156
1146
|
@requests_mock.mock()
|
1157
1147
|
def test_delete_listener_service_unavailable(self, m):
|
1158
|
-
m.delete("{
|
1159
|
-
|
1160
|
-
status_code=503)
|
1148
|
+
m.delete(f"{self.base_url_ver}/listeners/{FAKE_UUID_1}",
|
1149
|
+
status_code=503)
|
1161
1150
|
self.assertRaises(exc.ServiceUnavailable, self.driver.delete_listener,
|
1162
1151
|
self.amp, FAKE_UUID_1)
|
1163
1152
|
|
@@ -1214,14 +1203,14 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1214
1203
|
|
1215
1204
|
@requests_mock.mock()
|
1216
1205
|
def test_update_cert_for_rotation(self, m):
|
1217
|
-
m.put("{
|
1206
|
+
m.put(f"{self.base_url_ver}/certificate")
|
1218
1207
|
resp_body = self.driver.update_cert_for_rotation(self.amp,
|
1219
1208
|
"some_file")
|
1220
1209
|
self.assertEqual(200, resp_body.status_code)
|
1221
1210
|
|
1222
1211
|
@requests_mock.mock()
|
1223
1212
|
def test_update_invalid_cert_for_rotation(self, m):
|
1224
|
-
m.put("{
|
1213
|
+
m.put(f"{self.base_url_ver}/certificate",
|
1225
1214
|
status_code=400)
|
1226
1215
|
self.assertRaises(exc.InvalidRequest,
|
1227
1216
|
self.driver.update_cert_for_rotation, self.amp,
|
@@ -1229,7 +1218,7 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1229
1218
|
|
1230
1219
|
@requests_mock.mock()
|
1231
1220
|
def test_update_cert_for_rotation_unauthorized(self, m):
|
1232
|
-
m.put("{
|
1221
|
+
m.put(f"{self.base_url_ver}/certificate",
|
1233
1222
|
status_code=401)
|
1234
1223
|
self.assertRaises(exc.Unauthorized,
|
1235
1224
|
self.driver.update_cert_for_rotation, self.amp,
|
@@ -1237,7 +1226,7 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1237
1226
|
|
1238
1227
|
@requests_mock.mock()
|
1239
1228
|
def test_update_cert_for_rotation_error(self, m):
|
1240
|
-
m.put("{
|
1229
|
+
m.put(f"{self.base_url_ver}/certificate",
|
1241
1230
|
status_code=500)
|
1242
1231
|
self.assertRaises(exc.InternalServerError,
|
1243
1232
|
self.driver.update_cert_for_rotation, self.amp,
|
@@ -1245,7 +1234,7 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1245
1234
|
|
1246
1235
|
@requests_mock.mock()
|
1247
1236
|
def test_update_cert_for_rotation_unavailable(self, m):
|
1248
|
-
m.put("{
|
1237
|
+
m.put(f"{self.base_url_ver}/certificate",
|
1249
1238
|
status_code=503)
|
1250
1239
|
self.assertRaises(exc.ServiceUnavailable,
|
1251
1240
|
self.driver.update_cert_for_rotation, self.amp,
|
@@ -1356,10 +1345,8 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1356
1345
|
def test_upload_config(self, m):
|
1357
1346
|
config = {"name": "fake_config"}
|
1358
1347
|
m.put(
|
1359
|
-
"{
|
1360
|
-
"
|
1361
|
-
amphora_id=self.amp.id, base=self.base_url_ver,
|
1362
|
-
loadbalancer_id=FAKE_UUID_1),
|
1348
|
+
f"{self.base_url_ver}/loadbalancer/{self.amp.id}/"
|
1349
|
+
f"{FAKE_UUID_1}/haproxy",
|
1363
1350
|
json=config)
|
1364
1351
|
self.driver.upload_config(self.amp, FAKE_UUID_1,
|
1365
1352
|
config)
|
@@ -1369,10 +1356,8 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1369
1356
|
def test_upload_invalid_config(self, m):
|
1370
1357
|
config = '{"name": "bad_config"}'
|
1371
1358
|
m.put(
|
1372
|
-
"{
|
1373
|
-
"
|
1374
|
-
amphora_id=self.amp.id, base=self.base_url_ver,
|
1375
|
-
loadbalancer_id=FAKE_UUID_1),
|
1359
|
+
f"{self.base_url_ver}/loadbalancer/{self.amp.id}/"
|
1360
|
+
f"{FAKE_UUID_1}/haproxy",
|
1376
1361
|
status_code=400)
|
1377
1362
|
self.assertRaises(exc.InvalidRequest, self.driver.upload_config,
|
1378
1363
|
self.amp, FAKE_UUID_1, config)
|
@@ -1381,10 +1366,8 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1381
1366
|
def test_upload_config_unauthorized(self, m):
|
1382
1367
|
config = '{"name": "bad_config"}'
|
1383
1368
|
m.put(
|
1384
|
-
"{
|
1385
|
-
"
|
1386
|
-
amphora_id=self.amp.id, base=self.base_url_ver,
|
1387
|
-
loadbalancer_id=FAKE_UUID_1),
|
1369
|
+
f"{self.base_url_ver}/loadbalancer/{self.amp.id}/"
|
1370
|
+
f"{FAKE_UUID_1}/haproxy",
|
1388
1371
|
status_code=401)
|
1389
1372
|
self.assertRaises(exc.Unauthorized, self.driver.upload_config,
|
1390
1373
|
self.amp, FAKE_UUID_1, config)
|
@@ -1393,10 +1376,8 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1393
1376
|
def test_upload_config_server_error(self, m):
|
1394
1377
|
config = '{"name": "bad_config"}'
|
1395
1378
|
m.put(
|
1396
|
-
"{
|
1397
|
-
"
|
1398
|
-
amphora_id=self.amp.id, base=self.base_url_ver,
|
1399
|
-
loadbalancer_id=FAKE_UUID_1),
|
1379
|
+
f"{self.base_url_ver}/loadbalancer/{self.amp.id}/"
|
1380
|
+
f"{FAKE_UUID_1}/haproxy",
|
1400
1381
|
status_code=500)
|
1401
1382
|
self.assertRaises(exc.InternalServerError, self.driver.upload_config,
|
1402
1383
|
self.amp, FAKE_UUID_1, config)
|
@@ -1405,10 +1386,8 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1405
1386
|
def test_upload_config_service_unavailable(self, m):
|
1406
1387
|
config = '{"name": "bad_config"}'
|
1407
1388
|
m.put(
|
1408
|
-
"{
|
1409
|
-
"
|
1410
|
-
amphora_id=self.amp.id, base=self.base_url_ver,
|
1411
|
-
loadbalancer_id=FAKE_UUID_1),
|
1389
|
+
f"{self.base_url_ver}/loadbalancer/{self.amp.id}/"
|
1390
|
+
f"{FAKE_UUID_1}/haproxy",
|
1412
1391
|
status_code=503)
|
1413
1392
|
self.assertRaises(exc.ServiceUnavailable, self.driver.upload_config,
|
1414
1393
|
self.amp, FAKE_UUID_1, config)
|
@@ -1417,10 +1396,8 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1417
1396
|
def test_upload_udp_config(self, m):
|
1418
1397
|
config = {"name": "fake_config"}
|
1419
1398
|
m.put(
|
1420
|
-
"{
|
1421
|
-
"{
|
1422
|
-
amphora_id=self.amp.id, base=self.base_url_ver,
|
1423
|
-
listener_id=FAKE_UUID_1),
|
1399
|
+
f"{self.base_url_ver}/listeners/{self.amp.id}/"
|
1400
|
+
f"{FAKE_UUID_1}/udp_listener",
|
1424
1401
|
json=config)
|
1425
1402
|
self.driver.upload_udp_config(self.amp, FAKE_UUID_1, config)
|
1426
1403
|
self.assertTrue(m.called)
|
@@ -1429,10 +1406,8 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1429
1406
|
def test_upload_udp_invalid_config(self, m):
|
1430
1407
|
config = '{"name": "bad_config"}'
|
1431
1408
|
m.put(
|
1432
|
-
"{
|
1433
|
-
"{
|
1434
|
-
amphora_id=self.amp.id, base=self.base_url_ver,
|
1435
|
-
listener_id=FAKE_UUID_1),
|
1409
|
+
f"{self.base_url_ver}/listeners/{self.amp.id}/"
|
1410
|
+
f"{FAKE_UUID_1}/udp_listener",
|
1436
1411
|
status_code=400)
|
1437
1412
|
self.assertRaises(exc.InvalidRequest, self.driver.upload_udp_config,
|
1438
1413
|
self.amp, FAKE_UUID_1, config)
|
@@ -1441,10 +1416,8 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1441
1416
|
def test_upload_udp_config_unauthorized(self, m):
|
1442
1417
|
config = '{"name": "bad_config"}'
|
1443
1418
|
m.put(
|
1444
|
-
"{
|
1445
|
-
"{
|
1446
|
-
amphora_id=self.amp.id, base=self.base_url_ver,
|
1447
|
-
listener_id=FAKE_UUID_1),
|
1419
|
+
f"{self.base_url_ver}/listeners/{self.amp.id}/"
|
1420
|
+
f"{FAKE_UUID_1}/udp_listener",
|
1448
1421
|
status_code=401)
|
1449
1422
|
self.assertRaises(exc.Unauthorized, self.driver.upload_udp_config,
|
1450
1423
|
self.amp, FAKE_UUID_1, config)
|
@@ -1453,10 +1426,8 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1453
1426
|
def test_upload_udp_config_server_error(self, m):
|
1454
1427
|
config = '{"name": "bad_config"}'
|
1455
1428
|
m.put(
|
1456
|
-
"{
|
1457
|
-
"{
|
1458
|
-
amphora_id=self.amp.id, base=self.base_url_ver,
|
1459
|
-
listener_id=FAKE_UUID_1),
|
1429
|
+
f"{self.base_url_ver}/listeners/{self.amp.id}/"
|
1430
|
+
f"{FAKE_UUID_1}/udp_listener",
|
1460
1431
|
status_code=500)
|
1461
1432
|
self.assertRaises(exc.InternalServerError,
|
1462
1433
|
self.driver.upload_udp_config,
|
@@ -1466,10 +1437,8 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1466
1437
|
def test_upload_udp_config_service_unavailable(self, m):
|
1467
1438
|
config = '{"name": "bad_config"}'
|
1468
1439
|
m.put(
|
1469
|
-
"{
|
1470
|
-
"{
|
1471
|
-
amphora_id=self.amp.id, base=self.base_url_ver,
|
1472
|
-
listener_id=FAKE_UUID_1),
|
1440
|
+
f"{self.base_url_ver}/listeners/{self.amp.id}/"
|
1441
|
+
f"{FAKE_UUID_1}/udp_listener",
|
1473
1442
|
status_code=503)
|
1474
1443
|
self.assertRaises(exc.ServiceUnavailable,
|
1475
1444
|
self.driver.upload_udp_config,
|
@@ -1477,18 +1446,14 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1477
1446
|
|
1478
1447
|
@requests_mock.mock()
|
1479
1448
|
def test_plug_vip(self, m):
|
1480
|
-
m.post("{
|
1481
|
-
base=self.base_url_ver, vip=FAKE_IP)
|
1482
|
-
)
|
1449
|
+
m.post(f"{self.base_url_ver}/plug/vip/{FAKE_IP}")
|
1483
1450
|
self.driver.plug_vip(self.amp, FAKE_IP, self.subnet_info)
|
1484
1451
|
self.assertTrue(m.called)
|
1485
1452
|
|
1486
1453
|
@requests_mock.mock()
|
1487
1454
|
def test_plug_vip_api_not_ready(self, m):
|
1488
|
-
m.post("{
|
1489
|
-
|
1490
|
-
status_code=404, headers={'content-type': 'text/html'}
|
1491
|
-
)
|
1455
|
+
m.post(f"{self.base_url_ver}/plug/vip/{FAKE_IP}",
|
1456
|
+
status_code=404, headers={'content-type': 'text/html'})
|
1492
1457
|
self.assertRaises(driver_except.TimeOutException,
|
1493
1458
|
self.driver.plug_vip,
|
1494
1459
|
self.amp, FAKE_IP, self.subnet_info)
|
@@ -1496,26 +1461,21 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1496
1461
|
|
1497
1462
|
@requests_mock.mock()
|
1498
1463
|
def test_plug_network(self, m):
|
1499
|
-
m.post("{
|
1500
|
-
base=self.base_url_ver)
|
1501
|
-
)
|
1464
|
+
m.post(f"{self.base_url_ver}/plug/network")
|
1502
1465
|
self.driver.plug_network(self.amp, self.port_info)
|
1503
1466
|
self.assertTrue(m.called)
|
1504
1467
|
|
1505
1468
|
@requests_mock.mock()
|
1506
1469
|
def test_upload_vrrp_config(self, m):
|
1507
1470
|
config = '{"name": "bad_config"}'
|
1508
|
-
m.put("{
|
1509
|
-
base=self.base_url_ver)
|
1510
|
-
)
|
1471
|
+
m.put(f"{self.base_url_ver}/vrrp/upload")
|
1511
1472
|
self.driver.upload_vrrp_config(self.amp, config)
|
1512
1473
|
self.assertTrue(m.called)
|
1513
1474
|
|
1514
1475
|
@requests_mock.mock()
|
1515
1476
|
def test_vrrp_action(self, m):
|
1516
1477
|
action = 'start'
|
1517
|
-
m.put("{
|
1518
|
-
action=action))
|
1478
|
+
m.put(f"{self.base_url_ver}/vrrp/{action}")
|
1519
1479
|
self.driver._vrrp_action(action, self.amp)
|
1520
1480
|
self.assertTrue(m.called)
|
1521
1481
|
|
@@ -1523,8 +1483,7 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1523
1483
|
def test_get_interface(self, m):
|
1524
1484
|
interface = [{"interface": "eth1"}]
|
1525
1485
|
ip_addr = '192.51.100.1'
|
1526
|
-
m.get("{
|
1527
|
-
ip_addr=ip_addr),
|
1486
|
+
m.get(f"{self.base_url_ver}/interface/{ip_addr}",
|
1528
1487
|
json=interface)
|
1529
1488
|
self.driver.get_interface(self.amp, ip_addr)
|
1530
1489
|
self.assertTrue(m.called)
|
@@ -1538,13 +1497,13 @@ class TestAmphoraAPIClientTest(base.TestCase):
|
|
1538
1497
|
|
1539
1498
|
@requests_mock.mock()
|
1540
1499
|
def test_update_agent_config(self, m):
|
1541
|
-
m.put("{
|
1500
|
+
m.put(f"{self.base_url_ver}/config")
|
1542
1501
|
resp_body = self.driver.update_agent_config(self.amp, "some_file")
|
1543
1502
|
self.assertEqual(200, resp_body.status_code)
|
1544
1503
|
|
1545
1504
|
@requests_mock.mock()
|
1546
1505
|
def test_update_agent_config_error(self, m):
|
1547
|
-
m.put("{
|
1506
|
+
m.put(f"{self.base_url_ver}/config", status_code=500)
|
1548
1507
|
self.assertRaises(exc.InternalServerError,
|
1549
1508
|
self.driver.update_agent_config, self.amp,
|
1550
1509
|
"some_file")
|
@@ -124,7 +124,7 @@ class TestHeartbeatUDP(base.TestCase):
|
|
124
124
|
}
|
125
125
|
},
|
126
126
|
"pools": {
|
127
|
-
"pool-id-1:{
|
127
|
+
f"pool-id-1:{self.listener_id}": {
|
128
128
|
"status": constants.UP,
|
129
129
|
"members": {
|
130
130
|
"member-id-1": {
|
@@ -160,7 +160,7 @@ class TestHeartbeatUDP(base.TestCase):
|
|
160
160
|
}
|
161
161
|
},
|
162
162
|
"pools": {
|
163
|
-
"pool-id-1:{
|
163
|
+
f"pool-id-1:{self.listener_id}": {
|
164
164
|
"status": constants.UP,
|
165
165
|
"members": {
|
166
166
|
"member-id-1": {
|
@@ -296,7 +296,7 @@ class TestUpdateHealthDb(base.TestCase):
|
|
296
296
|
FAKE_UUID_1 = uuidutils.generate_uuid()
|
297
297
|
|
298
298
|
def setUp(self):
|
299
|
-
super(
|
299
|
+
super().setUp()
|
300
300
|
|
301
301
|
session_patch = mock.patch('octavia.db.api.get_session')
|
302
302
|
self.addCleanup(session_patch.stop)
|
@@ -353,7 +353,7 @@ class TestUpdateHealthDb(base.TestCase):
|
|
353
353
|
mock_listener1.default_pool = mock_pool1
|
354
354
|
for i in range(members):
|
355
355
|
mock_member_x = mock.Mock()
|
356
|
-
mock_member_x.id = 'member-id
|
356
|
+
mock_member_x.id = f'member-id-{i + 1}'
|
357
357
|
if health_monitor:
|
358
358
|
mock_member_x.operating_status = 'NOTHING_MATCHABLE'
|
359
359
|
else:
|
@@ -381,7 +381,7 @@ class TestUpdateHealthDb(base.TestCase):
|
|
381
381
|
member_operating_status = constants.NO_MONITOR
|
382
382
|
|
383
383
|
for i in range(members):
|
384
|
-
member_id = 'member-id
|
384
|
+
member_id = f'member-id-{i + 1}'
|
385
385
|
members_dict[member_id] = {
|
386
386
|
constants.OPERATING_STATUS: member_operating_status}
|
387
387
|
|
@@ -1245,7 +1245,7 @@ class TestUpdateHealthDb(base.TestCase):
|
|
1245
1245
|
# Build our own custom listeners/pools/members
|
1246
1246
|
for i in [1, 2, 3, 4, 5]:
|
1247
1247
|
|
1248
|
-
lb_ref['listeners']['listener-id
|
1248
|
+
lb_ref['listeners'][f'listener-id-{i}'] = {
|
1249
1249
|
constants.OPERATING_STATUS: 'bogus',
|
1250
1250
|
'protocol': constants.PROTOCOL_TCP,
|
1251
1251
|
'enabled': True}
|
@@ -1255,9 +1255,9 @@ class TestUpdateHealthDb(base.TestCase):
|
|
1255
1255
|
constants.OPERATING_STATUS: 'bogus'}, 'member-id-31': {
|
1256
1256
|
constants.OPERATING_STATUS: 'bogus'}}
|
1257
1257
|
else:
|
1258
|
-
members_dict = {'member-id
|
1258
|
+
members_dict = {f'member-id-{i}': {
|
1259
1259
|
constants.OPERATING_STATUS: 'bogus'}}
|
1260
|
-
lb_ref['pools']['pool-id
|
1260
|
+
lb_ref['pools'][f'pool-id-{i}'] = {
|
1261
1261
|
'members': members_dict, constants.OPERATING_STATUS: 'bogus'}
|
1262
1262
|
|
1263
1263
|
self.amphora_repo.get_lb_for_health_update.return_value = lb_ref
|
@@ -71,7 +71,6 @@ class TestVRRPRestDriver(base.TestCase):
|
|
71
71
|
"}\n"
|
72
72
|
"\n"
|
73
73
|
"vrrp_instance TESTGROUP {\n"
|
74
|
-
" state MASTER\n"
|
75
74
|
" interface eth1\n"
|
76
75
|
" virtual_router_id 1\n"
|
77
76
|
" priority 100\n"
|
@@ -124,7 +123,6 @@ class TestVRRPRestDriver(base.TestCase):
|
|
124
123
|
"}\n"
|
125
124
|
"\n"
|
126
125
|
"vrrp_instance TESTGROUP {\n"
|
127
|
-
" state MASTER\n"
|
128
126
|
" interface eth1\n"
|
129
127
|
" virtual_router_id 1\n"
|
130
128
|
" priority 100\n"
|
@@ -170,7 +168,6 @@ class TestVRRPRestDriver(base.TestCase):
|
|
170
168
|
"}\n"
|
171
169
|
"\n"
|
172
170
|
"vrrp_instance TESTGROUP {\n"
|
173
|
-
" state MASTER\n"
|
174
171
|
" interface eth1\n"
|
175
172
|
" virtual_router_id 1\n"
|
176
173
|
" priority 100\n"
|
@@ -220,7 +217,6 @@ class TestVRRPRestDriver(base.TestCase):
|
|
220
217
|
"}\n"
|
221
218
|
"\n"
|
222
219
|
"vrrp_instance TESTGROUP {\n"
|
223
|
-
" state MASTER\n"
|
224
220
|
" interface eth1\n"
|
225
221
|
" virtual_router_id 1\n"
|
226
222
|
" priority 100\n"
|