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
octavia/policies/quota.py
CHANGED
@@ -17,46 +17,40 @@ from octavia.common import constants
|
|
17
17
|
|
18
18
|
rules = [
|
19
19
|
policy.DocumentedRuleDefault(
|
20
|
-
'{
|
21
|
-
action=constants.RBAC_GET_ALL),
|
20
|
+
f'{constants.RBAC_QUOTA}{constants.RBAC_GET_ALL}',
|
22
21
|
constants.RULE_API_READ_QUOTA,
|
23
22
|
"List Quotas",
|
24
23
|
[{'method': 'GET', 'path': '/v2/lbaas/quotas'}]
|
25
24
|
),
|
26
25
|
policy.DocumentedRuleDefault(
|
27
|
-
'{
|
28
|
-
action=constants.RBAC_GET_ALL_GLOBAL),
|
26
|
+
f'{constants.RBAC_QUOTA}{constants.RBAC_GET_ALL_GLOBAL}',
|
29
27
|
constants.RULE_API_READ_QUOTA_GLOBAL,
|
30
28
|
"List Quotas including resources owned by others",
|
31
29
|
[{'method': 'GET', 'path': '/v2/lbaas/quotas'}]
|
32
30
|
),
|
33
31
|
policy.DocumentedRuleDefault(
|
34
|
-
'{
|
35
|
-
action=constants.RBAC_GET_ONE),
|
32
|
+
f'{constants.RBAC_QUOTA}{constants.RBAC_GET_ONE}',
|
36
33
|
constants.RULE_API_READ_QUOTA,
|
37
34
|
"Show Quota details",
|
38
35
|
[{'method': 'GET',
|
39
36
|
'path': '/v2/lbaas/quotas/{project_id}'}]
|
40
37
|
),
|
41
38
|
policy.DocumentedRuleDefault(
|
42
|
-
'{
|
43
|
-
action=constants.RBAC_PUT),
|
39
|
+
f'{constants.RBAC_QUOTA}{constants.RBAC_PUT}',
|
44
40
|
constants.RULE_API_WRITE_QUOTA,
|
45
41
|
"Update a Quota",
|
46
42
|
[{'method': 'PUT',
|
47
43
|
'path': '/v2/lbaas/quotas/{project_id}'}]
|
48
44
|
),
|
49
45
|
policy.DocumentedRuleDefault(
|
50
|
-
'{
|
51
|
-
action=constants.RBAC_DELETE),
|
46
|
+
f'{constants.RBAC_QUOTA}{constants.RBAC_DELETE}',
|
52
47
|
constants.RULE_API_WRITE_QUOTA,
|
53
48
|
"Reset a Quota",
|
54
49
|
[{'method': 'DELETE',
|
55
50
|
'path': '/v2/lbaas/quotas/{project_id}'}]
|
56
51
|
),
|
57
52
|
policy.DocumentedRuleDefault(
|
58
|
-
'{
|
59
|
-
action=constants.RBAC_GET_DEFAULTS),
|
53
|
+
f'{constants.RBAC_QUOTA}{constants.RBAC_GET_DEFAULTS}',
|
60
54
|
constants.RULE_API_READ_QUOTA,
|
61
55
|
"Show Default Quota for a Project",
|
62
56
|
[{'method': 'GET',
|
octavia/statistics/stats_base.py
CHANGED
@@ -48,7 +48,7 @@ def update_stats_via_driver(listener_stats, deltas=False):
|
|
48
48
|
handlers.map_method('update_stats', listener_stats, deltas=deltas)
|
49
49
|
|
50
50
|
|
51
|
-
class StatsDriverMixin(
|
51
|
+
class StatsDriverMixin(metaclass=abc.ABCMeta):
|
52
52
|
@abc.abstractmethod
|
53
53
|
def update_stats(self, listener_stats, deltas=False):
|
54
54
|
"""Return a stats object formatted for a generic backend
|
@@ -35,10 +35,10 @@ def generate_load_balancer(vip=None, amphorae=None,
|
|
35
35
|
additional_vips = additional_vips or []
|
36
36
|
global LB_SEED
|
37
37
|
LB_SEED += 1
|
38
|
-
lb = data_models.LoadBalancer(id='lb{
|
38
|
+
lb = data_models.LoadBalancer(id=f'lb{LB_SEED}-id',
|
39
39
|
project_id='2',
|
40
|
-
name='lb{
|
41
|
-
description='lb{
|
40
|
+
name=f'lb{LB_SEED}',
|
41
|
+
description=f'lb{LB_SEED}',
|
42
42
|
vip=vip,
|
43
43
|
topology=topology,
|
44
44
|
amphorae=amphorae)
|
@@ -68,9 +68,9 @@ VIP_SEED = 0
|
|
68
68
|
def generate_vip(load_balancer=None):
|
69
69
|
global VIP_SEED
|
70
70
|
VIP_SEED += 1
|
71
|
-
vip = data_models.Vip(ip_address='10.0.0.{
|
71
|
+
vip = data_models.Vip(ip_address=f'10.0.0.{VIP_SEED}',
|
72
72
|
subnet_id=ut_constants.MOCK_VIP_SUBNET_ID,
|
73
|
-
port_id='vrrp-port-{
|
73
|
+
port_id=f'vrrp-port-{VIP_SEED}',
|
74
74
|
load_balancer=load_balancer)
|
75
75
|
if load_balancer:
|
76
76
|
vip.load_balancer_id = load_balancer.id
|
@@ -83,12 +83,12 @@ AMP_SEED = 0
|
|
83
83
|
def generate_amphora(load_balancer=None):
|
84
84
|
global AMP_SEED
|
85
85
|
AMP_SEED += 1
|
86
|
-
amp = data_models.Amphora(id='amp{
|
87
|
-
compute_id='amp{
|
86
|
+
amp = data_models.Amphora(id=f'amp{AMP_SEED}-id',
|
87
|
+
compute_id=f'amp{AMP_SEED}-compute-id',
|
88
88
|
status='ACTIVE',
|
89
|
-
lb_network_ip='99.99.99.{
|
90
|
-
vrrp_ip='55.55.55.{
|
91
|
-
vrrp_port_id='vrrp_port-{
|
89
|
+
lb_network_ip=f'99.99.99.{AMP_SEED}',
|
90
|
+
vrrp_ip=f'55.55.55.{AMP_SEED}',
|
91
|
+
vrrp_port_id=f'vrrp_port-{AMP_SEED}-id',
|
92
92
|
load_balancer=load_balancer)
|
93
93
|
if load_balancer:
|
94
94
|
amp.load_balancer_id = load_balancer.id
|
@@ -94,9 +94,9 @@ haproxy_process_current_frontend_ssl_key_rate 0
|
|
94
94
|
# HELP haproxy_process_max_frontend_ssl_key_rate Maximum observed frontend SSL Key computation per second.
|
95
95
|
# TYPE haproxy_process_max_frontend_ssl_key_rate gauge
|
96
96
|
haproxy_process_max_frontend_ssl_key_rate 0
|
97
|
-
# HELP
|
98
|
-
# TYPE
|
99
|
-
|
97
|
+
# HELP haproxy_process_frontend_ssl_reuse SSL session reuse ratio (percent).
|
98
|
+
# TYPE haproxy_process_frontend_ssl_reuse gauge
|
99
|
+
haproxy_process_frontend_ssl_reuse 0
|
100
100
|
# HELP haproxy_process_current_backend_ssl_key_rate Current backend SSL Key computation per second over last elapsed second.
|
101
101
|
# TYPE haproxy_process_current_backend_ssl_key_rate gauge
|
102
102
|
haproxy_process_current_backend_ssl_key_rate 0
|
@@ -870,17 +870,17 @@ haproxy_server_http_responses_total{proxy="6034884d-ed47-49d5-ade7-8fa2c4501a74:
|
|
870
870
|
haproxy_server_http_responses_total{proxy="6034884d-ed47-49d5-ade7-8fa2c4501a74:1a0c13c0-8e69-46c7-a68a-ca4937996d74",server="88ee5795-d594-478b-8591-455acf30164f",code="other"} 0
|
871
871
|
haproxy_server_http_responses_total{proxy="6034884d-ed47-49d5-ade7-8fa2c4501a74:0b248d39-eb90-4180-91aa-5363be7df4db",server="edf6ca81-b5d5-4d94-a656-f6028d8bbb77",code="other"} 0
|
872
872
|
haproxy_server_http_responses_total{proxy="6034884d-ed47-49d5-ade7-8fa2c4501a74:0b248d39-eb90-4180-91aa-5363be7df4db",server="88ee5795-d594-478b-8591-455acf30164f",code="other"} 0
|
873
|
-
# HELP
|
874
|
-
# TYPE
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
# HELP
|
881
|
-
# TYPE
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
873
|
+
# HELP haproxy_server_idle_connections_current Current number of idle connections available for reuse
|
874
|
+
# TYPE haproxy_server_idle_connections_current gauge
|
875
|
+
haproxy_server_idle_connections_current{proxy="prometheus-exporter-internal",server="prometheus-internal"} 0
|
876
|
+
haproxy_server_idle_connections_current{proxy="6034884d-ed47-49d5-ade7-8fa2c4501a74:1a0c13c0-8e69-46c7-a68a-ca4937996d74",server="edf6ca81-b5d5-4d94-a656-f6028d8bbb77"} 0
|
877
|
+
haproxy_server_idle_connections_current{proxy="6034884d-ed47-49d5-ade7-8fa2c4501a74:1a0c13c0-8e69-46c7-a68a-ca4937996d74",server="88ee5795-d594-478b-8591-455acf30164f"} 0
|
878
|
+
haproxy_server_idle_connections_current{proxy="6034884d-ed47-49d5-ade7-8fa2c4501a74:0b248d39-eb90-4180-91aa-5363be7df4db",server="edf6ca81-b5d5-4d94-a656-f6028d8bbb77"} 0
|
879
|
+
haproxy_server_idle_connections_current{proxy="6034884d-ed47-49d5-ade7-8fa2c4501a74:0b248d39-eb90-4180-91aa-5363be7df4db",server="88ee5795-d594-478b-8591-455acf30164f"} 0
|
880
|
+
# HELP haproxy_server_idle_connections_limit Limit on the number of available idle connections
|
881
|
+
# TYPE haproxy_server_idle_connections_limit gauge
|
882
|
+
haproxy_server_idle_connections_limit{proxy="prometheus-exporter-internal",server="prometheus-internal"} 0
|
883
|
+
haproxy_server_idle_connections_limit{proxy="6034884d-ed47-49d5-ade7-8fa2c4501a74:1a0c13c0-8e69-46c7-a68a-ca4937996d74",server="edf6ca81-b5d5-4d94-a656-f6028d8bbb77"} 0
|
884
|
+
haproxy_server_idle_connections_limit{proxy="6034884d-ed47-49d5-ade7-8fa2c4501a74:1a0c13c0-8e69-46c7-a68a-ca4937996d74",server="88ee5795-d594-478b-8591-455acf30164f"} 0
|
885
|
+
haproxy_server_idle_connections_limit{proxy="6034884d-ed47-49d5-ade7-8fa2c4501a74:0b248d39-eb90-4180-91aa-5363be7df4db",server="edf6ca81-b5d5-4d94-a656-f6028d8bbb77"} 0
|
886
|
+
haproxy_server_idle_connections_limit{proxy="6034884d-ed47-49d5-ade7-8fa2c4501a74:0b248d39-eb90-4180-91aa-5363be7df4db",server="88ee5795-d594-478b-8591-455acf30164f"} 0
|
@@ -67,9 +67,9 @@ octavia_loadbalancer_current_frontend_ssl_key_rate 0
|
|
67
67
|
# HELP octavia_loadbalancer_max_frontend_ssl_key_rate Maximum observed frontend SSL Key computation per second.
|
68
68
|
# TYPE octavia_loadbalancer_max_frontend_ssl_key_rate gauge
|
69
69
|
octavia_loadbalancer_max_frontend_ssl_key_rate 0
|
70
|
-
# HELP
|
71
|
-
# TYPE
|
72
|
-
|
70
|
+
# HELP octavia_loadbalancer_frontend_ssl_reuse SSL session reuse ratio (percent).
|
71
|
+
# TYPE octavia_loadbalancer_frontend_ssl_reuse gauge
|
72
|
+
octavia_loadbalancer_frontend_ssl_reuse 0
|
73
73
|
# HELP octavia_loadbalancer_current_backend_ssl_key_rate Current backend SSL Key computation per second over last elapsed second.
|
74
74
|
# TYPE octavia_loadbalancer_current_backend_ssl_key_rate gauge
|
75
75
|
octavia_loadbalancer_current_backend_ssl_key_rate 0
|
@@ -97,7 +97,7 @@ octavia_loadbalancer_listeners 6
|
|
97
97
|
# HELP octavia_loadbalancer_dropped_logs_total Total number of dropped logs.
|
98
98
|
# TYPE octavia_loadbalancer_dropped_logs_total counter
|
99
99
|
octavia_loadbalancer_dropped_logs_total 0
|
100
|
-
# HELP octavia_listener_status Current status of the listener.
|
100
|
+
# HELP octavia_listener_status Current status of the listener.
|
101
101
|
# TYPE octavia_listener_status gauge
|
102
102
|
octavia_listener_status{listener="1a0c13c0-8e69-46c7-a68a-ca4937996d74"} 1
|
103
103
|
octavia_listener_status{listener="4919eeb2-b3ed-40c5-8200-057400b83bb7"} 1
|
@@ -247,7 +247,7 @@ octavia_listener_http_comp_bytes_bypassed_total{listener="0b248d39-eb90-4180-91a
|
|
247
247
|
octavia_listener_http_comp_responses_total{listener="1a0c13c0-8e69-46c7-a68a-ca4937996d74"} 0
|
248
248
|
octavia_listener_http_comp_responses_total{listener="4919eeb2-b3ed-40c5-8200-057400b83bb7"} 0
|
249
249
|
octavia_listener_http_comp_responses_total{listener="0b248d39-eb90-4180-91aa-5363be7df4db"} 0
|
250
|
-
# HELP octavia_pool_status Current status of the pool.
|
250
|
+
# HELP octavia_pool_status Current status of the pool.
|
251
251
|
# TYPE octavia_pool_status gauge
|
252
252
|
octavia_pool_status{pool="6034884d-ed47-49d5-ade7-8fa2c4501a74:1a0c13c0-8e69-46c7-a68a-ca4937996d74"} 0
|
253
253
|
octavia_pool_status{pool="6034884d-ed47-49d5-ade7-8fa2c4501a74:0b248d39-eb90-4180-91aa-5363be7df4db"} 0
|
@@ -433,7 +433,7 @@ octavia_pool_http_comp_bytes_bypassed_total{pool="6034884d-ed47-49d5-ade7-8fa2c4
|
|
433
433
|
# TYPE octavia_pool_http_comp_responses_total counter
|
434
434
|
octavia_pool_http_comp_responses_total{pool="6034884d-ed47-49d5-ade7-8fa2c4501a74:1a0c13c0-8e69-46c7-a68a-ca4937996d74"} 0
|
435
435
|
octavia_pool_http_comp_responses_total{pool="6034884d-ed47-49d5-ade7-8fa2c4501a74:0b248d39-eb90-4180-91aa-5363be7df4db"} 0
|
436
|
-
# HELP octavia_member_status Current status of the member.
|
436
|
+
# HELP octavia_member_status Current status of the member.
|
437
437
|
# TYPE octavia_member_status gauge
|
438
438
|
octavia_member_status{pool="6034884d-ed47-49d5-ade7-8fa2c4501a74:1a0c13c0-8e69-46c7-a68a-ca4937996d74",member="edf6ca81-b5d5-4d94-a656-f6028d8bbb77"} 0
|
439
439
|
octavia_member_status{pool="6034884d-ed47-49d5-ade7-8fa2c4501a74:1a0c13c0-8e69-46c7-a68a-ca4937996d74",member="88ee5795-d594-478b-8591-455acf30164f"} 0
|
octavia/tests/common/utils.py
CHANGED
@@ -48,7 +48,7 @@ class OpenFixture(fixtures.Fixture):
|
|
48
48
|
|
49
49
|
def assert_address_lists_equal(obj, l1, l2):
|
50
50
|
obj.assertEqual(len(l1), len(l2),
|
51
|
-
"Address lists don't match: {} vs {}"
|
51
|
+
f"Address lists don't match: {l1} vs {l2}")
|
52
52
|
for a1, a2 in zip(l1, l2):
|
53
53
|
if consts.ADDRESS in a1 and consts.ADDRESS in a2:
|
54
54
|
obj.assertEqual(
|
@@ -62,7 +62,7 @@ def assert_address_lists_equal(obj, l1, l2):
|
|
62
62
|
|
63
63
|
def assert_route_lists_equal(obj, l1, l2):
|
64
64
|
obj.assertEqual(len(l1), len(l2),
|
65
|
-
"Routes don't match: {} vs {}"
|
65
|
+
f"Routes don't match: {l1} vs {l2}")
|
66
66
|
for r1, r2 in zip(l1, l2):
|
67
67
|
obj.assertEqual(
|
68
68
|
ipaddress.ip_network(r1[consts.DST]),
|
@@ -116,8 +116,6 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
116
116
|
'install_netns_systemd_service')
|
117
117
|
@mock.patch('pyroute2.NetNS', create=True)
|
118
118
|
@mock.patch('shutil.copy2')
|
119
|
-
@mock.patch('octavia.amphorae.backends.agent.api_server.util.'
|
120
|
-
'get_os_init_system', return_value=consts.INIT_SYSTEMD)
|
121
119
|
@mock.patch('os.chmod')
|
122
120
|
@mock.patch('os.path.exists')
|
123
121
|
@mock.patch('os.makedirs')
|
@@ -125,8 +123,7 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
125
123
|
@mock.patch('subprocess.check_output')
|
126
124
|
def test_upload_lvs_listener_config_no_vrrp_check_dir(
|
127
125
|
self, m_check_output, m_os_rm, m_os_mkdir, m_exists, m_os_chmod,
|
128
|
-
|
129
|
-
mock_systemctl):
|
126
|
+
m_copy2, mock_netns, mock_install_netns, mock_systemctl):
|
130
127
|
m_exists.side_effect = [False, False, True, True, False, False]
|
131
128
|
cfg_path = util.keepalived_lvs_cfg_path(self.FAKE_ID)
|
132
129
|
m = self.useFixture(test_utils.OpenFixture(cfg_path)).mock_open
|
@@ -143,9 +140,10 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
143
140
|
mock_install_netns.assert_called_once()
|
144
141
|
systemctl_calls = [
|
145
142
|
mock.call(consts.ENABLE,
|
146
|
-
consts.AMP_NETNS_SVC_PREFIX),
|
147
|
-
mock.call(
|
148
|
-
|
143
|
+
consts.AMP_NETNS_SVC_PREFIX, False),
|
144
|
+
mock.call(
|
145
|
+
consts.ENABLE,
|
146
|
+
'octavia-keepalivedlvs-%s.service' % self.FAKE_ID),
|
149
147
|
]
|
150
148
|
mock_systemctl.assert_has_calls(systemctl_calls)
|
151
149
|
os_mkdir_calls = [
|
@@ -159,8 +157,7 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
159
157
|
|
160
158
|
flags = os.O_WRONLY | os.O_CREAT | os.O_TRUNC
|
161
159
|
mode = stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH
|
162
|
-
systemd_cfg_path = util.keepalived_lvs_init_path(
|
163
|
-
consts.INIT_SYSTEMD, self.FAKE_ID)
|
160
|
+
systemd_cfg_path = util.keepalived_lvs_init_path(self.FAKE_ID)
|
164
161
|
|
165
162
|
m_open_calls = [
|
166
163
|
mock.call(cfg_path, flags, mode),
|
@@ -181,8 +178,6 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
181
178
|
'install_netns_systemd_service')
|
182
179
|
@mock.patch('pyroute2.NetNS', create=True)
|
183
180
|
@mock.patch('shutil.copy2')
|
184
|
-
@mock.patch('octavia.amphorae.backends.agent.api_server.util.'
|
185
|
-
'get_os_init_system', return_value=consts.INIT_SYSTEMD)
|
186
181
|
@mock.patch('os.chmod')
|
187
182
|
@mock.patch('os.path.exists')
|
188
183
|
@mock.patch('os.makedirs')
|
@@ -190,8 +185,8 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
190
185
|
@mock.patch('subprocess.check_output')
|
191
186
|
def test_upload_lvs_listener_config_with_vrrp_check_dir(
|
192
187
|
self, m_check_output, m_os_rm, m_os_mkdir, m_exists, m_os_chmod,
|
193
|
-
|
194
|
-
|
188
|
+
m_copy2, mock_netns, mock_install_netns, mock_systemctl,
|
189
|
+
mock_get_lbs, mock_get_lvs_listeners):
|
195
190
|
m_exists.side_effect = [False, False, True, True, False, False, False]
|
196
191
|
mock_get_lbs.return_value = []
|
197
192
|
mock_get_lvs_listeners.return_value = [self.FAKE_ID]
|
@@ -219,9 +214,10 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
219
214
|
mock_install_netns.assert_called_once()
|
220
215
|
systemctl_calls = [
|
221
216
|
mock.call(consts.ENABLE,
|
222
|
-
consts.AMP_NETNS_SVC_PREFIX),
|
223
|
-
mock.call(
|
224
|
-
|
217
|
+
consts.AMP_NETNS_SVC_PREFIX, False),
|
218
|
+
mock.call(
|
219
|
+
consts.ENABLE,
|
220
|
+
'octavia-keepalivedlvs-%s.service' % self.FAKE_ID)
|
225
221
|
]
|
226
222
|
mock_systemctl.assert_has_calls(systemctl_calls)
|
227
223
|
|
@@ -229,8 +225,7 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
229
225
|
util.keepalived_backend_check_script_path(), stat.S_IEXEC)
|
230
226
|
flags = os.O_WRONLY | os.O_CREAT | os.O_TRUNC
|
231
227
|
mode = stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH
|
232
|
-
systemd_cfg_path = util.keepalived_lvs_init_path(
|
233
|
-
consts.INIT_SYSTEMD, self.FAKE_ID)
|
228
|
+
systemd_cfg_path = util.keepalived_lvs_init_path(self.FAKE_ID)
|
234
229
|
script_path = os.path.join(
|
235
230
|
util.keepalived_check_scripts_dir(),
|
236
231
|
keepalivedlvs.KEEPALIVED_CHECK_SCRIPT_NAME)
|
@@ -252,8 +247,6 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
252
247
|
@mock.patch('octavia.amphorae.backends.agent.api_server.util.'
|
253
248
|
'install_netns_systemd_service')
|
254
249
|
@mock.patch('shutil.copy2')
|
255
|
-
@mock.patch('octavia.amphorae.backends.agent.api_server.util.'
|
256
|
-
'get_os_init_system', return_value=consts.INIT_SYSTEMD)
|
257
250
|
@mock.patch('os.chmod')
|
258
251
|
@mock.patch('os.path.exists')
|
259
252
|
@mock.patch('os.makedirs')
|
@@ -261,7 +254,7 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
261
254
|
@mock.patch('subprocess.check_output')
|
262
255
|
def test_upload_lvs_listener_config_start_service_failure(
|
263
256
|
self, m_check_output, m_os_rm, m_os_mkdir, m_exists, m_os_chmod,
|
264
|
-
|
257
|
+
m_copy2, mock_install_netns, mock_systemctl):
|
265
258
|
m_exists.side_effect = [False, False, True, True, False]
|
266
259
|
cfg_path = util.keepalived_lvs_cfg_path(self.FAKE_ID)
|
267
260
|
m = self.useFixture(test_utils.OpenFixture(cfg_path)).mock_open
|
@@ -283,9 +276,10 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
283
276
|
mock_install_netns.assert_called_once()
|
284
277
|
systemctl_calls = [
|
285
278
|
mock.call(consts.ENABLE,
|
286
|
-
consts.AMP_NETNS_SVC_PREFIX),
|
287
|
-
mock.call(
|
288
|
-
|
279
|
+
consts.AMP_NETNS_SVC_PREFIX, False),
|
280
|
+
mock.call(
|
281
|
+
consts.ENABLE,
|
282
|
+
'octavia-keepalivedlvs-%s.service' % self.FAKE_ID)
|
289
283
|
]
|
290
284
|
mock_systemctl.assert_has_calls(systemctl_calls)
|
291
285
|
|
@@ -293,8 +287,7 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
293
287
|
util.keepalived_backend_check_script_path(), stat.S_IEXEC)
|
294
288
|
flags = os.O_WRONLY | os.O_CREAT | os.O_TRUNC
|
295
289
|
mode = stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH
|
296
|
-
systemd_cfg_path = util.keepalived_lvs_init_path(
|
297
|
-
consts.INIT_SYSTEMD, self.FAKE_ID)
|
290
|
+
systemd_cfg_path = util.keepalived_lvs_init_path(self.FAKE_ID)
|
298
291
|
m_open_calls = [
|
299
292
|
mock.call(cfg_path, flags, mode),
|
300
293
|
mock.call(systemd_cfg_path, flags, mode)
|
@@ -311,10 +304,10 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
311
304
|
def test_manage_lvs_listener(self, mock_lvs_exist, mock_check_output):
|
312
305
|
res = self.test_keepalivedlvs.manage_lvs_listener(self.FAKE_ID,
|
313
306
|
'start')
|
314
|
-
cmd =
|
315
|
-
" {action}".format(listener_id=self.FAKE_ID, action='start'))
|
307
|
+
cmd = f"systemctl start octavia-keepalivedlvs-{self.FAKE_ID}.service"
|
316
308
|
mock_check_output.assert_called_once_with(cmd.split(),
|
317
|
-
stderr=subprocess.STDOUT
|
309
|
+
stderr=subprocess.STDOUT,
|
310
|
+
encoding='utf-8')
|
318
311
|
self.assertEqual(202, res.status_code)
|
319
312
|
|
320
313
|
res = self.test_keepalivedlvs.manage_lvs_listener(self.FAKE_ID,
|
@@ -330,25 +323,24 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
330
323
|
|
331
324
|
@mock.patch('octavia.amphorae.backends.agent.api_server.util.'
|
332
325
|
'get_lvs_listeners', return_value=[LISTENER_ID])
|
333
|
-
@mock.patch('octavia.amphorae.backends.agent.api_server.util.'
|
334
|
-
'get_os_init_system', return_value=consts.INIT_SYSTEMD)
|
335
326
|
@mock.patch('octavia.amphorae.backends.agent.api_server.util.'
|
336
327
|
'get_keepalivedlvs_pid', return_value="12345")
|
337
328
|
@mock.patch('subprocess.check_output')
|
338
329
|
@mock.patch('os.remove')
|
339
330
|
@mock.patch('os.path.exists')
|
340
331
|
def test_delete_lvs_listener(self, m_exist, m_remove, m_check_output,
|
341
|
-
mget_pid,
|
332
|
+
mget_pid, mget_lvs_listeners):
|
342
333
|
m_exist.return_value = True
|
343
334
|
res = self.test_keepalivedlvs.delete_lvs_listener(self.FAKE_ID)
|
344
335
|
|
345
|
-
cmd1 =
|
346
|
-
"octavia-keepalivedlvs-{0} stop".format(self.FAKE_ID))
|
336
|
+
cmd1 = f"systemctl stop octavia-keepalivedlvs-{self.FAKE_ID}.service"
|
347
337
|
cmd2 = ("systemctl disable "
|
348
|
-
"octavia-keepalivedlvs-{
|
338
|
+
f"octavia-keepalivedlvs-{self.FAKE_ID}.service")
|
349
339
|
calls = [
|
350
|
-
mock.call(cmd1.split(), stderr=subprocess.STDOUT
|
351
|
-
|
340
|
+
mock.call(cmd1.split(), stderr=subprocess.STDOUT,
|
341
|
+
encoding='utf-8'),
|
342
|
+
mock.call(cmd2.split(), stderr=subprocess.STDOUT,
|
343
|
+
encoding='utf-8')
|
352
344
|
]
|
353
345
|
m_check_output.assert_has_calls(calls)
|
354
346
|
self.assertEqual(200, res.status_code)
|
@@ -360,9 +352,10 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
360
352
|
self.test_keepalivedlvs.delete_lvs_listener(self.FAKE_ID)
|
361
353
|
calls = [
|
362
354
|
mock.call(
|
363
|
-
json=dict(
|
364
|
-
|
365
|
-
|
355
|
+
json=dict(
|
356
|
+
message='UDP Listener Not Found',
|
357
|
+
details=f"No UDP listener with UUID: {self.FAKE_ID}"
|
358
|
+
), status=404),
|
366
359
|
mock.call(json={'message': 'OK'})
|
367
360
|
]
|
368
361
|
m_webob.Response.assert_has_calls(calls)
|
@@ -381,8 +374,6 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
381
374
|
self.assertEqual({'message': 'Error stopping keepalivedlvs',
|
382
375
|
'details': None}, res.json)
|
383
376
|
|
384
|
-
@mock.patch('octavia.amphorae.backends.agent.api_server.util.'
|
385
|
-
'get_os_init_system', return_value=consts.INIT_SYSVINIT)
|
386
377
|
@mock.patch('octavia.amphorae.backends.agent.api_server.util.'
|
387
378
|
'get_keepalivedlvs_pid', return_value="12345")
|
388
379
|
@mock.patch('subprocess.check_output')
|
@@ -390,8 +381,7 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
390
381
|
@mock.patch('os.path.exists')
|
391
382
|
def test_delete_lvs_listener_disable_service_fail(self, m_exist, m_remove,
|
392
383
|
m_check_output,
|
393
|
-
mget_pid
|
394
|
-
m_init_sys):
|
384
|
+
mget_pid):
|
395
385
|
m_exist.return_value = True
|
396
386
|
m_check_output.side_effect = [True,
|
397
387
|
subprocess.CalledProcessError(
|
@@ -399,22 +389,6 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
399
389
|
res = self.test_keepalivedlvs.delete_lvs_listener(self.FAKE_ID)
|
400
390
|
self.assertEqual(500, res.status_code)
|
401
391
|
self.assertEqual({
|
402
|
-
'message': 'Error disabling '
|
403
|
-
'
|
392
|
+
'message': f'Error disabling octavia-keepalivedlvs-{self.FAKE_ID} '
|
393
|
+
f'service',
|
404
394
|
'details': None}, res.json)
|
405
|
-
|
406
|
-
@mock.patch('octavia.amphorae.backends.agent.api_server.util.'
|
407
|
-
'get_os_init_system')
|
408
|
-
@mock.patch('octavia.amphorae.backends.agent.api_server.util.'
|
409
|
-
'get_keepalivedlvs_pid', return_value="12345")
|
410
|
-
@mock.patch('subprocess.check_output')
|
411
|
-
@mock.patch('os.remove')
|
412
|
-
@mock.patch('os.path.exists')
|
413
|
-
def test_delete_lvs_listener_unsupported_sysinit(self, m_exist, m_remove,
|
414
|
-
m_check_output, mget_pid,
|
415
|
-
m_init_sys):
|
416
|
-
m_exist.return_value = True
|
417
|
-
self.assertRaises(
|
418
|
-
util.UnknownInitError,
|
419
|
-
self.test_keepalivedlvs.delete_lvs_listener,
|
420
|
-
self.FAKE_ID)
|