octavia 14.0.0.0rc1__py3-none-any.whl → 15.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- octavia/amphorae/backends/agent/agent_jinja_cfg.py +1 -4
- octavia/amphorae/backends/agent/api_server/amphora_info.py +5 -5
- octavia/amphorae/backends/agent/api_server/keepalived.py +26 -53
- octavia/amphorae/backends/agent/api_server/keepalivedlvs.py +44 -83
- octavia/amphorae/backends/agent/api_server/loadbalancer.py +94 -112
- octavia/amphorae/backends/agent/api_server/lvs_listener_base.py +1 -1
- octavia/amphorae/backends/agent/api_server/osutils.py +11 -8
- octavia/amphorae/backends/agent/api_server/plug.py +12 -13
- octavia/amphorae/backends/agent/api_server/server.py +4 -3
- octavia/amphorae/backends/agent/api_server/templates/keepalived_lvs_check_script.sh.j2 +0 -4
- octavia/amphorae/backends/agent/api_server/util.py +23 -68
- octavia/amphorae/backends/agent/templates/amphora_agent_conf.template +0 -3
- octavia/amphorae/backends/health_daemon/health_daemon.py +6 -7
- octavia/amphorae/backends/health_daemon/health_sender.py +2 -2
- octavia/amphorae/backends/utils/haproxy_query.py +3 -6
- octavia/amphorae/backends/utils/interface.py +11 -50
- octavia/amphorae/backends/utils/interface_file.py +29 -16
- octavia/amphorae/backends/utils/ip_advertisement.py +1 -1
- octavia/amphorae/backends/utils/keepalivedlvs_query.py +7 -8
- octavia/amphorae/backends/utils/network_namespace.py +3 -3
- octavia/amphorae/backends/utils/nftable_utils.py +33 -11
- octavia/amphorae/drivers/driver_base.py +2 -2
- octavia/amphorae/drivers/haproxy/rest_api_driver.py +26 -38
- octavia/amphorae/drivers/health/heartbeat_udp.py +1 -1
- octavia/amphorae/drivers/keepalived/jinja/jinja_cfg.py +1 -2
- octavia/amphorae/drivers/keepalived/jinja/templates/keepalived_base.template +0 -1
- octavia/amphorae/drivers/noop_driver/driver.py +1 -1
- octavia/api/app.py +1 -2
- octavia/api/common/pagination.py +16 -22
- octavia/api/common/types.py +1 -1
- octavia/api/drivers/amphora_driver/v2/driver.py +6 -6
- octavia/api/drivers/driver_agent/driver_listener.py +3 -3
- octavia/api/drivers/driver_agent/driver_updater.py +1 -1
- octavia/api/drivers/noop_driver/driver.py +1 -1
- octavia/api/root_controller.py +2 -2
- octavia/api/v2/controllers/base.py +2 -4
- octavia/api/v2/controllers/health_monitor.py +5 -3
- octavia/api/v2/controllers/listener.py +2 -2
- octavia/api/v2/controllers/load_balancer.py +7 -0
- octavia/api/v2/controllers/member.py +12 -2
- octavia/api/v2/types/amphora.py +1 -1
- octavia/api/v2/types/availability_zone_profile.py +1 -2
- octavia/api/v2/types/availability_zones.py +1 -2
- octavia/api/v2/types/flavor_profile.py +1 -1
- octavia/api/v2/types/flavors.py +1 -1
- octavia/api/v2/types/health_monitor.py +1 -1
- octavia/api/v2/types/l7policy.py +1 -1
- octavia/api/v2/types/l7rule.py +1 -1
- octavia/api/v2/types/listener.py +3 -3
- octavia/api/v2/types/load_balancer.py +3 -3
- octavia/api/v2/types/member.py +2 -2
- octavia/api/v2/types/pool.py +2 -2
- octavia/api/v2/types/quotas.py +2 -2
- octavia/certificates/common/barbican.py +1 -1
- octavia/certificates/common/cert.py +1 -1
- octavia/certificates/generator/cert_gen.py +1 -1
- octavia/certificates/generator/local.py +5 -5
- octavia/certificates/manager/cert_mgr.py +1 -1
- octavia/certificates/manager/local.py +20 -20
- octavia/cmd/agent.py +3 -3
- octavia/cmd/driver_agent.py +2 -3
- octavia/cmd/health_checker.py +4 -4
- octavia/cmd/interface.py +4 -4
- octavia/cmd/prometheus_proxy.py +11 -13
- octavia/common/base_taskflow.py +3 -3
- octavia/common/clients.py +4 -4
- octavia/common/config.py +18 -24
- octavia/common/constants.py +28 -35
- octavia/common/data_models.py +2 -2
- octavia/common/jinja/haproxy/combined_listeners/jinja_cfg.py +5 -5
- octavia/common/jinja/logging/logging_jinja_cfg.py +1 -1
- octavia/common/jinja/lvs/jinja_cfg.py +1 -1
- octavia/common/jinja/user_data_jinja_cfg.py +1 -1
- octavia/common/keystone.py +1 -1
- octavia/common/policy.py +2 -3
- octavia/common/stats.py +1 -1
- octavia/common/tls_utils/cert_parser.py +2 -1
- octavia/common/utils.py +3 -3
- octavia/common/validate.py +9 -13
- octavia/compute/compute_base.py +1 -1
- octavia/compute/drivers/noop_driver/driver.py +1 -1
- octavia/compute/drivers/nova_driver.py +1 -1
- octavia/controller/healthmanager/health_manager.py +1 -1
- octavia/controller/housekeeping/house_keeping.py +2 -2
- octavia/controller/queue/v2/consumer.py +1 -2
- octavia/controller/queue/v2/endpoints.py +1 -1
- octavia/controller/worker/amphora_rate_limit.py +6 -6
- octavia/controller/worker/task_utils.py +1 -1
- octavia/controller/worker/v2/controller_worker.py +3 -3
- octavia/controller/worker/v2/flows/amphora_flows.py +15 -4
- octavia/controller/worker/v2/flows/flow_utils.py +6 -5
- octavia/controller/worker/v2/flows/health_monitor_flows.py +1 -1
- octavia/controller/worker/v2/flows/l7policy_flows.py +1 -1
- octavia/controller/worker/v2/flows/l7rule_flows.py +1 -1
- octavia/controller/worker/v2/flows/listener_flows.py +18 -6
- octavia/controller/worker/v2/flows/load_balancer_flows.py +1 -1
- octavia/controller/worker/v2/flows/member_flows.py +12 -19
- octavia/controller/worker/v2/flows/pool_flows.py +1 -1
- octavia/controller/worker/v2/taskflow_jobboard_driver.py +17 -3
- octavia/controller/worker/v2/tasks/compute_tasks.py +1 -3
- octavia/controller/worker/v2/tasks/network_tasks.py +3 -4
- octavia/db/base_models.py +21 -9
- octavia/db/migration/alembic_migrations/versions/034756a182a2_amphora_add_image_id.py +2 -2
- octavia/db/migration/alembic_migrations/versions/034b2dc2f3e0_modernize_l7policy_fields.py +31 -31
- octavia/db/migration/alembic_migrations/versions/0f242cf02c74_add_provider_column.py +2 -2
- octavia/db/migration/alembic_migrations/versions/10d38216ad34_add_timestamps_to_amphora.py +4 -4
- octavia/db/migration/alembic_migrations/versions/11e4bb2bb8ef_fix_ipv6_vip.py +1 -1
- octavia/db/migration/alembic_migrations/versions/13500e2e978d_update_url_and_name_size.py +6 -6
- octavia/db/migration/alembic_migrations/versions/14892634e228_update_vip.py +5 -5
- octavia/db/migration/alembic_migrations/versions/186509101b9b_add_server_group_id_to_loadbalancer.py +2 -2
- octavia/db/migration/alembic_migrations/versions/1afc932f1ca2_l7rule_support_client_cert.py +3 -3
- octavia/db/migration/alembic_migrations/versions/1e4c1d83044c_keepalived_configuration_datamodel.py +26 -26
- octavia/db/migration/alembic_migrations/versions/2351ea316465_adding_terminate_https_tls_ref_support.py +4 -4
- octavia/db/migration/alembic_migrations/versions/256852d5ff7c_add_lb_network_ip_to_amphora.py +2 -2
- octavia/db/migration/alembic_migrations/versions/27e54d00c3cd_add_monitor_address_and_port_to_member.py +4 -4
- octavia/db/migration/alembic_migrations/versions/298eac0640a7_add_amphora_vrrp_port_id_and_ha_port_id.py +4 -4
- octavia/db/migration/alembic_migrations/versions/29ff921a6eb_shared_pools.py +3 -3
- octavia/db/migration/alembic_migrations/versions/2ad093f6353f_add_listener_client_ca_tls_certificate_.py +2 -2
- octavia/db/migration/alembic_migrations/versions/31f7653ded67_allow_multiple_vips_per_loadbalancer.py +10 -10
- octavia/db/migration/alembic_migrations/versions/32e5c35b26a8_add_l7policy_and_l7rule_quota.py +4 -4
- octavia/db/migration/alembic_migrations/versions/357d17a6d5ac_update_lb_and_amphora_data_model_for_.py +20 -20
- octavia/db/migration/alembic_migrations/versions/35dee79d5865_initial_create.py +185 -185
- octavia/db/migration/alembic_migrations/versions/36b94648fef8_add_timestamp.py +2 -2
- octavia/db/migration/alembic_migrations/versions/392fb85b4419_add_primary_key_to_spares_pool.py +1 -1
- octavia/db/migration/alembic_migrations/versions/3a1e1cdb7b27_rename_amphora_host_id.py +1 -1
- octavia/db/migration/alembic_migrations/versions/3b199c848b96_create_no_monitor_operational_status.py +1 -1
- octavia/db/migration/alembic_migrations/versions/3e5b37a0bdb9_add_vrrp_ip_and_ha_ip_to_amphora.py +4 -4
- octavia/db/migration/alembic_migrations/versions/3f8ff3be828e_create_quotas_table.py +12 -12
- octavia/db/migration/alembic_migrations/versions/43287cd10fef_make_pool_lb_algorithm_larger.py +6 -6
- octavia/db/migration/alembic_migrations/versions/443fe6676637_add_network_id_to_vip.py +2 -2
- octavia/db/migration/alembic_migrations/versions/44a2414dd683_adding_name_column_to_member_and_health_.py +1 -1
- octavia/db/migration/alembic_migrations/versions/458c9ee2a011_l7_policies_and_rules.py +57 -57
- octavia/db/migration/alembic_migrations/versions/46d914b2a5e5_seed_the_spares_pool_table.py +2 -2
- octavia/db/migration/alembic_migrations/versions/48660b6643f0_add_new_states_for_amphora.py +3 -3
- octavia/db/migration/alembic_migrations/versions/4aeb9e23ad43_add_draining_operating_status.py +1 -1
- octavia/db/migration/alembic_migrations/versions/4c094013699a_update_load_balancer_amphora.py +9 -9
- octavia/db/migration/alembic_migrations/versions/4f65b4f91c39_amphora_add_flavor_id.py +2 -2
- octavia/db/migration/alembic_migrations/versions/4faaa983e7a9_update_member_address_column.py +1 -1
- octavia/db/migration/alembic_migrations/versions/4fe8240425b4_update_vip_add_subnet_id.py +2 -2
- octavia/db/migration/alembic_migrations/versions/52377704420e_add_timestamps_to_healthmonitor.py +9 -9
- octavia/db/migration/alembic_migrations/versions/5309960964f8_add_proxy_protocol_for_pool.py +3 -3
- octavia/db/migration/alembic_migrations/versions/543f5d8e4e56_add_a_column_busy_in_table_amphora_health.py +2 -2
- octavia/db/migration/alembic_migrations/versions/55874a4ceed6_add_l7policy_action_redirect_prefix.py +5 -5
- octavia/db/migration/alembic_migrations/versions/5a3ee5472c31_add_cert_expiration__infor_in_amphora_table.py +4 -4
- octavia/db/migration/alembic_migrations/versions/62816c232310_fix_migration_for_mysql_5_7.py +1 -1
- octavia/db/migration/alembic_migrations/versions/6742ca1b27c2_add_l7policy_redirect_http_code.py +2 -2
- octavia/db/migration/alembic_migrations/versions/6ac558d7fc21_add_prometheus_listener_protocol.py +3 -3
- octavia/db/migration/alembic_migrations/versions/6ffc710674ef_spares_pool_table.py +2 -2
- octavia/db/migration/alembic_migrations/versions/7432f1d4ea83_add_http_host_head_inject_for_http_health_check.py +4 -4
- octavia/db/migration/alembic_migrations/versions/74aae261694c_extend_pool_for_backend_ca_and_crl.py +4 -4
- octavia/db/migration/alembic_migrations/versions/76aacf2e176c_extend_support_udp_protocol.py +3 -3
- octavia/db/migration/alembic_migrations/versions/80dba23a159f_tags_support.py +3 -3
- octavia/db/migration/alembic_migrations/versions/82b9402e71fd_update_vip_address_size.py +1 -1
- octavia/db/migration/alembic_migrations/versions/8ac4ed24df3a_add_availability_zone_to_lb.py +4 -4
- octavia/db/migration/alembic_migrations/versions/8b47b2546312_sctp_support.py +2 -2
- octavia/db/migration/alembic_migrations/versions/8c0851bdf6c3_change_tls_container_id_length_in_sni_.py +1 -1
- octavia/db/migration/alembic_migrations/versions/92fe9857279_create_healthmanager_table.py +3 -3
- octavia/db/migration/alembic_migrations/versions/9b5473976d6d_add_provisioning_status_to_objects.py +10 -10
- octavia/db/migration/alembic_migrations/versions/a1f689aecc1d_extend_pool_for_support_backend_reencryption.py +2 -2
- octavia/db/migration/alembic_migrations/versions/a7f187cd221f_add_tls_boolean_type_for_reencryption.py +2 -2
- octavia/db/migration/alembic_migrations/versions/b9c703669314_add_flavor_and_flavor_profile_table.py +18 -18
- octavia/db/migration/alembic_migrations/versions/ba35e0fb88e1_add_backup_field_to_member.py +2 -2
- octavia/db/migration/alembic_migrations/versions/bf171d0d91c3_amphora_add_cached_zone.py +2 -2
- octavia/db/migration/alembic_migrations/versions/c761c8a71579_add_availability_zone_table.py +15 -15
- octavia/db/migration/alembic_migrations/versions/d85ca7258d21_modernize_l7rule.py +13 -13
- octavia/db/migration/alembic_migrations/versions/da371b422669_allowed_cidr_for_listeners.py +7 -7
- octavia/db/migration/alembic_migrations/versions/dcf88e59aae4_add_lb_algorithm_source_ip_port.py +3 -3
- octavia/db/migration/alembic_migrations/versions/e37941b010db_add_lb_flavor_constraint.py +11 -11
- octavia/db/migration/alembic_migrations/versions/e6672bda93bf_add_ping_and_tlshello_monitor_types.py +3 -3
- octavia/db/migration/alembic_migrations/versions/e6ee84f0abf3_add_proxy_v2_pool_protocol.py +3 -3
- octavia/db/migration/alembic_migrations/versions/ebbcc72b4e5e_add_octavia_owned_vip_column_to_vip_.py +2 -2
- octavia/db/migration/alembic_migrations/versions/f21ae3f21adc_add_client_auth_option.py +6 -6
- octavia/db/migration/alembic_migrations/versions/fc5582da7d8a_create_amphora_build_rate_limit_tables.py +11 -11
- octavia/db/migration/alembic_migrations/versions/ffad172e98c1_add_certificate_revoke_list_option.py +2 -2
- octavia/db/models.py +1 -1
- octavia/db/repositories.py +3 -3
- octavia/distributor/drivers/driver_base.py +1 -1
- octavia/distributor/drivers/noop_driver/driver.py +1 -1
- octavia/hacking/checks.py +4 -4
- octavia/image/drivers/noop_driver/driver.py +1 -1
- octavia/image/image_base.py +1 -1
- octavia/network/base.py +1 -1
- octavia/network/drivers/neutron/allowed_address_pairs.py +11 -9
- octavia/network/drivers/neutron/base.py +3 -3
- octavia/network/drivers/noop_driver/driver.py +1 -1
- octavia/policies/amphora.py +6 -12
- octavia/policies/availability_zone.py +5 -10
- octavia/policies/availability_zone_profile.py +5 -15
- octavia/policies/base.py +1 -20
- octavia/policies/flavor.py +5 -10
- octavia/policies/flavor_profile.py +5 -10
- octavia/policies/healthmonitor.py +6 -12
- octavia/policies/l7policy.py +6 -12
- octavia/policies/l7rule.py +5 -10
- octavia/policies/listener.py +7 -14
- octavia/policies/loadbalancer.py +9 -18
- octavia/policies/member.py +5 -10
- octavia/policies/pool.py +6 -12
- octavia/policies/provider.py +1 -2
- octavia/policies/provider_availability_zone.py +1 -3
- octavia/policies/provider_flavor.py +1 -2
- octavia/policies/quota.py +6 -12
- octavia/statistics/stats_base.py +1 -1
- octavia/tests/common/constants.py +1 -1
- octavia/tests/common/data_model_helpers.py +10 -10
- octavia/tests/common/sample_data_models.py +1 -1
- octavia/tests/common/sample_haproxy_prometheus +17 -17
- octavia/tests/common/sample_octavia_prometheus +6 -6
- octavia/tests/common/utils.py +2 -2
- octavia/tests/functional/amphorae/backend/agent/api_server/test_keepalivedlvs.py +36 -62
- octavia/tests/functional/amphorae/backend/agent/api_server/test_server.py +135 -296
- octavia/tests/functional/api/drivers/driver_agent/test_driver_agent.py +10 -11
- octavia/tests/functional/api/v2/base.py +2 -3
- octavia/tests/functional/api/v2/test_amphora.py +6 -6
- octavia/tests/functional/api/v2/test_availability_zone_profiles.py +13 -14
- octavia/tests/functional/api/v2/test_availability_zones.py +19 -19
- octavia/tests/functional/api/v2/test_flavor_profiles.py +19 -20
- octavia/tests/functional/api/v2/test_flavors.py +25 -25
- octavia/tests/functional/api/v2/test_health_monitor.py +35 -18
- octavia/tests/functional/api/v2/test_l7policy.py +11 -11
- octavia/tests/functional/api/v2/test_l7rule.py +19 -20
- octavia/tests/functional/api/v2/test_listener.py +26 -28
- octavia/tests/functional/api/v2/test_load_balancer.py +17 -17
- octavia/tests/functional/api/v2/test_member.py +53 -21
- octavia/tests/functional/api/v2/test_pool.py +11 -11
- octavia/tests/functional/api/v2/test_provider.py +7 -7
- octavia/tests/functional/api/v2/test_quotas.py +9 -9
- octavia/tests/functional/db/test_models.py +1 -1
- octavia/tests/functional/db/test_repositories.py +2 -2
- octavia/tests/unit/amphorae/backends/agent/api_server/test_amphora_info.py +60 -61
- octavia/tests/unit/amphorae/backends/agent/api_server/test_keepalived.py +3 -3
- octavia/tests/unit/amphorae/backends/agent/api_server/test_keepalivedlvs.py +1 -19
- octavia/tests/unit/amphorae/backends/agent/api_server/test_loadbalancer.py +94 -34
- octavia/tests/unit/amphorae/backends/agent/api_server/test_osutils.py +19 -21
- octavia/tests/unit/amphorae/backends/agent/api_server/test_plug.py +9 -11
- octavia/tests/unit/amphorae/backends/agent/api_server/test_util.py +11 -25
- octavia/tests/unit/amphorae/backends/agent/test_agent_jinja_cfg.py +0 -13
- octavia/tests/unit/amphorae/backends/health_daemon/test_health_daemon.py +10 -10
- octavia/tests/unit/amphorae/backends/utils/test_haproxy_query.py +1 -1
- octavia/tests/unit/amphorae/backends/utils/test_interface.py +33 -94
- octavia/tests/unit/amphorae/backends/utils/test_interface_file.py +32 -32
- octavia/tests/unit/amphorae/backends/utils/test_network_namespace.py +4 -6
- octavia/tests/unit/amphorae/backends/utils/test_nftable_utils.py +28 -22
- octavia/tests/unit/amphorae/drivers/haproxy/test_rest_api_driver_1_0.py +77 -118
- octavia/tests/unit/amphorae/drivers/health/test_heartbeat_udp.py +8 -8
- octavia/tests/unit/amphorae/drivers/keepalived/jinja/test_jinja_cfg.py +0 -4
- octavia/tests/unit/api/common/test_pagination.py +84 -14
- octavia/tests/unit/api/v2/types/test_availability_zone_profile.py +1 -1
- octavia/tests/unit/api/v2/types/test_availability_zones.py +1 -1
- octavia/tests/unit/api/v2/types/test_flavor_profile.py +1 -1
- octavia/tests/unit/api/v2/types/test_flavors.py +1 -1
- octavia/tests/unit/api/v2/types/test_health_monitor.py +1 -1
- octavia/tests/unit/api/v2/types/test_listener.py +1 -1
- octavia/tests/unit/api/v2/types/test_load_balancer.py +1 -1
- octavia/tests/unit/api/v2/types/test_pool.py +1 -1
- octavia/tests/unit/base.py +1 -0
- octavia/tests/unit/certificates/generator/local_csr.py +1 -1
- octavia/tests/unit/certificates/generator/test_local.py +5 -5
- octavia/tests/unit/certificates/manager/test_barbican.py +2 -3
- octavia/tests/unit/certificates/manager/test_barbican_legacy.py +1 -1
- octavia/tests/unit/certificates/manager/test_local.py +13 -14
- octavia/tests/unit/cmd/test_health_checker.py +1 -1
- octavia/tests/unit/cmd/test_prometheus_proxy.py +8 -1
- octavia/tests/unit/common/jinja/haproxy/combined_listeners/test_jinja_cfg.py +171 -216
- octavia/tests/unit/common/jinja/logging/test_logging_jinja_cfg.py +1 -1
- octavia/tests/unit/common/sample_configs/sample_configs_combined.py +1 -2
- octavia/tests/unit/common/test_base_taskflow.py +1 -1
- octavia/tests/unit/common/test_decorators.py +2 -2
- octavia/tests/unit/common/test_policy.py +3 -6
- octavia/tests/unit/common/tls_utils/test_cert_parser.py +4 -1
- octavia/tests/unit/controller/worker/v2/flows/test_listener_flows.py +10 -15
- octavia/tests/unit/controller/worker/v2/flows/test_load_balancer_flows.py +4 -6
- octavia/tests/unit/controller/worker/v2/tasks/test_network_tasks.py +6 -2
- octavia/tests/unit/controller/worker/v2/tasks/test_retry_tasks.py +1 -1
- octavia/tests/unit/controller/worker/v2/test_controller_worker.py +56 -1
- octavia/tests/unit/controller/worker/v2/test_taskflow_jobboard_driver.py +348 -0
- octavia/tests/unit/hacking/test_checks.py +3 -3
- octavia/tests/unit/image/drivers/noop_driver/test_driver.py +1 -1
- octavia/tests/unit/image/drivers/test_glance_driver.py +1 -1
- octavia/tests/unit/network/drivers/neutron/test_base.py +1 -1
- octavia/tests/unit/statistics/drivers/test_update_db.py +1 -1
- octavia/tests/unit/statistics/test_stats_base.py +1 -1
- octavia/volume/drivers/noop_driver/driver.py +1 -1
- octavia/volume/volume_base.py +1 -1
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/AUTHORS +6 -0
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/METADATA +3 -5
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/RECORD +302 -305
- octavia-15.0.0.dist-info/pbr.json +1 -0
- octavia/amphorae/backends/agent/api_server/templates/keepalived.sysvinit.j2 +0 -87
- octavia/amphorae/backends/agent/api_server/templates/keepalived.upstart.j2 +0 -29
- octavia/amphorae/backends/agent/api_server/templates/sysvinit.conf.j2 +0 -232
- octavia/amphorae/backends/agent/api_server/templates/upstart.conf.j2 +0 -71
- octavia-14.0.0.0rc1.dist-info/pbr.json +0 -1
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/LICENSE +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/README.rst +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/README.rst +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/diskimage-create.sh +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/image-tests.sh +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/requirements.txt +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/test-requirements.txt +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/tox.ini +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/version.txt +0 -0
- {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/scripts/octavia-wsgi +0 -0
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/LICENSE +0 -0
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/WHEEL +0 -0
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/entry_points.txt +0 -0
- {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/top_level.txt +0 -0
@@ -76,7 +76,7 @@ class TestL7Policy(base.BaseAPITest):
|
|
76
76
|
'is_admin_project': True,
|
77
77
|
'service_project_domain_id': None,
|
78
78
|
'service_project_id': None,
|
79
|
-
'roles': ['load-balancer_member'],
|
79
|
+
'roles': ['load-balancer_member', 'member'],
|
80
80
|
'user_id': None,
|
81
81
|
'is_admin': False,
|
82
82
|
'service_user_domain_id': None,
|
@@ -209,7 +209,7 @@ class TestL7Policy(base.BaseAPITest):
|
|
209
209
|
'is_admin_project': True,
|
210
210
|
'service_project_domain_id': None,
|
211
211
|
'service_project_id': None,
|
212
|
-
'roles': ['load-balancer_member'],
|
212
|
+
'roles': ['load-balancer_member', 'member'],
|
213
213
|
'user_id': None,
|
214
214
|
'is_admin': False,
|
215
215
|
'service_user_domain_id': None,
|
@@ -523,9 +523,9 @@ class TestL7Policy(base.BaseAPITest):
|
|
523
523
|
l7pos = self.get(self.L7POLICIES_PATH, params={
|
524
524
|
'fields': ['id', 'project_id']}).json
|
525
525
|
for l7po in l7pos['l7policies']:
|
526
|
-
self.assertIn(
|
527
|
-
self.assertIn(
|
528
|
-
self.assertNotIn(
|
526
|
+
self.assertIn('id', l7po)
|
527
|
+
self.assertIn('project_id', l7po)
|
528
|
+
self.assertNotIn('description', l7po)
|
529
529
|
|
530
530
|
def test_get_one_fields_filter(self):
|
531
531
|
l7p1 = self.create_l7policy(
|
@@ -536,9 +536,9 @@ class TestL7Policy(base.BaseAPITest):
|
|
536
536
|
l7po = self.get(
|
537
537
|
self.L7POLICY_PATH.format(l7policy_id=l7p1.get('id')),
|
538
538
|
params={'fields': ['id', 'project_id']}).json.get(self.root_tag)
|
539
|
-
self.assertIn(
|
540
|
-
self.assertIn(
|
541
|
-
self.assertNotIn(
|
539
|
+
self.assertIn('id', l7po)
|
540
|
+
self.assertIn('project_id', l7po)
|
541
|
+
self.assertNotIn('description', l7po)
|
542
542
|
|
543
543
|
def test_get_all_filter(self):
|
544
544
|
policy1 = self.create_l7policy(
|
@@ -685,7 +685,7 @@ class TestL7Policy(base.BaseAPITest):
|
|
685
685
|
'is_admin_project': True,
|
686
686
|
'service_project_domain_id': None,
|
687
687
|
'service_project_id': None,
|
688
|
-
'roles': ['load-balancer_member'],
|
688
|
+
'roles': ['load-balancer_member', 'member'],
|
689
689
|
'user_id': None,
|
690
690
|
'is_admin': False,
|
691
691
|
'service_user_domain_id': None,
|
@@ -919,7 +919,7 @@ class TestL7Policy(base.BaseAPITest):
|
|
919
919
|
'is_admin_project': True,
|
920
920
|
'service_project_domain_id': None,
|
921
921
|
'service_project_id': None,
|
922
|
-
'roles': ['load-balancer_member'],
|
922
|
+
'roles': ['load-balancer_member', 'member'],
|
923
923
|
'user_id': None,
|
924
924
|
'is_admin': False,
|
925
925
|
'service_user_domain_id': None,
|
@@ -1165,7 +1165,7 @@ class TestL7Policy(base.BaseAPITest):
|
|
1165
1165
|
'is_admin_project': True,
|
1166
1166
|
'service_project_domain_id': None,
|
1167
1167
|
'service_project_id': None,
|
1168
|
-
'roles': ['load-balancer_member'],
|
1168
|
+
'roles': ['load-balancer_member', 'member'],
|
1169
1169
|
'user_id': None,
|
1170
1170
|
'is_admin': False,
|
1171
1171
|
'service_user_domain_id': None,
|
@@ -76,7 +76,7 @@ class TestL7Rule(base.BaseAPITest):
|
|
76
76
|
'is_admin_project': True,
|
77
77
|
'service_project_domain_id': None,
|
78
78
|
'service_project_id': None,
|
79
|
-
'roles': ['load-balancer_member'],
|
79
|
+
'roles': ['load-balancer_member', 'member'],
|
80
80
|
'user_id': None,
|
81
81
|
'is_admin': False,
|
82
82
|
'service_user_domain_id': None,
|
@@ -175,7 +175,7 @@ class TestL7Rule(base.BaseAPITest):
|
|
175
175
|
'is_admin_project': True,
|
176
176
|
'service_project_domain_id': None,
|
177
177
|
'service_project_id': None,
|
178
|
-
'roles': ['load-balancer_member'],
|
178
|
+
'roles': ['load-balancer_member', 'member'],
|
179
179
|
'user_id': None,
|
180
180
|
'is_admin': False,
|
181
181
|
'service_user_domain_id': None,
|
@@ -356,9 +356,9 @@ class TestL7Rule(base.BaseAPITest):
|
|
356
356
|
l7rus = self.get(self.l7rules_path, params={
|
357
357
|
'fields': ['id', 'compare_type']}).json
|
358
358
|
for l7ru in l7rus['rules']:
|
359
|
-
self.assertIn(
|
360
|
-
self.assertIn(
|
361
|
-
self.assertNotIn(
|
359
|
+
self.assertIn('id', l7ru)
|
360
|
+
self.assertIn('compare_type', l7ru)
|
361
|
+
self.assertNotIn('project_id', l7ru)
|
362
362
|
|
363
363
|
def test_get_one_fields_filter(self):
|
364
364
|
l7r1 = self.create_l7rule(
|
@@ -370,9 +370,9 @@ class TestL7Rule(base.BaseAPITest):
|
|
370
370
|
l7ru = self.get(
|
371
371
|
self.l7rule_path.format(l7rule_id=l7r1.get('id')),
|
372
372
|
params={'fields': ['id', 'compare_type']}).json.get(self.root_tag)
|
373
|
-
self.assertIn(
|
374
|
-
self.assertIn(
|
375
|
-
self.assertNotIn(
|
373
|
+
self.assertIn('id', l7ru)
|
374
|
+
self.assertIn('compare_type', l7ru)
|
375
|
+
self.assertNotIn('project_id', l7ru)
|
376
376
|
|
377
377
|
def test_get_all_filter(self):
|
378
378
|
ru1 = self.create_l7rule(
|
@@ -542,7 +542,7 @@ class TestL7Rule(base.BaseAPITest):
|
|
542
542
|
'is_admin_project': True,
|
543
543
|
'service_project_domain_id': None,
|
544
544
|
'service_project_id': None,
|
545
|
-
'roles': ['load-balancer_member'],
|
545
|
+
'roles': ['load-balancer_member', 'member'],
|
546
546
|
'user_id': None,
|
547
547
|
'is_admin': False,
|
548
548
|
'service_user_domain_id': None,
|
@@ -599,8 +599,7 @@ class TestL7Rule(base.BaseAPITest):
|
|
599
599
|
l7policy_id, constants.L7RULE_TYPE_HOST_NAME,
|
600
600
|
constants.L7RULE_COMPARE_TYPE_EQUAL_TO,
|
601
601
|
'www.example.com', status=409)
|
602
|
-
ref_msg =
|
603
|
-
l7policy_id)
|
602
|
+
ref_msg = f'L7Policy {l7policy_id} is immutable and cannot be updated.'
|
604
603
|
self.assertEqual(ref_msg, api_l7rule.get('faultstring'))
|
605
604
|
|
606
605
|
def test_create_path_rule(self):
|
@@ -797,7 +796,7 @@ class TestL7Rule(base.BaseAPITest):
|
|
797
796
|
'key': 'no-need-key'}
|
798
797
|
response = req_func(first_req_arg, self._build_body(l7rule),
|
799
798
|
status=400).json
|
800
|
-
self.assertIn('L7rule type {
|
799
|
+
self.assertIn('L7rule type {} does not use the "key" field.'.format(
|
801
800
|
constants.L7RULE_TYPE_SSL_CONN_HAS_CERT),
|
802
801
|
response.get('faultstring'))
|
803
802
|
|
@@ -806,7 +805,7 @@ class TestL7Rule(base.BaseAPITest):
|
|
806
805
|
response = req_func(first_req_arg, self._build_body(l7rule),
|
807
806
|
status=400).json
|
808
807
|
self.assertIn(
|
809
|
-
'L7rule value {
|
808
|
+
'L7rule value {} is not a boolean True string.'.format(
|
810
809
|
l7rule['value']), response.get('faultstring'))
|
811
810
|
|
812
811
|
l7rule['value'] = 'tRUe'
|
@@ -814,7 +813,7 @@ class TestL7Rule(base.BaseAPITest):
|
|
814
813
|
response = req_func(first_req_arg, self._build_body(l7rule),
|
815
814
|
status=400).json
|
816
815
|
self.assertIn(
|
817
|
-
'L7rule type {
|
816
|
+
'L7rule type {} only supports the {} compare type.'.format(
|
818
817
|
constants.L7RULE_TYPE_SSL_CONN_HAS_CERT,
|
819
818
|
constants.L7RULE_COMPARE_TYPE_EQUAL_TO),
|
820
819
|
response.get('faultstring'))
|
@@ -829,14 +828,14 @@ class TestL7Rule(base.BaseAPITest):
|
|
829
828
|
response = req_func(first_req_arg, self._build_body(l7rule),
|
830
829
|
status=400).json
|
831
830
|
self.assertIn(
|
832
|
-
'L7rule type {
|
831
|
+
'L7rule type {} does not use the "key" field.'.format(
|
833
832
|
l7rule['type']), response.get('faultstring'))
|
834
833
|
|
835
834
|
l7rule.pop('key')
|
836
835
|
response = req_func(first_req_arg, self._build_body(l7rule),
|
837
836
|
status=400).json
|
838
837
|
self.assertIn(
|
839
|
-
'L7rule type {
|
838
|
+
'L7rule type {} needs a int value, which is >= 0'.format(
|
840
839
|
l7rule['type']), response.get('faultstring'))
|
841
840
|
|
842
841
|
l7rule['value'] = '0'
|
@@ -844,7 +843,7 @@ class TestL7Rule(base.BaseAPITest):
|
|
844
843
|
response = req_func(first_req_arg, self._build_body(l7rule),
|
845
844
|
status=400).json
|
846
845
|
self.assertIn(
|
847
|
-
'L7rule type {
|
846
|
+
'L7rule type {} only supports the {} compare type.'.format(
|
848
847
|
l7rule['type'], constants.L7RULE_COMPARE_TYPE_EQUAL_TO),
|
849
848
|
response.get('faultstring'))
|
850
849
|
|
@@ -861,7 +860,7 @@ class TestL7Rule(base.BaseAPITest):
|
|
861
860
|
response = req_func(first_req_arg, self._build_body(l7rule),
|
862
861
|
status=400).json
|
863
862
|
self.assertIn(
|
864
|
-
'L7rule type {
|
863
|
+
'L7rule type {} needs to specify a key and a value.'.format(
|
865
864
|
l7rule['type']), response.get('faultstring'))
|
866
865
|
|
867
866
|
l7rule['key'] = 'NOT_SUPPORTED_DN_FIELD'
|
@@ -922,7 +921,7 @@ class TestL7Rule(base.BaseAPITest):
|
|
922
921
|
'is_admin_project': True,
|
923
922
|
'service_project_domain_id': None,
|
924
923
|
'service_project_id': None,
|
925
|
-
'roles': ['load-balancer_member'],
|
924
|
+
'roles': ['load-balancer_member', 'member'],
|
926
925
|
'user_id': None,
|
927
926
|
'is_admin': False,
|
928
927
|
'service_user_domain_id': None,
|
@@ -1126,7 +1125,7 @@ class TestL7Rule(base.BaseAPITest):
|
|
1126
1125
|
'is_admin_project': True,
|
1127
1126
|
'service_project_domain_id': None,
|
1128
1127
|
'service_project_id': None,
|
1129
|
-
'roles': ['load-balancer_member'],
|
1128
|
+
'roles': ['load-balancer_member', 'member'],
|
1130
1129
|
'user_id': None,
|
1131
1130
|
'is_admin': False,
|
1132
1131
|
'service_user_domain_id': None,
|
@@ -112,7 +112,7 @@ class TestListener(base.BaseAPITest):
|
|
112
112
|
'is_admin_project': True,
|
113
113
|
'service_project_domain_id': None,
|
114
114
|
'service_project_id': None,
|
115
|
-
'roles': ['load-balancer_member'],
|
115
|
+
'roles': ['load-balancer_member', 'member'],
|
116
116
|
'user_id': None,
|
117
117
|
'is_admin': False,
|
118
118
|
'service_user_domain_id': None,
|
@@ -383,9 +383,9 @@ class TestListener(base.BaseAPITest):
|
|
383
383
|
lis = self.get(self.LISTENERS_PATH, params={
|
384
384
|
'fields': ['id', 'project_id']}).json
|
385
385
|
for li in lis['listeners']:
|
386
|
-
self.assertIn(
|
387
|
-
self.assertIn(
|
388
|
-
self.assertNotIn(
|
386
|
+
self.assertIn('id', li)
|
387
|
+
self.assertIn('project_id', li)
|
388
|
+
self.assertNotIn('description', li)
|
389
389
|
|
390
390
|
def test_get_one_fields_filter(self):
|
391
391
|
listener1 = self.create_listener(
|
@@ -396,9 +396,9 @@ class TestListener(base.BaseAPITest):
|
|
396
396
|
li = self.get(
|
397
397
|
self.LISTENER_PATH.format(listener_id=listener1.get('id')),
|
398
398
|
params={'fields': ['id', 'project_id']}).json.get(self.root_tag)
|
399
|
-
self.assertIn(
|
400
|
-
self.assertIn(
|
401
|
-
self.assertNotIn(
|
399
|
+
self.assertIn('id', li)
|
400
|
+
self.assertIn('project_id', li)
|
401
|
+
self.assertNotIn('description', li)
|
402
402
|
|
403
403
|
def test_get_all_filter(self):
|
404
404
|
li1 = self.create_listener(constants.PROTOCOL_HTTP,
|
@@ -558,7 +558,7 @@ class TestListener(base.BaseAPITest):
|
|
558
558
|
'is_admin_project': True,
|
559
559
|
'service_project_domain_id': None,
|
560
560
|
'service_project_id': None,
|
561
|
-
'roles': ['load-balancer_member'],
|
561
|
+
'roles': ['load-balancer_member', 'member'],
|
562
562
|
'user_id': None,
|
563
563
|
'is_admin': False,
|
564
564
|
'service_user_domain_id': None,
|
@@ -699,11 +699,10 @@ class TestListener(base.BaseAPITest):
|
|
699
699
|
optionals.update({field[0]: 1})
|
700
700
|
fault = resp.get('faultstring')
|
701
701
|
self.assertIn(
|
702
|
-
'Invalid input for field/attribute {0}'
|
703
|
-
field[0]), fault)
|
702
|
+
f'Invalid input for field/attribute {field[0]}', fault)
|
704
703
|
self.assertIn(
|
705
|
-
'Value should be lower or equal to {
|
706
|
-
|
704
|
+
f'Value should be lower or equal to {constants.MAX_TIMEOUT}',
|
705
|
+
fault)
|
707
706
|
|
708
707
|
def test_create_with_timeouts_too_low(self):
|
709
708
|
optionals = {
|
@@ -717,8 +716,8 @@ class TestListener(base.BaseAPITest):
|
|
717
716
|
self.assertIn(
|
718
717
|
'Invalid input for field/attribute timeout_tcp_inspect', fault)
|
719
718
|
self.assertIn(
|
720
|
-
'Value should be greater or equal to {
|
721
|
-
|
719
|
+
f'Value should be greater or equal to {constants.MIN_TIMEOUT}',
|
720
|
+
fault)
|
722
721
|
|
723
722
|
def test_create_udp_case(self):
|
724
723
|
api_listener = self.create_listener(constants.PROTOCOL_UDP, 6666,
|
@@ -807,7 +806,7 @@ class TestListener(base.BaseAPITest):
|
|
807
806
|
self.assertIn(
|
808
807
|
'Certificate container references are not allowed on ', fault)
|
809
808
|
self.assertIn(
|
810
|
-
'{} protocol listeners.'
|
809
|
+
f'{constants.PROTOCOL_TCP} protocol listeners.', fault)
|
811
810
|
|
812
811
|
def test_create_without_certs_if_terminated_https(self):
|
813
812
|
optionals = {
|
@@ -977,7 +976,7 @@ class TestListener(base.BaseAPITest):
|
|
977
976
|
'is_admin_project': True,
|
978
977
|
'service_project_domain_id': None,
|
979
978
|
'service_project_id': None,
|
980
|
-
'roles': ['load-balancer_member'],
|
979
|
+
'roles': ['load-balancer_member', 'member'],
|
981
980
|
'user_id': None,
|
982
981
|
'is_admin': False,
|
983
982
|
'service_user_domain_id': None,
|
@@ -1276,7 +1275,7 @@ class TestListener(base.BaseAPITest):
|
|
1276
1275
|
self._test_create_with_allowed_cidrs(allowed_cidrs, lb_id)
|
1277
1276
|
|
1278
1277
|
def test_create_with_bad_allowed_cidrs(self):
|
1279
|
-
allowed_cidrs = [
|
1278
|
+
allowed_cidrs = ['10.0.1.0/33', '172.16.55.1.0/25']
|
1280
1279
|
lb_listener = {
|
1281
1280
|
'protocol': constants.PROTOCOL_TCP,
|
1282
1281
|
'protocol_port': 80,
|
@@ -1715,8 +1714,7 @@ class TestListener(base.BaseAPITest):
|
|
1715
1714
|
fault = response.get('faultstring')
|
1716
1715
|
self.assertIn(
|
1717
1716
|
'Certificate container references are not allowed on ', fault)
|
1718
|
-
self.assertIn('{} protocol listeners.'
|
1719
|
-
constants.PROTOCOL_TCP), fault)
|
1717
|
+
self.assertIn(f'{constants.PROTOCOL_TCP} protocol listeners.', fault)
|
1720
1718
|
|
1721
1719
|
def test_update_with_ca_cert(self):
|
1722
1720
|
self.cert_manager_mock().get_secret.return_value = (
|
@@ -2108,7 +2106,7 @@ class TestListener(base.BaseAPITest):
|
|
2108
2106
|
'is_admin_project': True,
|
2109
2107
|
'service_project_domain_id': None,
|
2110
2108
|
'service_project_id': None,
|
2111
|
-
'roles': ['load-balancer_member'],
|
2109
|
+
'roles': ['load-balancer_member', 'member'],
|
2112
2110
|
'user_id': None,
|
2113
2111
|
'is_admin': False,
|
2114
2112
|
'service_user_domain_id': None,
|
@@ -2269,7 +2267,7 @@ class TestListener(base.BaseAPITest):
|
|
2269
2267
|
'is_admin_project': True,
|
2270
2268
|
'service_project_domain_id': None,
|
2271
2269
|
'service_project_id': None,
|
2272
|
-
'roles': ['load-balancer_member'],
|
2270
|
+
'roles': ['load-balancer_member', 'member'],
|
2273
2271
|
'user_id': None,
|
2274
2272
|
'is_admin': False,
|
2275
2273
|
'service_user_domain_id': None,
|
@@ -2576,7 +2574,7 @@ class TestListener(base.BaseAPITest):
|
|
2576
2574
|
default_tls_container_ref=cert_id,
|
2577
2575
|
status=400)
|
2578
2576
|
self.assertIn(
|
2579
|
-
'The selected protocol is not allowed in this deployment: {
|
2577
|
+
'The selected protocol is not allowed in this deployment: {}'
|
2580
2578
|
.format(constants.PROTOCOL_TERMINATED_HTTPS),
|
2581
2579
|
listener.get('faultstring'))
|
2582
2580
|
|
@@ -2776,9 +2774,9 @@ class TestListener(base.BaseAPITest):
|
|
2776
2774
|
lb_listener['insert_headers'] = header
|
2777
2775
|
body = self._build_body(lb_listener)
|
2778
2776
|
listener = self.post(self.LISTENERS_PATH, body, status=400).json
|
2779
|
-
self.assertIn('{
|
2777
|
+
self.assertIn('{} is not a valid option for {}'.format(
|
2780
2778
|
[name],
|
2781
|
-
'
|
2779
|
+
f'{constants.PROTOCOL_HTTP} protocol listener.'),
|
2782
2780
|
listener.get('faultstring'))
|
2783
2781
|
|
2784
2782
|
@mock.patch('octavia.common.tls_utils.cert_parser.load_certificates_data')
|
@@ -2829,9 +2827,9 @@ class TestListener(base.BaseAPITest):
|
|
2829
2827
|
listener_id=listener['listener'].get('id'))
|
2830
2828
|
update_listener = self.put(
|
2831
2829
|
listener_path, new_listener, status=400).json
|
2832
|
-
self.assertIn('
|
2833
|
-
|
2834
|
-
|
2830
|
+
self.assertIn('[\'X-Bad-Header\'] is not a valid option for '
|
2831
|
+
'insert_headers',
|
2832
|
+
update_listener.get('faultstring'))
|
2835
2833
|
|
2836
2834
|
# test client certificate http headers
|
2837
2835
|
header = {}
|
@@ -2928,7 +2926,7 @@ class TestListener(base.BaseAPITest):
|
|
2928
2926
|
'is_admin_project': True,
|
2929
2927
|
'service_project_domain_id': None,
|
2930
2928
|
'service_project_id': None,
|
2931
|
-
'roles': ['load-balancer_member'],
|
2929
|
+
'roles': ['load-balancer_member', 'member'],
|
2932
2930
|
'user_id': None,
|
2933
2931
|
'is_admin': False,
|
2934
2932
|
'service_user_domain_id': None,
|
@@ -156,7 +156,7 @@ class TestLoadBalancer(base.BaseAPITest):
|
|
156
156
|
".NoopManager.get_subnet") as mock_get_subnet:
|
157
157
|
mock_get_subnet.side_effect = network_base.SubnetNotFound
|
158
158
|
response = self.post(self.LBS_PATH, body, status=400)
|
159
|
-
err_msg = 'Subnet {} not found.'
|
159
|
+
err_msg = f'Subnet {subnet_id} not found.'
|
160
160
|
self.assertEqual(err_msg, response.json.get('faultstring'))
|
161
161
|
|
162
162
|
def test_create_with_invalid_vip_network_subnet(self):
|
@@ -172,7 +172,7 @@ class TestLoadBalancer(base.BaseAPITest):
|
|
172
172
|
".NoopManager.get_network") as mock_get_network:
|
173
173
|
mock_get_network.return_value = network
|
174
174
|
response = self.post(self.LBS_PATH, body, status=400)
|
175
|
-
err_msg = 'Subnet {} not found.'
|
175
|
+
err_msg = f'Subnet {subnet_id} not found.'
|
176
176
|
self.assertEqual(err_msg, response.json.get('faultstring'))
|
177
177
|
|
178
178
|
def test_create_with_vip_subnet_fills_network(self):
|
@@ -850,7 +850,7 @@ class TestLoadBalancer(base.BaseAPITest):
|
|
850
850
|
mock_get_subnet.return_value = subnet
|
851
851
|
mock_get_qos.side_effect = Exception()
|
852
852
|
response = self.post(self.LBS_PATH, body, status=400)
|
853
|
-
err_msg = "qos_policy
|
853
|
+
err_msg = f"qos_policy {qos_policy_id} not found."
|
854
854
|
self.assertEqual(err_msg, response.json.get('faultstring'))
|
855
855
|
|
856
856
|
def test_create_with_long_name(self):
|
@@ -995,7 +995,7 @@ class TestLoadBalancer(base.BaseAPITest):
|
|
995
995
|
'is_admin_project': True,
|
996
996
|
'service_project_domain_id': None,
|
997
997
|
'service_project_id': None,
|
998
|
-
'roles': ['load-balancer_member'],
|
998
|
+
'roles': ['load-balancer_member', 'member'],
|
999
999
|
'user_id': None,
|
1000
1000
|
'is_admin': False,
|
1001
1001
|
'service_user_domain_id': None,
|
@@ -1306,7 +1306,7 @@ class TestLoadBalancer(base.BaseAPITest):
|
|
1306
1306
|
'is_admin_project': True,
|
1307
1307
|
'service_project_domain_id': None,
|
1308
1308
|
'service_project_id': None,
|
1309
|
-
'roles': ['load-balancer_member'],
|
1309
|
+
'roles': ['load-balancer_member', 'member'],
|
1310
1310
|
'user_id': None,
|
1311
1311
|
'is_admin': False,
|
1312
1312
|
'service_user_domain_id': None,
|
@@ -1414,7 +1414,7 @@ class TestLoadBalancer(base.BaseAPITest):
|
|
1414
1414
|
name='lb3', project_id=project_id)
|
1415
1415
|
auth_strategy = self.conf.conf.api_settings.get('auth_strategy')
|
1416
1416
|
self.conf.config(group='api_settings', auth_strategy=constants.TESTING)
|
1417
|
-
LB_PROJECT_PATH = '{}?project_id={}'
|
1417
|
+
LB_PROJECT_PATH = f'{self.LBS_PATH}?project_id={project_id}'
|
1418
1418
|
with mock.patch.object(octavia.common.context.RequestContext,
|
1419
1419
|
'project_id',
|
1420
1420
|
self.project_id):
|
@@ -1567,9 +1567,9 @@ class TestLoadBalancer(base.BaseAPITest):
|
|
1567
1567
|
lbs = self.get(self.LBS_PATH, params={
|
1568
1568
|
'fields': ['id', 'project_id']}).json
|
1569
1569
|
for lb in lbs['loadbalancers']:
|
1570
|
-
self.assertIn(
|
1571
|
-
self.assertIn(
|
1572
|
-
self.assertNotIn(
|
1570
|
+
self.assertIn('id', lb)
|
1571
|
+
self.assertIn('project_id', lb)
|
1572
|
+
self.assertNotIn('description', lb)
|
1573
1573
|
|
1574
1574
|
def test_get_one_fields_filter(self):
|
1575
1575
|
lb1 = self.create_load_balancer(
|
@@ -1579,9 +1579,9 @@ class TestLoadBalancer(base.BaseAPITest):
|
|
1579
1579
|
lb = self.get(
|
1580
1580
|
self.LB_PATH.format(lb_id=lb1.get('id')),
|
1581
1581
|
params={'fields': ['id', 'project_id']}).json.get(self.root_tag)
|
1582
|
-
self.assertIn(
|
1583
|
-
self.assertIn(
|
1584
|
-
self.assertNotIn(
|
1582
|
+
self.assertIn('id', lb)
|
1583
|
+
self.assertIn('project_id', lb)
|
1584
|
+
self.assertNotIn('description', lb)
|
1585
1585
|
|
1586
1586
|
def test_get_all_admin_state_up_filter(self):
|
1587
1587
|
self.create_load_balancer(uuidutils.generate_uuid(),
|
@@ -1892,7 +1892,7 @@ class TestLoadBalancer(base.BaseAPITest):
|
|
1892
1892
|
'is_admin_project': True,
|
1893
1893
|
'service_project_domain_id': None,
|
1894
1894
|
'service_project_id': None,
|
1895
|
-
'roles': ['load-balancer_member'],
|
1895
|
+
'roles': ['load-balancer_member', 'member'],
|
1896
1896
|
'user_id': None,
|
1897
1897
|
'is_admin': False,
|
1898
1898
|
'service_user_domain_id': None,
|
@@ -2092,7 +2092,7 @@ class TestLoadBalancer(base.BaseAPITest):
|
|
2092
2092
|
'is_admin_project': True,
|
2093
2093
|
'service_project_domain_id': None,
|
2094
2094
|
'service_project_id': None,
|
2095
|
-
'roles': ['load-balancer_member'],
|
2095
|
+
'roles': ['load-balancer_member', 'member'],
|
2096
2096
|
'user_id': None,
|
2097
2097
|
'is_admin': False,
|
2098
2098
|
'service_user_domain_id': None,
|
@@ -2276,7 +2276,7 @@ class TestLoadBalancer(base.BaseAPITest):
|
|
2276
2276
|
'is_admin_project': True,
|
2277
2277
|
'service_project_domain_id': None,
|
2278
2278
|
'service_project_id': None,
|
2279
|
-
'roles': ['load-balancer_member'],
|
2279
|
+
'roles': ['load-balancer_member', 'member'],
|
2280
2280
|
'user_id': None,
|
2281
2281
|
'is_admin': False,
|
2282
2282
|
'service_user_domain_id': None,
|
@@ -4008,7 +4008,7 @@ class TestLoadBalancerGraph(base.BaseAPITest):
|
|
4008
4008
|
'is_admin_project': True,
|
4009
4009
|
'service_project_domain_id': None,
|
4010
4010
|
'service_project_id': None,
|
4011
|
-
'roles': ['load-balancer_member'],
|
4011
|
+
'roles': ['load-balancer_member', 'member'],
|
4012
4012
|
'user_id': None,
|
4013
4013
|
'is_admin': False,
|
4014
4014
|
'service_user_domain_id': None,
|
@@ -4111,7 +4111,7 @@ class TestLoadBalancerGraph(base.BaseAPITest):
|
|
4111
4111
|
'is_admin_project': True,
|
4112
4112
|
'service_project_domain_id': None,
|
4113
4113
|
'service_project_id': None,
|
4114
|
-
'roles': ['load-balancer_member'],
|
4114
|
+
'roles': ['load-balancer_member', 'member'],
|
4115
4115
|
'user_id': None,
|
4116
4116
|
'is_admin': False,
|
4117
4117
|
'service_user_domain_id': None,
|