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.
Files changed (307) hide show
  1. octavia/amphorae/backends/agent/agent_jinja_cfg.py +1 -4
  2. octavia/amphorae/backends/agent/api_server/amphora_info.py +5 -5
  3. octavia/amphorae/backends/agent/api_server/keepalived.py +26 -53
  4. octavia/amphorae/backends/agent/api_server/keepalivedlvs.py +44 -83
  5. octavia/amphorae/backends/agent/api_server/loadbalancer.py +94 -112
  6. octavia/amphorae/backends/agent/api_server/lvs_listener_base.py +1 -1
  7. octavia/amphorae/backends/agent/api_server/osutils.py +11 -8
  8. octavia/amphorae/backends/agent/api_server/plug.py +12 -13
  9. octavia/amphorae/backends/agent/api_server/server.py +4 -3
  10. octavia/amphorae/backends/agent/api_server/templates/keepalived_lvs_check_script.sh.j2 +0 -4
  11. octavia/amphorae/backends/agent/api_server/util.py +23 -68
  12. octavia/amphorae/backends/agent/templates/amphora_agent_conf.template +0 -3
  13. octavia/amphorae/backends/health_daemon/health_daemon.py +6 -7
  14. octavia/amphorae/backends/health_daemon/health_sender.py +2 -2
  15. octavia/amphorae/backends/utils/haproxy_query.py +3 -6
  16. octavia/amphorae/backends/utils/interface.py +11 -50
  17. octavia/amphorae/backends/utils/interface_file.py +29 -16
  18. octavia/amphorae/backends/utils/ip_advertisement.py +1 -1
  19. octavia/amphorae/backends/utils/keepalivedlvs_query.py +7 -8
  20. octavia/amphorae/backends/utils/network_namespace.py +3 -3
  21. octavia/amphorae/backends/utils/nftable_utils.py +33 -11
  22. octavia/amphorae/drivers/driver_base.py +2 -2
  23. octavia/amphorae/drivers/haproxy/rest_api_driver.py +26 -38
  24. octavia/amphorae/drivers/health/heartbeat_udp.py +1 -1
  25. octavia/amphorae/drivers/keepalived/jinja/jinja_cfg.py +1 -2
  26. octavia/amphorae/drivers/keepalived/jinja/templates/keepalived_base.template +0 -1
  27. octavia/amphorae/drivers/noop_driver/driver.py +1 -1
  28. octavia/api/app.py +1 -2
  29. octavia/api/common/pagination.py +16 -22
  30. octavia/api/common/types.py +1 -1
  31. octavia/api/drivers/amphora_driver/v2/driver.py +6 -6
  32. octavia/api/drivers/driver_agent/driver_listener.py +3 -3
  33. octavia/api/drivers/driver_agent/driver_updater.py +1 -1
  34. octavia/api/drivers/noop_driver/driver.py +1 -1
  35. octavia/api/root_controller.py +2 -2
  36. octavia/api/v2/controllers/base.py +2 -4
  37. octavia/api/v2/controllers/health_monitor.py +5 -3
  38. octavia/api/v2/controllers/listener.py +2 -2
  39. octavia/api/v2/controllers/load_balancer.py +7 -0
  40. octavia/api/v2/controllers/member.py +12 -2
  41. octavia/api/v2/types/amphora.py +1 -1
  42. octavia/api/v2/types/availability_zone_profile.py +1 -2
  43. octavia/api/v2/types/availability_zones.py +1 -2
  44. octavia/api/v2/types/flavor_profile.py +1 -1
  45. octavia/api/v2/types/flavors.py +1 -1
  46. octavia/api/v2/types/health_monitor.py +1 -1
  47. octavia/api/v2/types/l7policy.py +1 -1
  48. octavia/api/v2/types/l7rule.py +1 -1
  49. octavia/api/v2/types/listener.py +3 -3
  50. octavia/api/v2/types/load_balancer.py +3 -3
  51. octavia/api/v2/types/member.py +2 -2
  52. octavia/api/v2/types/pool.py +2 -2
  53. octavia/api/v2/types/quotas.py +2 -2
  54. octavia/certificates/common/barbican.py +1 -1
  55. octavia/certificates/common/cert.py +1 -1
  56. octavia/certificates/generator/cert_gen.py +1 -1
  57. octavia/certificates/generator/local.py +5 -5
  58. octavia/certificates/manager/cert_mgr.py +1 -1
  59. octavia/certificates/manager/local.py +20 -20
  60. octavia/cmd/agent.py +3 -3
  61. octavia/cmd/driver_agent.py +2 -3
  62. octavia/cmd/health_checker.py +4 -4
  63. octavia/cmd/interface.py +4 -4
  64. octavia/cmd/prometheus_proxy.py +11 -13
  65. octavia/common/base_taskflow.py +3 -3
  66. octavia/common/clients.py +4 -4
  67. octavia/common/config.py +18 -24
  68. octavia/common/constants.py +28 -35
  69. octavia/common/data_models.py +2 -2
  70. octavia/common/jinja/haproxy/combined_listeners/jinja_cfg.py +5 -5
  71. octavia/common/jinja/logging/logging_jinja_cfg.py +1 -1
  72. octavia/common/jinja/lvs/jinja_cfg.py +1 -1
  73. octavia/common/jinja/user_data_jinja_cfg.py +1 -1
  74. octavia/common/keystone.py +1 -1
  75. octavia/common/policy.py +2 -3
  76. octavia/common/stats.py +1 -1
  77. octavia/common/tls_utils/cert_parser.py +2 -1
  78. octavia/common/utils.py +3 -3
  79. octavia/common/validate.py +9 -13
  80. octavia/compute/compute_base.py +1 -1
  81. octavia/compute/drivers/noop_driver/driver.py +1 -1
  82. octavia/compute/drivers/nova_driver.py +1 -1
  83. octavia/controller/healthmanager/health_manager.py +1 -1
  84. octavia/controller/housekeeping/house_keeping.py +2 -2
  85. octavia/controller/queue/v2/consumer.py +1 -2
  86. octavia/controller/queue/v2/endpoints.py +1 -1
  87. octavia/controller/worker/amphora_rate_limit.py +6 -6
  88. octavia/controller/worker/task_utils.py +1 -1
  89. octavia/controller/worker/v2/controller_worker.py +3 -3
  90. octavia/controller/worker/v2/flows/amphora_flows.py +15 -4
  91. octavia/controller/worker/v2/flows/flow_utils.py +6 -5
  92. octavia/controller/worker/v2/flows/health_monitor_flows.py +1 -1
  93. octavia/controller/worker/v2/flows/l7policy_flows.py +1 -1
  94. octavia/controller/worker/v2/flows/l7rule_flows.py +1 -1
  95. octavia/controller/worker/v2/flows/listener_flows.py +18 -6
  96. octavia/controller/worker/v2/flows/load_balancer_flows.py +1 -1
  97. octavia/controller/worker/v2/flows/member_flows.py +12 -19
  98. octavia/controller/worker/v2/flows/pool_flows.py +1 -1
  99. octavia/controller/worker/v2/taskflow_jobboard_driver.py +17 -3
  100. octavia/controller/worker/v2/tasks/compute_tasks.py +1 -3
  101. octavia/controller/worker/v2/tasks/network_tasks.py +3 -4
  102. octavia/db/base_models.py +21 -9
  103. octavia/db/migration/alembic_migrations/versions/034756a182a2_amphora_add_image_id.py +2 -2
  104. octavia/db/migration/alembic_migrations/versions/034b2dc2f3e0_modernize_l7policy_fields.py +31 -31
  105. octavia/db/migration/alembic_migrations/versions/0f242cf02c74_add_provider_column.py +2 -2
  106. octavia/db/migration/alembic_migrations/versions/10d38216ad34_add_timestamps_to_amphora.py +4 -4
  107. octavia/db/migration/alembic_migrations/versions/11e4bb2bb8ef_fix_ipv6_vip.py +1 -1
  108. octavia/db/migration/alembic_migrations/versions/13500e2e978d_update_url_and_name_size.py +6 -6
  109. octavia/db/migration/alembic_migrations/versions/14892634e228_update_vip.py +5 -5
  110. octavia/db/migration/alembic_migrations/versions/186509101b9b_add_server_group_id_to_loadbalancer.py +2 -2
  111. octavia/db/migration/alembic_migrations/versions/1afc932f1ca2_l7rule_support_client_cert.py +3 -3
  112. octavia/db/migration/alembic_migrations/versions/1e4c1d83044c_keepalived_configuration_datamodel.py +26 -26
  113. octavia/db/migration/alembic_migrations/versions/2351ea316465_adding_terminate_https_tls_ref_support.py +4 -4
  114. octavia/db/migration/alembic_migrations/versions/256852d5ff7c_add_lb_network_ip_to_amphora.py +2 -2
  115. octavia/db/migration/alembic_migrations/versions/27e54d00c3cd_add_monitor_address_and_port_to_member.py +4 -4
  116. octavia/db/migration/alembic_migrations/versions/298eac0640a7_add_amphora_vrrp_port_id_and_ha_port_id.py +4 -4
  117. octavia/db/migration/alembic_migrations/versions/29ff921a6eb_shared_pools.py +3 -3
  118. octavia/db/migration/alembic_migrations/versions/2ad093f6353f_add_listener_client_ca_tls_certificate_.py +2 -2
  119. octavia/db/migration/alembic_migrations/versions/31f7653ded67_allow_multiple_vips_per_loadbalancer.py +10 -10
  120. octavia/db/migration/alembic_migrations/versions/32e5c35b26a8_add_l7policy_and_l7rule_quota.py +4 -4
  121. octavia/db/migration/alembic_migrations/versions/357d17a6d5ac_update_lb_and_amphora_data_model_for_.py +20 -20
  122. octavia/db/migration/alembic_migrations/versions/35dee79d5865_initial_create.py +185 -185
  123. octavia/db/migration/alembic_migrations/versions/36b94648fef8_add_timestamp.py +2 -2
  124. octavia/db/migration/alembic_migrations/versions/392fb85b4419_add_primary_key_to_spares_pool.py +1 -1
  125. octavia/db/migration/alembic_migrations/versions/3a1e1cdb7b27_rename_amphora_host_id.py +1 -1
  126. octavia/db/migration/alembic_migrations/versions/3b199c848b96_create_no_monitor_operational_status.py +1 -1
  127. octavia/db/migration/alembic_migrations/versions/3e5b37a0bdb9_add_vrrp_ip_and_ha_ip_to_amphora.py +4 -4
  128. octavia/db/migration/alembic_migrations/versions/3f8ff3be828e_create_quotas_table.py +12 -12
  129. octavia/db/migration/alembic_migrations/versions/43287cd10fef_make_pool_lb_algorithm_larger.py +6 -6
  130. octavia/db/migration/alembic_migrations/versions/443fe6676637_add_network_id_to_vip.py +2 -2
  131. octavia/db/migration/alembic_migrations/versions/44a2414dd683_adding_name_column_to_member_and_health_.py +1 -1
  132. octavia/db/migration/alembic_migrations/versions/458c9ee2a011_l7_policies_and_rules.py +57 -57
  133. octavia/db/migration/alembic_migrations/versions/46d914b2a5e5_seed_the_spares_pool_table.py +2 -2
  134. octavia/db/migration/alembic_migrations/versions/48660b6643f0_add_new_states_for_amphora.py +3 -3
  135. octavia/db/migration/alembic_migrations/versions/4aeb9e23ad43_add_draining_operating_status.py +1 -1
  136. octavia/db/migration/alembic_migrations/versions/4c094013699a_update_load_balancer_amphora.py +9 -9
  137. octavia/db/migration/alembic_migrations/versions/4f65b4f91c39_amphora_add_flavor_id.py +2 -2
  138. octavia/db/migration/alembic_migrations/versions/4faaa983e7a9_update_member_address_column.py +1 -1
  139. octavia/db/migration/alembic_migrations/versions/4fe8240425b4_update_vip_add_subnet_id.py +2 -2
  140. octavia/db/migration/alembic_migrations/versions/52377704420e_add_timestamps_to_healthmonitor.py +9 -9
  141. octavia/db/migration/alembic_migrations/versions/5309960964f8_add_proxy_protocol_for_pool.py +3 -3
  142. octavia/db/migration/alembic_migrations/versions/543f5d8e4e56_add_a_column_busy_in_table_amphora_health.py +2 -2
  143. octavia/db/migration/alembic_migrations/versions/55874a4ceed6_add_l7policy_action_redirect_prefix.py +5 -5
  144. octavia/db/migration/alembic_migrations/versions/5a3ee5472c31_add_cert_expiration__infor_in_amphora_table.py +4 -4
  145. octavia/db/migration/alembic_migrations/versions/62816c232310_fix_migration_for_mysql_5_7.py +1 -1
  146. octavia/db/migration/alembic_migrations/versions/6742ca1b27c2_add_l7policy_redirect_http_code.py +2 -2
  147. octavia/db/migration/alembic_migrations/versions/6ac558d7fc21_add_prometheus_listener_protocol.py +3 -3
  148. octavia/db/migration/alembic_migrations/versions/6ffc710674ef_spares_pool_table.py +2 -2
  149. octavia/db/migration/alembic_migrations/versions/7432f1d4ea83_add_http_host_head_inject_for_http_health_check.py +4 -4
  150. octavia/db/migration/alembic_migrations/versions/74aae261694c_extend_pool_for_backend_ca_and_crl.py +4 -4
  151. octavia/db/migration/alembic_migrations/versions/76aacf2e176c_extend_support_udp_protocol.py +3 -3
  152. octavia/db/migration/alembic_migrations/versions/80dba23a159f_tags_support.py +3 -3
  153. octavia/db/migration/alembic_migrations/versions/82b9402e71fd_update_vip_address_size.py +1 -1
  154. octavia/db/migration/alembic_migrations/versions/8ac4ed24df3a_add_availability_zone_to_lb.py +4 -4
  155. octavia/db/migration/alembic_migrations/versions/8b47b2546312_sctp_support.py +2 -2
  156. octavia/db/migration/alembic_migrations/versions/8c0851bdf6c3_change_tls_container_id_length_in_sni_.py +1 -1
  157. octavia/db/migration/alembic_migrations/versions/92fe9857279_create_healthmanager_table.py +3 -3
  158. octavia/db/migration/alembic_migrations/versions/9b5473976d6d_add_provisioning_status_to_objects.py +10 -10
  159. octavia/db/migration/alembic_migrations/versions/a1f689aecc1d_extend_pool_for_support_backend_reencryption.py +2 -2
  160. octavia/db/migration/alembic_migrations/versions/a7f187cd221f_add_tls_boolean_type_for_reencryption.py +2 -2
  161. octavia/db/migration/alembic_migrations/versions/b9c703669314_add_flavor_and_flavor_profile_table.py +18 -18
  162. octavia/db/migration/alembic_migrations/versions/ba35e0fb88e1_add_backup_field_to_member.py +2 -2
  163. octavia/db/migration/alembic_migrations/versions/bf171d0d91c3_amphora_add_cached_zone.py +2 -2
  164. octavia/db/migration/alembic_migrations/versions/c761c8a71579_add_availability_zone_table.py +15 -15
  165. octavia/db/migration/alembic_migrations/versions/d85ca7258d21_modernize_l7rule.py +13 -13
  166. octavia/db/migration/alembic_migrations/versions/da371b422669_allowed_cidr_for_listeners.py +7 -7
  167. octavia/db/migration/alembic_migrations/versions/dcf88e59aae4_add_lb_algorithm_source_ip_port.py +3 -3
  168. octavia/db/migration/alembic_migrations/versions/e37941b010db_add_lb_flavor_constraint.py +11 -11
  169. octavia/db/migration/alembic_migrations/versions/e6672bda93bf_add_ping_and_tlshello_monitor_types.py +3 -3
  170. octavia/db/migration/alembic_migrations/versions/e6ee84f0abf3_add_proxy_v2_pool_protocol.py +3 -3
  171. octavia/db/migration/alembic_migrations/versions/ebbcc72b4e5e_add_octavia_owned_vip_column_to_vip_.py +2 -2
  172. octavia/db/migration/alembic_migrations/versions/f21ae3f21adc_add_client_auth_option.py +6 -6
  173. octavia/db/migration/alembic_migrations/versions/fc5582da7d8a_create_amphora_build_rate_limit_tables.py +11 -11
  174. octavia/db/migration/alembic_migrations/versions/ffad172e98c1_add_certificate_revoke_list_option.py +2 -2
  175. octavia/db/models.py +1 -1
  176. octavia/db/repositories.py +3 -3
  177. octavia/distributor/drivers/driver_base.py +1 -1
  178. octavia/distributor/drivers/noop_driver/driver.py +1 -1
  179. octavia/hacking/checks.py +4 -4
  180. octavia/image/drivers/noop_driver/driver.py +1 -1
  181. octavia/image/image_base.py +1 -1
  182. octavia/network/base.py +1 -1
  183. octavia/network/drivers/neutron/allowed_address_pairs.py +11 -9
  184. octavia/network/drivers/neutron/base.py +3 -3
  185. octavia/network/drivers/noop_driver/driver.py +1 -1
  186. octavia/policies/amphora.py +6 -12
  187. octavia/policies/availability_zone.py +5 -10
  188. octavia/policies/availability_zone_profile.py +5 -15
  189. octavia/policies/base.py +1 -20
  190. octavia/policies/flavor.py +5 -10
  191. octavia/policies/flavor_profile.py +5 -10
  192. octavia/policies/healthmonitor.py +6 -12
  193. octavia/policies/l7policy.py +6 -12
  194. octavia/policies/l7rule.py +5 -10
  195. octavia/policies/listener.py +7 -14
  196. octavia/policies/loadbalancer.py +9 -18
  197. octavia/policies/member.py +5 -10
  198. octavia/policies/pool.py +6 -12
  199. octavia/policies/provider.py +1 -2
  200. octavia/policies/provider_availability_zone.py +1 -3
  201. octavia/policies/provider_flavor.py +1 -2
  202. octavia/policies/quota.py +6 -12
  203. octavia/statistics/stats_base.py +1 -1
  204. octavia/tests/common/constants.py +1 -1
  205. octavia/tests/common/data_model_helpers.py +10 -10
  206. octavia/tests/common/sample_data_models.py +1 -1
  207. octavia/tests/common/sample_haproxy_prometheus +17 -17
  208. octavia/tests/common/sample_octavia_prometheus +6 -6
  209. octavia/tests/common/utils.py +2 -2
  210. octavia/tests/functional/amphorae/backend/agent/api_server/test_keepalivedlvs.py +36 -62
  211. octavia/tests/functional/amphorae/backend/agent/api_server/test_server.py +135 -296
  212. octavia/tests/functional/api/drivers/driver_agent/test_driver_agent.py +10 -11
  213. octavia/tests/functional/api/v2/base.py +2 -3
  214. octavia/tests/functional/api/v2/test_amphora.py +6 -6
  215. octavia/tests/functional/api/v2/test_availability_zone_profiles.py +13 -14
  216. octavia/tests/functional/api/v2/test_availability_zones.py +19 -19
  217. octavia/tests/functional/api/v2/test_flavor_profiles.py +19 -20
  218. octavia/tests/functional/api/v2/test_flavors.py +25 -25
  219. octavia/tests/functional/api/v2/test_health_monitor.py +35 -18
  220. octavia/tests/functional/api/v2/test_l7policy.py +11 -11
  221. octavia/tests/functional/api/v2/test_l7rule.py +19 -20
  222. octavia/tests/functional/api/v2/test_listener.py +26 -28
  223. octavia/tests/functional/api/v2/test_load_balancer.py +17 -17
  224. octavia/tests/functional/api/v2/test_member.py +53 -21
  225. octavia/tests/functional/api/v2/test_pool.py +11 -11
  226. octavia/tests/functional/api/v2/test_provider.py +7 -7
  227. octavia/tests/functional/api/v2/test_quotas.py +9 -9
  228. octavia/tests/functional/db/test_models.py +1 -1
  229. octavia/tests/functional/db/test_repositories.py +2 -2
  230. octavia/tests/unit/amphorae/backends/agent/api_server/test_amphora_info.py +60 -61
  231. octavia/tests/unit/amphorae/backends/agent/api_server/test_keepalived.py +3 -3
  232. octavia/tests/unit/amphorae/backends/agent/api_server/test_keepalivedlvs.py +1 -19
  233. octavia/tests/unit/amphorae/backends/agent/api_server/test_loadbalancer.py +94 -34
  234. octavia/tests/unit/amphorae/backends/agent/api_server/test_osutils.py +19 -21
  235. octavia/tests/unit/amphorae/backends/agent/api_server/test_plug.py +9 -11
  236. octavia/tests/unit/amphorae/backends/agent/api_server/test_util.py +11 -25
  237. octavia/tests/unit/amphorae/backends/agent/test_agent_jinja_cfg.py +0 -13
  238. octavia/tests/unit/amphorae/backends/health_daemon/test_health_daemon.py +10 -10
  239. octavia/tests/unit/amphorae/backends/utils/test_haproxy_query.py +1 -1
  240. octavia/tests/unit/amphorae/backends/utils/test_interface.py +33 -94
  241. octavia/tests/unit/amphorae/backends/utils/test_interface_file.py +32 -32
  242. octavia/tests/unit/amphorae/backends/utils/test_network_namespace.py +4 -6
  243. octavia/tests/unit/amphorae/backends/utils/test_nftable_utils.py +28 -22
  244. octavia/tests/unit/amphorae/drivers/haproxy/test_rest_api_driver_1_0.py +77 -118
  245. octavia/tests/unit/amphorae/drivers/health/test_heartbeat_udp.py +8 -8
  246. octavia/tests/unit/amphorae/drivers/keepalived/jinja/test_jinja_cfg.py +0 -4
  247. octavia/tests/unit/api/common/test_pagination.py +84 -14
  248. octavia/tests/unit/api/v2/types/test_availability_zone_profile.py +1 -1
  249. octavia/tests/unit/api/v2/types/test_availability_zones.py +1 -1
  250. octavia/tests/unit/api/v2/types/test_flavor_profile.py +1 -1
  251. octavia/tests/unit/api/v2/types/test_flavors.py +1 -1
  252. octavia/tests/unit/api/v2/types/test_health_monitor.py +1 -1
  253. octavia/tests/unit/api/v2/types/test_listener.py +1 -1
  254. octavia/tests/unit/api/v2/types/test_load_balancer.py +1 -1
  255. octavia/tests/unit/api/v2/types/test_pool.py +1 -1
  256. octavia/tests/unit/base.py +1 -0
  257. octavia/tests/unit/certificates/generator/local_csr.py +1 -1
  258. octavia/tests/unit/certificates/generator/test_local.py +5 -5
  259. octavia/tests/unit/certificates/manager/test_barbican.py +2 -3
  260. octavia/tests/unit/certificates/manager/test_barbican_legacy.py +1 -1
  261. octavia/tests/unit/certificates/manager/test_local.py +13 -14
  262. octavia/tests/unit/cmd/test_health_checker.py +1 -1
  263. octavia/tests/unit/cmd/test_prometheus_proxy.py +8 -1
  264. octavia/tests/unit/common/jinja/haproxy/combined_listeners/test_jinja_cfg.py +171 -216
  265. octavia/tests/unit/common/jinja/logging/test_logging_jinja_cfg.py +1 -1
  266. octavia/tests/unit/common/sample_configs/sample_configs_combined.py +1 -2
  267. octavia/tests/unit/common/test_base_taskflow.py +1 -1
  268. octavia/tests/unit/common/test_decorators.py +2 -2
  269. octavia/tests/unit/common/test_policy.py +3 -6
  270. octavia/tests/unit/common/tls_utils/test_cert_parser.py +4 -1
  271. octavia/tests/unit/controller/worker/v2/flows/test_listener_flows.py +10 -15
  272. octavia/tests/unit/controller/worker/v2/flows/test_load_balancer_flows.py +4 -6
  273. octavia/tests/unit/controller/worker/v2/tasks/test_network_tasks.py +6 -2
  274. octavia/tests/unit/controller/worker/v2/tasks/test_retry_tasks.py +1 -1
  275. octavia/tests/unit/controller/worker/v2/test_controller_worker.py +56 -1
  276. octavia/tests/unit/controller/worker/v2/test_taskflow_jobboard_driver.py +348 -0
  277. octavia/tests/unit/hacking/test_checks.py +3 -3
  278. octavia/tests/unit/image/drivers/noop_driver/test_driver.py +1 -1
  279. octavia/tests/unit/image/drivers/test_glance_driver.py +1 -1
  280. octavia/tests/unit/network/drivers/neutron/test_base.py +1 -1
  281. octavia/tests/unit/statistics/drivers/test_update_db.py +1 -1
  282. octavia/tests/unit/statistics/test_stats_base.py +1 -1
  283. octavia/volume/drivers/noop_driver/driver.py +1 -1
  284. octavia/volume/volume_base.py +1 -1
  285. {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/AUTHORS +6 -0
  286. {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/METADATA +3 -5
  287. {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/RECORD +302 -305
  288. octavia-15.0.0.dist-info/pbr.json +1 -0
  289. octavia/amphorae/backends/agent/api_server/templates/keepalived.sysvinit.j2 +0 -87
  290. octavia/amphorae/backends/agent/api_server/templates/keepalived.upstart.j2 +0 -29
  291. octavia/amphorae/backends/agent/api_server/templates/sysvinit.conf.j2 +0 -232
  292. octavia/amphorae/backends/agent/api_server/templates/upstart.conf.j2 +0 -71
  293. octavia-14.0.0.0rc1.dist-info/pbr.json +0 -1
  294. {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/LICENSE +0 -0
  295. {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/README.rst +0 -0
  296. {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/README.rst +0 -0
  297. {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/diskimage-create.sh +0 -0
  298. {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/image-tests.sh +0 -0
  299. {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/requirements.txt +0 -0
  300. {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/test-requirements.txt +0 -0
  301. {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/tox.ini +0 -0
  302. {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/data/share/octavia/diskimage-create/version.txt +0 -0
  303. {octavia-14.0.0.0rc1.data → octavia-15.0.0.data}/scripts/octavia-wsgi +0 -0
  304. {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/LICENSE +0 -0
  305. {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/WHEEL +0 -0
  306. {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/entry_points.txt +0 -0
  307. {octavia-14.0.0.0rc1.dist-info → octavia-15.0.0.dist-info}/top_level.txt +0 -0
@@ -29,5 +29,5 @@ down_revision = '4aeb9e23ad43'
29
29
 
30
30
 
31
31
  def upgrade():
32
- op.add_column(u'amphora', sa.Column(u'cached_zone', sa.String(255),
33
- nullable=True))
32
+ op.add_column('amphora', sa.Column('cached_zone', sa.String(255),
33
+ nullable=True))
@@ -32,12 +32,12 @@ down_revision = 'e37941b010db'
32
32
 
33
33
  def upgrade():
34
34
  azp_table = op.create_table(
35
- u'availability_zone_profile',
36
- sa.Column(u'id', sa.String(36), nullable=False),
37
- sa.Column(u'name', sa.String(255), nullable=False),
38
- sa.Column(u'provider_name', sa.String(255), nullable=False),
39
- sa.Column(u'availability_zone_data', sa.String(4096), nullable=False),
40
- sa.PrimaryKeyConstraint(u'id'))
35
+ 'availability_zone_profile',
36
+ sa.Column('id', sa.String(36), nullable=False),
37
+ sa.Column('name', sa.String(255), nullable=False),
38
+ sa.Column('provider_name', sa.String(255), nullable=False),
39
+ sa.Column('availability_zone_data', sa.String(4096), nullable=False),
40
+ sa.PrimaryKeyConstraint('id'))
41
41
 
42
42
  op.bulk_insert(
43
43
  azp_table,
@@ -48,16 +48,16 @@ def upgrade():
48
48
  )
49
49
 
50
50
  az_table = op.create_table(
51
- u'availability_zone',
52
- sa.Column(u'name', sa.String(255), nullable=False),
53
- sa.Column(u'description', sa.String(255), nullable=True),
54
- sa.Column(u'enabled', sa.Boolean(), nullable=False),
55
- sa.Column(u'availability_zone_profile_id', sa.String(36),
51
+ 'availability_zone',
52
+ sa.Column('name', sa.String(255), nullable=False),
53
+ sa.Column('description', sa.String(255), nullable=True),
54
+ sa.Column('enabled', sa.Boolean(), nullable=False),
55
+ sa.Column('availability_zone_profile_id', sa.String(36),
56
56
  nullable=False),
57
- sa.ForeignKeyConstraint([u'availability_zone_profile_id'],
58
- [u'availability_zone_profile.id'],
59
- name=u'fk_az_az_profile_id'),
60
- sa.PrimaryKeyConstraint(u'name'),)
57
+ sa.ForeignKeyConstraint(['availability_zone_profile_id'],
58
+ ['availability_zone_profile.id'],
59
+ name='fk_az_az_profile_id'),
60
+ sa.PrimaryKeyConstraint('name'),)
61
61
 
62
62
  op.bulk_insert(
63
63
  az_table,
@@ -33,39 +33,39 @@ down_revision = '034b2dc2f3e0'
33
33
  def upgrade():
34
34
  # Add timing data
35
35
  op.add_column(
36
- u'l7rule',
37
- sa.Column(u'created_at', sa.DateTime(), nullable=True)
36
+ 'l7rule',
37
+ sa.Column('created_at', sa.DateTime(), nullable=True)
38
38
  )
39
39
  op.add_column(
40
- u'l7rule',
41
- sa.Column(u'updated_at', sa.DateTime(), nullable=True)
40
+ 'l7rule',
41
+ sa.Column('updated_at', sa.DateTime(), nullable=True)
42
42
  )
43
43
 
44
44
  # Add project_id
45
45
  op.add_column(
46
- u'l7rule',
47
- sa.Column(u'project_id', sa.String(36), nullable=True)
46
+ 'l7rule',
47
+ sa.Column('project_id', sa.String(36), nullable=True)
48
48
  )
49
49
 
50
50
  # Add enabled
51
51
  op.add_column(
52
- u'l7rule',
53
- sa.Column(u'enabled', sa.Boolean(),
52
+ 'l7rule',
53
+ sa.Column('enabled', sa.Boolean(),
54
54
  server_default=sa.sql.expression.true(),
55
55
  nullable=False)
56
56
  )
57
57
 
58
58
  # Add new operating_status column, setting existing rows to ONLINE
59
59
  op.add_column(
60
- u'l7rule',
61
- sa.Column(u'operating_status', sa.String(16),
60
+ 'l7rule',
61
+ sa.Column('operating_status', sa.String(16),
62
62
  nullable=False, server_default=constants.ONLINE)
63
63
  )
64
64
  # Remove the default, as we don't actually want one
65
- op.alter_column(u'l7rule', u'operating_status',
65
+ op.alter_column('l7rule', 'operating_status',
66
66
  existing_type=sa.String(16), server_default=None)
67
67
  # Add the foreign key for operating_status_name
68
68
  op.create_foreign_key(
69
- u'fk_l7rule_operating_status_name', u'l7rule',
70
- u'operating_status', [u'operating_status'], [u'name']
69
+ 'fk_l7rule_operating_status_name', 'l7rule',
70
+ 'operating_status', ['operating_status'], ['name']
71
71
  )
@@ -29,12 +29,12 @@ down_revision = 'a5762a99609a'
29
29
 
30
30
  def upgrade():
31
31
  op.create_table(
32
- u'listener_cidr',
33
- sa.Column(u'listener_id', sa.String(36), nullable=False),
34
- sa.Column(u'cidr', sa.String(64), nullable=False),
32
+ 'listener_cidr',
33
+ sa.Column('listener_id', sa.String(36), nullable=False),
34
+ sa.Column('cidr', sa.String(64), nullable=False),
35
35
 
36
- sa.ForeignKeyConstraint([u'listener_id'],
37
- [u'listener.id'],
38
- name=u'fk_listener_cidr_listener_id'),
39
- sa.PrimaryKeyConstraint(u'listener_id', u'cidr')
36
+ sa.ForeignKeyConstraint(['listener_id'],
37
+ ['listener.id'],
38
+ name='fk_listener_cidr_listener_id'),
39
+ sa.PrimaryKeyConstraint('listener_id', 'cidr')
40
40
  )
@@ -43,7 +43,7 @@ def migrate_pools():
43
43
 
44
44
  j = pool_table.join(lb_table,
45
45
  pool_table.c.load_balancer_id == lb_table.c.id)
46
- stmt = sa.select([pool_table.c.id]).select_from(j).where(
46
+ stmt = sa.select(pool_table.c.id).select_from(j).where(
47
47
  lb_table.c.provider == 'ovn')
48
48
  result = conn.execute(stmt)
49
49
 
@@ -55,8 +55,8 @@ def migrate_pools():
55
55
 
56
56
  def upgrade():
57
57
  insert_table = sa.table(
58
- u'algorithm',
59
- sa.column(u'name', sa.String(255)),
58
+ 'algorithm',
59
+ sa.column('name', sa.String(255)),
60
60
  )
61
61
  op.bulk_insert(
62
62
  insert_table,
@@ -32,11 +32,11 @@ down_revision = 'dcf88e59aae4'
32
32
 
33
33
  def upgrade():
34
34
  insert_table = sql.table(
35
- u'flavor_profile',
36
- sa.Column(u'id', sa.String(36), nullable=False),
37
- sa.Column(u'name', sa.String(255), nullable=False),
38
- sa.Column(u'provider_name', sa.String(255), nullable=False),
39
- sa.Column(u'flavor_data', sa.String(4096), nullable=False),
35
+ 'flavor_profile',
36
+ sa.Column('id', sa.String(36), nullable=False),
37
+ sa.Column('name', sa.String(255), nullable=False),
38
+ sa.Column('provider_name', sa.String(255), nullable=False),
39
+ sa.Column('flavor_data', sa.String(4096), nullable=False),
40
40
  )
41
41
 
42
42
  op.bulk_insert(
@@ -48,12 +48,12 @@ def upgrade():
48
48
  )
49
49
 
50
50
  insert_table = sql.table(
51
- u'flavor',
52
- sa.Column(u'id', sa.String(36), nullable=False),
53
- sa.Column(u'name', sa.String(255), nullable=False),
54
- sa.Column(u'description', sa.String(255), nullable=True),
55
- sa.Column(u'enabled', sa.Boolean(), nullable=False),
56
- sa.Column(u'flavor_profile_id', sa.String(36), nullable=False),
51
+ 'flavor',
52
+ sa.Column('id', sa.String(36), nullable=False),
53
+ sa.Column('name', sa.String(255), nullable=False),
54
+ sa.Column('description', sa.String(255), nullable=True),
55
+ sa.Column('enabled', sa.Boolean(), nullable=False),
56
+ sa.Column('flavor_profile_id', sa.String(36), nullable=False),
57
57
  )
58
58
 
59
59
  op.bulk_insert(
@@ -31,9 +31,9 @@ down_revision = '27e54d00c3cd'
31
31
 
32
32
  def upgrade():
33
33
  insert_table = sql.table(
34
- u'health_monitor_type',
35
- sql.column(u'name', sa.String),
36
- sql.column(u'description', sa.String)
34
+ 'health_monitor_type',
35
+ sql.column('name', sa.String),
36
+ sql.column('description', sa.String)
37
37
  )
38
38
 
39
39
  op.bulk_insert(
@@ -30,9 +30,9 @@ down_revision = '2ab994dd3ec2'
30
30
 
31
31
  def upgrade():
32
32
  insert_table = sql.table(
33
- u'protocol',
34
- sql.column(u'name', sa.String),
35
- sql.column(u'description', sa.String)
33
+ 'protocol',
34
+ sql.column('name', sa.String),
35
+ sql.column('description', sa.String)
36
36
  )
37
37
 
38
38
  op.bulk_insert(
@@ -29,6 +29,6 @@ down_revision = '0f242cf02c74'
29
29
 
30
30
  def upgrade():
31
31
  op.add_column(
32
- u'vip',
33
- sa.Column(u'octavia_owned', sa.Boolean(), nullable=True)
32
+ 'vip',
33
+ sa.Column('octavia_owned', sa.Boolean(), nullable=True)
34
34
  )
@@ -34,14 +34,14 @@ down_revision = '2ad093f6353f'
34
34
 
35
35
  def upgrade():
36
36
  op.create_table(
37
- u'client_authentication_mode',
38
- sa.Column(u'name', sa.String(10), primary_key=True),
37
+ 'client_authentication_mode',
38
+ sa.Column('name', sa.String(10), primary_key=True),
39
39
  )
40
40
 
41
41
  # Create temporary table for table data seeding
42
42
  insert_table = sa.table(
43
- u'client_authentication_mode',
44
- sa.column(u'name', sa.String),
43
+ 'client_authentication_mode',
44
+ sa.column('name', sa.String),
45
45
  )
46
46
 
47
47
  op.bulk_insert(
@@ -54,8 +54,8 @@ def upgrade():
54
54
  )
55
55
 
56
56
  op.add_column(
57
- u'listener',
58
- sa.Column(u'client_authentication', sa.String(10),
57
+ 'listener',
58
+ sa.Column('client_authentication', sa.String(10),
59
59
  sa.ForeignKey('client_authentication_mode.name'),
60
60
  server_default=constants.CLIENT_AUTH_NONE, nullable=False)
61
61
  )
@@ -31,16 +31,16 @@ down_revision = '443fe6676637'
31
31
 
32
32
  def upgrade():
33
33
  op.create_table(
34
- u'amphora_build_slots',
35
- sa.Column(u'id', sa.Integer(), primary_key=True),
36
- sa.Column(u'slots_used', sa.Integer(), default=0)
34
+ 'amphora_build_slots',
35
+ sa.Column('id', sa.Integer(), primary_key=True),
36
+ sa.Column('slots_used', sa.Integer(), default=0)
37
37
  )
38
38
 
39
39
  # Create temporary table for table data seeding
40
40
  insert_table = sql.table(
41
- u'amphora_build_slots',
42
- sql.column(u'id', sa.Integer),
43
- sql.column(u'slots_used', sa.Integer)
41
+ 'amphora_build_slots',
42
+ sql.column('id', sa.Integer),
43
+ sql.column('slots_used', sa.Integer)
44
44
  )
45
45
 
46
46
  op.bulk_insert(
@@ -51,12 +51,12 @@ def upgrade():
51
51
  )
52
52
 
53
53
  op.create_table(
54
- u'amphora_build_request',
55
- sa.Column(u'amphora_id', sa.String(36), nullable=True,
54
+ 'amphora_build_request',
55
+ sa.Column('amphora_id', sa.String(36), nullable=True,
56
56
  primary_key=True),
57
- sa.Column(u'priority', sa.Integer()),
58
- sa.Column(u'created_time', sa.DateTime(timezone=True), nullable=False),
59
- sa.Column(u'status', sa.String(16), default='WAITING', nullable=False)
57
+ sa.Column('priority', sa.Integer()),
58
+ sa.Column('created_time', sa.DateTime(timezone=True), nullable=False),
59
+ sa.Column('status', sa.String(16), default='WAITING', nullable=False)
60
60
  )
61
61
 
62
62
 
@@ -31,6 +31,6 @@ down_revision = 'f21ae3f21adc'
31
31
 
32
32
 
33
33
  def upgrade():
34
- op.add_column(u'listener',
35
- sa.Column(u'client_crl_container_id', sa.String(255),
34
+ op.add_column('listener',
35
+ sa.Column('client_crl_container_id', sa.String(255),
36
36
  nullable=True))
octavia/db/models.py CHANGED
@@ -185,7 +185,7 @@ class ListenerStatistics(base_models.BASE):
185
185
  self.total_connections += other.total_connections
186
186
  else:
187
187
  raise TypeError( # noqa: O342
188
- "unsupported operand type(s) for +=: '{0}' and '{1}'".format(
188
+ "unsupported operand type(s) for +=: '{}' and '{}'".format(
189
189
  type(self), type(other)))
190
190
 
191
191
  return self
@@ -49,7 +49,7 @@ CONF = cfg.CONF
49
49
  LOG = logging.getLogger(__name__)
50
50
 
51
51
 
52
- class BaseRepository(object):
52
+ class BaseRepository:
53
53
  model_class = None
54
54
 
55
55
  def count(self, session, **filters):
@@ -209,7 +209,7 @@ class BaseRepository(object):
209
209
  return id_list
210
210
 
211
211
 
212
- class Repositories(object):
212
+ class Repositories:
213
213
  def __init__(self):
214
214
  self.load_balancer = LoadBalancerRepository()
215
215
  self.vip = VipRepository()
@@ -1943,7 +1943,7 @@ class QuotasRepository(BaseRepository):
1943
1943
  session.flush()
1944
1944
 
1945
1945
 
1946
- class _GetALLExceptDELETEDIdMixin(object):
1946
+ class _GetALLExceptDELETEDIdMixin:
1947
1947
 
1948
1948
  def get_all(self, session, pagination_helper=None,
1949
1949
  query_options=None, **filters):
@@ -20,7 +20,7 @@ import abc
20
20
  # a single amphora, or multiple amphora among other options.
21
21
 
22
22
 
23
- class DistributorDriver(object, metaclass=abc.ABCMeta):
23
+ class DistributorDriver(metaclass=abc.ABCMeta):
24
24
  @abc.abstractmethod
25
25
  def get_create_distributor_subflow(self):
26
26
  """Get a subflow to create a distributor
@@ -38,7 +38,7 @@ class NoopProvidesRequiresTask(task.Task):
38
38
  return self.provides_dict.values()
39
39
 
40
40
 
41
- class NoopManager(object):
41
+ class NoopManager:
42
42
  def __init__(self):
43
43
  super().__init__()
44
44
 
octavia/hacking/checks.py CHANGED
@@ -37,10 +37,10 @@ _all_log_levels = {'critical', 'error', 'exception', 'info', 'warning'}
37
37
  _all_hints = {'_LC', '_LE', '_LI', '_', '_LW'}
38
38
 
39
39
  _log_translation_hint = re.compile(
40
- r".*LOG\.(%(levels)s)\(\s*(%(hints)s)\(" % {
41
- 'levels': '|'.join(_all_log_levels),
42
- 'hints': '|'.join(_all_hints),
43
- })
40
+ r".*LOG\.({levels})\(\s*({hints})\(".format(
41
+ levels='|'.join(_all_log_levels),
42
+ hints='|'.join(_all_hints),
43
+ ))
44
44
 
45
45
  assert_trueinst_re = re.compile(
46
46
  r"(.)*assertTrue\(isinstance\((\w|\.|\'|\"|\[|\])+, "
@@ -19,7 +19,7 @@ from octavia.image import image_base as driver_base
19
19
  LOG = logging.getLogger(__name__)
20
20
 
21
21
 
22
- class NoopManager(object):
22
+ class NoopManager:
23
23
  def __init__(self):
24
24
  super().__init__()
25
25
  self.imageconfig = {}
@@ -15,7 +15,7 @@
15
15
  import abc
16
16
 
17
17
 
18
- class ImageBase(object, metaclass=abc.ABCMeta):
18
+ class ImageBase(metaclass=abc.ABCMeta):
19
19
 
20
20
  @abc.abstractmethod
21
21
  def get_image_id_by_tag(self, image_tag, image_owner=None):
octavia/network/base.py CHANGED
@@ -86,7 +86,7 @@ class CreatePortException(NetworkException):
86
86
  pass
87
87
 
88
88
 
89
- class AbstractNetworkDriver(object, metaclass=abc.ABCMeta):
89
+ class AbstractNetworkDriver(metaclass=abc.ABCMeta):
90
90
  """This class defines the methods for a fully functional network driver.
91
91
 
92
92
  Implementations of this interface can expect a rollback to occur if any of
@@ -475,7 +475,9 @@ class AllowedAddressPairsDriver(neutron_base.BaseNeutronDriver):
475
475
  :param load_balancer: octavia.common.data_models.LoadBalancer instance
476
476
  :return: octavia.common.data_models.Vip,
477
477
  list(octavia.common.data_models.AdditionalVip)
478
- :raises: AllocateVIPException, PortNotFound, SubnetNotFound
478
+ :raises AllocateVIPException: generic error allocating the VIP
479
+ :raises PortNotFound: port was not found
480
+ :raises SubnetNotFound: subnet was not found
479
481
  """
480
482
  if load_balancer.vip.port_id:
481
483
  try:
@@ -500,7 +502,7 @@ class AllowedAddressPairsDriver(neutron_base.BaseNeutronDriver):
500
502
  self.delete_port(load_balancer.vip.port_id)
501
503
  else:
502
504
  raise base.AllocateVIPException(
503
- 'VIP port {0} is broken, but is owned by project {1} '
505
+ 'VIP port {} is broken, but is owned by project {} '
504
506
  'so will not be recreated. Aborting VIP allocation.'
505
507
  .format(port.id, port.project_id))
506
508
  except base.AllocateVIPException as e:
@@ -552,7 +554,7 @@ class AllowedAddressPairsDriver(neutron_base.BaseNeutronDriver):
552
554
  constants.NAME: 'octavia-lb-' + load_balancer.id,
553
555
  constants.NETWORK_ID: load_balancer.vip.network_id,
554
556
  constants.ADMIN_STATE_UP: False,
555
- 'device_id': 'lb-{0}'.format(load_balancer.id),
557
+ 'device_id': f'lb-{load_balancer.id}',
556
558
  constants.DEVICE_OWNER: constants.OCTAVIA_OWNER,
557
559
  project_id_key: load_balancer.project_id}
558
560
 
@@ -615,8 +617,8 @@ class AllowedAddressPairsDriver(neutron_base.BaseNeutronDriver):
615
617
  try:
616
618
  subnet = self.get_subnet(vip.subnet_id)
617
619
  except base.SubnetNotFound as e:
618
- msg = ("Can't unplug vip because vip subnet {0} was not "
619
- "found").format(vip.subnet_id)
620
+ msg = (f"Can't unplug vip because vip subnet {vip.subnet_id} "
621
+ f"was not found")
620
622
  LOG.exception(msg)
621
623
  raise base.PluggedVIPNotFound(msg) from e
622
624
  for amphora in filter(
@@ -637,8 +639,8 @@ class AllowedAddressPairsDriver(neutron_base.BaseNeutronDriver):
637
639
  except Exception as e:
638
640
  message = _('Error plugging amphora (compute_id: {compute_id}) '
639
641
  'into network {network_id}.').format(
640
- compute_id=compute_id,
641
- network_id=network_id)
642
+ compute_id=compute_id,
643
+ network_id=network_id)
642
644
  LOG.exception(message)
643
645
  raise base.PlugNetworkException(message) from e
644
646
 
@@ -647,8 +649,8 @@ class AllowedAddressPairsDriver(neutron_base.BaseNeutronDriver):
647
649
  def unplug_network(self, compute_id, network_id):
648
650
  interfaces = self.get_plugged_networks(compute_id)
649
651
  if not interfaces:
650
- msg = ('Amphora with compute id {compute_id} does not have any '
651
- 'plugged networks').format(compute_id=compute_id)
652
+ msg = (f'Amphora with compute id {compute_id} does not have any '
653
+ f'plugged networks')
652
654
  raise base.NetworkNotFound(msg)
653
655
 
654
656
  unpluggers = self._get_interfaces_to_unplug(interfaces, network_id)
@@ -188,8 +188,8 @@ class BaseNeutronDriver(base.AbstractNetworkDriver):
188
188
  try:
189
189
  resource = getattr(
190
190
  network, f"get_{resource_type}")(resource_id)
191
- return getattr(utils, 'convert_%s_to_model' %
192
- resource_type)(resource)
191
+ return getattr(
192
+ utils, f'convert_{resource_type}_to_model')(resource)
193
193
  except os_exceptions.ResourceNotFound as e:
194
194
  message = _('{resource_type} not found '
195
195
  '({resource_type} id: {resource_id}).').format(
@@ -215,7 +215,7 @@ class BaseNeutronDriver(base.AbstractNetworkDriver):
215
215
  self.network_proxy, f"{resource_type}s")(**filters)
216
216
  conversion_function = getattr(
217
217
  utils,
218
- 'convert_%s_to_model' % resource_type)
218
+ f'convert_{resource_type}_to_model')
219
219
  try:
220
220
  # get first item to see if there is at least one resource
221
221
  res_list = [conversion_function(next(resources))]
@@ -31,7 +31,7 @@ _NOOP_MANAGER_VARS = {
31
31
  }
32
32
 
33
33
 
34
- class NoopManager(object):
34
+ class NoopManager:
35
35
 
36
36
  def __init__(self):
37
37
  super().__init__()
@@ -17,45 +17,39 @@ from octavia.common import constants
17
17
 
18
18
  rules = [
19
19
  policy.DocumentedRuleDefault(
20
- '{rbac_obj}{action}'.format(rbac_obj=constants.RBAC_AMPHORA,
21
- action=constants.RBAC_GET_ALL),
20
+ f'{constants.RBAC_AMPHORA}{constants.RBAC_GET_ALL}',
22
21
  constants.RULE_API_ADMIN,
23
22
  "List Amphorae",
24
23
  [{'method': 'GET', 'path': '/v2/octavia/amphorae'}]
25
24
  ),
26
25
  policy.DocumentedRuleDefault(
27
- '{rbac_obj}{action}'.format(rbac_obj=constants.RBAC_AMPHORA,
28
- action=constants.RBAC_GET_ONE),
26
+ f'{constants.RBAC_AMPHORA}{constants.RBAC_GET_ONE}',
29
27
  constants.RULE_API_ADMIN,
30
28
  "Show Amphora details",
31
29
  [{'method': 'GET', 'path': '/v2/octavia/amphorae/{amphora_id}'}]
32
30
  ),
33
31
  policy.DocumentedRuleDefault(
34
- '{rbac_obj}{action}'.format(rbac_obj=constants.RBAC_AMPHORA,
35
- action=constants.RBAC_DELETE),
32
+ f'{constants.RBAC_AMPHORA}{constants.RBAC_DELETE}',
36
33
  constants.RULE_API_ADMIN,
37
34
  "Delete an Amphora",
38
35
  [{'method': 'DELETE', 'path': '/v2/octavia/amphorae/{amphora_id}'}]
39
36
  ),
40
37
  policy.DocumentedRuleDefault(
41
- '{rbac_obj}{action}'.format(rbac_obj=constants.RBAC_AMPHORA,
42
- action=constants.RBAC_PUT_CONFIG),
38
+ f'{constants.RBAC_AMPHORA}{constants.RBAC_PUT_CONFIG}',
43
39
  constants.RULE_API_ADMIN,
44
40
  "Update Amphora Agent Configuration",
45
41
  [{'method': 'PUT',
46
42
  'path': '/v2/octavia/amphorae/{amphora_id}/config'}]
47
43
  ),
48
44
  policy.DocumentedRuleDefault(
49
- '{rbac_obj}{action}'.format(rbac_obj=constants.RBAC_AMPHORA,
50
- action=constants.RBAC_PUT_FAILOVER),
45
+ f'{constants.RBAC_AMPHORA}{constants.RBAC_PUT_FAILOVER}',
51
46
  constants.RULE_API_ADMIN,
52
47
  "Failover Amphora",
53
48
  [{'method': 'PUT',
54
49
  'path': '/v2/octavia/amphorae/{amphora_id}/failover'}]
55
50
  ),
56
51
  policy.DocumentedRuleDefault(
57
- '{rbac_obj}{action}'.format(rbac_obj=constants.RBAC_AMPHORA,
58
- action=constants.RBAC_GET_STATS),
52
+ f'{constants.RBAC_AMPHORA}{constants.RBAC_GET_STATS}',
59
53
  constants.RULE_API_ADMIN,
60
54
  "Show Amphora statistics",
61
55
  [{'method': 'GET', 'path': '/v2/octavia/amphorae/{amphora_id}/stats'}]
@@ -18,38 +18,33 @@ from octavia.common import constants
18
18
 
19
19
  rules = [
20
20
  policy.DocumentedRuleDefault(
21
- '{rbac_obj}{action}'.format(rbac_obj=constants.RBAC_AVAILABILITY_ZONE,
22
- action=constants.RBAC_GET_ALL),
21
+ f'{constants.RBAC_AVAILABILITY_ZONE}{constants.RBAC_GET_ALL}',
23
22
  constants.RULE_API_READ,
24
23
  "List Availability Zones",
25
24
  [{'method': 'GET', 'path': '/v2.0/lbaas/availabilityzones'}]
26
25
  ),
27
26
  policy.DocumentedRuleDefault(
28
- '{rbac_obj}{action}'.format(rbac_obj=constants.RBAC_AVAILABILITY_ZONE,
29
- action=constants.RBAC_POST),
27
+ f'{constants.RBAC_AVAILABILITY_ZONE}{constants.RBAC_POST}',
30
28
  constants.RULE_API_ADMIN,
31
29
  "Create an Availability Zone",
32
30
  [{'method': 'POST', 'path': '/v2.0/lbaas/availabilityzones'}]
33
31
  ),
34
32
  policy.DocumentedRuleDefault(
35
- '{rbac_obj}{action}'.format(rbac_obj=constants.RBAC_AVAILABILITY_ZONE,
36
- action=constants.RBAC_PUT),
33
+ f'{constants.RBAC_AVAILABILITY_ZONE}{constants.RBAC_PUT}',
37
34
  constants.RULE_API_ADMIN,
38
35
  "Update an Availability Zone",
39
36
  [{'method': 'PUT',
40
37
  'path': '/v2.0/lbaas/availabilityzones/{availability_zone_id}'}]
41
38
  ),
42
39
  policy.DocumentedRuleDefault(
43
- '{rbac_obj}{action}'.format(rbac_obj=constants.RBAC_AVAILABILITY_ZONE,
44
- action=constants.RBAC_GET_ONE),
40
+ f'{constants.RBAC_AVAILABILITY_ZONE}{constants.RBAC_GET_ONE}',
45
41
  constants.RULE_API_READ,
46
42
  "Show Availability Zone details",
47
43
  [{'method': 'GET',
48
44
  'path': '/v2.0/lbaas/availabilityzones/{availability_zone_id}'}]
49
45
  ),
50
46
  policy.DocumentedRuleDefault(
51
- '{rbac_obj}{action}'.format(rbac_obj=constants.RBAC_AVAILABILITY_ZONE,
52
- action=constants.RBAC_DELETE),
47
+ f'{constants.RBAC_AVAILABILITY_ZONE}{constants.RBAC_DELETE}',
53
48
  constants.RULE_API_ADMIN,
54
49
  "Remove an Availability Zone",
55
50
  [{'method': 'DELETE',