python-watcher 14.0.0.0rc1__tar.gz → 14.1.0__tar.gz

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 (898) hide show
  1. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/.zuul.yaml +10 -7
  2. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/ChangeLog +25 -2
  3. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/PKG-INFO +1 -2
  4. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/devstack/lib/watcher +23 -73
  5. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/devstack/plugin.sh +3 -0
  6. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/datasources/prometheus.rst +9 -9
  7. python_watcher-14.1.0/pyproject.toml +3 -0
  8. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/python_watcher.egg-info/PKG-INFO +1 -2
  9. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/python_watcher.egg-info/SOURCES.txt +12 -1
  10. python_watcher-14.1.0/python_watcher.egg-info/pbr.json +1 -0
  11. python_watcher-14.1.0/releasenotes/notes/add-wsgi-module-support-597f479e31979270.yaml +30 -0
  12. python_watcher-14.1.0/releasenotes/notes/bug-2103451-fixes-prometheus-queries-with-multiple-target-0e65d20711d1abe2.yaml +8 -0
  13. python_watcher-14.1.0/releasenotes/notes/bug-2110947.yaml +10 -0
  14. python_watcher-14.1.0/releasenotes/notes/bug-2112187-763bae283e0b736d.yaml +47 -0
  15. python_watcher-14.1.0/releasenotes/notes/bug-2113776-4bd314fb46623fbc.yaml +14 -0
  16. python_watcher-14.1.0/releasenotes/notes/donot-run-host-migration-strategy-on-disabled-hosts-24084a22d4c8f914.yaml +10 -0
  17. python_watcher-14.1.0/releasenotes/notes/fix-action-plan-state-on-failure-69e498d902ada5c5.yaml +13 -0
  18. python_watcher-14.1.0/releasenotes/notes/return-error-400-on-bad-parameters-bb964e4f5cadc15c.yaml +7 -0
  19. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/setup.cfg +0 -1
  20. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/tox.ini +5 -8
  21. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/audit.py +12 -7
  22. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/action_plan/default.py +20 -2
  23. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/actions/volume_migration.py +26 -72
  24. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/keystone_helper.py +0 -34
  25. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/utils.py +1 -7
  26. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/datasources/base.py +1 -1
  27. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/datasources/prometheus.py +71 -64
  28. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/host_maintenance.py +2 -24
  29. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/zone_migration.py +25 -30
  30. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/v1/test_audits.py +47 -2
  31. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/action_plan/test_default_action_handler.py +27 -0
  32. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/actions/test_volume_migration.py +30 -39
  33. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/datasources/test_prometheus_helper.py +105 -35
  34. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_host_maintenance.py +8 -5
  35. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_workload_stabilization.py +61 -1
  36. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_zone_migration.py +4 -1
  37. python_watcher-14.1.0/watcher/wsgi/__init__.py +0 -0
  38. python_watcher-14.1.0/watcher/wsgi/api.py +18 -0
  39. python_watcher-14.0.0.0rc1/python_watcher.egg-info/pbr.json +0 -1
  40. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/.coveragerc +0 -0
  41. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/.mailmap +0 -0
  42. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/.pre-commit-config.yaml +0 -0
  43. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/.stestr.conf +0 -0
  44. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/AUTHORS +0 -0
  45. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/CONTRIBUTING.rst +0 -0
  46. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/HACKING.rst +0 -0
  47. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/LICENSE +0 -0
  48. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/README.rst +0 -0
  49. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/conf.py +0 -0
  50. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/index.rst +0 -0
  51. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/parameters.yaml +0 -0
  52. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/actionplan-cancel-request-cancelling.json +0 -0
  53. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/actionplan-cancel-request-pending.json +0 -0
  54. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/actionplan-list-detailed-response.json +0 -0
  55. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/actionplan-list-response.json +0 -0
  56. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/actionplan-show-response.json +0 -0
  57. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/actionplan-start-response.json +0 -0
  58. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/actions-list-detailed-response.json +0 -0
  59. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/actions-list-response.json +0 -0
  60. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/actions-show-response.json +0 -0
  61. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/api-root-response.json +0 -0
  62. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/api-v1-root-response.json +0 -0
  63. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audit-cancel-request.json +0 -0
  64. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audit-cancel-response.json +0 -0
  65. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audit-create-request-continuous.json +0 -0
  66. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audit-create-request-oneshot.json +0 -0
  67. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audit-create-response.json +0 -0
  68. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audit-list-detailed-response.json +0 -0
  69. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audit-list-response.json +0 -0
  70. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audit-show-response.json +0 -0
  71. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audit-update-request.json +0 -0
  72. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audit-update-response.json +0 -0
  73. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audittemplate-create-request-full.json +0 -0
  74. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audittemplate-create-request-minimal.json +0 -0
  75. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audittemplate-create-response.json +0 -0
  76. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audittemplate-list-detailed-response.json +0 -0
  77. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audittemplate-list-response.json +0 -0
  78. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audittemplate-show-response.json +0 -0
  79. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audittemplate-update-request.json +0 -0
  80. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/audittemplate-update-response.json +0 -0
  81. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/datamodel-list-response.json +0 -0
  82. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/goal-list-response.json +0 -0
  83. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/goal-show-response.json +0 -0
  84. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/scoring_engine-list-detailed-response.json +0 -0
  85. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/scoring_engine-list-response.json +0 -0
  86. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/scoring_engine-show-response.json +0 -0
  87. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/service-list-detailed-response.json +0 -0
  88. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/service-list-response.json +0 -0
  89. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/service-show-response.json +0 -0
  90. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/strategy-list-detailed-response.json +0 -0
  91. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/strategy-list-response.json +0 -0
  92. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/strategy-show-response.json +0 -0
  93. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/samples/strategy-state-response.json +0 -0
  94. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/watcher-api-v1-actionplans.inc +0 -0
  95. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/watcher-api-v1-actions.inc +0 -0
  96. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/watcher-api-v1-audits.inc +0 -0
  97. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/watcher-api-v1-audittemplates.inc +0 -0
  98. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/watcher-api-v1-datamodel.inc +0 -0
  99. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/watcher-api-v1-goals.inc +0 -0
  100. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/watcher-api-v1-scoring_engines.inc +0 -0
  101. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/watcher-api-v1-services.inc +0 -0
  102. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/watcher-api-v1-strategies.inc +0 -0
  103. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/watcher-api-v1-webhooks.inc +0 -0
  104. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/api-ref/source/watcher-api-versions.inc +0 -0
  105. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/devstack/files/apache-watcher-api.template +0 -0
  106. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/devstack/local.conf.compute +0 -0
  107. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/devstack/local.conf.controller +0 -0
  108. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/devstack/override-defaults +0 -0
  109. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/devstack/settings +0 -0
  110. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/devstack/upgrade/from_rocky/upgrade-watcher +0 -0
  111. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/devstack/upgrade/resources.sh +0 -0
  112. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/devstack/upgrade/settings +0 -0
  113. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/devstack/upgrade/shutdown.sh +0 -0
  114. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/devstack/upgrade/upgrade.sh +0 -0
  115. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/dictionary.txt +0 -0
  116. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/ext/__init__.py +0 -0
  117. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/ext/term.py +0 -0
  118. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/ext/versioned_notifications.py +0 -0
  119. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action-cancel-end.json +0 -0
  120. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action-cancel-error.json +0 -0
  121. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action-cancel-start.json +0 -0
  122. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action-create.json +0 -0
  123. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action-delete.json +0 -0
  124. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action-execution-end.json +0 -0
  125. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action-execution-error.json +0 -0
  126. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action-execution-start.json +0 -0
  127. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action-update.json +0 -0
  128. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action_plan-cancel-end.json +0 -0
  129. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action_plan-cancel-error.json +0 -0
  130. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action_plan-cancel-start.json +0 -0
  131. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action_plan-create.json +0 -0
  132. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action_plan-delete.json +0 -0
  133. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action_plan-execution-end.json +0 -0
  134. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action_plan-execution-error.json +0 -0
  135. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action_plan-execution-start.json +0 -0
  136. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/action_plan-update.json +0 -0
  137. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/audit-create.json +0 -0
  138. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/audit-delete.json +0 -0
  139. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/audit-planner-end.json +0 -0
  140. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/audit-planner-error.json +0 -0
  141. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/audit-planner-start.json +0 -0
  142. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/audit-strategy-end.json +0 -0
  143. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/audit-strategy-error.json +0 -0
  144. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/audit-strategy-start.json +0 -0
  145. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/audit-update.json +0 -0
  146. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/infra-optim-exception.json +0 -0
  147. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/notification_samples/service-update.json +0 -0
  148. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/requirements.txt +0 -0
  149. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/_static/.placeholder +0 -0
  150. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/admin/apache-mod-wsgi.rst +0 -0
  151. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/admin/gmr.rst +0 -0
  152. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/admin/index.rst +0 -0
  153. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/admin/policy.rst +0 -0
  154. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/architecture.rst +0 -0
  155. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/conf.py +0 -0
  156. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/configuration/configuring.rst +0 -0
  157. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/configuration/index.rst +0 -0
  158. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/configuration/watcher.rst +0 -0
  159. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/api_microversion_history.rst +0 -0
  160. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/concurrency.rst +0 -0
  161. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/contributing.rst +0 -0
  162. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/devstack.rst +0 -0
  163. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/environment.rst +0 -0
  164. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/index.rst +0 -0
  165. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/notifications.rst +0 -0
  166. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/plugin/action-plugin.rst +0 -0
  167. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/plugin/base-setup.rst +0 -0
  168. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/plugin/cdmc-plugin.rst +0 -0
  169. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/plugin/goal-plugin.rst +0 -0
  170. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/plugin/index.rst +0 -0
  171. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/plugin/planner-plugin.rst +0 -0
  172. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/plugin/plugins.rst +0 -0
  173. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/plugin/scoring-engine-plugin.rst +0 -0
  174. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/plugin/strategy-plugin.rst +0 -0
  175. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/rally_link.rst +0 -0
  176. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/contributor/testing.rst +0 -0
  177. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/datasources/grafana.rst +0 -0
  178. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/datasources/index.rst +0 -0
  179. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/glossary.rst +0 -0
  180. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/image_src/dia/architecture.dia +0 -0
  181. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/image_src/dia/functional_data_model.dia +0 -0
  182. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/image_src/plantuml/README.rst +0 -0
  183. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/image_src/plantuml/action_plan_state_machine.txt +0 -0
  184. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/image_src/plantuml/audit_state_machine.txt +0 -0
  185. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/image_src/plantuml/sequence_architecture_cdmc_sync.txt +0 -0
  186. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/image_src/plantuml/sequence_create_and_launch_audit.txt +0 -0
  187. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/image_src/plantuml/sequence_create_audit_template.txt +0 -0
  188. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/image_src/plantuml/sequence_from_audit_execution_to_actionplan_creation.txt +0 -0
  189. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/image_src/plantuml/sequence_launch_action_plan.txt +0 -0
  190. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/image_src/plantuml/sequence_launch_action_plan_in_applier.txt +0 -0
  191. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/image_src/plantuml/sequence_overview_watcher_usage.txt +0 -0
  192. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/image_src/plantuml/sequence_trigger_audit_in_decision_engine.txt +0 -0
  193. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/image_src/plantuml/watcher_db_schema_diagram.txt +0 -0
  194. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/images/action_plan_state_machine.png +0 -0
  195. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/images/architecture.svg +0 -0
  196. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/images/audit_state_machine.png +0 -0
  197. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/images/functional_data_model.svg +0 -0
  198. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/images/sequence_architecture_cdmc_sync.png +0 -0
  199. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/images/sequence_create_and_launch_audit.png +0 -0
  200. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/images/sequence_create_audit_template.png +0 -0
  201. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/images/sequence_from_audit_execution_to_actionplan_creation.png +0 -0
  202. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/images/sequence_launch_action_plan.png +0 -0
  203. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/images/sequence_launch_action_plan_in_applier.png +0 -0
  204. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/images/sequence_overview_watcher_usage.png +0 -0
  205. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/images/sequence_trigger_audit_in_decision_engine.png +0 -0
  206. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/images/watcher_db_schema_diagram.png +0 -0
  207. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/index.rst +0 -0
  208. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/install/common_configure.rst +0 -0
  209. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/install/common_prerequisites.rst +0 -0
  210. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/install/get_started.rst +0 -0
  211. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/install/index.rst +0 -0
  212. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/install/install-rdo.rst +0 -0
  213. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/install/install-ubuntu.rst +0 -0
  214. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/install/install.rst +0 -0
  215. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/install/next-steps.rst +0 -0
  216. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/install/verify.rst +0 -0
  217. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/man/footer.rst +0 -0
  218. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/man/general-options.rst +0 -0
  219. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/man/index.rst +0 -0
  220. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/man/watcher-api.rst +0 -0
  221. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/man/watcher-applier.rst +0 -0
  222. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/man/watcher-db-manage.rst +0 -0
  223. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/man/watcher-decision-engine.rst +0 -0
  224. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/man/watcher-status.rst +0 -0
  225. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/strategies/actuation.rst +0 -0
  226. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/strategies/basic-server-consolidation.rst +0 -0
  227. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/strategies/host_maintenance.rst +0 -0
  228. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/strategies/index.rst +0 -0
  229. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/strategies/node_resource_consolidation.rst +0 -0
  230. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/strategies/noisy_neighbor.rst +0 -0
  231. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/strategies/outlet_temp_control.rst +0 -0
  232. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/strategies/saving_energy.rst +0 -0
  233. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/strategies/storage_capacity_balance.rst +0 -0
  234. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/strategies/strategy-template.rst +0 -0
  235. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/strategies/uniform_airflow.rst +0 -0
  236. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/strategies/vm_workload_consolidation.rst +0 -0
  237. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/strategies/workload-stabilization.rst +0 -0
  238. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/strategies/workload_balance.rst +0 -0
  239. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/strategies/zone_migration.rst +0 -0
  240. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/user/event_type_audit.rst +0 -0
  241. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/user/index.rst +0 -0
  242. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/user/user-guide.rst +0 -0
  243. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/doc/source/user/ways-to-install.rst +0 -0
  244. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/etc/apache2/watcher +0 -0
  245. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/etc/watcher/README-watcher.conf.txt +0 -0
  246. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/etc/watcher/oslo-config-generator/watcher.conf +0 -0
  247. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/etc/watcher/oslo-policy-generator/watcher-policy-generator.conf +0 -0
  248. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/playbooks/generate_prometheus_config.yml +0 -0
  249. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/playbooks/templates/prometheus.yml.j2 +0 -0
  250. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/python_watcher.egg-info/dependency_links.txt +0 -0
  251. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/python_watcher.egg-info/entry_points.txt +0 -0
  252. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/python_watcher.egg-info/not-zip-safe +0 -0
  253. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/python_watcher.egg-info/requires.txt +0 -0
  254. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/python_watcher.egg-info/top_level.txt +0 -0
  255. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/rally-jobs/README.rst +0 -0
  256. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/rally-jobs/watcher-watcher.yaml +0 -0
  257. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/.placeholder +0 -0
  258. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/2025.1-prelude-8be97eece4e1d1ff.yaml +0 -0
  259. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/action-plan-cancel-c54726378019e096.yaml +0 -0
  260. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/action-plan-versioned-notifications-api-e8ca4f5d37aa5b4b.yaml +0 -0
  261. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/action-versioned-notifications-api-ff94fc0f401292d0.yaml +0 -0
  262. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/add-baremetal-scoper-9ef23f5fb8f0be6a.yaml +0 -0
  263. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/add-force-field-to-audit-4bcaeedfe27233ad.yaml +0 -0
  264. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/add-ha-support-b9042255e5b76e42.yaml +0 -0
  265. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/add-instance-metrics-to-prometheus-datasource-9fba8c174ff845e1.yaml +0 -0
  266. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/add-name-for-audit-0df1f39f00736f06.yaml +0 -0
  267. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/add-plugins-parameters-376eb6b0b8978b44.yaml +0 -0
  268. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/add-power-on-off-a77673d482568a8b.yaml +0 -0
  269. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/add-scoring-module-fa00d013ed2d614e.yaml +0 -0
  270. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/add-start-end-time-for-continuous-audit-52c45052cb06d153.yaml +0 -0
  271. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/add-upgrade-check-framework-5bb9693c8a78931c.yaml +0 -0
  272. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/api-call-retry-fef741ac684c58dd.yaml +0 -0
  273. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/api-microversioning-7999a3ee8073bf32.yaml +0 -0
  274. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/audit-scoper-for-storage-data-model-cdccc803542d22db.yaml +0 -0
  275. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/audit-tag-vm-metadata-47a3e4468748853c.yaml +0 -0
  276. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/audit-versioned-notifications-api-bca7738e16954bad.yaml +0 -0
  277. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/automatic-triggering-audit-8a9b0540d547db60.yaml +0 -0
  278. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/background-jobs-ha-9d3cf3fe356f4705.yaml +0 -0
  279. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/bp-audit-scope-exclude-project-511a7720aac00dff.yaml +0 -0
  280. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/build-baremetal-data-model-in-watcher-3023453a47b61dab.yaml +0 -0
  281. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/cdm-scoping-8d9c307bad46bfa1.yaml +0 -0
  282. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/centralise-config-opts-95670987dfbdb0e7.yaml +0 -0
  283. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/change-ram-util-metric-4a3e6984b9dd968d.yaml +0 -0
  284. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/check-strategy-requirements-66f9e9262412f8ec.yaml +0 -0
  285. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/cinder-model-integration-baa394a72a0a33bf.yaml +0 -0
  286. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/cluster-model-objects-wrapper-9c799ea262c56a5b.yaml +0 -0
  287. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/compute-cdm-include-all-instances-f7506ded2d57732f.yaml +0 -0
  288. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/configurable-weights-default-planner-3746b33160bc7347.yaml +0 -0
  289. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/consume-nova-versioned-notifications-f98361b37e546b4d.yaml +0 -0
  290. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/continuously-optimization-35364f4d2c0b81fc.yaml +0 -0
  291. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/cron-based-continuous-audits-c3eedf28d9752b37.yaml +0 -0
  292. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/datasource-query-retry-00cba5f7e68aec39.yaml +0 -0
  293. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/db-migration-e1a705a8b54ccdd2.yaml +0 -0
  294. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/define-the-audit-scope-e89edc5051dcf3f2.yaml +0 -0
  295. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/deprecate-ceilometer-datasource-446b0be70fbce28b.yaml +0 -0
  296. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/deprecate-json-formatted-policy-file-3a92379e9f5dd203.yaml +0 -0
  297. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/deprecate-monasca-ds-9065f4d4bee09ab2.yaml +0 -0
  298. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/drop-py-2-7-54f8e806d71f19a7.yaml +0 -0
  299. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/drop-python38-support-eeb19a0bc0160sw1.yaml +0 -0
  300. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/dynamic-action-description-0e947b9e7ef2a134.yaml +0 -0
  301. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/efficacy-indicator-95380ad7b84e3be2.yaml +0 -0
  302. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/enhance-watcher-applier-engine-86c676ce8f179e68.yaml +0 -0
  303. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/event-driven-optimization-based-4870f112bef8a560.yaml +0 -0
  304. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/file-based-metric-map-c2af62b5067895df.yaml +0 -0
  305. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/formal-datasource-interface-implementation-222769d55a127d33.yaml +0 -0
  306. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/general-purpose-decision-engine-threadpool-0711b23abfc9d409.yaml +0 -0
  307. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/get-goal-from-strategy-396c9b13a38bb650.yaml +0 -0
  308. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/global-datasource-preference-3ab47b4be09ff3a5.yaml +0 -0
  309. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/gnocchi-watcher-43c25d391fbd3e9c.yaml +0 -0
  310. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/grafana-datasource-b672367c23ffa0c6.yaml +0 -0
  311. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/graph-based-cluster-model-523937a6f5e66537.yaml +0 -0
  312. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/host-maintenance-strategy-41f640927948fb56.yaml +0 -0
  313. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/improve-compute-data-model-b427c85e4ed2b6fb.yaml +0 -0
  314. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/jsonschema-validation-79cab05d5295da00.yaml +0 -0
  315. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/min-required-nova-train-71f124192d88ae52.yaml +0 -0
  316. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/monasca-support-0b0486b8572ac38b.yaml +0 -0
  317. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/multiple-global-efficacy-indicator-fc11c4844a12a7d5.yaml +0 -0
  318. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/node-resource-consolidation-73bc0c0abfeb0b03.yaml +0 -0
  319. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/noisy-neighbor-strategy-a71342740b59dddc.yaml +0 -0
  320. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/notifications-actionplan-cancel-edb2a4a12543e2d0.yaml +0 -0
  321. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/optimization-threshold-21ad38f0470d0e1a.yaml +0 -0
  322. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/persistent-audit-parameters-ae41dd7252ba9672.yaml +0 -0
  323. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/planner-storage-action-plan-26ef37893c5e8648.yaml +0 -0
  324. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/prometheus-datasource-e56f2f7b8f3427c2.yaml +0 -0
  325. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/remove-ceilometer-datasource-8d9ab7d64d61e405.yaml +0 -0
  326. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/remove-nova-legacy-notifications-e1b6d10eff58f30a.yaml +0 -0
  327. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/replace-cold-migrate-to-use-nova-migration-api-cecd9a39ddd3bc58.yaml +0 -0
  328. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/scope-for-data-model-ea9792f90db14343.yaml +0 -0
  329. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/service-versioned-notifications-api-70367b79a565d900.yaml +0 -0
  330. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/show-datamodel-api-6945b744fd5d25d5.yaml +0 -0
  331. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/stale-action-plan-b6a6b08df873c128.yaml +0 -0
  332. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/standard-deviation-strategy-cd1d0c443fdfde9c.yaml +0 -0
  333. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/storage-workload-balance-0ecabbc1791e6894.yaml +0 -0
  334. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/support-keystoneclient-option-b30d1ff45f86a2e7.yaml +0 -0
  335. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/support-placement-api-58ce6bef1bbbe98a.yaml +0 -0
  336. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/suspended-audit-state-07f998c94e9d9a47.yaml +0 -0
  337. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/uniform-airflow-strategy-68cdba1419c3f770.yaml +0 -0
  338. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/uwsgi-support-8dcea6961e56dad0.yaml +0 -0
  339. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/volume-migrate-action-fc57b0ce0e4c39ae.yaml +0 -0
  340. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/watcher-notifications-ovo-7b44d52ef6400dd0.yaml +0 -0
  341. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/watcher-planner-selector-84d77549d46f362a.yaml +0 -0
  342. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/watcher-policies-1e86a30f0f11c6fa.yaml +0 -0
  343. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/watcher-service-list-7b2f4b64f71e9b89.yaml +0 -0
  344. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/watcher-versioned-objects-fc5abf5c81c4590c.yaml +0 -0
  345. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/workload-balance-base-on-cpu-or-ram-util-3ff4ee968c32b2ed.yaml +0 -0
  346. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/workload-balance-migration-strategy-a0b05148a57815c0.yaml +0 -0
  347. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/notes/zone-migration-strategy-10f7656a2a01e607.yaml +0 -0
  348. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/2023.1.rst +0 -0
  349. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/2023.2.rst +0 -0
  350. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/2024.1.rst +0 -0
  351. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/2024.2.rst +0 -0
  352. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/_static/.placeholder +0 -0
  353. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/conf.py +0 -0
  354. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/index.rst +0 -0
  355. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po +0 -0
  356. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/newton.rst +0 -0
  357. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/ocata.rst +0 -0
  358. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/pike.rst +0 -0
  359. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/queens.rst +0 -0
  360. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/rocky.rst +0 -0
  361. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/stein.rst +0 -0
  362. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/train.rst +0 -0
  363. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/unreleased.rst +0 -0
  364. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/ussuri.rst +0 -0
  365. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/victoria.rst +0 -0
  366. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/wallaby.rst +0 -0
  367. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/xena.rst +0 -0
  368. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/yoga.rst +0 -0
  369. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/releasenotes/source/zed.rst +0 -0
  370. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/requirements.txt +0 -0
  371. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/setup.py +0 -0
  372. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/test-requirements.txt +0 -0
  373. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/__init__.py +0 -0
  374. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/_i18n.py +0 -0
  375. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/__init__.py +0 -0
  376. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/acl.py +0 -0
  377. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/app.py +0 -0
  378. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/app.wsgi +0 -0
  379. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/config.py +0 -0
  380. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/__init__.py +0 -0
  381. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/base.py +0 -0
  382. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/link.py +0 -0
  383. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/rest_api_version_history.rst +0 -0
  384. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/root.py +0 -0
  385. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/__init__.py +0 -0
  386. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/action.py +0 -0
  387. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/action_plan.py +0 -0
  388. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/audit_template.py +0 -0
  389. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/collection.py +0 -0
  390. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/data_model.py +0 -0
  391. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/efficacy_indicator.py +0 -0
  392. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/goal.py +0 -0
  393. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/scoring_engine.py +0 -0
  394. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/service.py +0 -0
  395. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/strategy.py +0 -0
  396. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/types.py +0 -0
  397. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/utils.py +0 -0
  398. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/versions.py +0 -0
  399. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/controllers/v1/webhooks.py +0 -0
  400. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/hooks.py +0 -0
  401. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/middleware/__init__.py +0 -0
  402. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/middleware/auth_token.py +0 -0
  403. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/middleware/parsable_error.py +0 -0
  404. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/scheduling.py +0 -0
  405. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/api/wsgi.py +0 -0
  406. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/__init__.py +0 -0
  407. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/action_plan/__init__.py +0 -0
  408. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/action_plan/base.py +0 -0
  409. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/actions/__init__.py +0 -0
  410. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/actions/base.py +0 -0
  411. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/actions/change_node_power_state.py +0 -0
  412. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/actions/change_nova_service_state.py +0 -0
  413. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/actions/factory.py +0 -0
  414. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/actions/migration.py +0 -0
  415. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/actions/nop.py +0 -0
  416. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/actions/resize.py +0 -0
  417. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/actions/sleep.py +0 -0
  418. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/base.py +0 -0
  419. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/default.py +0 -0
  420. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/loading/__init__.py +0 -0
  421. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/loading/default.py +0 -0
  422. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/manager.py +0 -0
  423. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/messaging/__init__.py +0 -0
  424. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/messaging/trigger.py +0 -0
  425. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/rpcapi.py +0 -0
  426. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/sync.py +0 -0
  427. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/workflow_engine/__init__.py +0 -0
  428. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/workflow_engine/base.py +0 -0
  429. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/applier/workflow_engine/default.py +0 -0
  430. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/cmd/__init__.py +0 -0
  431. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/cmd/api.py +0 -0
  432. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/cmd/applier.py +0 -0
  433. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/cmd/dbmanage.py +0 -0
  434. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/cmd/decisionengine.py +0 -0
  435. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/cmd/status.py +0 -0
  436. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/cmd/sync.py +0 -0
  437. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/__init__.py +0 -0
  438. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/cinder_helper.py +0 -0
  439. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/clients.py +0 -0
  440. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/config.py +0 -0
  441. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/context.py +0 -0
  442. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/exception.py +0 -0
  443. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/ironic_helper.py +0 -0
  444. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/loader/__init__.py +0 -0
  445. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/loader/base.py +0 -0
  446. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/loader/default.py +0 -0
  447. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/loader/loadable.py +0 -0
  448. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/metal_helper/__init__.py +0 -0
  449. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/metal_helper/base.py +0 -0
  450. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/metal_helper/constants.py +0 -0
  451. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/metal_helper/factory.py +0 -0
  452. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/metal_helper/ironic.py +0 -0
  453. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/metal_helper/maas.py +0 -0
  454. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/nova_helper.py +0 -0
  455. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/paths.py +0 -0
  456. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/placement_helper.py +0 -0
  457. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/policies/__init__.py +0 -0
  458. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/policies/action.py +0 -0
  459. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/policies/action_plan.py +0 -0
  460. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/policies/audit.py +0 -0
  461. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/policies/audit_template.py +0 -0
  462. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/policies/base.py +0 -0
  463. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/policies/data_model.py +0 -0
  464. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/policies/goal.py +0 -0
  465. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/policies/scoring_engine.py +0 -0
  466. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/policies/service.py +0 -0
  467. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/policies/strategy.py +0 -0
  468. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/policy.py +0 -0
  469. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/rpc.py +0 -0
  470. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/scheduling.py +0 -0
  471. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/service.py +0 -0
  472. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/common/service_manager.py +0 -0
  473. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/__init__.py +0 -0
  474. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/api.py +0 -0
  475. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/applier.py +0 -0
  476. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/cinder_client.py +0 -0
  477. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/clients_auth.py +0 -0
  478. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/collector.py +0 -0
  479. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/datasources.py +0 -0
  480. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/db.py +0 -0
  481. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/decision_engine.py +0 -0
  482. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/exception.py +0 -0
  483. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/glance_client.py +0 -0
  484. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/gnocchi_client.py +0 -0
  485. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/grafana_client.py +0 -0
  486. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/grafana_translators.py +0 -0
  487. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/ironic_client.py +0 -0
  488. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/keystone_client.py +0 -0
  489. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/maas_client.py +0 -0
  490. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/monasca_client.py +0 -0
  491. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/neutron_client.py +0 -0
  492. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/nova_client.py +0 -0
  493. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/opts.py +0 -0
  494. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/paths.py +0 -0
  495. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/placement_client.py +0 -0
  496. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/planner.py +0 -0
  497. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/plugins.py +0 -0
  498. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/prometheus_client.py +0 -0
  499. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/conf/service.py +0 -0
  500. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/__init__.py +0 -0
  501. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/api.py +0 -0
  502. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/migration.py +0 -0
  503. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/purge.py +0 -0
  504. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/__init__.py +0 -0
  505. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/alembic/README.rst +0 -0
  506. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/alembic/env.py +0 -0
  507. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/alembic/script.py.mako +0 -0
  508. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/alembic/versions/001_ocata.py +0 -0
  509. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/alembic/versions/0f6042416884_add_apscheduler_jobs.py +0 -0
  510. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/alembic/versions/3cfc94cecf4e_add_name_for_audit.py +0 -0
  511. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/alembic/versions/4b16194c56bc_add_start_end_time.py +0 -0
  512. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/alembic/versions/52804f2498c4_add_hostname.py +0 -0
  513. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/alembic/versions/609bec748f2a_add_force_field.py +0 -0
  514. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/alembic/versions/a86240e89a29_.py +0 -0
  515. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/alembic/versions/d098df6021e2_cron_support_for_audit.py +0 -0
  516. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/alembic/versions/d09a5945e4a0_add_action_description_table.py +0 -0
  517. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/alembic.ini +0 -0
  518. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/api.py +0 -0
  519. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/job_store.py +0 -0
  520. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/migration.py +0 -0
  521. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/db/sqlalchemy/models.py +0 -0
  522. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/__init__.py +0 -0
  523. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/audit/__init__.py +0 -0
  524. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/audit/base.py +0 -0
  525. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/audit/continuous.py +0 -0
  526. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/audit/event.py +0 -0
  527. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/audit/oneshot.py +0 -0
  528. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/datasources/__init__.py +0 -0
  529. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/datasources/gnocchi.py +0 -0
  530. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/datasources/grafana.py +0 -0
  531. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/datasources/grafana_translator/__init__.py +0 -0
  532. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/datasources/grafana_translator/base.py +0 -0
  533. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/datasources/grafana_translator/influxdb.py +0 -0
  534. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/datasources/manager.py +0 -0
  535. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/datasources/monasca.py +0 -0
  536. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/gmr.py +0 -0
  537. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/goal/__init__.py +0 -0
  538. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/goal/base.py +0 -0
  539. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/goal/efficacy/__init__.py +0 -0
  540. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/goal/efficacy/base.py +0 -0
  541. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/goal/efficacy/indicators.py +0 -0
  542. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/goal/efficacy/specs.py +0 -0
  543. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/goal/goals.py +0 -0
  544. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/loading/__init__.py +0 -0
  545. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/loading/default.py +0 -0
  546. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/manager.py +0 -0
  547. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/messaging/__init__.py +0 -0
  548. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/messaging/audit_endpoint.py +0 -0
  549. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/messaging/data_model_endpoint.py +0 -0
  550. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/__init__.py +0 -0
  551. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/base.py +0 -0
  552. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/collector/__init__.py +0 -0
  553. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/collector/base.py +0 -0
  554. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/collector/cinder.py +0 -0
  555. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/collector/ironic.py +0 -0
  556. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/collector/manager.py +0 -0
  557. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/collector/nova.py +0 -0
  558. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/element/__init__.py +0 -0
  559. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/element/baremetal_resource.py +0 -0
  560. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/element/base.py +0 -0
  561. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/element/compute_resource.py +0 -0
  562. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/element/instance.py +0 -0
  563. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/element/node.py +0 -0
  564. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/element/storage_resource.py +0 -0
  565. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/element/volume.py +0 -0
  566. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/model_root.py +0 -0
  567. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/notification/__init__.py +0 -0
  568. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/notification/base.py +0 -0
  569. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/notification/cinder.py +0 -0
  570. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/notification/filtering.py +0 -0
  571. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/model/notification/nova.py +0 -0
  572. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/planner/__init__.py +0 -0
  573. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/planner/base.py +0 -0
  574. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/planner/manager.py +0 -0
  575. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/planner/node_resource_consolidation.py +0 -0
  576. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/planner/weight.py +0 -0
  577. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/planner/workload_stabilization.py +0 -0
  578. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/rpcapi.py +0 -0
  579. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/scheduling.py +0 -0
  580. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/scope/__init__.py +0 -0
  581. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/scope/baremetal.py +0 -0
  582. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/scope/base.py +0 -0
  583. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/scope/compute.py +0 -0
  584. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/scope/storage.py +0 -0
  585. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/scoring/__init__.py +0 -0
  586. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/scoring/base.py +0 -0
  587. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/scoring/dummy_scorer.py +0 -0
  588. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/scoring/dummy_scoring_container.py +0 -0
  589. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/scoring/scoring_factory.py +0 -0
  590. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/solution/__init__.py +0 -0
  591. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/solution/base.py +0 -0
  592. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/solution/default.py +0 -0
  593. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/solution/efficacy.py +0 -0
  594. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/solution/solution_comparator.py +0 -0
  595. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/solution/solution_evaluator.py +0 -0
  596. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/__init__.py +0 -0
  597. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/common/__init__.py +0 -0
  598. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/common/level.py +0 -0
  599. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/context/__init__.py +0 -0
  600. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/context/base.py +0 -0
  601. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/context/default.py +0 -0
  602. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/selection/__init__.py +0 -0
  603. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/selection/base.py +0 -0
  604. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/selection/default.py +0 -0
  605. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/__init__.py +0 -0
  606. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/actuation.py +0 -0
  607. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/base.py +0 -0
  608. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/basic_consolidation.py +0 -0
  609. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/dummy_strategy.py +0 -0
  610. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/dummy_with_resize.py +0 -0
  611. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/dummy_with_scorer.py +0 -0
  612. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/node_resource_consolidation.py +0 -0
  613. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/noisy_neighbor.py +0 -0
  614. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/outlet_temp_control.py +0 -0
  615. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/saving_energy.py +0 -0
  616. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/storage_capacity_balance.py +0 -0
  617. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/uniform_airflow.py +0 -0
  618. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py +0 -0
  619. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/workload_balance.py +0 -0
  620. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/strategy/strategies/workload_stabilization.py +0 -0
  621. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/sync.py +0 -0
  622. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/decision_engine/threading.py +0 -0
  623. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/eventlet.py +0 -0
  624. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/hacking/__init__.py +0 -0
  625. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/hacking/checks.py +0 -0
  626. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/locale/de/LC_MESSAGES/watcher.po +0 -0
  627. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/locale/en_GB/LC_MESSAGES/watcher.po +0 -0
  628. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/notifications/__init__.py +0 -0
  629. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/notifications/action.py +0 -0
  630. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/notifications/action_plan.py +0 -0
  631. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/notifications/audit.py +0 -0
  632. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/notifications/base.py +0 -0
  633. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/notifications/exception.py +0 -0
  634. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/notifications/goal.py +0 -0
  635. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/notifications/service.py +0 -0
  636. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/notifications/strategy.py +0 -0
  637. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/objects/__init__.py +0 -0
  638. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/objects/action.py +0 -0
  639. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/objects/action_description.py +0 -0
  640. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/objects/action_plan.py +0 -0
  641. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/objects/audit.py +0 -0
  642. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/objects/audit_template.py +0 -0
  643. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/objects/base.py +0 -0
  644. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/objects/efficacy_indicator.py +0 -0
  645. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/objects/fields.py +0 -0
  646. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/objects/goal.py +0 -0
  647. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/objects/scoring_engine.py +0 -0
  648. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/objects/service.py +0 -0
  649. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/objects/strategy.py +0 -0
  650. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/__init__.py +0 -0
  651. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/__init__.py +0 -0
  652. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/base.py +0 -0
  653. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/test_base.py +0 -0
  654. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/test_config.py +0 -0
  655. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/test_hooks.py +0 -0
  656. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/test_root.py +0 -0
  657. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/test_scheduling.py +0 -0
  658. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/test_utils.py +0 -0
  659. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/utils.py +0 -0
  660. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/v1/__init__.py +0 -0
  661. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/v1/test_actions.py +0 -0
  662. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/v1/test_actions_plans.py +0 -0
  663. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/v1/test_audit_templates.py +0 -0
  664. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/v1/test_data_model.py +0 -0
  665. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/v1/test_goals.py +0 -0
  666. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/v1/test_microversions.py +0 -0
  667. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/v1/test_root.py +0 -0
  668. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/v1/test_scoring_engines.py +0 -0
  669. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/v1/test_services.py +0 -0
  670. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/v1/test_strategies.py +0 -0
  671. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/v1/test_types.py +0 -0
  672. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/v1/test_utils.py +0 -0
  673. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/api/v1/test_webhooks.py +0 -0
  674. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/__init__.py +0 -0
  675. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/action_plan/__init__.py +0 -0
  676. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/actions/__init__.py +0 -0
  677. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/actions/loading/__init__.py +0 -0
  678. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/actions/loading/test_default_actions_loader.py +0 -0
  679. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/actions/test_change_node_power_state.py +0 -0
  680. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/actions/test_change_nova_service_state.py +0 -0
  681. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/actions/test_migration.py +0 -0
  682. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/actions/test_resize.py +0 -0
  683. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/actions/test_sleep.py +0 -0
  684. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/messaging/__init__.py +0 -0
  685. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/messaging/test_trigger_action_plan_endpoint.py +0 -0
  686. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/test_applier_manager.py +0 -0
  687. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/test_rpcapi.py +0 -0
  688. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/test_sync.py +0 -0
  689. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/workflow_engine/__init__.py +0 -0
  690. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/workflow_engine/loading/__init__.py +0 -0
  691. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/workflow_engine/loading/test_default_engine_loader.py +0 -0
  692. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/workflow_engine/test_default_workflow_engine.py +0 -0
  693. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/applier/workflow_engine/test_taskflow_action_container.py +0 -0
  694. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/base.py +0 -0
  695. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/cmd/__init__.py +0 -0
  696. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/cmd/test_api.py +0 -0
  697. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/cmd/test_applier.py +0 -0
  698. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/cmd/test_db_manage.py +0 -0
  699. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/cmd/test_decision_engine.py +0 -0
  700. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/cmd/test_status.py +0 -0
  701. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/__init__.py +0 -0
  702. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/loader/__init__.py +0 -0
  703. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/loader/test_loader.py +0 -0
  704. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/metal_helper/__init__.py +0 -0
  705. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/metal_helper/test_base.py +0 -0
  706. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/metal_helper/test_factory.py +0 -0
  707. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/metal_helper/test_ironic.py +0 -0
  708. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/metal_helper/test_maas.py +0 -0
  709. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/test_cinder_helper.py +0 -0
  710. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/test_clients.py +0 -0
  711. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/test_ironic_helper.py +0 -0
  712. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/test_nova_helper.py +0 -0
  713. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/test_placement_helper.py +0 -0
  714. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/test_scheduling.py +0 -0
  715. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/test_service.py +0 -0
  716. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/common/test_utils.py +0 -0
  717. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/conf/__init__.py +0 -0
  718. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/conf/test_list_opts.py +0 -0
  719. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/conf_fixture.py +0 -0
  720. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/config.py +0 -0
  721. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/db/__init__.py +0 -0
  722. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/db/base.py +0 -0
  723. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/db/test_action.py +0 -0
  724. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/db/test_action_description.py +0 -0
  725. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/db/test_action_plan.py +0 -0
  726. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/db/test_audit.py +0 -0
  727. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/db/test_audit_template.py +0 -0
  728. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/db/test_efficacy_indicator.py +0 -0
  729. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/db/test_goal.py +0 -0
  730. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/db/test_purge.py +0 -0
  731. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/db/test_scoring_engine.py +0 -0
  732. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/db/test_service.py +0 -0
  733. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/db/test_strategy.py +0 -0
  734. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/db/utils.py +0 -0
  735. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/__init__.py +0 -0
  736. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/audit/__init__.py +0 -0
  737. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/audit/test_audit_handlers.py +0 -0
  738. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/cluster/__init__.py +0 -0
  739. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/cluster/test_cinder_cdmc.py +0 -0
  740. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/cluster/test_cluster_data_model_collector.py +0 -0
  741. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/cluster/test_nova_cdmc.py +0 -0
  742. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/datasources/__init__.py +0 -0
  743. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/datasources/grafana_translators/__init__.py +0 -0
  744. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/datasources/grafana_translators/test_base.py +0 -0
  745. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/datasources/grafana_translators/test_influxdb.py +0 -0
  746. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/datasources/test_base.py +0 -0
  747. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/datasources/test_gnocchi_helper.py +0 -0
  748. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/datasources/test_grafana_helper.py +0 -0
  749. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/datasources/test_manager.py +0 -0
  750. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/datasources/test_monasca_helper.py +0 -0
  751. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/event_consumer/__init__.py +0 -0
  752. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/fake_goals.py +0 -0
  753. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/fake_metal_helper.py +0 -0
  754. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/fake_strategies.py +0 -0
  755. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/loading/__init__.py +0 -0
  756. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/loading/test_collector_loader.py +0 -0
  757. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/loading/test_default_planner_loader.py +0 -0
  758. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/loading/test_default_strategy_loader.py +0 -0
  759. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/loading/test_goal_loader.py +0 -0
  760. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/messaging/__init__.py +0 -0
  761. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/messaging/test_audit_endpoint.py +0 -0
  762. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/messaging/test_data_model_endpoint.py +0 -0
  763. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/__init__.py +0 -0
  764. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/ironic_scenario_1.xml +0 -0
  765. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/scenario_1.xml +0 -0
  766. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/scenario_10.xml +0 -0
  767. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/scenario_1_with_1_node_unavailable.xml +0 -0
  768. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/scenario_1_with_all_instances_exclude.xml +0 -0
  769. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/scenario_1_with_all_nodes_disable.xml +0 -0
  770. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/scenario_1_with_metrics.xml +0 -0
  771. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/scenario_2_with_metrics.xml +0 -0
  772. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/scenario_3_with_2_nodes.xml +0 -0
  773. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/scenario_3_with_metrics.xml +0 -0
  774. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/scenario_4_with_1_node_no_instance.xml +0 -0
  775. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/scenario_5_with_instance_disk_0.xml +0 -0
  776. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/scenario_6_with_2_nodes.xml +0 -0
  777. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/scenario_7_with_2_nodes.xml +0 -0
  778. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/scenario_8_with_4_nodes.xml +0 -0
  779. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/scenario_9_with_3_active_plus_1_disabled_nodes.xml +0 -0
  780. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/data/storage_scenario_1.xml +0 -0
  781. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/faker_cluster_and_metrics.py +0 -0
  782. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/faker_cluster_state.py +0 -0
  783. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/gnocchi_metrics.py +0 -0
  784. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/monasca_metrics.py +0 -0
  785. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/__init__.py +0 -0
  786. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/capacity.json +0 -0
  787. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-create-end.json +0 -0
  788. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-delete-end.json +0 -0
  789. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-live_migration_force_complete-end.json +0 -0
  790. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-live_migration_post-end.json +0 -0
  791. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-lock.json +0 -0
  792. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-pause-end.json +0 -0
  793. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-power_off-end.json +0 -0
  794. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-power_on-end.json +0 -0
  795. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-rebuild-end.json +0 -0
  796. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-rescue-end.json +0 -0
  797. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-resize_confirm-end.json +0 -0
  798. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-restore-end.json +0 -0
  799. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-resume-end.json +0 -0
  800. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-shelve-end.json +0 -0
  801. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-shutdown-end.json +0 -0
  802. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-soft_delete-end.json +0 -0
  803. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-suspend-end.json +0 -0
  804. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-unlock.json +0 -0
  805. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-unpause-end.json +0 -0
  806. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-unrescue-end.json +0 -0
  807. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-unshelve-end.json +0 -0
  808. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/instance-update.json +0 -0
  809. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario3_instance-update.json +0 -0
  810. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario3_notfound_instance-update.json +0 -0
  811. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario3_notfound_legacy_instance-update.json +0 -0
  812. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario3_service-update-disabled.json +0 -0
  813. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario3_service-update-enabled.json +0 -0
  814. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_bootable-volume-create.json +0 -0
  815. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_capacity.json +0 -0
  816. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_capacity_node_notfound.json +0 -0
  817. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_capacity_pool_notfound.json +0 -0
  818. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_error-volume-create.json +0 -0
  819. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_volume-attach.json +0 -0
  820. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_volume-create.json +0 -0
  821. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_volume-create_pool_notfound.json +0 -0
  822. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_volume-delete.json +0 -0
  823. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_volume-detach.json +0 -0
  824. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_volume-resize.json +0 -0
  825. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_volume-update.json +0 -0
  826. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/service-create.json +0 -0
  827. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/service-delete.json +0 -0
  828. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/data/service-update.json +0 -0
  829. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/fake_managers.py +0 -0
  830. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/test_cinder_notifications.py +0 -0
  831. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/test_notifications.py +0 -0
  832. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/notification/test_nova_notifications.py +0 -0
  833. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/test_element.py +0 -0
  834. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/model/test_model.py +0 -0
  835. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/planner/__init__.py +0 -0
  836. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/planner/test_node_resource_consolidation.py +0 -0
  837. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/planner/test_planner_manager.py +0 -0
  838. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/planner/test_weight_planner.py +0 -0
  839. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/planner/test_workload_stabilization_planner.py +0 -0
  840. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/scope/__init__.py +0 -0
  841. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/scope/fake_scopes.py +0 -0
  842. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/scope/test_baremetal.py +0 -0
  843. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/scope/test_compute.py +0 -0
  844. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/scope/test_storage.py +0 -0
  845. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/scoring/__init__.py +0 -0
  846. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/scoring/test_dummy_scorer.py +0 -0
  847. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/scoring/test_dummy_scoring_container.py +0 -0
  848. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/scoring/test_scoring_factory.py +0 -0
  849. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/solution/__init__.py +0 -0
  850. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/solution/test_default_solution.py +0 -0
  851. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/__init__.py +0 -0
  852. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/context/__init__.py +0 -0
  853. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/context/test_strategy_context.py +0 -0
  854. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/selector/__init__.py +0 -0
  855. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/selector/test_strategy_selector.py +0 -0
  856. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/__init__.py +0 -0
  857. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_actuator.py +0 -0
  858. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_base.py +0 -0
  859. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_basic_consolidation.py +0 -0
  860. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_dummy_strategy.py +0 -0
  861. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_dummy_with_scorer.py +0 -0
  862. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_node_resource_consolidation.py +0 -0
  863. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_noisy_neighbor.py +0 -0
  864. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_outlet_temp_control.py +0 -0
  865. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_saving_energy.py +0 -0
  866. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_storage_capacity_balance.py +0 -0
  867. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_strategy_endpoint.py +0 -0
  868. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_uniform_airflow.py +0 -0
  869. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_vm_workload_consolidation.py +0 -0
  870. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/strategy/strategies/test_workload_balance.py +0 -0
  871. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/test_gmr.py +0 -0
  872. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/test_rpcapi.py +0 -0
  873. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/test_scheduling.py +0 -0
  874. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/decision_engine/test_sync.py +0 -0
  875. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/fake_policy.py +0 -0
  876. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/fakes.py +0 -0
  877. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/notifications/__init__.py +0 -0
  878. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/notifications/test_action_notification.py +0 -0
  879. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/notifications/test_action_plan_notification.py +0 -0
  880. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/notifications/test_audit_notification.py +0 -0
  881. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/notifications/test_notification.py +0 -0
  882. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/notifications/test_service_notifications.py +0 -0
  883. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/objects/__init__.py +0 -0
  884. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/objects/test_action.py +0 -0
  885. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/objects/test_action_description.py +0 -0
  886. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/objects/test_action_plan.py +0 -0
  887. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/objects/test_audit.py +0 -0
  888. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/objects/test_audit_template.py +0 -0
  889. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/objects/test_efficacy_indicator.py +0 -0
  890. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/objects/test_goal.py +0 -0
  891. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/objects/test_objects.py +0 -0
  892. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/objects/test_scoring_engine.py +0 -0
  893. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/objects/test_service.py +0 -0
  894. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/objects/test_strategy.py +0 -0
  895. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/objects/utils.py +0 -0
  896. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/policy_fixture.py +0 -0
  897. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/tests/test_threading.py +0 -0
  898. {python_watcher-14.0.0.0rc1 → python_watcher-14.1.0}/watcher/version.py +0 -0
@@ -34,6 +34,7 @@
34
34
  vars:
35
35
  tempest_concurrency: 1
36
36
  tempest_test_regex: watcher_tempest_plugin.tests.scenario.test_execute_strategies
37
+ tempest_exclude_regex: .*\[.*\breal_load\b.*\].*
37
38
 
38
39
  - job:
39
40
  name: watcher-tempest-multinode
@@ -213,10 +214,12 @@
213
214
  CEILOMETER_BACKENDS: "sg-core"
214
215
  CEILOMETER_PIPELINE_INTERVAL: 15
215
216
  CEILOMETER_ALARM_THRESHOLD: 6000000000
216
- NODE_EXPORTER_ENABLE: false
217
- PROMETHEUS_ENABLE: false
218
- PROMETHEUS_SERVICE_SCRAPE_TARGETS: "sg-core,node-exporter"
219
217
  PROMETHEUS_CONFIG_FILE: "/home/zuul/prometheus.yml"
218
+ # Disable sg_core prometheus config copy
219
+ PROMETHEUS_ENABLE: false
220
+ # PROMETHEUS_CONFIG_FILE var conflicts with sg_core var
221
+ # to avoid issue, set PROMETHEUS_CONF_DIR
222
+ PROMETHEUS_CONF_DIR: "/home/zuul"
220
223
  devstack_local_conf:
221
224
  post-config:
222
225
  $WATCHER_CONF:
@@ -253,6 +256,7 @@
253
256
  tempest_plugins:
254
257
  - watcher-tempest-plugin
255
258
  tempest_test_regex: watcher_tempest_plugin.tests.scenario.test_execute_strategies
259
+ tempest_exclude_regex: .*\[.*\breal_load\b.*\].*
256
260
  tempest_concurrency: 1
257
261
  tox_envlist: all
258
262
  zuul_copy_output:
@@ -261,7 +265,6 @@
261
265
  subnode:
262
266
  devstack_plugins:
263
267
  ceilometer: https://opendev.org/openstack/ceilometer
264
- sg-core: https://github.com/openstack-k8s-operators/sg-core
265
268
  devstack-plugin-prometheus: https://opendev.org/openstack/devstack-plugin-prometheus
266
269
  devstack_services:
267
270
  ceilometer-acompute: true
@@ -271,9 +274,9 @@
271
274
  devstack_localrc:
272
275
  CEILOMETER_BACKEND: "none"
273
276
  CEILOMETER_BACKENDS: "none"
274
- # sg_core related var
275
- NODE_EXPORTER_ENABLE: false
276
- PROMETHEUS_ENABLE: false
277
+ # avoid collecting real host cpu metric since tests
278
+ # will inject fake metrics when needed
279
+ NODE_EXPORTER_COLLECTOR_EXCLUDE: "cpu"
277
280
  devstack_local_conf:
278
281
  post-config:
279
282
  $WATCHER_CONF:
@@ -1,8 +1,31 @@
1
1
  CHANGES
2
2
  =======
3
3
 
4
- 14.0.0.0rc1
5
- -----------
4
+ 14.1.0
5
+ ------
6
+
7
+ * use cinder migrate for swap volume
8
+ * Configure watcher tempest's microversion in devstack
9
+ * Fix audit creation with no name and no goal or audit\_template
10
+ * Set actionplan state to FAILED if any action has failed
11
+ * Add unit test to check action plan state when a nested action fails
12
+ * Return HTTP code 400 when creating an audit with wrong parameters
13
+ * Use KiB as unit for host\_ram\_usage when using prometheus datasource
14
+ * Aggregate by label when querying instance cpu usage in prometheus
15
+ * Drop code from Host maintenance strategy migrating instance to disabled hosts
16
+ * Added unit test to validate audit creation with no goal and no name
17
+ * Add a unit test to check the error when creating an audit with wrong parameters
18
+ * [host\_maintenance] Pass des hostname in add\_action solution
19
+ * Add support for pyproject.toml and wsgi module paths
20
+ * Skip real-data tests in non-real-data jobs
21
+ * Aggregate by fqdn label instead instance in host cpu metrics
22
+ * Query by fqdn\_label instead of instance for host metrics
23
+ * Drop sg\_core prometheus related vars
24
+ * Update TOX\_CONSTRAINTS\_FILE for stable/2025.1
25
+ * Update .gitreview for stable/2025.1
26
+
27
+ 14.0.0
28
+ ------
6
29
 
7
30
  * Add epoxy prelude
8
31
  * Replace deprecated abc.abstractproperty
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-watcher
3
- Version: 14.0.0.0rc1
3
+ Version: 14.1.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
@@ -14,7 +14,6 @@ Classifier: Programming Language :: Python
14
14
  Classifier: Programming Language :: Python :: Implementation :: CPython
15
15
  Classifier: Programming Language :: Python :: 3 :: Only
16
16
  Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3.9
18
17
  Classifier: Programming Language :: Python :: 3.10
19
18
  Classifier: Programming Language :: Python :: 3.11
20
19
  Classifier: Programming Language :: Python :: 3.12
@@ -55,11 +55,7 @@ else
55
55
  WATCHER_BIN_DIR=$(get_python_exec_prefix)
56
56
  fi
57
57
 
58
- # There are 2 modes, which is "uwsgi" which runs with an apache
59
- # proxy uwsgi in front of it, or "mod_wsgi", which runs in
60
- # apache. mod_wsgi is deprecated, don't use it.
61
- WATCHER_USE_WSGI_MODE=${WATCHER_USE_WSGI_MODE:-$WSGI_MODE}
62
- WATCHER_UWSGI=$WATCHER_BIN_DIR/watcher-api-wsgi
58
+ WATCHER_UWSGI=watcher.wsgi.api:application
63
59
  WATCHER_UWSGI_CONF=$WATCHER_CONF_DIR/watcher-uwsgi.ini
64
60
 
65
61
  if is_suse; then
@@ -73,11 +69,7 @@ WATCHER_SERVICE_PORT=${WATCHER_SERVICE_PORT:-9322}
73
69
  WATCHER_SERVICE_PORT_INT=${WATCHER_SERVICE_PORT_INT:-19322}
74
70
  WATCHER_SERVICE_PROTOCOL=${WATCHER_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
75
71
 
76
- if [[ "$WATCHER_USE_WSGI_MODE" == "uwsgi" ]]; then
77
- WATCHER_API_URL="$WATCHER_SERVICE_PROTOCOL://$WATCHER_SERVICE_HOST/infra-optim"
78
- else
79
- WATCHER_API_URL="$WATCHER_SERVICE_PROTOCOL://$WATCHER_SERVICE_HOST:$WATCHER_SERVICE_PORT"
80
- fi
72
+ WATCHER_API_URL="$WATCHER_SERVICE_PROTOCOL://$WATCHER_SERVICE_HOST/infra-optim"
81
73
 
82
74
  # Entry Points
83
75
  # ------------
@@ -101,11 +93,7 @@ function _cleanup_watcher_apache_wsgi {
101
93
  # runs that a clean run would need to clean up
102
94
  function cleanup_watcher {
103
95
  sudo rm -rf $WATCHER_STATE_PATH
104
- if [[ "$WATCHER_USE_WSGI_MODE" == "uwsgi" ]]; then
105
- remove_uwsgi_config "$WATCHER_UWSGI_CONF" "$WATCHER_UWSGI"
106
- else
107
- _cleanup_watcher_apache_wsgi
108
- fi
96
+ remove_uwsgi_config "$WATCHER_UWSGI_CONF" "$WATCHER_UWSGI"
109
97
  }
110
98
 
111
99
  # configure_watcher() - Set config files, create data dirs, etc
@@ -154,31 +142,6 @@ function create_watcher_accounts {
154
142
  "$WATCHER_API_URL"
155
143
  }
156
144
 
157
- # _config_watcher_apache_wsgi() - Set WSGI config files of watcher
158
- function _config_watcher_apache_wsgi {
159
- local watcher_apache_conf
160
- if [[ "$WATCHER_USE_WSGI_MODE" == "mod_wsgi" ]]; then
161
- local service_port=$WATCHER_SERVICE_PORT
162
- if is_service_enabled tls-proxy; then
163
- service_port=$WATCHER_SERVICE_PORT_INT
164
- service_protocol="http"
165
- fi
166
- sudo mkdir -p $WATCHER_WSGI_DIR
167
- sudo cp $WATCHER_DIR/watcher/api/app.wsgi $WATCHER_WSGI_DIR/app.wsgi
168
- watcher_apache_conf=$(apache_site_config_for watcher-api)
169
- sudo cp $WATCHER_DEVSTACK_FILES_DIR/apache-watcher-api.template $watcher_apache_conf
170
- sudo sed -e "
171
- s|%WATCHER_SERVICE_PORT%|$service_port|g;
172
- s|%WATCHER_WSGI_DIR%|$WATCHER_WSGI_DIR|g;
173
- s|%USER%|$STACK_USER|g;
174
- s|%APIWORKERS%|$API_WORKERS|g;
175
- s|%APACHE_NAME%|$APACHE_NAME|g;
176
- " -i $watcher_apache_conf
177
- enable_apache_site watcher-api
178
- fi
179
-
180
- }
181
-
182
145
  # create_watcher_conf() - Create a new watcher.conf file
183
146
  function create_watcher_conf {
184
147
  # (Re)create ``watcher.conf``
@@ -196,11 +159,6 @@ function create_watcher_conf {
196
159
  iniset $WATCHER_CONF api host "$(ipv6_unquote $WATCHER_SERVICE_HOST)"
197
160
  iniset $WATCHER_CONF api port "$WATCHER_SERVICE_PORT_INT"
198
161
  # iniset $WATCHER_CONF api enable_ssl_api "True"
199
- else
200
- if [[ "$WATCHER_USE_WSGI_MODE" == "mod_wsgi" ]]; then
201
- iniset $WATCHER_CONF api host "$(ipv6_unquote $WATCHER_SERVICE_HOST)"
202
- iniset $WATCHER_CONF api port "$WATCHER_SERVICE_PORT"
203
- fi
204
162
  fi
205
163
 
206
164
  iniset $WATCHER_CONF oslo_policy policy_file $WATCHER_POLICY_YAML
@@ -228,12 +186,8 @@ function create_watcher_conf {
228
186
  # Format logging
229
187
  setup_logging $WATCHER_CONF
230
188
 
231
- #config apache files
232
- if [[ "$WATCHER_USE_WSGI_MODE" == "uwsgi" ]]; then
233
- write_uwsgi_config "$WATCHER_UWSGI_CONF" "$WATCHER_UWSGI" "/infra-optim"
234
- else
235
- _config_watcher_apache_wsgi
236
- fi
189
+ write_uwsgi_config "$WATCHER_UWSGI_CONF" "$WATCHER_UWSGI" "/infra-optim" "" "watcher-api"
190
+
237
191
  # Register SSL certificates if provided
238
192
  if is_ssl_enabled_service watcher; then
239
193
  ensure_certificates WATCHER
@@ -273,9 +227,6 @@ function install_watcherclient {
273
227
  function install_watcher {
274
228
  git_clone $WATCHER_REPO $WATCHER_DIR $WATCHER_BRANCH
275
229
  setup_develop $WATCHER_DIR
276
- if [[ "$WATCHER_USE_WSGI_MODE" == "mod_wsgi" ]]; then
277
- install_apache_wsgi
278
- fi
279
230
  }
280
231
 
281
232
  # start_watcher_api() - Start the API process ahead of other things
@@ -289,19 +240,10 @@ function start_watcher_api {
289
240
  service_port=$WATCHER_SERVICE_PORT_INT
290
241
  service_protocol="http"
291
242
  fi
292
- if [[ "$WATCHER_USE_WSGI_MODE" == "uwsgi" ]]; then
293
- run_process "watcher-api" "$(which uwsgi) --procname-prefix watcher-api --ini $WATCHER_UWSGI_CONF"
294
- watcher_url=$service_protocol://$SERVICE_HOST/infra-optim
295
- else
296
- watcher_url=$service_protocol://$SERVICE_HOST:$service_port
297
- enable_apache_site watcher-api
298
- restart_apache_server
299
- # Start proxies if enabled
300
- if is_service_enabled tls-proxy; then
301
- start_tls_proxy watcher '*' $WATCHER_SERVICE_PORT $WATCHER_SERVICE_HOST $WATCHER_SERVICE_PORT_INT
302
- fi
303
- fi
304
-
243
+ run_process "watcher-api" "$(which uwsgi) --procname-prefix watcher-api --ini $WATCHER_UWSGI_CONF"
244
+ watcher_url=$service_protocol://$SERVICE_HOST/infra-optim
245
+ # TODO(sean-k-mooney): we should probably check that we can hit
246
+ # the microversion endpoint and get a valid response.
305
247
  echo "Waiting for watcher-api to start..."
306
248
  if ! wait_for_service $SERVICE_TIMEOUT $watcher_url; then
307
249
  die $LINENO "watcher-api did not start"
@@ -319,17 +261,25 @@ function start_watcher {
319
261
 
320
262
  # stop_watcher() - Stop running processes (non-screen)
321
263
  function stop_watcher {
322
- if [[ "$WATCHER_USE_WSGI_MODE" == "uwsgi" ]]; then
323
- stop_process watcher-api
324
- else
325
- disable_apache_site watcher-api
326
- restart_apache_server
327
- fi
264
+ stop_process watcher-api
328
265
  for serv in watcher-decision-engine watcher-applier; do
329
266
  stop_process $serv
330
267
  done
331
268
  }
332
269
 
270
+ # configure_tempest_for_watcher() - Configure Tempest for watcher
271
+ function configure_tempest_for_watcher {
272
+ # Set default microversion for watcher-tempest-plugin
273
+ # Please make sure to update this when the microversion is updated, otherwise
274
+ # new tests may be skipped.
275
+ TEMPEST_WATCHER_MIN_MICROVERSION=${TEMPEST_WATCHER_MIN_MICROVERSION:-"1.0"}
276
+ TEMPEST_WATCHER_MAX_MICROVERSION=${TEMPEST_WATCHER_MAX_MICROVERSION:-"1.4"}
277
+
278
+ # Set microversion options in tempest.conf
279
+ iniset $TEMPEST_CONFIG optimize min_microversion $TEMPEST_WATCHER_MIN_MICROVERSION
280
+ iniset $TEMPEST_CONFIG optimize max_microversion $TEMPEST_WATCHER_MAX_MICROVERSION
281
+ }
282
+
333
283
  # Restore xtrace
334
284
  $_XTRACE_WATCHER
335
285
 
@@ -36,6 +36,9 @@ if is_service_enabled watcher-api watcher-decision-engine watcher-applier; then
36
36
  # Start the watcher components
37
37
  echo_summary "Starting watcher"
38
38
  start_watcher
39
+ elif [[ "$1" == "stack" && "$2" == "test-config" ]]; then
40
+ echo_summary "Configuring tempest for watcher"
41
+ configure_tempest_for_watcher
39
42
  fi
40
43
 
41
44
  if [[ "$1" == "unstack" ]]; then
@@ -29,19 +29,19 @@ This default can be overridden when a deployer uses a different label to
29
29
  identify the exporter host (for example ``hostname`` or ``host``, or any other
30
30
  label, as long as it identifies the host).
31
31
 
32
- Internally this label is used in creating a ``fqdn_instance_map``, mapping
33
- the fqdn with the Prometheus instance label associated with each exporter.
34
- The keys of the resulting fqdn_instance_map are expected to match the
32
+ Internally this label is used in creating ``fqdn_instance_labels``, containing
33
+ the list of values assigned to the the label in the Prometheus targets.
34
+ The elements of the resulting fqdn_instance_labels are expected to match the
35
35
  ``ComputeNode.hostname`` used in the Watcher decision engine cluster model.
36
- An example ``fqdn_instance_map`` is the following:
36
+ An example ``fqdn_instance_labels`` is the following:
37
37
 
38
38
  .. code-block::
39
39
 
40
- {
41
- 'ena.controlplane.domain': '10.1.2.1:9100',
42
- 'dio.controlplane.domain': '10.1.2.2:9100',
43
- 'tria.controlplane.domain': '10.1.2.3:9100'
44
- }
40
+ [
41
+ 'ena.controlplane.domain',
42
+ 'dio.controlplane.domain',
43
+ 'tria.controlplane.domain',
44
+ ]
45
45
 
46
46
  For instance metrics, it is required that Prometheus contains a label
47
47
  with the uuid of the OpenStack instance in each relevant metric. By default,
@@ -0,0 +1,3 @@
1
+ [build-system]
2
+ requires = ["pbr>=6.0.0", "setuptools>=64.0.0"]
3
+ build-backend = "pbr.build"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-watcher
3
- Version: 14.0.0.0rc1
3
+ Version: 14.1.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
@@ -14,7 +14,6 @@ Classifier: Programming Language :: Python
14
14
  Classifier: Programming Language :: Python :: Implementation :: CPython
15
15
  Classifier: Programming Language :: Python :: 3 :: Only
16
16
  Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3.9
18
17
  Classifier: Programming Language :: Python :: 3.10
19
18
  Classifier: Programming Language :: Python :: 3.11
20
19
  Classifier: Programming Language :: Python :: 3.12
@@ -9,6 +9,7 @@ ChangeLog
9
9
  HACKING.rst
10
10
  LICENSE
11
11
  README.rst
12
+ pyproject.toml
12
13
  requirements.txt
13
14
  setup.cfg
14
15
  setup.py
@@ -243,6 +244,7 @@ releasenotes/notes/add-power-on-off-a77673d482568a8b.yaml
243
244
  releasenotes/notes/add-scoring-module-fa00d013ed2d614e.yaml
244
245
  releasenotes/notes/add-start-end-time-for-continuous-audit-52c45052cb06d153.yaml
245
246
  releasenotes/notes/add-upgrade-check-framework-5bb9693c8a78931c.yaml
247
+ releasenotes/notes/add-wsgi-module-support-597f479e31979270.yaml
246
248
  releasenotes/notes/api-call-retry-fef741ac684c58dd.yaml
247
249
  releasenotes/notes/api-microversioning-7999a3ee8073bf32.yaml
248
250
  releasenotes/notes/audit-scoper-for-storage-data-model-cdccc803542d22db.yaml
@@ -251,6 +253,10 @@ releasenotes/notes/audit-versioned-notifications-api-bca7738e16954bad.yaml
251
253
  releasenotes/notes/automatic-triggering-audit-8a9b0540d547db60.yaml
252
254
  releasenotes/notes/background-jobs-ha-9d3cf3fe356f4705.yaml
253
255
  releasenotes/notes/bp-audit-scope-exclude-project-511a7720aac00dff.yaml
256
+ releasenotes/notes/bug-2103451-fixes-prometheus-queries-with-multiple-target-0e65d20711d1abe2.yaml
257
+ releasenotes/notes/bug-2110947.yaml
258
+ releasenotes/notes/bug-2112187-763bae283e0b736d.yaml
259
+ releasenotes/notes/bug-2113776-4bd314fb46623fbc.yaml
254
260
  releasenotes/notes/build-baremetal-data-model-in-watcher-3023453a47b61dab.yaml
255
261
  releasenotes/notes/cdm-scoping-8d9c307bad46bfa1.yaml
256
262
  releasenotes/notes/centralise-config-opts-95670987dfbdb0e7.yaml
@@ -269,6 +275,7 @@ releasenotes/notes/define-the-audit-scope-e89edc5051dcf3f2.yaml
269
275
  releasenotes/notes/deprecate-ceilometer-datasource-446b0be70fbce28b.yaml
270
276
  releasenotes/notes/deprecate-json-formatted-policy-file-3a92379e9f5dd203.yaml
271
277
  releasenotes/notes/deprecate-monasca-ds-9065f4d4bee09ab2.yaml
278
+ releasenotes/notes/donot-run-host-migration-strategy-on-disabled-hosts-24084a22d4c8f914.yaml
272
279
  releasenotes/notes/drop-py-2-7-54f8e806d71f19a7.yaml
273
280
  releasenotes/notes/drop-python38-support-eeb19a0bc0160sw1.yaml
274
281
  releasenotes/notes/dynamic-action-description-0e947b9e7ef2a134.yaml
@@ -276,6 +283,7 @@ releasenotes/notes/efficacy-indicator-95380ad7b84e3be2.yaml
276
283
  releasenotes/notes/enhance-watcher-applier-engine-86c676ce8f179e68.yaml
277
284
  releasenotes/notes/event-driven-optimization-based-4870f112bef8a560.yaml
278
285
  releasenotes/notes/file-based-metric-map-c2af62b5067895df.yaml
286
+ releasenotes/notes/fix-action-plan-state-on-failure-69e498d902ada5c5.yaml
279
287
  releasenotes/notes/formal-datasource-interface-implementation-222769d55a127d33.yaml
280
288
  releasenotes/notes/general-purpose-decision-engine-threadpool-0711b23abfc9d409.yaml
281
289
  releasenotes/notes/get-goal-from-strategy-396c9b13a38bb650.yaml
@@ -299,6 +307,7 @@ releasenotes/notes/prometheus-datasource-e56f2f7b8f3427c2.yaml
299
307
  releasenotes/notes/remove-ceilometer-datasource-8d9ab7d64d61e405.yaml
300
308
  releasenotes/notes/remove-nova-legacy-notifications-e1b6d10eff58f30a.yaml
301
309
  releasenotes/notes/replace-cold-migrate-to-use-nova-migration-api-cecd9a39ddd3bc58.yaml
310
+ releasenotes/notes/return-error-400-on-bad-parameters-bb964e4f5cadc15c.yaml
302
311
  releasenotes/notes/scope-for-data-model-ea9792f90db14343.yaml
303
312
  releasenotes/notes/service-versioned-notifications-api-70367b79a565d900.yaml
304
313
  releasenotes/notes/show-datamodel-api-6945b744fd5d25d5.yaml
@@ -882,4 +891,6 @@ watcher/tests/objects/test_objects.py
882
891
  watcher/tests/objects/test_scoring_engine.py
883
892
  watcher/tests/objects/test_service.py
884
893
  watcher/tests/objects/test_strategy.py
885
- watcher/tests/objects/utils.py
894
+ watcher/tests/objects/utils.py
895
+ watcher/wsgi/__init__.py
896
+ watcher/wsgi/api.py
@@ -0,0 +1 @@
1
+ {"git_version": "024815af", "is_release": true}
@@ -0,0 +1,30 @@
1
+ ---
2
+ features:
3
+ - |
4
+ A new module, ``watcher.wsgi``, has been added as a place to gather WSGI
5
+ ``application`` objects. This is intended to ease deployment by providing
6
+ a consistent location for these objects. For example, if using uWSGI then
7
+ instead of:
8
+
9
+ .. code-block:: ini
10
+
11
+ [uwsgi]
12
+ wsgi-file = /bin/watcher-api-wsgi
13
+
14
+ You can now use:
15
+
16
+ .. code-block:: ini
17
+
18
+ [uwsgi]
19
+ module = watcher.wsgi.api:application
20
+
21
+ This also simplifies deployment with other WSGI servers that expect module
22
+ paths such as gunicorn.
23
+ deprecations:
24
+ - |
25
+ The watcher-api-wsgi console script is deprecated for removal
26
+ in a future release. This artifact is generated using a setup-tools
27
+ extension that is provide by PBR which is also deprecated.
28
+ due to the changes in python packaging this custom extensions
29
+ is planned to be removed form all OpenStack projects in a future
30
+ PBR release in favor of module based wsgi applications entry points.
@@ -0,0 +1,8 @@
1
+ ---
2
+ fixes:
3
+ - |
4
+ When using prometheus datasource and more that one target has the same value
5
+ for the ``fqdn_label``, the driver used the wrong instance label to query for host
6
+ metrics. The ``instance`` label is no longer used in the queries but the ``fqdn_label``
7
+ which identifies all the metrics for a specific compute node.
8
+ see Bug 2103451: https://bugs.launchpad.net/watcher/+bug/2103451 for more info.
@@ -0,0 +1,10 @@
1
+ ---
2
+ fixes:
3
+ - |
4
+ Previously, when users attempted to create a new audit without providing
5
+ a name and a goal or an audit template, the API returned error 500 and an
6
+ incorrect error message was displayed.
7
+
8
+ Now, Watcher displays a helpful message and returns HTTP error 400.
9
+
10
+ For more info see: https://bugs.launchpad.net/watcher/+bug/2110947
@@ -0,0 +1,47 @@
1
+ ---
2
+ security:
3
+ - |
4
+ Watchers no longer forges requests on behalf of a tenant when
5
+ swapping volumes. Prior to this release watcher had 2 implementations
6
+ of moving a volume, it could use cinders volume migrate api or its own
7
+ internal implementation that directly calls nova volume attachment update
8
+ api. The former is safe and the recommend way to move volumes between
9
+ cinder storage backend the internal implementation was insecure, fragile
10
+ due to a lack of error handling and capable of deleting user data.
11
+
12
+ Insecure: the internal volume migration operation created a new keystone
13
+ user with a weak name and password and added it to the tenants project
14
+ with the admin role. It then used that user to forge request on behalf
15
+ of the tenant with admin right to swap the volume. if the applier was
16
+ restarted during the execution of this operation it would never be cleaned
17
+ up.
18
+
19
+ Fragile: the error handling was minimal, the swap volume api is async
20
+ so watcher has to poll for completion, there was no support to resume
21
+ that if interrupted of the time out was exceeded.
22
+
23
+ Data-loss: while the internal polling logic returned success or failure
24
+ watcher did not check the result, once the function returned it
25
+ unconditionally deleted the source volume. For larger volumes this
26
+ could result in irretrievable data loss.
27
+
28
+ Finally if a volume was swapped using the internal workflow it put
29
+ the nova instance in an out of sync state. If the VM was live migrated
30
+ after the swap volume completed successfully prior to a hard reboot
31
+ then the migration would fail or succeed and break tenant isolation.
32
+
33
+ see: https://bugs.launchpad.net/nova/+bug/2112187 for details.
34
+ fixes:
35
+ - |
36
+ All code related to creating keystone user and granting roles has been
37
+ removed. The internal swap volume implementation has been removed and
38
+ replaced by cinders volume migrate api. Note as part of this change
39
+ Watcher will no longer attempt volume migrations or retypes if the
40
+ instance is in the `Verify Resize` task state. This resolves several
41
+ issues related to volume migration in the zone migration and
42
+ Storage capacity balance strategies. While efforts have been made
43
+ to maintain backward compatibility these changes are required to
44
+ address a security weakness in watcher's prior approach.
45
+
46
+ see: https://bugs.launchpad.net/nova/+bug/2112187 for more context.
47
+
@@ -0,0 +1,14 @@
1
+ ---
2
+ fixes:
3
+ - |
4
+ When running an audit with the `workload_stabilization` strategy with
5
+ `instance_ram_usage` metric in a deployment with prometheus datasource,
6
+ the host metric for the ram usage was wrongly reported with the incorrect
7
+ unit which lead to incorrect standard deviation and action plans due to the
8
+ application of the wrong scale factor in the algorithm.
9
+
10
+ The host ram usage metric is now properly reported in KB when using a
11
+ prometheus datasource and the strategy `workload_stabilization` calculates
12
+ the standard deviation properly.
13
+
14
+ For more details: https://launchpad.net/bugs/2113776
@@ -0,0 +1,10 @@
1
+ ---
2
+ fixes:
3
+ - |
4
+ Host maintenance strategy should migrate servers based on backup node if specified
5
+ or rely on nova scheduler. It was enabling disabled hosts with watcher_disabled
6
+ reason and migrating servers to those nodes. It can impact customer workload. Compute
7
+ nodes were disabled for a reason.
8
+
9
+ Host maintenance strategy is fixed now to support migrating servers only on backup
10
+ node or rely on nova scheduler if no backup node is provided.
@@ -0,0 +1,13 @@
1
+ ---
2
+ fixes:
3
+ - |
4
+ Previously, if an action failed in an action plan, the state of the
5
+ action plan was reported as SUCCEEDED if the execution of the action has
6
+ finished regardless of the outcome.
7
+
8
+ Watcher will now reflect the actual state of all the actions in the plan
9
+ after the execution has finished. If any action has status FAILED, it
10
+ will set the state of the action plan as FAILED. This is the expected
11
+ behavior according to Watcher documentation.
12
+
13
+ For more info see: https://bugs.launchpad.net/watcher/+bug/2106407
@@ -0,0 +1,7 @@
1
+ ---
2
+ fixes:
3
+ - |
4
+ `Bug #2110538 <https://bugs.launchpad.net/watcher/+bug/2110538>`_:
5
+ Corrected the HTTP error code returned when watcher users try to create
6
+ audits with invalid parameters. The API now correctly returns a 400 Bad
7
+ Request error.
@@ -17,7 +17,6 @@ classifier =
17
17
  Programming Language :: Python :: Implementation :: CPython
18
18
  Programming Language :: Python :: 3 :: Only
19
19
  Programming Language :: Python :: 3
20
- Programming Language :: Python :: 3.9
21
20
  Programming Language :: Python :: 3.10
22
21
  Programming Language :: Python :: 3.11
23
22
  Programming Language :: Python :: 3.12
@@ -8,7 +8,7 @@ basepython = python3
8
8
  usedevelop = True
9
9
  allowlist_externals = find
10
10
  rm
11
- install_command = pip install -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} {opts} {packages}
11
+ install_command = pip install -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/2025.1} {opts} {packages}
12
12
  setenv =
13
13
  VIRTUAL_ENV={envdir}
14
14
  OS_STDOUT_CAPTURE=1
@@ -106,8 +106,10 @@ commands =
106
106
  make -C doc/build/pdf
107
107
 
108
108
  [testenv:releasenotes]
109
- deps = -r{toxinidir}/doc/requirements.txt
110
- commands = sphinx-build -a -W -E -d releasenotes/build/doctrees --keep-going -b html releasenotes/source releasenotes/build/html
109
+ deps = {[testenv:docs]deps}
110
+ commands =
111
+ rm -rf releasenotes/build
112
+ sphinx-build -W --keep-going -b html -j auto releasenotes/source releasenotes/build/html
111
113
 
112
114
  [testenv:bandit]
113
115
  skip_install = true
@@ -146,8 +148,3 @@ extension =
146
148
  N342 = checks:no_redundant_import_alias
147
149
  N366 = checks:import_stock_mock
148
150
  paths = ./watcher/hacking
149
-
150
- [doc8]
151
- extension=.rst
152
- # todo: stop ignoring doc/source/man when https://bugs.launchpad.net/doc8/+bug/1502391 is fixed
153
- ignore-path=doc/source/image_src,doc/source/man,doc/source/api
@@ -33,6 +33,7 @@ import datetime
33
33
  from dateutil import tz
34
34
 
35
35
  from http import HTTPStatus
36
+ import jsonschema
36
37
  from oslo_log import log
37
38
  from oslo_utils import timeutils
38
39
  import pecan
@@ -114,6 +115,11 @@ class AuditPostType(wtypes.Base):
114
115
  if self.audit_type not in audit_type_values:
115
116
  raise exception.AuditTypeNotFound(audit_type=self.audit_type)
116
117
 
118
+ if not self.audit_template_uuid and not self.goal:
119
+ message = _(
120
+ 'A valid goal or audit_template_id must be provided')
121
+ raise exception.Invalid(message)
122
+
117
123
  if (self.audit_type == objects.audit.AuditType.ONESHOT.value and
118
124
  self.interval not in (wtypes.Unset, None)):
119
125
  raise exception.AuditIntervalNotAllowed(audit_type=self.audit_type)
@@ -612,11 +618,6 @@ class AuditsController(rest.RestController):
612
618
  if self.from_audits:
613
619
  raise exception.OperationNotPermitted
614
620
 
615
- if not audit._goal_uuid:
616
- raise exception.Invalid(
617
- message=_('A valid goal_id or audit_template_id '
618
- 'must be provided'))
619
-
620
621
  strategy_uuid = audit.strategy_uuid
621
622
  no_schema = True
622
623
  if strategy_uuid is not None:
@@ -627,8 +628,12 @@ class AuditsController(rest.RestController):
627
628
  if schema:
628
629
  # validate input parameter with default value feedback
629
630
  no_schema = False
630
- utils.StrictDefaultValidatingDraft4Validator(schema).validate(
631
- audit.parameters)
631
+ try:
632
+ utils.StrictDefaultValidatingDraft4Validator(
633
+ schema).validate(audit.parameters)
634
+ except jsonschema.exceptions.ValidationError as e:
635
+ raise exception.Invalid(
636
+ _('Invalid parameters for strategy: %s') % e)
632
637
 
633
638
  if no_schema and audit.parameters:
634
639
  raise exception.Invalid(_('Specify parameters but no predefined '