octavia 14.0.0.0rc1__py3-none-any.whl → 15.0.0.0rc1__py3-none-any.whl

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