python-watcher 15.1.0__py3-none-any.whl → 16.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 (524) hide show
  1. {python_watcher-15.1.0.data → python_watcher-16.0.0.data}/data/etc/watcher/oslo-config-generator/watcher.conf +2 -0
  2. {python_watcher-15.1.0.dist-info → python_watcher-16.0.0.dist-info}/METADATA +3 -7
  3. python_watcher-16.0.0.dist-info/RECORD +583 -0
  4. {python_watcher-15.1.0.dist-info → python_watcher-16.0.0.dist-info}/entry_points.txt +3 -0
  5. {python_watcher-15.1.0.dist-info → python_watcher-16.0.0.dist-info}/licenses/AUTHORS +3 -0
  6. python_watcher-16.0.0.dist-info/pbr.json +1 -0
  7. watcher/_i18n.py +0 -1
  8. watcher/api/acl.py +0 -1
  9. watcher/api/app.py +23 -4
  10. watcher/api/app.wsgi +0 -1
  11. watcher/api/config.py +0 -1
  12. watcher/api/controllers/base.py +7 -8
  13. watcher/api/controllers/link.py +0 -1
  14. watcher/api/controllers/root.py +5 -5
  15. watcher/api/controllers/v1/__init__.py +14 -14
  16. watcher/api/controllers/v1/action.py +2 -3
  17. watcher/api/controllers/v1/action_plan.py +2 -3
  18. watcher/api/controllers/v1/audit.py +7 -10
  19. watcher/api/controllers/v1/audit_template.py +4 -5
  20. watcher/api/controllers/v1/collection.py +3 -5
  21. watcher/api/controllers/v1/data_model.py +1 -2
  22. watcher/api/controllers/v1/efficacy_indicator.py +1 -2
  23. watcher/api/controllers/v1/goal.py +2 -3
  24. watcher/api/controllers/v1/scoring_engine.py +3 -4
  25. watcher/api/controllers/v1/service.py +3 -4
  26. watcher/api/controllers/v1/strategy.py +3 -4
  27. watcher/api/controllers/v1/types.py +1 -1
  28. watcher/api/controllers/v1/utils.py +2 -2
  29. watcher/api/controllers/v1/versions.py +2 -4
  30. watcher/api/controllers/v1/webhooks.py +1 -1
  31. watcher/api/hooks.py +0 -1
  32. watcher/api/middleware/auth_token.py +2 -3
  33. watcher/api/middleware/parsable_error.py +3 -4
  34. watcher/applier/action_plan/base.py +1 -2
  35. watcher/applier/action_plan/default.py +1 -3
  36. watcher/applier/actions/base.py +1 -2
  37. watcher/applier/actions/change_node_power_state.py +0 -1
  38. watcher/applier/actions/change_nova_service_state.py +16 -2
  39. watcher/applier/actions/factory.py +1 -2
  40. watcher/applier/actions/migration.py +78 -26
  41. watcher/applier/actions/nop.py +0 -1
  42. watcher/applier/actions/resize.py +39 -14
  43. watcher/applier/actions/sleep.py +0 -1
  44. watcher/applier/actions/stop.py +31 -28
  45. watcher/applier/actions/volume_migration.py +58 -3
  46. watcher/applier/base.py +1 -2
  47. watcher/applier/default.py +1 -2
  48. watcher/applier/loading/default.py +2 -2
  49. watcher/applier/manager.py +0 -1
  50. watcher/applier/messaging/trigger.py +11 -5
  51. watcher/applier/rpcapi.py +1 -2
  52. watcher/applier/service.py +55 -0
  53. watcher/applier/service_monitor.py +90 -0
  54. watcher/applier/sync.py +10 -4
  55. watcher/applier/workflow_engine/base.py +55 -87
  56. watcher/applier/workflow_engine/default.py +22 -10
  57. watcher/cmd/dbmanage.py +3 -4
  58. watcher/cmd/eventlet/api.py +0 -5
  59. watcher/cmd/eventlet/applier.py +3 -4
  60. watcher/cmd/eventlet/decisionengine.py +0 -1
  61. watcher/cmd/status.py +2 -2
  62. watcher/cmd/sync.py +0 -1
  63. watcher/common/cinder_helper.py +64 -23
  64. watcher/common/clients.py +73 -131
  65. watcher/common/config.py +22 -0
  66. watcher/common/context.py +1 -1
  67. watcher/common/exception.py +18 -2
  68. watcher/common/executor.py +44 -3
  69. watcher/common/ironic_helper.py +1 -2
  70. watcher/common/keystone_helper.py +1 -1
  71. watcher/common/loader/base.py +1 -2
  72. watcher/common/loader/default.py +1 -2
  73. watcher/common/loader/loadable.py +4 -5
  74. watcher/common/metal_helper/base.py +3 -2
  75. watcher/common/metal_helper/ironic.py +6 -2
  76. watcher/common/metal_helper/maas.py +5 -2
  77. watcher/common/nova_helper.py +826 -495
  78. watcher/common/oslo_service_helper.py +0 -1
  79. watcher/common/placement_helper.py +7 -7
  80. watcher/common/scheduling.py +5 -1
  81. watcher/common/service.py +105 -5
  82. watcher/common/service_manager.py +1 -2
  83. watcher/common/utils.py +5 -8
  84. watcher/conf/__init__.py +0 -7
  85. watcher/conf/api.py +0 -1
  86. watcher/conf/applier.py +5 -2
  87. watcher/conf/cinder_client.py +0 -1
  88. watcher/conf/clients_auth.py +0 -1
  89. watcher/conf/collector.py +9 -1
  90. watcher/conf/datasources.py +5 -5
  91. watcher/conf/db.py +1 -2
  92. watcher/conf/decision_engine.py +3 -5
  93. watcher/conf/exception.py +0 -1
  94. watcher/conf/gnocchi_client.py +0 -1
  95. watcher/conf/grafana_client.py +0 -1
  96. watcher/conf/grafana_translators.py +0 -1
  97. watcher/conf/ironic_client.py +0 -1
  98. watcher/conf/keystone_client.py +0 -1
  99. watcher/conf/nova.py +46 -1
  100. watcher/conf/nova_client.py +23 -4
  101. watcher/conf/opts.py +3 -3
  102. watcher/conf/paths.py +3 -7
  103. watcher/conf/planner.py +0 -1
  104. watcher/conf/plugins.py +0 -1
  105. watcher/conf/prometheus_client.py +90 -33
  106. watcher/conf/service.py +8 -2
  107. watcher/db/api.py +1 -1
  108. watcher/db/purge.py +4 -5
  109. watcher/db/sqlalchemy/alembic/script.py.mako +4 -4
  110. watcher/db/sqlalchemy/alembic/versions/15f7375ca737_change_efficiacy_indicator_decimals.py +3 -3
  111. watcher/db/sqlalchemy/alembic/versions/3cfc94cecf4e_add_name_for_audit.py +3 -3
  112. watcher/db/sqlalchemy/alembic/versions/4b16194c56bc_add_start_end_time.py +3 -3
  113. watcher/db/sqlalchemy/alembic/versions/52804f2498c4_add_hostname.py +3 -3
  114. watcher/db/sqlalchemy/alembic/versions/609bec748f2a_add_force_field.py +3 -3
  115. watcher/db/sqlalchemy/alembic/versions/7150a7d8f228_add_status_message_to_actionplan.py +4 -2
  116. watcher/db/sqlalchemy/alembic/versions/a86240e89a29_.py +4 -4
  117. watcher/db/sqlalchemy/api.py +11 -4
  118. watcher/db/sqlalchemy/job_store.py +2 -3
  119. watcher/db/sqlalchemy/models.py +4 -4
  120. watcher/decision_engine/audit/base.py +10 -3
  121. watcher/decision_engine/audit/continuous.py +2 -3
  122. watcher/decision_engine/audit/event.py +2 -3
  123. watcher/decision_engine/audit/oneshot.py +2 -3
  124. watcher/decision_engine/datasources/aetos.py +1 -1
  125. watcher/decision_engine/datasources/base.py +1 -2
  126. watcher/decision_engine/datasources/gnocchi.py +3 -4
  127. watcher/decision_engine/datasources/grafana.py +0 -2
  128. watcher/decision_engine/datasources/grafana_translator/base.py +1 -2
  129. watcher/decision_engine/datasources/grafana_translator/influxdb.py +1 -2
  130. watcher/decision_engine/datasources/manager.py +5 -19
  131. watcher/decision_engine/datasources/prometheus.py +15 -32
  132. watcher/decision_engine/datasources/prometheus_base.py +14 -19
  133. watcher/decision_engine/gmr.py +0 -1
  134. watcher/decision_engine/goal/__init__.py +0 -1
  135. watcher/decision_engine/goal/base.py +1 -2
  136. watcher/decision_engine/goal/efficacy/base.py +1 -2
  137. watcher/decision_engine/goal/efficacy/indicators.py +15 -16
  138. watcher/decision_engine/goal/efficacy/specs.py +0 -1
  139. watcher/decision_engine/goal/goals.py +0 -1
  140. watcher/decision_engine/loading/default.py +6 -7
  141. watcher/decision_engine/manager.py +0 -1
  142. watcher/decision_engine/messaging/audit_endpoint.py +2 -2
  143. watcher/decision_engine/messaging/data_model_endpoint.py +1 -2
  144. watcher/decision_engine/model/base.py +1 -2
  145. watcher/decision_engine/model/collector/base.py +7 -4
  146. watcher/decision_engine/model/collector/cinder.py +7 -3
  147. watcher/decision_engine/model/collector/ironic.py +8 -3
  148. watcher/decision_engine/model/collector/manager.py +1 -2
  149. watcher/decision_engine/model/collector/nova.py +52 -24
  150. watcher/decision_engine/model/element/__init__.py +0 -1
  151. watcher/decision_engine/model/element/baremetal_resource.py +0 -1
  152. watcher/decision_engine/model/element/base.py +5 -3
  153. watcher/decision_engine/model/element/compute_resource.py +0 -1
  154. watcher/decision_engine/model/element/instance.py +0 -1
  155. watcher/decision_engine/model/element/node.py +0 -1
  156. watcher/decision_engine/model/element/storage_resource.py +0 -1
  157. watcher/decision_engine/model/element/volume.py +0 -1
  158. watcher/decision_engine/model/model_root.py +32 -19
  159. watcher/decision_engine/model/notification/base.py +2 -3
  160. watcher/decision_engine/model/notification/cinder.py +3 -2
  161. watcher/decision_engine/model/notification/filtering.py +0 -1
  162. watcher/decision_engine/model/notification/nova.py +11 -10
  163. watcher/decision_engine/planner/base.py +0 -1
  164. watcher/decision_engine/planner/manager.py +1 -2
  165. watcher/decision_engine/planner/node_resource_consolidation.py +0 -1
  166. watcher/decision_engine/planner/weight.py +1 -2
  167. watcher/decision_engine/planner/workload_stabilization.py +4 -5
  168. watcher/decision_engine/rpcapi.py +1 -2
  169. watcher/decision_engine/scheduling.py +4 -34
  170. watcher/decision_engine/scope/baremetal.py +1 -2
  171. watcher/decision_engine/scope/base.py +1 -2
  172. watcher/decision_engine/scope/compute.py +1 -2
  173. watcher/decision_engine/scope/storage.py +1 -1
  174. watcher/decision_engine/scoring/base.py +0 -1
  175. watcher/decision_engine/scoring/dummy_scorer.py +0 -1
  176. watcher/decision_engine/scoring/dummy_scoring_container.py +1 -2
  177. watcher/decision_engine/scoring/scoring_factory.py +0 -1
  178. watcher/decision_engine/service.py +14 -2
  179. watcher/decision_engine/service_monitor.py +95 -0
  180. watcher/decision_engine/solution/base.py +1 -2
  181. watcher/decision_engine/solution/default.py +1 -2
  182. watcher/decision_engine/solution/efficacy.py +2 -3
  183. watcher/decision_engine/solution/solution_comparator.py +1 -2
  184. watcher/decision_engine/solution/solution_evaluator.py +1 -2
  185. watcher/decision_engine/strategy/common/level.py +0 -1
  186. watcher/decision_engine/strategy/context/base.py +1 -2
  187. watcher/decision_engine/strategy/context/default.py +1 -2
  188. watcher/decision_engine/strategy/selection/base.py +1 -2
  189. watcher/decision_engine/strategy/selection/default.py +1 -2
  190. watcher/decision_engine/strategy/strategies/__init__.py +0 -1
  191. watcher/decision_engine/strategy/strategies/actuation.py +0 -1
  192. watcher/decision_engine/strategy/strategies/base.py +5 -8
  193. watcher/decision_engine/strategy/strategies/basic_consolidation.py +3 -4
  194. watcher/decision_engine/strategy/strategies/dummy_strategy.py +0 -1
  195. watcher/decision_engine/strategy/strategies/dummy_with_resize.py +0 -1
  196. watcher/decision_engine/strategy/strategies/dummy_with_scorer.py +3 -4
  197. watcher/decision_engine/strategy/strategies/host_maintenance.py +2 -3
  198. watcher/decision_engine/strategy/strategies/node_resource_consolidation.py +1 -2
  199. watcher/decision_engine/strategy/strategies/noisy_neighbor.py +1 -2
  200. watcher/decision_engine/strategy/strategies/outlet_temp_control.py +1 -2
  201. watcher/decision_engine/strategy/strategies/saving_energy.py +1 -9
  202. watcher/decision_engine/strategy/strategies/storage_capacity_balance.py +2 -3
  203. watcher/decision_engine/strategy/strategies/uniform_airflow.py +1 -2
  204. watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py +1 -2
  205. watcher/decision_engine/strategy/strategies/workload_balance.py +1 -2
  206. watcher/decision_engine/strategy/strategies/workload_stabilization.py +1 -2
  207. watcher/decision_engine/strategy/strategies/zone_migration.py +72 -39
  208. watcher/decision_engine/sync.py +1 -2
  209. watcher/decision_engine/threading.py +24 -9
  210. watcher/hacking/checks.py +13 -54
  211. watcher/notifications/__init__.py +0 -1
  212. watcher/notifications/action.py +6 -7
  213. watcher/notifications/action_plan.py +9 -10
  214. watcher/notifications/audit.py +6 -7
  215. watcher/notifications/base.py +5 -6
  216. watcher/notifications/goal.py +1 -2
  217. watcher/notifications/service.py +2 -3
  218. watcher/notifications/strategy.py +1 -2
  219. watcher/objects/action.py +1 -2
  220. watcher/objects/action_description.py +0 -1
  221. watcher/objects/action_plan.py +2 -3
  222. watcher/objects/audit.py +3 -4
  223. watcher/objects/audit_template.py +0 -1
  224. watcher/objects/base.py +1 -1
  225. watcher/objects/efficacy_indicator.py +0 -1
  226. watcher/objects/fields.py +3 -3
  227. watcher/objects/goal.py +0 -1
  228. watcher/objects/scoring_engine.py +0 -1
  229. watcher/objects/service.py +1 -2
  230. watcher/objects/strategy.py +0 -1
  231. watcher/tests/__init__.py +0 -36
  232. watcher/tests/{conf_fixture.py → fixtures/conf_fixture.py} +2 -2
  233. watcher/tests/fixtures/db_lock.py +81 -0
  234. watcher/tests/{fake_policy.py → fixtures/fake_policy.py} +1 -1
  235. watcher/tests/{fakes.py → fixtures/fakes.py} +12 -12
  236. watcher/tests/{policy_fixture.py → fixtures/policy_fixture.py} +1 -1
  237. watcher/tests/fixtures/watcher.py +2 -2
  238. watcher/tests/unit/__init__.py +36 -0
  239. watcher/tests/{api → unit/api}/base.py +6 -7
  240. watcher/tests/{api → unit/api}/test_base.py +1 -1
  241. watcher/tests/{api → unit/api}/test_config.py +1 -1
  242. watcher/tests/{api → unit/api}/test_hooks.py +6 -8
  243. watcher/tests/{api → unit/api}/test_root.py +7 -1
  244. watcher/tests/{api → unit/api}/test_utils.py +1 -2
  245. watcher/tests/{api → unit/api}/utils.py +7 -8
  246. watcher/tests/{api → unit/api}/v1/test_actions.py +49 -49
  247. watcher/tests/{api → unit/api}/v1/test_actions_plans.py +71 -68
  248. watcher/tests/{api → unit/api}/v1/test_audit_templates.py +69 -69
  249. watcher/tests/{api → unit/api}/v1/test_audits.py +99 -66
  250. watcher/tests/{api → unit/api}/v1/test_data_model.py +7 -7
  251. watcher/tests/{api → unit/api}/v1/test_goals.py +17 -17
  252. watcher/tests/{api → unit/api}/v1/test_microversions.py +2 -2
  253. watcher/tests/{api → unit/api}/v1/test_root.py +1 -1
  254. watcher/tests/{api → unit/api}/v1/test_scoring_engines.py +15 -15
  255. watcher/tests/{api → unit/api}/v1/test_services.py +18 -18
  256. watcher/tests/{api → unit/api}/v1/test_strategies.py +27 -27
  257. watcher/tests/{api → unit/api}/v1/test_types.py +3 -3
  258. watcher/tests/{api → unit/api}/v1/test_utils.py +1 -1
  259. watcher/tests/{api → unit/api}/v1/test_webhooks.py +6 -6
  260. watcher/tests/{applier → unit/applier}/action_plan/test_default_action_handler.py +3 -3
  261. watcher/tests/{applier → unit/applier}/actions/loading/test_default_actions_loader.py +7 -2
  262. watcher/tests/{applier → unit/applier}/actions/test_change_node_power_state.py +3 -3
  263. watcher/tests/{applier → unit/applier}/actions/test_change_nova_service_state.py +52 -8
  264. watcher/tests/{applier → unit/applier}/actions/test_migration.py +212 -10
  265. watcher/tests/{applier → unit/applier}/actions/test_resize.py +45 -3
  266. watcher/tests/{applier → unit/applier}/actions/test_sleep.py +2 -2
  267. watcher/tests/{applier → unit/applier}/actions/test_stop.py +27 -22
  268. watcher/tests/{applier → unit/applier}/actions/test_volume_migration.py +124 -2
  269. watcher/tests/{applier → unit/applier}/messaging/test_trigger_action_plan_endpoint.py +19 -4
  270. watcher/tests/{applier → unit/applier}/test_applier_manager.py +2 -2
  271. watcher/tests/{applier → unit/applier}/test_rpcapi.py +1 -2
  272. watcher/tests/unit/applier/test_service.py +70 -0
  273. watcher/tests/unit/applier/test_service_monitor.py +581 -0
  274. watcher/tests/{applier → unit/applier}/test_sync.py +14 -4
  275. watcher/tests/{applier → unit/applier}/workflow_engine/loading/test_default_engine_loader.py +2 -3
  276. watcher/tests/{applier → unit/applier}/workflow_engine/test_default_workflow_engine.py +22 -23
  277. watcher/tests/{applier → unit/applier}/workflow_engine/test_taskflow_action_container.py +173 -24
  278. watcher/tests/{base.py → unit/base.py} +4 -4
  279. watcher/tests/{cmd → unit/cmd}/test_api.py +3 -4
  280. watcher/tests/{cmd → unit/cmd}/test_applier.py +3 -4
  281. watcher/tests/{cmd → unit/cmd}/test_db_manage.py +1 -2
  282. watcher/tests/{cmd → unit/cmd}/test_decision_engine.py +3 -4
  283. watcher/tests/{cmd → unit/cmd}/test_status.py +4 -4
  284. watcher/tests/{common → unit/common}/loader/test_loader.py +6 -7
  285. watcher/tests/{common → unit/common}/metal_helper/test_base.py +3 -3
  286. watcher/tests/{common → unit/common}/metal_helper/test_factory.py +1 -1
  287. watcher/tests/{common → unit/common}/metal_helper/test_ironic.py +13 -6
  288. watcher/tests/{common → unit/common}/metal_helper/test_maas.py +8 -4
  289. watcher/tests/{common → unit/common}/test_cinder_helper.py +207 -17
  290. watcher/tests/{common → unit/common}/test_clients.py +97 -185
  291. watcher/tests/unit/common/test_executor.py +77 -0
  292. watcher/tests/{common → unit/common}/test_ironic_helper.py +2 -3
  293. watcher/tests/{common → unit/common}/test_keystone_helper.py +2 -2
  294. watcher/tests/unit/common/test_nova_helper.py +2274 -0
  295. watcher/tests/{common → unit/common}/test_oslo_service_helper.py +1 -1
  296. watcher/tests/{common → unit/common}/test_placement_helper.py +10 -10
  297. watcher/tests/{common → unit/common}/test_scheduling.py +1 -1
  298. watcher/tests/unit/common/test_service.py +374 -0
  299. watcher/tests/{common → unit/common}/test_utils.py +2 -2
  300. watcher/tests/unit/common/utils.py +147 -0
  301. watcher/tests/{conf → unit/conf}/test_list_opts.py +17 -18
  302. watcher/tests/unit/db/base.py +127 -0
  303. watcher/tests/{db → unit/db}/test_action.py +3 -3
  304. watcher/tests/{db → unit/db}/test_action_description.py +26 -27
  305. watcher/tests/{db → unit/db}/test_action_plan.py +40 -4
  306. watcher/tests/{db → unit/db}/test_audit.py +9 -9
  307. watcher/tests/{db → unit/db}/test_audit_template.py +6 -6
  308. watcher/tests/unit/db/test_deadlock_decorator_validation.py +281 -0
  309. watcher/tests/{db → unit/db}/test_efficacy_indicator.py +4 -4
  310. watcher/tests/{db → unit/db}/test_goal.py +25 -25
  311. watcher/tests/{db → unit/db}/test_migrations.py +3 -3
  312. watcher/tests/{db → unit/db}/test_purge.py +6 -7
  313. watcher/tests/{db → unit/db}/test_scoring_engine.py +26 -27
  314. watcher/tests/{db → unit/db}/test_service.py +25 -26
  315. watcher/tests/{db → unit/db}/test_strategy.py +27 -28
  316. watcher/tests/{decision_engine → unit/decision_engine}/audit/test_audit_handlers.py +33 -8
  317. watcher/tests/{decision_engine → unit/decision_engine}/cluster/test_cinder_cdmc.py +4 -4
  318. watcher/tests/{decision_engine → unit/decision_engine}/cluster/test_cluster_data_model_collector.py +1 -2
  319. watcher/tests/{decision_engine → unit/decision_engine}/cluster/test_nova_cdmc.py +386 -132
  320. watcher/tests/{decision_engine → unit/decision_engine}/datasources/grafana_translators/test_base.py +3 -4
  321. watcher/tests/{decision_engine → unit/decision_engine}/datasources/grafana_translators/test_influxdb.py +3 -4
  322. watcher/tests/{decision_engine → unit/decision_engine}/datasources/test_aetos_helper.py +2 -2
  323. watcher/tests/{decision_engine → unit/decision_engine}/datasources/test_base.py +1 -2
  324. watcher/tests/{decision_engine → unit/decision_engine}/datasources/test_gnocchi_helper.py +3 -4
  325. watcher/tests/{decision_engine → unit/decision_engine}/datasources/test_grafana_helper.py +2 -5
  326. watcher/tests/{decision_engine → unit/decision_engine}/datasources/test_manager.py +8 -40
  327. watcher/tests/{decision_engine → unit/decision_engine}/datasources/test_prometheus_base.py +6 -6
  328. watcher/tests/{decision_engine → unit/decision_engine}/datasources/test_prometheus_helper.py +7 -60
  329. watcher/tests/{decision_engine → unit/decision_engine}/fake_goals.py +1 -2
  330. watcher/tests/{decision_engine → unit/decision_engine}/fake_strategies.py +0 -1
  331. watcher/tests/{decision_engine → unit/decision_engine}/loading/test_collector_loader.py +8 -9
  332. watcher/tests/{decision_engine → unit/decision_engine}/loading/test_default_planner_loader.py +2 -3
  333. watcher/tests/{decision_engine → unit/decision_engine}/loading/test_default_strategy_loader.py +5 -6
  334. watcher/tests/{decision_engine → unit/decision_engine}/loading/test_goal_loader.py +3 -6
  335. watcher/tests/{decision_engine → unit/decision_engine}/messaging/test_audit_endpoint.py +4 -5
  336. watcher/tests/{decision_engine → unit/decision_engine}/messaging/test_data_model_endpoint.py +0 -1
  337. watcher/tests/unit/decision_engine/model/data/scenario_1.xml +47 -0
  338. watcher/tests/{decision_engine → unit/decision_engine}/model/faker_cluster_and_metrics.py +2 -3
  339. watcher/tests/{decision_engine → unit/decision_engine}/model/faker_cluster_state.py +24 -24
  340. watcher/tests/{decision_engine → unit/decision_engine}/model/gnocchi_metrics.py +19 -14
  341. watcher/tests/{decision_engine → unit/decision_engine}/model/notification/fake_managers.py +1 -2
  342. watcher/tests/{decision_engine → unit/decision_engine}/model/notification/test_cinder_notifications.py +7 -8
  343. watcher/tests/{decision_engine → unit/decision_engine}/model/notification/test_notifications.py +3 -4
  344. watcher/tests/{decision_engine → unit/decision_engine}/model/notification/test_nova_notifications.py +53 -44
  345. watcher/tests/{decision_engine → unit/decision_engine}/model/test_element.py +1 -2
  346. watcher/tests/{decision_engine → unit/decision_engine}/model/test_model.py +70 -35
  347. watcher/tests/{decision_engine → unit/decision_engine}/planner/test_node_resource_consolidation.py +5 -6
  348. watcher/tests/{decision_engine → unit/decision_engine}/planner/test_planner_manager.py +1 -2
  349. watcher/tests/{decision_engine → unit/decision_engine}/planner/test_weight_planner.py +9 -10
  350. watcher/tests/{decision_engine → unit/decision_engine}/planner/test_workload_stabilization_planner.py +14 -11
  351. watcher/tests/{decision_engine → unit/decision_engine}/scope/fake_scopes.py +1 -2
  352. watcher/tests/{decision_engine → unit/decision_engine}/scope/test_baremetal.py +4 -5
  353. watcher/tests/{decision_engine → unit/decision_engine}/scope/test_compute.py +80 -56
  354. watcher/tests/{decision_engine → unit/decision_engine}/scope/test_storage.py +12 -13
  355. watcher/tests/{decision_engine → unit/decision_engine}/scoring/test_dummy_scorer.py +1 -2
  356. watcher/tests/{decision_engine → unit/decision_engine}/scoring/test_dummy_scoring_container.py +1 -2
  357. watcher/tests/{decision_engine → unit/decision_engine}/scoring/test_scoring_factory.py +1 -2
  358. watcher/tests/{decision_engine → unit/decision_engine}/solution/test_default_solution.py +1 -2
  359. watcher/tests/{decision_engine → unit/decision_engine}/strategy/context/test_strategy_context.py +6 -7
  360. watcher/tests/{decision_engine → unit/decision_engine}/strategy/selector/test_strategy_selector.py +1 -2
  361. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_actuator.py +2 -3
  362. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_base.py +7 -24
  363. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_basic_consolidation.py +21 -14
  364. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_dummy_strategy.py +2 -3
  365. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_dummy_with_scorer.py +2 -3
  366. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_host_maintenance.py +86 -40
  367. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_node_resource_consolidation.py +3 -4
  368. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_noisy_neighbor.py +3 -4
  369. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_outlet_temp_control.py +3 -4
  370. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_saving_energy.py +3 -10
  371. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_storage_capacity_balance.py +3 -4
  372. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_strategy_endpoint.py +1 -2
  373. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_uniform_airflow.py +3 -4
  374. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_vm_workload_consolidation.py +3 -4
  375. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_workload_balance.py +3 -4
  376. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_workload_stabilization.py +18 -11
  377. watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_zone_migration.py +615 -149
  378. watcher/tests/{decision_engine → unit/decision_engine}/test_gmr.py +1 -2
  379. watcher/tests/{decision_engine → unit/decision_engine}/test_rpcapi.py +1 -2
  380. watcher/tests/{decision_engine → unit/decision_engine}/test_scheduling.py +6 -38
  381. watcher/tests/{decision_engine → unit/decision_engine}/test_service.py +23 -6
  382. watcher/tests/unit/decision_engine/test_service_monitor.py +683 -0
  383. watcher/tests/{decision_engine → unit/decision_engine}/test_sync.py +24 -25
  384. watcher/tests/{notifications → unit/notifications}/test_action_notification.py +9 -9
  385. watcher/tests/{notifications → unit/notifications}/test_action_plan_notification.py +7 -5
  386. watcher/tests/{notifications → unit/notifications}/test_audit_notification.py +5 -4
  387. watcher/tests/{notifications → unit/notifications}/test_notification.py +5 -6
  388. watcher/tests/{notifications → unit/notifications}/test_service_notifications.py +3 -4
  389. watcher/tests/{objects → unit/objects}/test_action.py +4 -4
  390. watcher/tests/{objects → unit/objects}/test_action_description.py +3 -4
  391. watcher/tests/{objects → unit/objects}/test_action_plan.py +5 -5
  392. watcher/tests/{objects → unit/objects}/test_audit.py +6 -6
  393. watcher/tests/{objects → unit/objects}/test_audit_template.py +4 -4
  394. watcher/tests/{objects → unit/objects}/test_efficacy_indicator.py +3 -3
  395. watcher/tests/{objects → unit/objects}/test_goal.py +3 -3
  396. watcher/tests/{objects → unit/objects}/test_objects.py +19 -19
  397. watcher/tests/{objects → unit/objects}/test_scoring_engine.py +3 -3
  398. watcher/tests/{objects → unit/objects}/test_service.py +3 -3
  399. watcher/tests/{objects → unit/objects}/test_strategy.py +4 -4
  400. watcher/tests/{objects → unit/objects}/utils.py +1 -1
  401. watcher/tests/{test_threading.py → unit/test_threading.py} +26 -5
  402. python_watcher-15.1.0.dist-info/RECORD +0 -582
  403. python_watcher-15.1.0.dist-info/pbr.json +0 -1
  404. watcher/api/scheduling.py +0 -126
  405. watcher/common/paths.py +0 -37
  406. watcher/conf/glance_client.py +0 -44
  407. watcher/conf/monasca_client.py +0 -44
  408. watcher/conf/neutron_client.py +0 -44
  409. watcher/decision_engine/datasources/monasca.py +0 -205
  410. watcher/tests/api/test_scheduling.py +0 -115
  411. watcher/tests/common/test_executor.py +0 -38
  412. watcher/tests/common/test_nova_helper.py +0 -1467
  413. watcher/tests/common/test_service.py +0 -106
  414. watcher/tests/db/base.py +0 -104
  415. watcher/tests/decision_engine/datasources/test_monasca_helper.py +0 -163
  416. watcher/tests/decision_engine/model/data/scenario_1.xml +0 -47
  417. watcher/tests/decision_engine/model/monasca_metrics.py +0 -128
  418. {python_watcher-15.1.0.data → python_watcher-16.0.0.data}/data/etc/apache2/watcher +0 -0
  419. {python_watcher-15.1.0.data → python_watcher-16.0.0.data}/data/etc/watcher/README-watcher.conf.txt +0 -0
  420. {python_watcher-15.1.0.data → python_watcher-16.0.0.data}/data/etc/watcher/oslo-policy-generator/watcher-policy-generator.conf +0 -0
  421. {python_watcher-15.1.0.data → python_watcher-16.0.0.data}/scripts/watcher-api-wsgi +0 -0
  422. {python_watcher-15.1.0.dist-info → python_watcher-16.0.0.dist-info}/WHEEL +0 -0
  423. {python_watcher-15.1.0.dist-info → python_watcher-16.0.0.dist-info}/licenses/LICENSE +0 -0
  424. {python_watcher-15.1.0.dist-info → python_watcher-16.0.0.dist-info}/top_level.txt +0 -0
  425. /watcher/tests/{api → unit/api}/__init__.py +0 -0
  426. /watcher/tests/{api → unit/api}/v1/__init__.py +0 -0
  427. /watcher/tests/{applier → unit/applier}/__init__.py +0 -0
  428. /watcher/tests/{applier → unit/applier}/action_plan/__init__.py +0 -0
  429. /watcher/tests/{applier → unit/applier}/actions/__init__.py +0 -0
  430. /watcher/tests/{applier → unit/applier}/actions/loading/__init__.py +0 -0
  431. /watcher/tests/{applier → unit/applier}/messaging/__init__.py +0 -0
  432. /watcher/tests/{applier → unit/applier}/workflow_engine/__init__.py +0 -0
  433. /watcher/tests/{applier → unit/applier}/workflow_engine/loading/__init__.py +0 -0
  434. /watcher/tests/{cmd → unit/cmd}/__init__.py +0 -0
  435. /watcher/tests/{common → unit/common}/__init__.py +0 -0
  436. /watcher/tests/{common → unit/common}/loader/__init__.py +0 -0
  437. /watcher/tests/{common → unit/common}/metal_helper/__init__.py +0 -0
  438. /watcher/tests/{conf → unit/conf}/__init__.py +0 -0
  439. /watcher/tests/{config.py → unit/config.py} +0 -0
  440. /watcher/tests/{db → unit/db}/__init__.py +0 -0
  441. /watcher/tests/{db → unit/db}/utils.py +0 -0
  442. /watcher/tests/{decision_engine → unit/decision_engine}/__init__.py +0 -0
  443. /watcher/tests/{decision_engine → unit/decision_engine}/audit/__init__.py +0 -0
  444. /watcher/tests/{decision_engine → unit/decision_engine}/cluster/__init__.py +0 -0
  445. /watcher/tests/{decision_engine → unit/decision_engine}/datasources/__init__.py +0 -0
  446. /watcher/tests/{decision_engine → unit/decision_engine}/datasources/grafana_translators/__init__.py +0 -0
  447. /watcher/tests/{decision_engine → unit/decision_engine}/event_consumer/__init__.py +0 -0
  448. /watcher/tests/{decision_engine → unit/decision_engine}/fake_metal_helper.py +0 -0
  449. /watcher/tests/{decision_engine → unit/decision_engine}/loading/__init__.py +0 -0
  450. /watcher/tests/{decision_engine → unit/decision_engine}/messaging/__init__.py +0 -0
  451. /watcher/tests/{decision_engine → unit/decision_engine}/model/__init__.py +0 -0
  452. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/ironic_scenario_1.xml +0 -0
  453. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_10.xml +0 -0
  454. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_11_with_1_node_no_instance.xml +0 -0
  455. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_11_with_2_nodes_2_instances.xml +0 -0
  456. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_1_with_1_node_unavailable.xml +0 -0
  457. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_1_with_all_instances_exclude.xml +0 -0
  458. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_1_with_all_nodes_disable.xml +0 -0
  459. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_1_with_metrics.xml +0 -0
  460. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_2_with_metrics.xml +0 -0
  461. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_3_with_2_nodes.xml +0 -0
  462. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_3_with_metrics.xml +0 -0
  463. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_4_with_1_node_no_instance.xml +0 -0
  464. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_5_with_instance_disk_0.xml +0 -0
  465. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_6_with_2_nodes.xml +0 -0
  466. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_7_with_2_nodes.xml +0 -0
  467. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_8_with_4_nodes.xml +0 -0
  468. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_9_with_3_active_plus_1_disabled_nodes.xml +0 -0
  469. /watcher/tests/{decision_engine → unit/decision_engine}/model/data/storage_scenario_1.xml +0 -0
  470. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/__init__.py +0 -0
  471. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/capacity.json +0 -0
  472. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-create-end.json +0 -0
  473. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-delete-end.json +0 -0
  474. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-live_migration_force_complete-end.json +0 -0
  475. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-live_migration_post_dest-end.json +0 -0
  476. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-lock.json +0 -0
  477. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-pause-end.json +0 -0
  478. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-power_off-end.json +0 -0
  479. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-power_on-end.json +0 -0
  480. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-rebuild-end.json +0 -0
  481. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-rescue-end.json +0 -0
  482. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-resize_confirm-end.json +0 -0
  483. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-restore-end.json +0 -0
  484. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-resume-end.json +0 -0
  485. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-shelve-end.json +0 -0
  486. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-shutdown-end.json +0 -0
  487. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-soft_delete-end.json +0 -0
  488. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-suspend-end.json +0 -0
  489. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-unlock.json +0 -0
  490. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-unpause-end.json +0 -0
  491. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-unrescue-end.json +0 -0
  492. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-unshelve-end.json +0 -0
  493. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-update-2-1.json +0 -0
  494. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-update.json +0 -0
  495. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario3_instance-update.json +0 -0
  496. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario3_notfound_instance-update.json +0 -0
  497. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario3_notfound_legacy_instance-update.json +0 -0
  498. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario3_service-update-disabled.json +0 -0
  499. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario3_service-update-enabled.json +0 -0
  500. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_bootable-volume-create.json +0 -0
  501. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_capacity.json +0 -0
  502. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_capacity_node_notfound.json +0 -0
  503. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_capacity_pool_notfound.json +0 -0
  504. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_error-volume-create.json +0 -0
  505. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_volume-attach.json +0 -0
  506. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_volume-create.json +0 -0
  507. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_volume-create_pool_notfound.json +0 -0
  508. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_volume-delete.json +0 -0
  509. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_volume-detach.json +0 -0
  510. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_volume-resize.json +0 -0
  511. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_volume-update.json +0 -0
  512. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/service-create.json +0 -0
  513. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/service-delete.json +0 -0
  514. /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/service-update.json +0 -0
  515. /watcher/tests/{decision_engine → unit/decision_engine}/planner/__init__.py +0 -0
  516. /watcher/tests/{decision_engine → unit/decision_engine}/scope/__init__.py +0 -0
  517. /watcher/tests/{decision_engine → unit/decision_engine}/scoring/__init__.py +0 -0
  518. /watcher/tests/{decision_engine → unit/decision_engine}/solution/__init__.py +0 -0
  519. /watcher/tests/{decision_engine → unit/decision_engine}/strategy/__init__.py +0 -0
  520. /watcher/tests/{decision_engine → unit/decision_engine}/strategy/context/__init__.py +0 -0
  521. /watcher/tests/{decision_engine → unit/decision_engine}/strategy/selector/__init__.py +0 -0
  522. /watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/__init__.py +0 -0
  523. /watcher/tests/{notifications → unit/notifications}/__init__.py +0 -0
  524. /watcher/tests/{objects → unit/objects}/__init__.py +0 -0
@@ -9,6 +9,8 @@ namespace = oslo.concurrency
9
9
  namespace = oslo.db
10
10
  namespace = oslo.log
11
11
  namespace = oslo.messaging
12
+ namespace = oslo.middleware.cors
13
+ namespace = oslo.middleware.http_proxy_to_wsgi
12
14
  namespace = oslo.policy
13
15
  namespace = oslo.reports
14
16
  namespace = oslo.service.periodic_task
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-watcher
3
- Version: 15.1.0
3
+ Version: 16.0.0
4
4
  Summary: OpenStack Watcher provides a flexible and scalable resource optimization service for multi-tenant OpenStack-based clouds.
5
5
  Home-page: https://docs.openstack.org/watcher/latest/
6
6
  Author: OpenStack
@@ -38,6 +38,7 @@ Requires-Dist: oslo.db>=4.44.0
38
38
  Requires-Dist: oslo.i18n>=3.20.0
39
39
  Requires-Dist: oslo.log>=3.37.0
40
40
  Requires-Dist: oslo.messaging>=14.1.0
41
+ Requires-Dist: oslo.middleware>=3.31.0
41
42
  Requires-Dist: oslo.policy>=4.5.0
42
43
  Requires-Dist: oslo.reports>=1.27.0
43
44
  Requires-Dist: oslo.serialization>=2.25.0
@@ -50,11 +51,9 @@ Requires-Dist: pbr>=3.1.1
50
51
  Requires-Dist: pecan>=1.3.2
51
52
  Requires-Dist: PrettyTable>=0.7.2
52
53
  Requires-Dist: gnocchiclient>=7.0.1
54
+ Requires-Dist: openstacksdk>=4.4.0
53
55
  Requires-Dist: python-cinderclient>=3.5.0
54
- Requires-Dist: python-glanceclient>=2.9.1
55
56
  Requires-Dist: python-keystoneclient>=3.15.0
56
- Requires-Dist: python-neutronclient>=6.7.0
57
- Requires-Dist: python-novaclient>=14.1.0
58
57
  Requires-Dist: python-observabilityclient>=1.1.0
59
58
  Requires-Dist: python-openstackclient>=3.14.0
60
59
  Requires-Dist: python-ironicclient>=2.5.0
@@ -66,8 +65,6 @@ Requires-Dist: WSME>=0.9.2
66
65
  Requires-Dist: networkx>=2.4
67
66
  Requires-Dist: microversion-parse>=0.2.1
68
67
  Requires-Dist: futurist>=1.8.0
69
- Provides-Extra: monasca
70
- Requires-Dist: python-monascaclient>=1.12.0; extra == "monasca"
71
68
  Dynamic: author
72
69
  Dynamic: author-email
73
70
  Dynamic: classifier
@@ -83,7 +80,6 @@ Watcher
83
80
  =======
84
81
 
85
82
  .. image:: https://governance.openstack.org/tc/badges/watcher.svg
86
- :target: https://governance.openstack.org/tc/reference/tags/index.html
87
83
 
88
84
  .. Change things from this point on
89
85