octavia 14.0.0__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.dist-info → octavia-15.0.0.0rc1.dist-info}/AUTHORS +6 -0
- {octavia-14.0.0.dist-info → octavia-15.0.0.0rc1.dist-info}/METADATA +3 -5
- {octavia-14.0.0.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.dist-info/pbr.json +0 -1
- {octavia-14.0.0.data → octavia-15.0.0.0rc1.data}/data/share/octavia/LICENSE +0 -0
- {octavia-14.0.0.data → octavia-15.0.0.0rc1.data}/data/share/octavia/README.rst +0 -0
- {octavia-14.0.0.data → octavia-15.0.0.0rc1.data}/data/share/octavia/diskimage-create/README.rst +0 -0
- {octavia-14.0.0.data → octavia-15.0.0.0rc1.data}/data/share/octavia/diskimage-create/diskimage-create.sh +0 -0
- {octavia-14.0.0.data → octavia-15.0.0.0rc1.data}/data/share/octavia/diskimage-create/image-tests.sh +0 -0
- {octavia-14.0.0.data → octavia-15.0.0.0rc1.data}/data/share/octavia/diskimage-create/requirements.txt +0 -0
- {octavia-14.0.0.data → octavia-15.0.0.0rc1.data}/data/share/octavia/diskimage-create/test-requirements.txt +0 -0
- {octavia-14.0.0.data → octavia-15.0.0.0rc1.data}/data/share/octavia/diskimage-create/tox.ini +0 -0
- {octavia-14.0.0.data → octavia-15.0.0.0rc1.data}/data/share/octavia/diskimage-create/version.txt +0 -0
- {octavia-14.0.0.data → octavia-15.0.0.0rc1.data}/scripts/octavia-wsgi +0 -0
- {octavia-14.0.0.dist-info → octavia-15.0.0.0rc1.dist-info}/LICENSE +0 -0
- {octavia-14.0.0.dist-info → octavia-15.0.0.0rc1.dist-info}/WHEEL +0 -0
- {octavia-14.0.0.dist-info → octavia-15.0.0.0rc1.dist-info}/entry_points.txt +0 -0
- {octavia-14.0.0.dist-info → octavia-15.0.0.0rc1.dist-info}/top_level.txt +0 -0
@@ -89,7 +89,7 @@ class TestMember(base.BaseAPITest):
|
|
89
89
|
'is_admin_project': True,
|
90
90
|
'service_project_domain_id': None,
|
91
91
|
'service_project_id': None,
|
92
|
-
'roles': ['load-balancer_member'],
|
92
|
+
'roles': ['load-balancer_member', 'member'],
|
93
93
|
'user_id': None,
|
94
94
|
'is_admin': False,
|
95
95
|
'service_user_domain_id': None,
|
@@ -194,7 +194,7 @@ class TestMember(base.BaseAPITest):
|
|
194
194
|
'is_admin_project': True,
|
195
195
|
'service_project_domain_id': None,
|
196
196
|
'service_project_id': None,
|
197
|
-
'roles': ['load-balancer_member'],
|
197
|
+
'roles': ['load-balancer_member', 'member'],
|
198
198
|
'user_id': None,
|
199
199
|
'is_admin': False,
|
200
200
|
'service_user_domain_id': None,
|
@@ -352,10 +352,10 @@ class TestMember(base.BaseAPITest):
|
|
352
352
|
members = self.get(self.members_path, params={
|
353
353
|
'fields': ['id', 'address']}).json
|
354
354
|
for member in members['members']:
|
355
|
-
self.assertIn(
|
356
|
-
self.assertIn(
|
357
|
-
self.assertNotIn(
|
358
|
-
self.assertNotIn(
|
355
|
+
self.assertIn('id', member)
|
356
|
+
self.assertIn('address', member)
|
357
|
+
self.assertNotIn('name', member)
|
358
|
+
self.assertNotIn('monitor_address', member)
|
359
359
|
|
360
360
|
def test_get_one_fields_filter(self):
|
361
361
|
member1 = self.create_member(
|
@@ -365,10 +365,10 @@ class TestMember(base.BaseAPITest):
|
|
365
365
|
member = self.get(
|
366
366
|
self.member_path.format(member_id=member1.get('id')),
|
367
367
|
params={'fields': ['id', 'address']}).json.get(self.root_tag)
|
368
|
-
self.assertIn(
|
369
|
-
self.assertIn(
|
370
|
-
self.assertNotIn(
|
371
|
-
self.assertNotIn(
|
368
|
+
self.assertIn('id', member)
|
369
|
+
self.assertIn('address', member)
|
370
|
+
self.assertNotIn('name', member)
|
371
|
+
self.assertNotIn('monitor_address', member)
|
372
372
|
|
373
373
|
def test_get_all_filter(self):
|
374
374
|
mem1 = self.create_member(self.pool_id,
|
@@ -529,7 +529,7 @@ class TestMember(base.BaseAPITest):
|
|
529
529
|
'is_admin_project': True,
|
530
530
|
'service_project_domain_id': None,
|
531
531
|
'service_project_id': None,
|
532
|
-
'roles': ['load-balancer_member'],
|
532
|
+
'roles': ['load-balancer_member', 'member'],
|
533
533
|
'user_id': None,
|
534
534
|
'is_admin': False,
|
535
535
|
'service_user_domain_id': None,
|
@@ -591,7 +591,7 @@ class TestMember(base.BaseAPITest):
|
|
591
591
|
self.set_object_status(self.pool_repo, pool1_id,
|
592
592
|
provisioning_status=constants.ERROR)
|
593
593
|
api_member = self.create_member(pool1_id, '192.0.2.1', 80, status=409)
|
594
|
-
ref_msg = 'Pool
|
594
|
+
ref_msg = f'Pool {pool1_id} is immutable and cannot be updated.'
|
595
595
|
self.assertEqual(ref_msg, api_member.get('faultstring'))
|
596
596
|
|
597
597
|
# TODO(rm_work) Remove after deprecation of project_id in POST (R series)
|
@@ -689,7 +689,7 @@ class TestMember(base.BaseAPITest):
|
|
689
689
|
# Order matters here
|
690
690
|
provider_creates += provider_updates
|
691
691
|
|
692
|
-
mock_provider.assert_called_once_with(
|
692
|
+
mock_provider.assert_called_once_with('noop_driver',
|
693
693
|
mock_driver.member_batch_update,
|
694
694
|
self.pool_id, provider_creates)
|
695
695
|
|
@@ -732,7 +732,7 @@ class TestMember(base.BaseAPITest):
|
|
732
732
|
provider_dict['name'] = None
|
733
733
|
provider_members.append(driver_dm.Member(**provider_dict))
|
734
734
|
|
735
|
-
mock_provider.assert_called_once_with(
|
735
|
+
mock_provider.assert_called_once_with('noop_driver',
|
736
736
|
mock_driver.member_batch_update,
|
737
737
|
self.pool_id, provider_members)
|
738
738
|
|
@@ -792,7 +792,7 @@ class TestMember(base.BaseAPITest):
|
|
792
792
|
req_dict = [member1, member2, member5, member6]
|
793
793
|
body = {self.root_tag_list: req_dict}
|
794
794
|
path = self.MEMBERS_PATH.format(pool_id=self.pool_id)
|
795
|
-
path = "{}?additive_only=True"
|
795
|
+
path = f"{path}?additive_only=True"
|
796
796
|
self.put(path, body, status=202)
|
797
797
|
returned_members = self.get(
|
798
798
|
self.MEMBERS_PATH.format(pool_id=self.pool_id)
|
@@ -834,7 +834,7 @@ class TestMember(base.BaseAPITest):
|
|
834
834
|
provider_creates += provider_updates
|
835
835
|
provider_creates += provider_ignored
|
836
836
|
|
837
|
-
mock_provider.assert_called_once_with(
|
837
|
+
mock_provider.assert_called_once_with('noop_driver',
|
838
838
|
mock_driver.member_batch_update,
|
839
839
|
self.pool_id, provider_creates)
|
840
840
|
|
@@ -885,7 +885,7 @@ class TestMember(base.BaseAPITest):
|
|
885
885
|
del provider_dict['subnet_id']
|
886
886
|
provider_members.append(driver_dm.Member(**provider_dict))
|
887
887
|
|
888
|
-
mock_provider.assert_called_once_with(
|
888
|
+
mock_provider.assert_called_once_with('noop_driver',
|
889
889
|
mock_driver.member_batch_update,
|
890
890
|
self.pool_id, provider_members)
|
891
891
|
|
@@ -913,6 +913,38 @@ class TestMember(base.BaseAPITest):
|
|
913
913
|
m_subnet_exists.assert_called_once_with(
|
914
914
|
member1['subnet_id'], context=mock.ANY)
|
915
915
|
|
916
|
+
@mock.patch('octavia.api.drivers.driver_factory.get_driver')
|
917
|
+
@mock.patch('octavia.api.drivers.utils.call_provider')
|
918
|
+
def test_update_members_member_duplicate(
|
919
|
+
self, mock_provider, mock_get_driver):
|
920
|
+
mock_driver = mock.MagicMock()
|
921
|
+
mock_driver.name = 'noop_driver'
|
922
|
+
mock_get_driver.return_value = mock_driver
|
923
|
+
subnet_id = uuidutils.generate_uuid()
|
924
|
+
|
925
|
+
member1 = {'address': '192.0.2.1', 'protocol_port': 80,
|
926
|
+
'project_id': self.project_id, 'subnet_id': subnet_id}
|
927
|
+
|
928
|
+
req_dict = [member1]
|
929
|
+
body = {self.root_tag_list: req_dict}
|
930
|
+
path = self.MEMBERS_PATH.format(pool_id=self.pool_id)
|
931
|
+
self.put(path, body, status=202)
|
932
|
+
|
933
|
+
self.set_lb_status(self.lb_id)
|
934
|
+
|
935
|
+
# Same member (same address and protocol_port) updated twice in the
|
936
|
+
# same PUT request
|
937
|
+
member1 = {'address': '192.0.2.1', 'protocol_port': 80,
|
938
|
+
'project_id': self.project_id, 'subnet_id': subnet_id,
|
939
|
+
'name': 'member1'}
|
940
|
+
member2 = {'address': '192.0.2.1', 'protocol_port': 80,
|
941
|
+
'project_id': self.project_id, 'subnet_id': subnet_id,
|
942
|
+
'name': 'member2'}
|
943
|
+
|
944
|
+
req_dict = [member1, member2]
|
945
|
+
body = {self.root_tag_list: req_dict}
|
946
|
+
self.put(path, body, status=400)
|
947
|
+
|
916
948
|
@mock.patch('octavia.api.drivers.driver_factory.get_driver')
|
917
949
|
@mock.patch('octavia.api.drivers.utils.call_provider')
|
918
950
|
def test_update_members_subnet_not_found(
|
@@ -971,7 +1003,7 @@ class TestMember(base.BaseAPITest):
|
|
971
1003
|
rm['protocol_port'],
|
972
1004
|
rm['provisioning_status']), expected_members)
|
973
1005
|
|
974
|
-
mock_provider.assert_called_once_with(
|
1006
|
+
mock_provider.assert_called_once_with('noop_driver',
|
975
1007
|
mock_driver.member_batch_update,
|
976
1008
|
self.pool_id, provider_members)
|
977
1009
|
|
@@ -1146,7 +1178,7 @@ class TestMember(base.BaseAPITest):
|
|
1146
1178
|
'is_admin_project': True,
|
1147
1179
|
'service_project_domain_id': None,
|
1148
1180
|
'service_project_id': None,
|
1149
|
-
'roles': ['load-balancer_member'],
|
1181
|
+
'roles': ['load-balancer_member', 'member'],
|
1150
1182
|
'user_id': None,
|
1151
1183
|
'is_admin': False,
|
1152
1184
|
'service_user_domain_id': None,
|
@@ -1328,7 +1360,7 @@ class TestMember(base.BaseAPITest):
|
|
1328
1360
|
'is_admin_project': True,
|
1329
1361
|
'service_project_domain_id': None,
|
1330
1362
|
'service_project_id': None,
|
1331
|
-
'roles': ['load-balancer_member'],
|
1363
|
+
'roles': ['load-balancer_member', 'member'],
|
1332
1364
|
'user_id': None,
|
1333
1365
|
'is_admin': False,
|
1334
1366
|
'service_user_domain_id': None,
|
@@ -1402,7 +1434,7 @@ class TestMember(base.BaseAPITest):
|
|
1402
1434
|
member_path = self.MEMBERS_PATH.format(
|
1403
1435
|
pool_id=bad_pool_id) + '/' + api_member['id']
|
1404
1436
|
result = self.delete(member_path, status=404).json
|
1405
|
-
ref_msg =
|
1437
|
+
ref_msg = f"Member {api_member['id']} not found."
|
1406
1438
|
self.assertEqual(ref_msg, result.get('faultstring'))
|
1407
1439
|
|
1408
1440
|
@mock.patch('octavia.api.drivers.utils.call_provider')
|
@@ -105,7 +105,7 @@ class TestPool(base.BaseAPITest):
|
|
105
105
|
'is_admin_project': True,
|
106
106
|
'service_project_domain_id': None,
|
107
107
|
'service_project_id': None,
|
108
|
-
'roles': ['load-balancer_member'],
|
108
|
+
'roles': ['load-balancer_member', 'member'],
|
109
109
|
'user_id': None,
|
110
110
|
'is_admin': False,
|
111
111
|
'service_user_domain_id': None,
|
@@ -247,7 +247,7 @@ class TestPool(base.BaseAPITest):
|
|
247
247
|
'is_admin_project': True,
|
248
248
|
'service_project_domain_id': None,
|
249
249
|
'service_project_id': None,
|
250
|
-
'roles': ['load-balancer_member'],
|
250
|
+
'roles': ['load-balancer_member', 'member'],
|
251
251
|
'user_id': None,
|
252
252
|
'is_admin': False,
|
253
253
|
'service_user_domain_id': None,
|
@@ -553,9 +553,9 @@ class TestPool(base.BaseAPITest):
|
|
553
553
|
pools = self.get(self.POOLS_PATH, params={
|
554
554
|
'fields': ['id', 'project_id']}).json
|
555
555
|
for pool in pools['pools']:
|
556
|
-
self.assertIn(
|
557
|
-
self.assertIn(
|
558
|
-
self.assertNotIn(
|
556
|
+
self.assertIn('id', pool)
|
557
|
+
self.assertIn('project_id', pool)
|
558
|
+
self.assertNotIn('description', pool)
|
559
559
|
|
560
560
|
def test_get_one_fields_filter(self):
|
561
561
|
pool1 = self.create_pool(
|
@@ -568,9 +568,9 @@ class TestPool(base.BaseAPITest):
|
|
568
568
|
pool = self.get(
|
569
569
|
self.POOL_PATH.format(pool_id=pool1.get('id')),
|
570
570
|
params={'fields': ['id', 'project_id']}).json.get(self.root_tag)
|
571
|
-
self.assertIn(
|
572
|
-
self.assertIn(
|
573
|
-
self.assertNotIn(
|
571
|
+
self.assertIn('id', pool)
|
572
|
+
self.assertIn('project_id', pool)
|
573
|
+
self.assertNotIn('description', pool)
|
574
574
|
|
575
575
|
def test_get_all_filter(self):
|
576
576
|
po1 = self.create_pool(
|
@@ -742,7 +742,7 @@ class TestPool(base.BaseAPITest):
|
|
742
742
|
'is_admin_project': True,
|
743
743
|
'service_project_domain_id': None,
|
744
744
|
'service_project_id': None,
|
745
|
-
'roles': ['load-balancer_member'],
|
745
|
+
'roles': ['load-balancer_member', 'member'],
|
746
746
|
'user_id': None,
|
747
747
|
'is_admin': False,
|
748
748
|
'service_user_domain_id': None,
|
@@ -1274,7 +1274,7 @@ class TestPool(base.BaseAPITest):
|
|
1274
1274
|
'is_admin_project': True,
|
1275
1275
|
'service_project_domain_id': None,
|
1276
1276
|
'service_project_id': None,
|
1277
|
-
'roles': ['load-balancer_member'],
|
1277
|
+
'roles': ['load-balancer_member', 'member'],
|
1278
1278
|
'user_id': None,
|
1279
1279
|
'is_admin': False,
|
1280
1280
|
'service_user_domain_id': None,
|
@@ -2102,7 +2102,7 @@ class TestPool(base.BaseAPITest):
|
|
2102
2102
|
'is_admin_project': True,
|
2103
2103
|
'service_project_domain_id': None,
|
2104
2104
|
'service_project_id': None,
|
2105
|
-
'roles': ['load-balancer_member'],
|
2105
|
+
'roles': ['load-balancer_member', 'member'],
|
2106
2106
|
'user_id': None,
|
2107
2107
|
'is_admin': False,
|
2108
2108
|
'service_user_domain_id': None,
|
@@ -33,10 +33,10 @@ class TestProvider(base.BaseAPITest):
|
|
33
33
|
super().setUp()
|
34
34
|
|
35
35
|
def test_get_all_providers(self):
|
36
|
-
octavia_dict = {
|
37
|
-
|
38
|
-
amphora_dict = {
|
39
|
-
noop_dict = {
|
36
|
+
octavia_dict = {'description': 'Octavia driver.',
|
37
|
+
'name': 'octavia'}
|
38
|
+
amphora_dict = {'description': 'Amp driver.', 'name': 'amphora'}
|
39
|
+
noop_dict = {'description': 'NoOp driver.', 'name': 'noop_driver'}
|
40
40
|
providers = self.get(self.PROVIDERS_PATH).json.get(self.root_tag_list)
|
41
41
|
self.assertEqual(4, len(providers))
|
42
42
|
self.assertIn(octavia_dict, providers)
|
@@ -44,9 +44,9 @@ class TestProvider(base.BaseAPITest):
|
|
44
44
|
self.assertIn(noop_dict, providers)
|
45
45
|
|
46
46
|
def test_get_all_providers_fields(self):
|
47
|
-
octavia_dict = {
|
48
|
-
amphora_dict = {
|
49
|
-
noop_dict = {
|
47
|
+
octavia_dict = {'name': 'octavia'}
|
48
|
+
amphora_dict = {'name': 'amphora'}
|
49
|
+
noop_dict = {'name': 'noop_driver'}
|
50
50
|
providers = self.get(self.PROVIDERS_PATH, params={'fields': ['name']})
|
51
51
|
providers_list = providers.json.get(self.root_tag_list)
|
52
52
|
self.assertEqual(4, len(providers_list))
|
@@ -394,7 +394,7 @@ class TestQuotas(base.BaseAPITest):
|
|
394
394
|
'is_admin_project': True,
|
395
395
|
'service_project_domain_id': None,
|
396
396
|
'service_project_id': None,
|
397
|
-
'roles': ['load-balancer_member'],
|
397
|
+
'roles': ['load-balancer_member', 'member'],
|
398
398
|
'user_id': None,
|
399
399
|
'is_admin': False,
|
400
400
|
'service_user_domain_id': None,
|
@@ -440,7 +440,7 @@ class TestQuotas(base.BaseAPITest):
|
|
440
440
|
'is_admin_project': True,
|
441
441
|
'service_project_domain_id': None,
|
442
442
|
'service_project_id': None,
|
443
|
-
'roles': ['load-balancer_observer'],
|
443
|
+
'roles': ['load-balancer_observer', 'reader'],
|
444
444
|
'user_id': None,
|
445
445
|
'is_admin': False,
|
446
446
|
'service_user_domain_id': None,
|
@@ -480,18 +480,18 @@ class TestQuotas(base.BaseAPITest):
|
|
480
480
|
self._assert_quotas_equal(quotas, quota2)
|
481
481
|
|
482
482
|
def test_get_Authorized_member(self):
|
483
|
-
self._test_get_Authorized('load-balancer_member')
|
483
|
+
self._test_get_Authorized(['load-balancer_member', 'member'])
|
484
484
|
|
485
485
|
def test_get_Authorized_observer(self):
|
486
|
-
self._test_get_Authorized('load-balancer_observer')
|
486
|
+
self._test_get_Authorized(['load-balancer_observer', 'reader'])
|
487
487
|
|
488
488
|
def test_get_Authorized_global_observer(self):
|
489
|
-
self._test_get_Authorized('load-balancer_global_observer')
|
489
|
+
self._test_get_Authorized(['load-balancer_global_observer'])
|
490
490
|
|
491
491
|
def test_get_Authorized_quota_admin(self):
|
492
|
-
self._test_get_Authorized('load-balancer_quota_admin')
|
492
|
+
self._test_get_Authorized(['load-balancer_quota_admin'])
|
493
493
|
|
494
|
-
def _test_get_Authorized(self,
|
494
|
+
def _test_get_Authorized(self, roles):
|
495
495
|
project1_id = uuidutils.generate_uuid()
|
496
496
|
quota1 = self.create_quota(
|
497
497
|
project_id=project1_id, lb_quota=1, member_quota=1
|
@@ -509,7 +509,7 @@ class TestQuotas(base.BaseAPITest):
|
|
509
509
|
'is_admin_project': True,
|
510
510
|
'service_project_domain_id': None,
|
511
511
|
'service_project_id': None,
|
512
|
-
'roles':
|
512
|
+
'roles': roles,
|
513
513
|
'user_id': None,
|
514
514
|
'is_admin': False,
|
515
515
|
'service_user_domain_id': None,
|
@@ -704,7 +704,7 @@ class TestQuotas(base.BaseAPITest):
|
|
704
704
|
'is_admin_project': True,
|
705
705
|
'service_project_domain_id': None,
|
706
706
|
'service_project_id': None,
|
707
|
-
'roles': ['load-balancer_member'],
|
707
|
+
'roles': ['load-balancer_member', 'member'],
|
708
708
|
'user_id': None,
|
709
709
|
'is_admin': False,
|
710
710
|
'service_user_domain_id': None,
|
@@ -128,8 +128,8 @@ class AllRepositoriesTest(base.OctaviaDBTestBase):
|
|
128
128
|
'additional_vip')
|
129
129
|
for repo_attr in repo_attr_names:
|
130
130
|
single_repo = getattr(self.repos, repo_attr, None)
|
131
|
-
message = ("Class Repositories should have
|
132
|
-
"
|
131
|
+
message = (f"Class Repositories should have {repo_attr} instance "
|
132
|
+
f"variable.")
|
133
133
|
self.assertIsNotNone(single_repo, message=message)
|
134
134
|
message = (("instance variable, %(repo_name)s, of class "
|
135
135
|
"Repositories should be an instance of %(base)s") %
|
@@ -155,36 +155,36 @@ class TestAmphoraInfo(base.TestCase):
|
|
155
155
|
m_count.return_value = 5
|
156
156
|
original_version = api_server.VERSION
|
157
157
|
api_server.VERSION = self.API_VERSION
|
158
|
-
expected_dict = {
|
158
|
+
expected_dict = {'active': True,
|
159
159
|
'active_tuned_profiles': '',
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
160
|
+
'api_version': self.API_VERSION,
|
161
|
+
'cpu': {'soft_irq': '8336',
|
162
|
+
'system': '52554',
|
163
|
+
'total': 7503411,
|
164
|
+
'user': '252551'},
|
165
165
|
'cpu_count': os.cpu_count(),
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
166
|
+
'disk': {'available': 109079126016,
|
167
|
+
'used': 25718685696},
|
168
|
+
'haproxy_count': 5,
|
169
|
+
'haproxy_version': self.HAPROXY_VERSION,
|
170
|
+
'hostname': 'FAKE_HOST',
|
171
|
+
'listeners': sorted([self.FAKE_LISTENER_ID_1,
|
172
|
+
self.FAKE_LISTENER_ID_2]),
|
173
|
+
'load': ['0.09', '0.11', '0.10'],
|
174
|
+
'memory': {'buffers': 344792,
|
175
|
+
'cached': 4271856,
|
176
|
+
'free': 12685624,
|
177
|
+
'shared': 9520,
|
178
|
+
'slab': 534384,
|
179
|
+
'swap_used': 0,
|
180
|
+
'total': 21692784},
|
181
|
+
'networks': {'eth1': {'network_rx': 996,
|
182
|
+
'network_tx': 418},
|
183
|
+
'eth2': {'network_rx': 848,
|
184
|
+
'network_tx': 578}},
|
185
|
+
'packages': {},
|
186
|
+
'topology': 'SINGLE',
|
187
|
+
'topology_status': 'OK'}
|
188
188
|
self.useFixture(test_utils.OpenFixture('/etc/tuned/active_profile'))
|
189
189
|
actual = self.amp_info.compile_amphora_details()
|
190
190
|
self.assertEqual(expected_dict, actual.json)
|
@@ -243,41 +243,40 @@ class TestAmphoraInfo(base.TestCase):
|
|
243
243
|
mock_get_lb.return_value = [self.LB_ID_1]
|
244
244
|
original_version = api_server.VERSION
|
245
245
|
api_server.VERSION = self.API_VERSION
|
246
|
-
expected_dict = {
|
246
|
+
expected_dict = {'active': True,
|
247
247
|
'active_tuned_profiles': '',
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
248
|
+
'api_version': self.API_VERSION,
|
249
|
+
'cpu': {'soft_irq': '8336',
|
250
|
+
'system': '52554',
|
251
|
+
'total': 7503411,
|
252
|
+
'user': '252551'},
|
253
253
|
'cpu_count': os.cpu_count(),
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
u'topology_status': u'OK'}
|
254
|
+
'disk': {'available': 109079126016,
|
255
|
+
'used': 25718685696},
|
256
|
+
'haproxy_count': 5,
|
257
|
+
'haproxy_version': self.HAPROXY_VERSION,
|
258
|
+
'keepalived_version': self.KEEPALIVED_VERSION,
|
259
|
+
'ipvsadm_version': self.IPVSADM_VERSION,
|
260
|
+
'lvs_listener_process_count': 1,
|
261
|
+
'hostname': 'FAKE_HOST',
|
262
|
+
'listeners': sorted(list({self.FAKE_LISTENER_ID_3,
|
263
|
+
self.FAKE_LISTENER_ID_4,
|
264
|
+
'sample_listener_id_1'})),
|
265
|
+
'load': ['0.09', '0.11', '0.10'],
|
266
|
+
'memory': {'buffers': 344792,
|
267
|
+
'cached': 4271856,
|
268
|
+
'free': 12685624,
|
269
|
+
'shared': 9520,
|
270
|
+
'slab': 534384,
|
271
|
+
'swap_used': 0,
|
272
|
+
'total': 21692784},
|
273
|
+
'networks': {'eth1': {'network_rx': 996,
|
274
|
+
'network_tx': 418},
|
275
|
+
'eth2': {'network_rx': 848,
|
276
|
+
'network_tx': 578}},
|
277
|
+
'packages': {},
|
278
|
+
'topology': 'SINGLE',
|
279
|
+
'topology_status': 'OK'}
|
281
280
|
self.useFixture(test_utils.OpenFixture('/etc/tuned/active_profile'))
|
282
281
|
actual = self.amp_info.compile_amphora_details(self.lvs_driver)
|
283
282
|
self.assertEqual(expected_dict, actual.json)
|
@@ -32,10 +32,10 @@ class KeepalivedTestCase(base.TestCase):
|
|
32
32
|
@mock.patch('subprocess.check_output')
|
33
33
|
def test_manager_keepalived_service(self, mock_check_output):
|
34
34
|
res = self.test_keepalived.manager_keepalived_service('start')
|
35
|
-
cmd =
|
36
|
-
action='start'))
|
35
|
+
cmd = 'systemctl start octavia-keepalived.service'
|
37
36
|
mock_check_output.assert_called_once_with(cmd.split(),
|
38
|
-
stderr=subprocess.STDOUT
|
37
|
+
stderr=subprocess.STDOUT,
|
38
|
+
encoding='utf-8')
|
39
39
|
self.assertEqual(202, res.status_code)
|
40
40
|
|
41
41
|
res = self.test_keepalived.manager_keepalived_service('restart')
|
@@ -16,7 +16,6 @@ from unittest import mock
|
|
16
16
|
from oslo_utils import uuidutils
|
17
17
|
|
18
18
|
from octavia.amphorae.backends.agent.api_server import keepalivedlvs
|
19
|
-
from octavia.amphorae.backends.agent.api_server import util
|
20
19
|
from octavia.tests.unit import base
|
21
20
|
|
22
21
|
|
@@ -36,24 +35,7 @@ class KeepalivedLvsTestCase(base.TestCase):
|
|
36
35
|
mock.call(
|
37
36
|
json=dict(message='UDP Listener Not Found',
|
38
37
|
details="No UDP listener with UUID: "
|
39
|
-
"{
|
38
|
+
"{}".format(self.FAKE_ID)), status=404),
|
40
39
|
mock.call(json={'message': 'OK'})
|
41
40
|
]
|
42
41
|
m_webob.Response.assert_has_calls(calls)
|
43
|
-
|
44
|
-
@mock.patch('octavia.amphorae.backends.agent.api_server.util.'
|
45
|
-
'get_os_init_system')
|
46
|
-
@mock.patch('octavia.amphorae.backends.agent.api_server.util.'
|
47
|
-
'get_keepalivedlvs_pid')
|
48
|
-
@mock.patch('subprocess.check_output')
|
49
|
-
@mock.patch('os.remove')
|
50
|
-
@mock.patch('os.path.exists')
|
51
|
-
def test_delete_lvs_listener_unsupported_sysinit(self, m_exist, m_remove,
|
52
|
-
m_check_output, mget_pid,
|
53
|
-
m_init_sys):
|
54
|
-
m_exist.return_value = True
|
55
|
-
mget_pid.return_value = '0'
|
56
|
-
self.assertRaises(
|
57
|
-
util.UnknownInitError,
|
58
|
-
self.test_keepalivedlvs.delete_lvs_listener,
|
59
|
-
self.FAKE_ID)
|