octavia 14.0.0.0rc1__py3-none-any.whl → 15.0.0.0rc1__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.0rc1.dist-info}/AUTHORS +6 -0
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.0rc1.dist-info}/METADATA +3 -5
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.0rc1.dist-info}/RECORD +302 -305
- octavia-15.0.0.0rc1.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.0rc1.data}/data/share/octavia/LICENSE +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.0rc1.data}/data/share/octavia/README.rst +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.0rc1.data}/data/share/octavia/diskimage-create/README.rst +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.0rc1.data}/data/share/octavia/diskimage-create/diskimage-create.sh +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.0rc1.data}/data/share/octavia/diskimage-create/image-tests.sh +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.0rc1.data}/data/share/octavia/diskimage-create/requirements.txt +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.0rc1.data}/data/share/octavia/diskimage-create/test-requirements.txt +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.0rc1.data}/data/share/octavia/diskimage-create/tox.ini +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.0rc1.data}/data/share/octavia/diskimage-create/version.txt +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.0rc1.data}/scripts/octavia-wsgi +0 -0
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.0rc1.dist-info}/LICENSE +0 -0
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.0rc1.dist-info}/WHEEL +0 -0
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.0rc1.dist-info}/entry_points.txt +0 -0
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.0rc1.dist-info}/top_level.txt +0 -0
@@ -558,6 +558,13 @@ class LoadBalancersController(base.BaseController):
|
|
558
558
|
subnet_id=add_vip.subnet_id)
|
559
559
|
|
560
560
|
if listeners or pools:
|
561
|
+
# expire_all is required here, it ensures that the loadbalancer
|
562
|
+
# will be re-fetched with its associated vip in _graph_create.
|
563
|
+
# without expire_all the vip attributes that have been updated
|
564
|
+
# just before this call may not be set correctly in the
|
565
|
+
# loadbalancer object.
|
566
|
+
lock_session.expire_all()
|
567
|
+
|
561
568
|
db_pools, db_lists = self._graph_create(
|
562
569
|
lock_session, db_lb, listeners, pools)
|
563
570
|
|
@@ -31,6 +31,7 @@ from octavia.common import data_models
|
|
31
31
|
from octavia.common import exceptions
|
32
32
|
from octavia.common import validate
|
33
33
|
from octavia.db import prepare as db_prepare
|
34
|
+
from octavia.i18n import _
|
34
35
|
|
35
36
|
|
36
37
|
LOG = logging.getLogger(__name__)
|
@@ -365,12 +366,21 @@ class MembersController(MemberController):
|
|
365
366
|
# Find members that are brand new or updated
|
366
367
|
new_members = []
|
367
368
|
updated_members = []
|
369
|
+
updated_member_uniques = set()
|
368
370
|
for m in members:
|
369
|
-
|
371
|
+
key = (m.address, m.protocol_port)
|
372
|
+
if key not in old_member_uniques:
|
370
373
|
validate.ip_not_reserved(m.address)
|
371
374
|
new_members.append(m)
|
372
375
|
else:
|
373
|
-
m.id = old_member_uniques[
|
376
|
+
m.id = old_member_uniques[key]
|
377
|
+
if key in updated_member_uniques:
|
378
|
+
LOG.error("Member %s is updated multiple times in "
|
379
|
+
"the same batch request.", m.id)
|
380
|
+
raise exceptions.ValidationException(
|
381
|
+
detail=_("Member must be updated only once in the "
|
382
|
+
"same request."))
|
383
|
+
updated_member_uniques.add(key)
|
374
384
|
updated_members.append(m)
|
375
385
|
|
376
386
|
# Find members that are deleted
|
octavia/api/v2/types/amphora.py
CHANGED
@@ -47,7 +47,7 @@ class AmphoraResponse(BaseAmphoraType):
|
|
47
47
|
|
48
48
|
@classmethod
|
49
49
|
def from_data_model(cls, data_model, children=False):
|
50
|
-
amphorae = super(
|
50
|
+
amphorae = super().from_data_model(
|
51
51
|
data_model, children=children)
|
52
52
|
|
53
53
|
return amphorae
|
@@ -31,8 +31,7 @@ class AvailabilityZoneProfileResponse(BaseAvailabilityZoneProfileType):
|
|
31
31
|
|
32
32
|
@classmethod
|
33
33
|
def from_data_model(cls, data_model, children=False):
|
34
|
-
availability_zone_profile = super(
|
35
|
-
AvailabilityZoneProfileResponse, cls).from_data_model(
|
34
|
+
availability_zone_profile = super().from_data_model(
|
36
35
|
data_model, children=children)
|
37
36
|
return availability_zone_profile
|
38
37
|
|
@@ -31,8 +31,7 @@ class AvailabilityZoneResponse(BaseAvailabilityZoneType):
|
|
31
31
|
|
32
32
|
@classmethod
|
33
33
|
def from_data_model(cls, data_model, children=False):
|
34
|
-
availability_zone = super(
|
35
|
-
AvailabilityZoneResponse, cls).from_data_model(
|
34
|
+
availability_zone = super().from_data_model(
|
36
35
|
data_model, children=children)
|
37
36
|
return availability_zone
|
38
37
|
|
@@ -31,7 +31,7 @@ class FlavorProfileResponse(BaseFlavorProfileType):
|
|
31
31
|
|
32
32
|
@classmethod
|
33
33
|
def from_data_model(cls, data_model, children=False):
|
34
|
-
flavorprofile = super(
|
34
|
+
flavorprofile = super().from_data_model(
|
35
35
|
data_model, children=children)
|
36
36
|
return flavorprofile
|
37
37
|
|
octavia/api/v2/types/flavors.py
CHANGED
@@ -32,7 +32,7 @@ class FlavorResponse(BaseFlavorType):
|
|
32
32
|
|
33
33
|
@classmethod
|
34
34
|
def from_data_model(cls, data_model, children=False):
|
35
|
-
flavor = super(
|
35
|
+
flavor = super().from_data_model(
|
36
36
|
data_model, children=children)
|
37
37
|
return flavor
|
38
38
|
|
@@ -50,7 +50,7 @@ class HealthMonitorResponse(BaseHealthMonitorType):
|
|
50
50
|
|
51
51
|
@classmethod
|
52
52
|
def from_data_model(cls, data_model, children=False):
|
53
|
-
healthmonitor = super(
|
53
|
+
healthmonitor = super().from_data_model(
|
54
54
|
data_model, children=children)
|
55
55
|
|
56
56
|
if cls._full_response():
|
octavia/api/v2/types/l7policy.py
CHANGED
@@ -48,7 +48,7 @@ class L7PolicyResponse(BaseL7PolicyType):
|
|
48
48
|
|
49
49
|
@classmethod
|
50
50
|
def from_data_model(cls, data_model, children=False):
|
51
|
-
policy = super(
|
51
|
+
policy = super().from_data_model(
|
52
52
|
data_model, children=children)
|
53
53
|
|
54
54
|
if cls._full_response():
|
octavia/api/v2/types/l7rule.py
CHANGED
octavia/api/v2/types/listener.py
CHANGED
@@ -69,7 +69,7 @@ class ListenerResponse(BaseListenerType):
|
|
69
69
|
|
70
70
|
@classmethod
|
71
71
|
def from_data_model(cls, data_model, children=False):
|
72
|
-
listener = super(
|
72
|
+
listener = super().from_data_model(
|
73
73
|
data_model, children=children)
|
74
74
|
|
75
75
|
listener.sni_container_refs = [
|
@@ -274,7 +274,7 @@ class ListenerStatusResponse(BaseListenerType):
|
|
274
274
|
|
275
275
|
@classmethod
|
276
276
|
def from_data_model(cls, data_model, children=False):
|
277
|
-
listener = super(
|
277
|
+
listener = super().from_data_model(
|
278
278
|
data_model, children=children)
|
279
279
|
|
280
280
|
pool_model = pool.PoolStatusResponse
|
@@ -297,7 +297,7 @@ class ListenerStatisticsResponse(BaseListenerType):
|
|
297
297
|
|
298
298
|
@classmethod
|
299
299
|
def from_data_model(cls, data_model, children=False):
|
300
|
-
result = super(
|
300
|
+
result = super().from_data_model(
|
301
301
|
data_model, children=children)
|
302
302
|
return result
|
303
303
|
|
@@ -69,7 +69,7 @@ class LoadBalancerResponse(BaseLoadBalancerType):
|
|
69
69
|
|
70
70
|
@classmethod
|
71
71
|
def from_data_model(cls, data_model, children=False):
|
72
|
-
result = super(
|
72
|
+
result = super().from_data_model(
|
73
73
|
data_model, children=children)
|
74
74
|
if data_model.vip:
|
75
75
|
result.vip_subnet_id = data_model.vip.subnet_id
|
@@ -169,7 +169,7 @@ class LoadBalancerStatusResponse(BaseLoadBalancerType):
|
|
169
169
|
|
170
170
|
@classmethod
|
171
171
|
def from_data_model(cls, data_model, children=False):
|
172
|
-
result = super(
|
172
|
+
result = super().from_data_model(
|
173
173
|
data_model, children=children)
|
174
174
|
listener_model = listener.ListenerStatusResponse
|
175
175
|
result.listeners = [
|
@@ -198,7 +198,7 @@ class LoadBalancerStatisticsResponse(BaseLoadBalancerType):
|
|
198
198
|
|
199
199
|
@classmethod
|
200
200
|
def from_data_model(cls, data_model, children=False):
|
201
|
-
result = super(
|
201
|
+
result = super().from_data_model(
|
202
202
|
data_model, children=children)
|
203
203
|
return result
|
204
204
|
|
octavia/api/v2/types/member.py
CHANGED
@@ -45,7 +45,7 @@ class MemberResponse(BaseMemberType):
|
|
45
45
|
|
46
46
|
@classmethod
|
47
47
|
def from_data_model(cls, data_model, children=False):
|
48
|
-
member = super(
|
48
|
+
member = super().from_data_model(
|
49
49
|
data_model, children=children)
|
50
50
|
return member
|
51
51
|
|
@@ -142,7 +142,7 @@ class MemberStatusResponse(BaseMemberType):
|
|
142
142
|
|
143
143
|
@classmethod
|
144
144
|
def from_data_model(cls, data_model, children=False):
|
145
|
-
member = super(
|
145
|
+
member = super().from_data_model(
|
146
146
|
data_model, children=children)
|
147
147
|
|
148
148
|
if not member.name:
|
octavia/api/v2/types/pool.py
CHANGED
@@ -96,7 +96,7 @@ class PoolResponse(BasePoolType):
|
|
96
96
|
|
97
97
|
@classmethod
|
98
98
|
def from_data_model(cls, data_model, children=False):
|
99
|
-
pool = super(
|
99
|
+
pool = super().from_data_model(
|
100
100
|
data_model, children=children)
|
101
101
|
if data_model.session_persistence:
|
102
102
|
pool.session_persistence = (
|
@@ -240,7 +240,7 @@ class PoolStatusResponse(BasePoolType):
|
|
240
240
|
|
241
241
|
@classmethod
|
242
242
|
def from_data_model(cls, data_model, children=False):
|
243
|
-
pool = super(
|
243
|
+
pool = super().from_data_model(
|
244
244
|
data_model, children=children)
|
245
245
|
|
246
246
|
member_model = member.MemberStatusResponse
|
octavia/api/v2/types/quotas.py
CHANGED
@@ -56,7 +56,7 @@ class QuotaResponse(base.BaseType):
|
|
56
56
|
|
57
57
|
@classmethod
|
58
58
|
def from_data_model(cls, data_model, children=False):
|
59
|
-
quotas = super(
|
59
|
+
quotas = super().from_data_model(
|
60
60
|
data_model, children=children)
|
61
61
|
quotas.quota = QuotaBase.from_data_model(data_model)
|
62
62
|
return quotas
|
@@ -83,7 +83,7 @@ class QuotaAllBase(base.BaseType):
|
|
83
83
|
|
84
84
|
@classmethod
|
85
85
|
def from_data_model(cls, data_model, children=False):
|
86
|
-
quotas = super(
|
86
|
+
quotas = super().from_data_model(
|
87
87
|
data_model, children=children)
|
88
88
|
# For backwards compatibility, remove in T
|
89
89
|
quotas.load_balancer = quotas.loadbalancer
|
@@ -61,7 +61,7 @@ class BarbicanCert(cert.Cert):
|
|
61
61
|
return None
|
62
62
|
|
63
63
|
|
64
|
-
class BarbicanAuth(
|
64
|
+
class BarbicanAuth(metaclass=abc.ABCMeta):
|
65
65
|
@abc.abstractmethod
|
66
66
|
def get_barbican_client(self, project_id):
|
67
67
|
"""Creates a Barbican client object.
|
@@ -47,9 +47,9 @@ class LocalCertGenerator(cert_gen.CertGenerator):
|
|
47
47
|
try:
|
48
48
|
with open(CONF.certificates.ca_certificate, 'rb') as fp:
|
49
49
|
fp.read()
|
50
|
-
except
|
50
|
+
except OSError as e:
|
51
51
|
raise exceptions.CertificateGenerationException(
|
52
|
-
msg="Failed to load CA Certificate {
|
52
|
+
msg="Failed to load CA Certificate {}."
|
53
53
|
.format(CONF.certificates.ca_certificate)
|
54
54
|
) from e
|
55
55
|
if not ca_key:
|
@@ -57,9 +57,9 @@ class LocalCertGenerator(cert_gen.CertGenerator):
|
|
57
57
|
try:
|
58
58
|
with open(CONF.certificates.ca_private_key, 'rb') as fp:
|
59
59
|
fp.read()
|
60
|
-
except
|
60
|
+
except OSError as e:
|
61
61
|
raise exceptions.CertificateGenerationException(
|
62
|
-
msg="Failed to load CA Private Key {
|
62
|
+
msg="Failed to load CA Private Key {}."
|
63
63
|
.format(CONF.certificates.ca_private_key)
|
64
64
|
) from e
|
65
65
|
if not ca_key_pass:
|
@@ -96,7 +96,7 @@ class LocalCertGenerator(cert_gen.CertGenerator):
|
|
96
96
|
algorithm = getattr(hashes, ca_digest.upper())()
|
97
97
|
except AttributeError as e:
|
98
98
|
raise crypto_exceptions.UnsupportedAlgorithm(
|
99
|
-
"Supplied digest method not found:
|
99
|
+
f"Supplied digest method not found: {ca_digest}"
|
100
100
|
) from e
|
101
101
|
|
102
102
|
if not ca_cert:
|
@@ -57,20 +57,20 @@ class LocalCertManager(cert_mgr.CertManager):
|
|
57
57
|
|
58
58
|
LOG.info("Storing certificate data on the local filesystem.")
|
59
59
|
try:
|
60
|
-
filename_certificate = "{
|
60
|
+
filename_certificate = f"{filename_base}.crt"
|
61
61
|
flags = os.O_WRONLY | os.O_CREAT
|
62
62
|
mode = stat.S_IRUSR | stat.S_IWUSR # mode 0600
|
63
63
|
with os.fdopen(os.open(
|
64
64
|
filename_certificate, flags, mode), 'w') as cert_file:
|
65
65
|
cert_file.write(certificate)
|
66
66
|
|
67
|
-
filename_private_key = "{
|
67
|
+
filename_private_key = f"{filename_base}.key"
|
68
68
|
with os.fdopen(os.open(
|
69
69
|
filename_private_key, flags, mode), 'w') as key_file:
|
70
70
|
key_file.write(private_key)
|
71
71
|
|
72
72
|
if intermediates:
|
73
|
-
filename_intermediates = "{
|
73
|
+
filename_intermediates = f"{filename_base}.int"
|
74
74
|
if isinstance(intermediates, bytes):
|
75
75
|
intermediates = intermediates.decode('utf-8')
|
76
76
|
with os.fdopen(os.open(
|
@@ -78,14 +78,14 @@ class LocalCertManager(cert_mgr.CertManager):
|
|
78
78
|
int_file.write(intermediates)
|
79
79
|
|
80
80
|
if private_key_passphrase:
|
81
|
-
filename_pkp = "{
|
81
|
+
filename_pkp = f"{filename_base}.pass"
|
82
82
|
if isinstance(private_key_passphrase, bytes):
|
83
83
|
private_key_passphrase = private_key_passphrase.decode(
|
84
84
|
'utf-8')
|
85
85
|
with os.fdopen(os.open(
|
86
86
|
filename_pkp, flags, mode), 'w') as pass_file:
|
87
87
|
pass_file.write(private_key_passphrase)
|
88
|
-
except
|
88
|
+
except OSError as ioe:
|
89
89
|
LOG.error("Failed to store certificate.")
|
90
90
|
raise exceptions.CertificateStorageException(message=ioe.message)
|
91
91
|
|
@@ -106,10 +106,10 @@ class LocalCertManager(cert_mgr.CertManager):
|
|
106
106
|
|
107
107
|
filename_base = os.path.join(CONF.certificates.storage_path, cert_ref)
|
108
108
|
|
109
|
-
filename_certificate = "{
|
110
|
-
filename_private_key = "{
|
111
|
-
filename_intermediates = "{
|
112
|
-
filename_pkp = "{
|
109
|
+
filename_certificate = f"{filename_base}.crt"
|
110
|
+
filename_private_key = f"{filename_base}.key"
|
111
|
+
filename_intermediates = f"{filename_base}.int"
|
112
|
+
filename_pkp = f"{filename_base}.pass"
|
113
113
|
|
114
114
|
cert_data = {}
|
115
115
|
|
@@ -117,14 +117,14 @@ class LocalCertManager(cert_mgr.CertManager):
|
|
117
117
|
try:
|
118
118
|
with os.fdopen(os.open(filename_certificate, flags)) as cert_file:
|
119
119
|
cert_data['certificate'] = cert_file.read()
|
120
|
-
except
|
120
|
+
except OSError as e:
|
121
121
|
LOG.error("Failed to read certificate for %s.", cert_ref)
|
122
122
|
raise exceptions.CertificateStorageException(
|
123
123
|
msg="Certificate could not be read.") from e
|
124
124
|
try:
|
125
125
|
with os.fdopen(os.open(filename_private_key, flags)) as key_file:
|
126
126
|
cert_data['private_key'] = key_file.read()
|
127
|
-
except
|
127
|
+
except OSError as e:
|
128
128
|
LOG.error("Failed to read private key for %s", cert_ref)
|
129
129
|
raise exceptions.CertificateStorageException(
|
130
130
|
msg="Private Key could not be read.") from e
|
@@ -134,13 +134,13 @@ class LocalCertManager(cert_mgr.CertManager):
|
|
134
134
|
cert_data['intermediates'] = int_file.read()
|
135
135
|
cert_data['intermediates'] = list(
|
136
136
|
cert_parser.get_intermediates_pems(cert_data['intermediates']))
|
137
|
-
except
|
137
|
+
except OSError:
|
138
138
|
pass
|
139
139
|
|
140
140
|
try:
|
141
141
|
with os.fdopen(os.open(filename_pkp, flags)) as pass_file:
|
142
142
|
cert_data['private_key_passphrase'] = pass_file.read()
|
143
|
-
except
|
143
|
+
except OSError:
|
144
144
|
pass
|
145
145
|
|
146
146
|
return local_common.LocalCert(**cert_data)
|
@@ -159,17 +159,17 @@ class LocalCertManager(cert_mgr.CertManager):
|
|
159
159
|
|
160
160
|
filename_base = os.path.join(CONF.certificates.storage_path, cert_ref)
|
161
161
|
|
162
|
-
filename_certificate = "{
|
163
|
-
filename_private_key = "{
|
164
|
-
filename_intermediates = "{
|
165
|
-
filename_pkp = "{
|
162
|
+
filename_certificate = f"{filename_base}.crt"
|
163
|
+
filename_private_key = f"{filename_base}.key"
|
164
|
+
filename_intermediates = f"{filename_base}.int"
|
165
|
+
filename_pkp = f"{filename_base}.pass"
|
166
166
|
|
167
167
|
try:
|
168
168
|
os.remove(filename_certificate)
|
169
169
|
os.remove(filename_private_key)
|
170
170
|
os.remove(filename_intermediates)
|
171
171
|
os.remove(filename_pkp)
|
172
|
-
except
|
172
|
+
except OSError as ioe:
|
173
173
|
LOG.error("Failed to delete certificate %s", cert_ref)
|
174
174
|
raise exceptions.CertificateStorageException(message=ioe.message)
|
175
175
|
|
@@ -196,7 +196,7 @@ class LocalCertManager(cert_mgr.CertManager):
|
|
196
196
|
filename_base = os.path.join(CONF.certificates.storage_path,
|
197
197
|
secret_ref)
|
198
198
|
|
199
|
-
filename_secret = "{
|
199
|
+
filename_secret = f"{filename_base}.crt"
|
200
200
|
|
201
201
|
secret_data = None
|
202
202
|
|
@@ -204,7 +204,7 @@ class LocalCertManager(cert_mgr.CertManager):
|
|
204
204
|
try:
|
205
205
|
with os.fdopen(os.open(filename_secret, flags)) as secret_file:
|
206
206
|
secret_data = secret_file.read()
|
207
|
-
except
|
207
|
+
except OSError as e:
|
208
208
|
LOG.error("Failed to read secret for %s.", secret_ref)
|
209
209
|
raise exceptions.CertificateRetrievalException(
|
210
210
|
ref=secret_ref) from e
|
octavia/cmd/agent.py
CHANGED
@@ -75,14 +75,14 @@ def main():
|
|
75
75
|
'certfile': CONF.amphora_agent.agent_server_cert,
|
76
76
|
'ca_certs': CONF.amphora_agent.agent_server_ca,
|
77
77
|
'cert_reqs': ssl.CERT_REQUIRED,
|
78
|
-
'ssl_version': getattr(ssl, "PROTOCOL_
|
78
|
+
'ssl_version': getattr(ssl, f"PROTOCOL_{proto}"),
|
79
79
|
'preload_app': True,
|
80
80
|
'accesslog': '/var/log/amphora-agent.log',
|
81
81
|
'errorlog': '/var/log/amphora-agent.log',
|
82
82
|
'loglevel': 'debug',
|
83
83
|
'syslog': True,
|
84
|
-
'syslog_facility':
|
85
|
-
CONF.amphora_agent.administrative_log_facility),
|
84
|
+
'syslog_facility': (
|
85
|
+
f'local{CONF.amphora_agent.administrative_log_facility}'),
|
86
86
|
'syslog_addr': 'unix://run/rsyslog/octavia/log#dgram',
|
87
87
|
|
88
88
|
}
|
octavia/cmd/driver_agent.py
CHANGED
@@ -55,10 +55,9 @@ def _process_wrapper(exit_event, proc_name, function, agent_name=None):
|
|
55
55
|
signal.signal(signal.SIGINT, signal.SIG_IGN)
|
56
56
|
signal.signal(signal.SIGHUP, _mutate_config)
|
57
57
|
if agent_name:
|
58
|
-
process_title = 'octavia-driver-agent - {} -- {}'
|
59
|
-
proc_name, agent_name)
|
58
|
+
process_title = f'octavia-driver-agent - {proc_name} -- {agent_name}'
|
60
59
|
else:
|
61
|
-
process_title = 'octavia-driver-agent - {}'
|
60
|
+
process_title = f'octavia-driver-agent - {proc_name}'
|
62
61
|
setproctitle.setproctitle(process_title)
|
63
62
|
while not exit_event.is_set():
|
64
63
|
try:
|
octavia/cmd/health_checker.py
CHANGED
@@ -186,7 +186,7 @@ def sctp_health_check(ip_address, port, timeout=2):
|
|
186
186
|
|
187
187
|
data = _sctp_build_init_packet(src_port, port, tag)
|
188
188
|
|
189
|
-
print("Sending INIT packet to {}:{}"
|
189
|
+
print(f"Sending INIT packet to {ip_address}:{port}")
|
190
190
|
s.send(data)
|
191
191
|
|
192
192
|
start = time.time()
|
@@ -211,13 +211,13 @@ def sctp_health_check(ip_address, port, timeout=2):
|
|
211
211
|
print("Received ABORT")
|
212
212
|
ret = 1
|
213
213
|
else: # Others: unknown error
|
214
|
-
print("Received {} Type chunk"
|
214
|
+
print(f"Received {response_type} Type chunk")
|
215
215
|
send_abort = True
|
216
216
|
ret = 3
|
217
217
|
|
218
218
|
break
|
219
219
|
else:
|
220
|
-
print("Timeout after {} seconds."
|
220
|
+
print(f"Timeout after {timeout} seconds.")
|
221
221
|
# Timeout
|
222
222
|
ret = 2
|
223
223
|
|
@@ -260,5 +260,5 @@ def main():
|
|
260
260
|
ret = sctp_health_check(destination, port, timeout=default_timeout)
|
261
261
|
sys.exit(ret)
|
262
262
|
else:
|
263
|
-
print("Unsupported protocol '{}'"
|
263
|
+
print(f"Unsupported protocol '{protocol}'")
|
264
264
|
sys.exit(1)
|
octavia/cmd/interface.py
CHANGED
@@ -34,7 +34,7 @@ def interfaces_find(interface_controller, name):
|
|
34
34
|
if name in all_interfaces:
|
35
35
|
return [all_interfaces[name]]
|
36
36
|
|
37
|
-
msg = "Could not find interface '{}'."
|
37
|
+
msg = f"Could not find interface '{name}'."
|
38
38
|
raise InterfaceException(msg=msg)
|
39
39
|
|
40
40
|
|
@@ -61,7 +61,7 @@ def interface_cmd(interface_name, action):
|
|
61
61
|
action_fn = interface_controller.down
|
62
62
|
else:
|
63
63
|
raise InterfaceException(
|
64
|
-
msg="Unknown action '{}'"
|
64
|
+
msg=f"Unknown action '{action}'")
|
65
65
|
|
66
66
|
interfaces = interfaces_find(interface_controller,
|
67
67
|
interface_name)
|
@@ -76,11 +76,11 @@ def main():
|
|
76
76
|
action = sys.argv[-2]
|
77
77
|
interface_name = sys.argv[-1]
|
78
78
|
except IndexError:
|
79
|
-
print("usage: {} [up|down] <interface>"
|
79
|
+
print(f"usage: {sys.argv[0]} [up|down] <interface>")
|
80
80
|
sys.exit(1)
|
81
81
|
|
82
82
|
try:
|
83
83
|
interface_cmd(interface_name, action)
|
84
84
|
except Exception as e:
|
85
|
-
print("Error: {}"
|
85
|
+
print(f"Error: {e}")
|
86
86
|
sys.exit(2)
|
octavia/cmd/prometheus_proxy.py
CHANGED
@@ -99,8 +99,8 @@ METRIC_MAP = {
|
|
99
99
|
("octavia_loadbalancer_current_frontend_ssl_key_rate ", None, None),
|
100
100
|
"haproxy_process_max_frontend_ssl_key_rate ":
|
101
101
|
("octavia_loadbalancer_max_frontend_ssl_key_rate ", None, None),
|
102
|
-
"
|
103
|
-
("
|
102
|
+
"haproxy_process_frontend_ssl_reuse ":
|
103
|
+
("octavia_loadbalancer_frontend_ssl_reuse ", None, None),
|
104
104
|
"haproxy_process_current_backend_ssl_key_rate ":
|
105
105
|
("octavia_loadbalancer_current_backend_ssl_key_rate ", None, None),
|
106
106
|
"haproxy_process_max_backend_ssl_key_rate ":
|
@@ -123,8 +123,8 @@ METRIC_MAP = {
|
|
123
123
|
# Listener metrics
|
124
124
|
"haproxy_frontend_status ":
|
125
125
|
("octavia_listener_status ",
|
126
|
-
"# HELP octavia_listener_status Current status of the listener
|
127
|
-
|
126
|
+
"# HELP octavia_listener_status Current status of the listener.\n",
|
127
|
+
None),
|
128
128
|
"haproxy_frontend_status{":
|
129
129
|
("octavia_listener_status{", None, {"proxy=": "listener="}),
|
130
130
|
"haproxy_frontend_current_sessions ":
|
@@ -263,8 +263,7 @@ METRIC_MAP = {
|
|
263
263
|
# Pool Metrics
|
264
264
|
"haproxy_backend_status ":
|
265
265
|
("octavia_pool_status ",
|
266
|
-
"# HELP octavia_pool_status Current status of the pool
|
267
|
-
"1=ONLINE.\n", None),
|
266
|
+
"# HELP octavia_pool_status Current status of the pool.\n", None),
|
268
267
|
"haproxy_backend_status{":
|
269
268
|
("octavia_pool_status{", None, {"proxy=": "pool="}),
|
270
269
|
"haproxy_backend_current_sessions ":
|
@@ -475,8 +474,7 @@ METRIC_MAP = {
|
|
475
474
|
# Member Metrics
|
476
475
|
"haproxy_server_status ":
|
477
476
|
("octavia_member_status ",
|
478
|
-
"# HELP octavia_member_status Current status of the member
|
479
|
-
"0=ERROR, 1=ONLINE, 2=OFFLINE, 3=DRAIN.\n", None),
|
477
|
+
"# HELP octavia_member_status Current status of the member.\n", None),
|
480
478
|
"haproxy_server_status{":
|
481
479
|
("octavia_member_status{", None,
|
482
480
|
{"proxy=": "pool=", "server=": "member="}),
|
@@ -682,14 +680,14 @@ METRIC_MAP = {
|
|
682
680
|
"haproxy_server_http_responses_total{":
|
683
681
|
("octavia_member_http_responses_total{", None,
|
684
682
|
{"proxy=": "pool=", "server=": "member="}),
|
685
|
-
"
|
683
|
+
"haproxy_server_idle_connections_current ":
|
686
684
|
("octavia_member_idle_connections_current ", None, None),
|
687
|
-
"
|
685
|
+
"haproxy_server_idle_connections_current{":
|
688
686
|
("octavia_member_idle_connections_current{", None,
|
689
687
|
{"proxy=": "pool=", "server=": "member="}),
|
690
|
-
"
|
688
|
+
"haproxy_server_idle_connections_limit ":
|
691
689
|
("octavia_member_idle_connections_limit ", None, None),
|
692
|
-
"
|
690
|
+
"haproxy_server_idle_connections_limit{":
|
693
691
|
("octavia_member_idle_connections_limit{", None,
|
694
692
|
{"proxy=": "pool=", "server=": "member="}),
|
695
693
|
}
|
@@ -751,7 +749,7 @@ class PrometheusProxy(SimpleHTTPRequestHandler):
|
|
751
749
|
metrics_buffer += line.replace(match,
|
752
750
|
map_tuple[0])
|
753
751
|
elif PRINT_REJECTED:
|
754
|
-
print("REJECTED:
|
752
|
+
print(f"REJECTED: {line}")
|
755
753
|
except Exception as e:
|
756
754
|
print(str(e), flush=True)
|
757
755
|
traceback.print_tb(e.__traceback__)
|
octavia/common/base_taskflow.py
CHANGED
@@ -75,7 +75,7 @@ class FilteredJob(Job):
|
|
75
75
|
# filter out private information from details
|
76
76
|
cls_name = type(self).__name__
|
77
77
|
details = _details_filter(self.details)
|
78
|
-
return "
|
78
|
+
return "{}: {} (priority={}, uuid={}, details={})".format(
|
79
79
|
cls_name, self.name, self.priority,
|
80
80
|
self.uuid, details)
|
81
81
|
|
@@ -90,7 +90,7 @@ class JobDetailsFilter(log.logging.Filter):
|
|
90
90
|
return True
|
91
91
|
|
92
92
|
|
93
|
-
class BaseTaskFlowEngine
|
93
|
+
class BaseTaskFlowEngine:
|
94
94
|
"""This is the task flow engine
|
95
95
|
|
96
96
|
Use this engine to start/load flows in the
|
@@ -164,7 +164,7 @@ class RedisDynamicLoggingConductor(DynamicLoggingConductor):
|
|
164
164
|
return listeners
|
165
165
|
|
166
166
|
|
167
|
-
class TaskFlowServiceController
|
167
|
+
class TaskFlowServiceController:
|
168
168
|
|
169
169
|
def __init__(self, driver):
|
170
170
|
self.driver = driver
|