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
@@ -25,7 +25,7 @@ TEMPLATES_DIR = (os.path.dirname(os.path.realpath(__file__)) +
|
|
25
25
|
constants.AGENT_API_TEMPLATES + '/')
|
26
26
|
|
27
27
|
|
28
|
-
class AgentJinjaTemplater
|
28
|
+
class AgentJinjaTemplater:
|
29
29
|
|
30
30
|
def __init__(self):
|
31
31
|
template_loader = jinja2.FileSystemLoader(searchpath=os.path.dirname(
|
@@ -52,9 +52,6 @@ class AgentJinjaTemplater(object):
|
|
52
52
|
'haproxy_cmd': CONF.haproxy_amphora.haproxy_cmd,
|
53
53
|
'heartbeat_interval': CONF.health_manager.heartbeat_interval,
|
54
54
|
'heartbeat_key': CONF.health_manager.heartbeat_key,
|
55
|
-
'use_upstart': CONF.haproxy_amphora.use_upstart,
|
56
|
-
'respawn_count': CONF.haproxy_amphora.respawn_count,
|
57
|
-
'respawn_interval': CONF.haproxy_amphora.respawn_interval,
|
58
55
|
'amphora_udp_driver': CONF.amphora_agent.amphora_udp_driver,
|
59
56
|
'agent_tls_protocol': CONF.amphora_agent.agent_tls_protocol,
|
60
57
|
'topology': topology,
|
@@ -30,7 +30,7 @@ from octavia.common import exceptions
|
|
30
30
|
LOG = logging.getLogger(__name__)
|
31
31
|
|
32
32
|
|
33
|
-
class AmphoraInfo
|
33
|
+
class AmphoraInfo:
|
34
34
|
def __init__(self, osutils):
|
35
35
|
self._osutils = osutils
|
36
36
|
|
@@ -105,7 +105,7 @@ class AmphoraInfo(object):
|
|
105
105
|
def _get_version_of_installed_package(self, name):
|
106
106
|
|
107
107
|
cmd = self._osutils.cmd_get_version_of_installed_package(name)
|
108
|
-
version = subprocess.check_output(cmd.split())
|
108
|
+
version = subprocess.check_output(cmd.split(), encoding='utf-8')
|
109
109
|
return version
|
110
110
|
|
111
111
|
def _count_haproxy_processes(self, lb_list):
|
@@ -129,13 +129,13 @@ class AmphoraInfo(object):
|
|
129
129
|
extend_data = {}
|
130
130
|
for extend in extend_info:
|
131
131
|
package_version = self._get_version_of_installed_package(extend)
|
132
|
-
extend_data['
|
132
|
+
extend_data[f'{extend}_version'] = package_version
|
133
133
|
return extend_data
|
134
134
|
|
135
135
|
def _get_meminfo(self):
|
136
136
|
re_parser = re.compile(r'^(?P<key>\S*):\s*(?P<value>\d*)\s*kB')
|
137
137
|
result = {}
|
138
|
-
with open('/proc/meminfo',
|
138
|
+
with open('/proc/meminfo', encoding='utf-8') as meminfo:
|
139
139
|
for line in meminfo:
|
140
140
|
match = re_parser.match(line)
|
141
141
|
if not match:
|
@@ -199,7 +199,7 @@ class AmphoraInfo(object):
|
|
199
199
|
def _get_active_tuned_profiles(self) -> str:
|
200
200
|
"""Returns the active TuneD profile(s)"""
|
201
201
|
try:
|
202
|
-
with open("/etc/tuned/active_profile",
|
202
|
+
with open("/etc/tuned/active_profile", encoding="utf-8") as f:
|
203
203
|
return f.read(1024).strip()
|
204
204
|
except OSError as ex:
|
205
205
|
LOG.debug("Reading active TuneD profiles failed: %r", ex)
|
@@ -34,13 +34,11 @@ LOG = logging.getLogger(__name__)
|
|
34
34
|
|
35
35
|
j2_env = jinja2.Environment(autoescape=True, loader=jinja2.FileSystemLoader(
|
36
36
|
os.path.dirname(os.path.realpath(__file__)) + consts.AGENT_API_TEMPLATES))
|
37
|
-
UPSTART_TEMPLATE = j2_env.get_template(consts.KEEPALIVED_JINJA2_UPSTART)
|
38
|
-
SYSVINIT_TEMPLATE = j2_env.get_template(consts.KEEPALIVED_JINJA2_SYSVINIT)
|
39
37
|
SYSTEMD_TEMPLATE = j2_env.get_template(consts.KEEPALIVED_JINJA2_SYSTEMD)
|
40
38
|
check_script_template = j2_env.get_template(consts.CHECK_SCRIPT_CONF)
|
41
39
|
|
42
40
|
|
43
|
-
class Keepalived
|
41
|
+
class Keepalived:
|
44
42
|
|
45
43
|
def upload_keepalived_config(self):
|
46
44
|
stream = loadbalancer.Wrapped(flask.request.stream)
|
@@ -60,33 +58,17 @@ class Keepalived(object):
|
|
60
58
|
f.write(b)
|
61
59
|
b = stream.read(BUFFER)
|
62
60
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
consts.ENABLE, consts.AMP_NETNS_SVC_PREFIX)
|
75
|
-
elif init_system == consts.INIT_UPSTART:
|
76
|
-
template = UPSTART_TEMPLATE
|
77
|
-
elif init_system == consts.INIT_SYSVINIT:
|
78
|
-
template = SYSVINIT_TEMPLATE
|
79
|
-
init_enable_cmd = "insserv {file}".format(file=file_path)
|
80
|
-
else:
|
81
|
-
raise util.UnknownInitError()
|
82
|
-
|
83
|
-
if init_system == consts.INIT_SYSTEMD:
|
84
|
-
# mode 00644
|
85
|
-
mode = stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH
|
86
|
-
else:
|
87
|
-
# mode 00755
|
88
|
-
mode = (stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP |
|
89
|
-
stat.S_IROTH | stat.S_IXOTH)
|
61
|
+
file_path = util.keepalived_init_path()
|
62
|
+
|
63
|
+
template = SYSTEMD_TEMPLATE
|
64
|
+
|
65
|
+
# Render and install the network namespace systemd service
|
66
|
+
util.install_netns_systemd_service()
|
67
|
+
util.run_systemctl_command(
|
68
|
+
consts.ENABLE, consts.AMP_NETNS_SVC_PREFIX, False)
|
69
|
+
|
70
|
+
# mode 00644
|
71
|
+
mode = stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH
|
90
72
|
if not os.path.exists(file_path):
|
91
73
|
with os.fdopen(os.open(file_path, flags, mode), 'w') as text_file:
|
92
74
|
text = template.render(
|
@@ -117,16 +99,13 @@ class Keepalived(object):
|
|
117
99
|
util.vrrp_check_script_update(None, consts.AMP_ACTION_START)
|
118
100
|
|
119
101
|
# Make sure the new service is enabled on boot
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
return webob.Response(json={
|
128
|
-
'message': "Error enabling octavia-keepalived service",
|
129
|
-
'details': e.output}, status=500)
|
102
|
+
try:
|
103
|
+
util.run_systemctl_command(consts.ENABLE,
|
104
|
+
consts.KEEPALIVED_SYSTEMD)
|
105
|
+
except subprocess.CalledProcessError as e:
|
106
|
+
return webob.Response(json={
|
107
|
+
'message': "Error enabling octavia-keepalived service",
|
108
|
+
'details': e.output}, status=500)
|
130
109
|
|
131
110
|
res = webob.Response(json={'message': 'OK'}, status=200)
|
132
111
|
res.headers['ETag'] = stream.get_md5()
|
@@ -140,37 +119,31 @@ class Keepalived(object):
|
|
140
119
|
consts.AMP_ACTION_RELOAD]:
|
141
120
|
return webob.Response(json={
|
142
121
|
'message': 'Invalid Request',
|
143
|
-
'details': "Unknown action: {
|
122
|
+
'details': f"Unknown action: {action}"}, status=400)
|
144
123
|
|
145
124
|
if action == consts.AMP_ACTION_START:
|
146
125
|
keepalived_pid_path = util.keepalived_pid_path()
|
147
126
|
try:
|
148
127
|
# Is there a pid file for keepalived?
|
149
|
-
with open(keepalived_pid_path,
|
150
|
-
'r', encoding='utf-8') as pid_file:
|
128
|
+
with open(keepalived_pid_path, encoding='utf-8') as pid_file:
|
151
129
|
pid = int(pid_file.readline())
|
152
130
|
os.kill(pid, 0)
|
153
131
|
|
154
132
|
# If we got here, it means the keepalived process is running.
|
155
133
|
# We should reload it instead of trying to start it again.
|
156
134
|
action = consts.AMP_ACTION_RELOAD
|
157
|
-
except
|
135
|
+
except OSError:
|
158
136
|
pass
|
159
137
|
|
160
|
-
cmd = ("/usr/sbin/service octavia-keepalived {action}".format(
|
161
|
-
action=action))
|
162
|
-
|
163
138
|
try:
|
164
|
-
|
139
|
+
util.run_systemctl_command(action,
|
140
|
+
consts.KEEPALIVED_SYSTEMD)
|
165
141
|
except subprocess.CalledProcessError as e:
|
166
|
-
LOG.debug('Failed to %s octavia-keepalived service: %s %s',
|
167
|
-
action, e, e.output)
|
168
142
|
return webob.Response(json={
|
169
|
-
'message': "Failed to {
|
170
|
-
action),
|
143
|
+
'message': f"Failed to {action} octavia-keepalived service",
|
171
144
|
'details': e.output}, status=500)
|
172
145
|
|
173
146
|
return webob.Response(
|
174
147
|
json={'message': 'OK',
|
175
|
-
'details': 'keepalived {action}ed'
|
148
|
+
'details': f'keepalived {action}ed'},
|
176
149
|
status=202)
|
@@ -38,8 +38,6 @@ LOG = logging.getLogger(__name__)
|
|
38
38
|
|
39
39
|
j2_env = jinja2.Environment(autoescape=True, loader=jinja2.FileSystemLoader(
|
40
40
|
os.path.dirname(os.path.realpath(__file__)) + consts.AGENT_API_TEMPLATES))
|
41
|
-
UPSTART_TEMPLATE = j2_env.get_template(consts.KEEPALIVED_JINJA2_UPSTART)
|
42
|
-
SYSVINIT_TEMPLATE = j2_env.get_template(consts.KEEPALIVED_JINJA2_SYSVINIT)
|
43
41
|
SYSTEMD_TEMPLATE = j2_env.get_template(consts.KEEPALIVED_JINJA2_SYSTEMD)
|
44
42
|
check_script_file_template = j2_env.get_template(
|
45
43
|
consts.KEEPALIVED_CHECK_SCRIPT)
|
@@ -92,32 +90,18 @@ class KeepalivedLvs(lvs_listener_base.LvsListenerApiServerBase):
|
|
92
90
|
f.write(b)
|
93
91
|
b = stream.read(BUFFER)
|
94
92
|
|
95
|
-
|
93
|
+
file_path = util.keepalived_lvs_init_path(listener_id)
|
96
94
|
|
97
|
-
|
95
|
+
template = SYSTEMD_TEMPLATE
|
98
96
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
util.install_netns_systemd_service()
|
104
|
-
util.run_systemctl_command(
|
105
|
-
consts.ENABLE, consts.AMP_NETNS_SVC_PREFIX)
|
106
|
-
elif init_system == consts.INIT_UPSTART:
|
107
|
-
template = UPSTART_TEMPLATE
|
108
|
-
elif init_system == consts.INIT_SYSVINIT:
|
109
|
-
template = SYSVINIT_TEMPLATE
|
110
|
-
else:
|
111
|
-
raise util.UnknownInitError()
|
97
|
+
# Render and install the network namespace systemd service
|
98
|
+
util.install_netns_systemd_service()
|
99
|
+
util.run_systemctl_command(
|
100
|
+
consts.ENABLE, consts.AMP_NETNS_SVC_PREFIX, False)
|
112
101
|
|
113
102
|
# Render and install the keepalivedlvs init script
|
114
|
-
|
115
|
-
|
116
|
-
mode = stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH
|
117
|
-
else:
|
118
|
-
# mode 00755
|
119
|
-
mode = (stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP |
|
120
|
-
stat.S_IROTH | stat.S_IXOTH)
|
103
|
+
# mode 00644
|
104
|
+
mode = stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH
|
121
105
|
keepalived_pid, vrrp_pid, check_pid = util.keepalived_lvs_pids_path(
|
122
106
|
listener_id)
|
123
107
|
if not os.path.exists(file_path):
|
@@ -136,22 +120,15 @@ class KeepalivedLvs(lvs_listener_base.LvsListenerApiServerBase):
|
|
136
120
|
text_file.write(text)
|
137
121
|
|
138
122
|
# Make sure the keepalivedlvs service is enabled on boot
|
139
|
-
|
123
|
+
try:
|
140
124
|
util.run_systemctl_command(
|
141
|
-
consts.ENABLE,
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
LOG.debug('Failed to enable '
|
149
|
-
'octavia-keepalivedlvs service: '
|
150
|
-
'%(err)s', {'err': str(e)})
|
151
|
-
return webob.Response(json={
|
152
|
-
'message': ("Error enabling "
|
153
|
-
"octavia-keepalivedlvs service"),
|
154
|
-
'details': e.output}, status=500)
|
125
|
+
consts.ENABLE,
|
126
|
+
consts.KEEPALIVEDLVS_SYSTEMD % listener_id)
|
127
|
+
except subprocess.CalledProcessError as e:
|
128
|
+
return webob.Response(json={
|
129
|
+
'message': ("Error enabling "
|
130
|
+
"octavia-keepalivedlvs service"),
|
131
|
+
'details': e.output}, status=500)
|
155
132
|
|
156
133
|
if NEED_CHECK:
|
157
134
|
# inject the check script for keepalived process
|
@@ -165,7 +142,6 @@ class KeepalivedLvs(lvs_listener_base.LvsListenerApiServerBase):
|
|
165
142
|
'w') as script_file:
|
166
143
|
text = check_script_file_template.render(
|
167
144
|
consts=consts,
|
168
|
-
init_system=init_system,
|
169
145
|
keepalived_lvs_pid_dir=util.keepalived_lvs_dir()
|
170
146
|
)
|
171
147
|
script_file.write(text)
|
@@ -180,8 +156,8 @@ class KeepalivedLvs(lvs_listener_base.LvsListenerApiServerBase):
|
|
180
156
|
raise exceptions.HTTPException(
|
181
157
|
response=webob.Response(json={
|
182
158
|
'message': 'UDP Listener Not Found',
|
183
|
-
'details': "No UDP listener with UUID: {
|
184
|
-
|
159
|
+
'details': f"No UDP listener with UUID: {listener_id}"},
|
160
|
+
status=404))
|
185
161
|
|
186
162
|
def get_lvs_listener_config(self, listener_id):
|
187
163
|
"""Gets the keepalivedlvs config
|
@@ -190,7 +166,7 @@ class KeepalivedLvs(lvs_listener_base.LvsListenerApiServerBase):
|
|
190
166
|
"""
|
191
167
|
self._check_lvs_listener_exists(listener_id)
|
192
168
|
with open(util.keepalived_lvs_cfg_path(listener_id),
|
193
|
-
|
169
|
+
encoding='utf-8') as file:
|
194
170
|
cfg = file.read()
|
195
171
|
resp = webob.Response(cfg, content_type='text/plain')
|
196
172
|
return resp
|
@@ -202,7 +178,7 @@ class KeepalivedLvs(lvs_listener_base.LvsListenerApiServerBase):
|
|
202
178
|
consts.AMP_ACTION_RELOAD]:
|
203
179
|
return webob.Response(json={
|
204
180
|
'message': 'Invalid Request',
|
205
|
-
'details': "Unknown action: {
|
181
|
+
'details': f"Unknown action: {action}"}, status=400)
|
206
182
|
|
207
183
|
# When octavia requests a reload of keepalived, force a restart since
|
208
184
|
# a keepalived reload doesn't restore members in their initial state.
|
@@ -216,25 +192,19 @@ class KeepalivedLvs(lvs_listener_base.LvsListenerApiServerBase):
|
|
216
192
|
if consts.OFFLINE == self._check_lvs_listener_status(listener_id):
|
217
193
|
action = consts.AMP_ACTION_START
|
218
194
|
|
219
|
-
cmd = ("/usr/sbin/service "
|
220
|
-
"octavia-keepalivedlvs-{listener_id} "
|
221
|
-
"{action}".format(listener_id=listener_id, action=action))
|
222
|
-
|
223
195
|
try:
|
224
|
-
|
196
|
+
util.run_systemctl_command(
|
197
|
+
action, consts.KEEPALIVEDLVS_SYSTEMD % listener_id)
|
225
198
|
except subprocess.CalledProcessError as e:
|
226
|
-
LOG.debug('Failed to %s keepalivedlvs listener %s',
|
227
|
-
listener_id + ' : ' + action, str(e))
|
228
199
|
return webob.Response(json={
|
229
|
-
'message': ("Failed to {
|
230
|
-
|
200
|
+
'message': (f"Failed to {action} keepalivedlvs listener "
|
201
|
+
f"{listener_id}"),
|
231
202
|
'details': e.output}, status=500)
|
232
203
|
|
233
204
|
return webob.Response(
|
234
205
|
json={'message': 'OK',
|
235
|
-
'details': 'keepalivedlvs listener {listener_id} '
|
236
|
-
|
237
|
-
action=action)},
|
206
|
+
'details': (f'keepalivedlvs listener {listener_id} '
|
207
|
+
f'{action}ed')},
|
238
208
|
status=202)
|
239
209
|
|
240
210
|
def _check_lvs_listener_status(self, listener_id):
|
@@ -243,7 +213,7 @@ class KeepalivedLvs(lvs_listener_base.LvsListenerApiServerBase):
|
|
243
213
|
'/proc', util.get_keepalivedlvs_pid(listener_id))):
|
244
214
|
# Check if the listener is disabled
|
245
215
|
with open(util.keepalived_lvs_cfg_path(listener_id),
|
246
|
-
|
216
|
+
encoding='utf-8') as file:
|
247
217
|
cfg = file.read()
|
248
218
|
m = re.search('virtual_server', cfg)
|
249
219
|
if m:
|
@@ -280,12 +250,12 @@ class KeepalivedLvs(lvs_listener_base.LvsListenerApiServerBase):
|
|
280
250
|
if os.path.exists(keepalived_pid) and os.path.exists(
|
281
251
|
os.path.join('/proc',
|
282
252
|
util.get_keepalivedlvs_pid(listener_id))):
|
283
|
-
cmd = ("/usr/sbin/service "
|
284
|
-
"octavia-keepalivedlvs-{0} stop".format(listener_id))
|
285
253
|
try:
|
286
|
-
|
254
|
+
util.run_systemctl_command(
|
255
|
+
consts.STOP,
|
256
|
+
consts.KEEPALIVEDLVS_SYSTEMD % listener_id)
|
287
257
|
except subprocess.CalledProcessError as e:
|
288
|
-
LOG.error("Failed to stop keepalivedlvs service: %s",
|
258
|
+
LOG.error("Failed to stop keepalivedlvs service: %s", e)
|
289
259
|
return webob.Response(json={
|
290
260
|
'message': "Error stopping keepalivedlvs",
|
291
261
|
'details': e.output}, status=500)
|
@@ -300,30 +270,21 @@ class KeepalivedLvs(lvs_listener_base.LvsListenerApiServerBase):
|
|
300
270
|
os.remove(pid)
|
301
271
|
|
302
272
|
# disable the service
|
303
|
-
|
304
|
-
init_path = util.keepalived_lvs_init_path(init_system, listener_id)
|
273
|
+
init_path = util.keepalived_lvs_init_path(listener_id)
|
305
274
|
|
306
|
-
|
275
|
+
try:
|
307
276
|
util.run_systemctl_command(
|
308
|
-
consts.DISABLE,
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
LOG.error("Failed to disable "
|
320
|
-
"octavia-keepalivedlvs-%(list)s service: "
|
321
|
-
"%(err)s", {'list': listener_id, 'err': str(e)})
|
322
|
-
return webob.Response(json={
|
323
|
-
'message': (
|
324
|
-
"Error disabling octavia-keepalivedlvs-"
|
325
|
-
"{0} service".format(listener_id)),
|
326
|
-
'details': e.output}, status=500)
|
277
|
+
consts.DISABLE,
|
278
|
+
consts.KEEPALIVEDLVS_SYSTEMD % listener_id)
|
279
|
+
except subprocess.CalledProcessError as e:
|
280
|
+
LOG.error("Failed to disable "
|
281
|
+
"octavia-keepalivedlvs-%(list)s service: "
|
282
|
+
"%(err)s", {'list': listener_id, 'err': str(e)})
|
283
|
+
return webob.Response(json={
|
284
|
+
'message': (
|
285
|
+
f"Error disabling octavia-keepalivedlvs-{listener_id} "
|
286
|
+
"service"),
|
287
|
+
'details': e.output}, status=500)
|
327
288
|
|
328
289
|
# delete init script ,config file and log file for that listener
|
329
290
|
if os.path.exists(init_path):
|